2010年单片机教学

上传人:第*** 文档编号:34212466 上传时间:2018-02-22 格式:DOC 页数:16 大小:121.50KB
返回 下载 相关 举报
2010年单片机教学_第1页
第1页 / 共16页
2010年单片机教学_第2页
第2页 / 共16页
2010年单片机教学_第3页
第3页 / 共16页
2010年单片机教学_第4页
第4页 / 共16页
2010年单片机教学_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《2010年单片机教学》由会员分享,可在线阅读,更多相关《2010年单片机教学(16页珍藏版)》请在金锄头文库上搜索。

1、项目一 P1 口输入、输出一、教学目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。三、内容及步骤(一):用 P1 口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。1、使用单片机最小应用系统 1 模块。关闭该模块电源,用扁平数据线连接单片机 P1口与八位逻辑电平显示模块。2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3、打开 Kei

2、l uVision2 仿真软件,首先建立本次的项目文件,接着添加 P1_A.ASM 源程序,进行编译,直到编译无误。4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为 38400。5、打开模块电源和总电源,点击开始调试按钮,点击 RUN 按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。(二):用 P1.0、P1.1 作输入接两个拨断开关,P1.2、P1.3 作输出接两个发光二极管。程序读取开关状态,并在发光二极管上显示出来。1、用导线分别连接 P1.0、P1.1 到两个拨断开关,P1.2、P1.3 到两个发光二极管。2、添加 P1_B.ASM 源程序,编译无误后

3、,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。向上拨为熄灭,向下拨为点亮。四、流程图及源程序 1流程图 2源程序:(一)一ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP STARTDELAY: MOV R6,#0MOV R7,#0DELAYLOOP: ;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOP开始P1.0,P1.1 置一读入 P1.0 口值将读入的值输出到 P1.2读入 P1.1 口值将读入

4、的值输出到 P1.3开始设置初始值设移位次数数据输出左一位延时移位次数完成?是 否(A)P1 口循环点灯程序框图 (B)P1 口输入输出程序框图 RETEND(二)二KEYLEFT BIT P1.0 ;定义 KEYRIGHT BIT P1.1LEDLEFT BIT P1.2LEDRIGHT BIT P1.3ORG 0000HLJMP STARTORG 0030HSTART: SETB KEYLEFT ;欲读先置一 SETB KEYRIGHTLOOP: MOV C,KEYLEFTMOV LEDLEFT,CMOV C,KEYRIGHTMOV LEDRIGHT,CLJMP LOOPEND五、思考题(

5、1)对于本项目延时子程序Delay: MOV R6,0MOV R7, 0DelayLoop:DJNZ R6,DelayLoopDJNZ R7,DelayLoopRET如使用 12MHz 晶振,粗略计算此程序的执行时间为多少?六、电路图1K10033pF33pF12MHzRESETEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P

6、25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10AT89C5110uFD0 3Q02D1 4Q15D2 7Q26D3 8Q39D4 13Q412D5 14Q515D6 17Q616D7 18Q719OE 1LE 1174LS373270*8VCCVCCVCC项目二 定时器设计一、教学目的1、学习 80C51 内部计数器的使用和编程方法2、进一步掌握中断处理程序的编写方法二、 说明关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本项目使用的是定时器,定时为一秒钟。CPU运用定时中断方式,实现

7、每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON。TMOD 用于设置定时器/计数器的工作方式 0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是 12 个振荡器周期。因为系统的晶振是 12MHZ,本程序工作于方式 2,即 8 位自动重装方式定时器, 定时器100uS 中断一次, 所以定时常数的设置可按以下方法计算:机器周期=126MHz=1Us (256-定时常数)1uS=100uS定时常数=15

8、6。然后对 100uS 中断次数计数 10000 次,就是 1 秒钟。在本项目的中断处理程序中,中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。三、 内容及步骤1、用导线连接单片机最小应用系统 1 的 P1.0 到单只发光二极管上。2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3、打开 Keil uVision2 仿真软件,首先建立本次的项目文件,接着添加 定时器.ASM源程序,进行编译,直到编译无误。4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为 38400。5、打开模块

