- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
1. 闪烁灯 1
2. 模拟开关灯 4
3. 多路开关状态指示 6
4. 广告灯的左移右移 10
5. 广告灯(利用取表方式) 13
6. 报警产生器 17
7. I/O并行口直接驱动LED显示 20
8. 按键识别方法之一 23
9. 一键多功能按键识别技术 28
10. 00-99计数器 32
11. 00-59秒计时器(利用软件延时) 36
12. 可预置可逆4位计数器 39
13. 动态数码显示技术 43
14. 4×4矩阵式键盘识别技术 47
15. 定时计数器T0作定时应用技术(一) 57
16. 定时计数器T0作定时应用技术(二) 63
17. 99秒马表设计 69
18. “嘀、嘀、……”报警声 75
19. “叮咚”门铃 79
20. 数字钟 84
21. 拉幕式数码显示技术 94
22. 电子琴 100
23. 模拟计算器数字输入及显示 114
24. 8X8 LED点阵显示技术 121
25. 点阵式LED“0-9”数字显示技术 127
26. 点阵式LED简单图形显示技术 134
27. ADC0809A/D转换器基本应用技术 139
28. 数字电压表 146
29. 两点间温度控制 150
30. 四位数数字温度计 156
31. 6位数显频率计数器 161
32. 电子密码锁设计 164
33. 4×4键盘及8位数码管显示构成的电子密码锁 170
34. 带有存储器功能的数字温度计-DS1624技术应用 184
35. DS18B20数字温度计使用 198
1. 闪烁灯
1. 实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
2. 电路原理图
图4.1.1
3. 系统板上硬件连线
把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
4. 程序设计内容
(1). 延时程序的设计方法
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理: 如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒
机器周期 微秒
MOV R6,#20 2个 2
D1: MOV R7,#248 2个 2 2+2×248=498 20×
DJNZ R7,$ 2个 2×248 498
DJNZ R6,D1 2个 2×20=40 10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:
DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET
(2). 输出控制
如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5. 程序框图
如图4.1.2所示
图4.1.2
6. 汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时0.2秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C语言源程序#include AT89X51.Hsbit L1=P1^0;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i0;i--)for(j=20;j0;j--)for(k=248;k0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}
2. 模拟开关灯
1. 实验任务
如图4.2.
原创力文档


文档评论(0)