- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51单片机的编程应用范例
电子发烧友 电子技术论坛
第4 节 编程应用范例
[学习要求] 掌握MCS-5 1 单片机的基本应用。
[重点与难点]
重点:动态扫描LED 显示电路编程范例;定时/计数器软件编程范例;A/D 接口电路;
矩阵式键盘接口技术及编程。
难点:动态扫描LED 显示电路编程范例;定时/计数器软件编程范例。
[理论内容]
一、并行I/O 口编程范例
单片机I/O 的应用最典型的是通过I/O 口与7 段LED 数码管构成显示电路,下面从常
用的LED 显示原理开始,详尽讲解利用单片机驱动LED 数码管的电路及编程原理,目的在
于通过这一编程范例,让初学者了解I/O 口的编程原理,意在起举一反三,抛砖引玉的作用。
LED 的发光原理,稍有电子技术基础的人士都很清楚,这里不想作过多的介绍,7 段
LED 数码管,则在一定形状的绝缘材料上,利用单只LED 组合排列成 “8”字型的数码管,
分别引出它们的电极,点亮相应的点划来显示出0-9 的数字。
LED 数码管根据LED 的接法不同分为共阴和共阳两类,了解LED 的这些特性,对编
程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同
的。图1 是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极
性不同而已。
图1 段数码管
将多只LED 的阴极连在一起即为共阴式,而将多只LED 的阳极连在一起即为共阳式。
电子发烧友 电子技术论坛
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED
的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其
它端接地或悬空,那么b和c段发光,此时,数码管显示将显示数字 “1”。而将a、b、
d、e和g段都接上正电源,其它引脚悬空,此时数码管将显示 “2 ”。其它字符的显示原
理类同,读者自行分析即可。
图2 LED 显示电路
图2 中使用80C51 单片机,电容C1、C2 和CRY 1 组成时钟振荡电路,这部分基本无需
调试,只要元件可靠即会正常起振。C3 和R1 为单片机的复位电路,80C51 的并行口P1.0-P1.7
直接与LED 数码管的a-f引脚相连,中间接上限流电阻R3-R 10。值得一提的是,80C51 并
行口的输出驱动电流并非很大,为使LED 有足够的亮度,LED 数码管应选用高亮度的器件。
此外,图中的80C51 还可选用C51 系列的其它单片机,只要它们的指令系统兼容C51
即可正常运行,程序可直接移植,例如选用低价Flash 型的AT89C1051 或 2051 等,它们的
ROM 可反复擦写,非常适合作实验用途。
·程序清单:
0 1 START: ORG 0100H ;程序起始地址
02 MAIN : MOV R0,#00H ;从“0 ”开始显示
03 MOV DPTR,#TABLE ;表格地址送数据指针
04 DISP: MOV A,R0 ;送显示
05 MOVC A,@A+ADPTR ;指向表格地址
06 MOV P 1,A ;数据送LED
07 ACALL DELAY ;延时
08 INC R0 ;指向下一个字符
09 CJNE R0,#0AH,DISP ;未显示完,继续
10 AJMP MAIN ;下一个循环
11 DELAY: MOV R 1,#0FFH ;延时子程序,延时时间赋值
电子发烧友 电子技术论坛
12 LOOP0: MOV R2,#0FFH
13 LOOP1: DJNZ
文档评论(0)