9、电源和总电源,点击开始调试按钮,点击 RUN 按钮运行程序。发光二极管隔一秒点亮一次,点亮时间为一秒。四、项目框图以及源程序 1、流程图2、源程序TICK EQU 10000 ;10000 100uS = 1ST100uS EQU 256-100 ;100uS 时间常数(12M)C100uS EQU 30H ;100uS 记数单元LEDBUF EQU 40HLED BIT P1.0ORG 0000HLJMP START ;跳至主程序ORG 000BH LJMP TOINT ;跳至子程序ORG 0030HT0INT: PUSH PSW ;状态保护MOV A, C100uS+1 JNZ GOOND

10、EC C100uS ;秒计数值减 1开始输出状态位中断允许设置秒计数值设置初始状态位设置定时常数置 T 1 中断工作方式等待中断主程序框图是 否中断返回定时中断入口状态位取反保护现场恢复现场秒计数值减 1重新设置秒计数值是否到一秒定时中断子程序框图GOON: DEC C100uS+1MOV A, C100uSORL A, C100uS+1JNZ EXIT ; 100uS 记数器不为 0, 返回MOV C100uS, #HIGH(TICK) ;100uS 记数器为 0, 重置记数器MOV C100uS+1, #LOW(TICK)CPL LEDBUF ; 取反 LED EXIT:POP PSWRE

11、TISTART:MOV TMOD, #02H ;方式 2, 定时器MOV TH0, #T100uS ;置定时器初始值MOV TL0, #T100uSMOV IE, #10000010B ; EA=1, IT0 = 1SETB TR0 ;开始定时CLR LEDBUFCLR LEDMOV C100uS, #HIGH(TICK) ;设置 10000 次计数值MOV C100uS+1, #LOW(TICK)LOOP:MOV C, LEDBUFMOV LED, CLJMP LOOPEND 五、思考题1、如何将 LED 的状态间隔改为 2 秒,程序如何改写?2、如果更换不同频率的晶振,会出现什么现象?如何

12、调整程序?六、电路图LED33pF33pF12MHzEA/VP31X119 X218RESET9RD17 WR16INT012 INT113T014 T115P101 P112P123 P134P145 P156P167 P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10AT89C511K1K510GNDGNDGNDVCC 10uF项目三 查询式键盘设计一、教学目的1、掌握键盘和显示器的接口方

13、法和编程方法2、掌握键盘和八段码显示器的工作原理3、静态显示的原理和相关程序的编写二、 说明 本项目提供了 8 个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。单片机通过识别,判断按下什么键。有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。三、 步骤及内容1、用一根扁平数据插头线连接查询式键盘模块与八位逻辑电平显示模块,无键按下时,键盘输出全为“1”发光二极管全部熄灭,有键按下,对应发光二极管点亮。此种电路的程序要判断是否有 2 个或 2 个以上的键盘同时按下,以免键盘分析错误。阵列式键盘的编程同样也有这样的问题要注意。2、一根扁平 8 线插头连接查

14、询式键盘模块与扫描显示模块。无键按下时,LED 数码显示八段全部熄灭,有键按下时,则对应 LED 段点亮。3、使用静态串行显示模块显示键值。单片机最小应用系统 1 的 P1 口接查询式键盘输出口。P3.6 接静态数码显示 DIN,P3.7 接 CLK。4、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。5、打开 Keil uVision2 仿真软件,首先建立本次的项目文件,接着添加 查询KEY.ASM 源程序,进行编译,直到编译无误。6、进行软件设置,选择硬件仿真,选择串行口,设置波特率为 38400。7、打开模块电源和总电源,点击开始调试按钮,点击 RUN 按钮运行程序。在键盘上按下某个键,观察数显是否与按键值一致,键值从左至右为 07。五、流程图及源程序 1、流程图2、源程序DBUF EQU 30HTEMP EQU 40HDIN BIT P3.6CLK BIT P3.7ORG 0000HLJMP STARTORG 0030HSTART:MOV 30H,#16MAIN: ACALL DISPACALL KEY0AJMP MAINKEY: MOV P1,#0FFH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号