AT89S51单片机试验及实践教程之I-O并行口直接驱动LED显示.docVIP

AT89S51单片机试验及实践教程之I-O并行口直接驱动LED显示.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AT89S51单片机试验及实践教程之I-O并行口直接驱动LED显示.doc

  AT89S51单片机试验及实践教程之I/O并行口直接驱动LED显示|第1 1. 实验任务 如图 所示, 利用 AT89S51 单片机的 P0 端口的 P0.0 - P0.7 连接到一个共阴数码管的 a - h 的笔段上,数码管的公共端接地。在数码管上循环显示 0 - 9 数字,时间间隔 0.2 秒。 2. 电路原理图 500)this.style.ouseg(this) 图 3. 系统板上硬件连线 把“单片机系统”区域中的 P0.0/AD0 - P0.7/AD7 端口用 8 芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的 a - h 端口上;要求: P0.0/AD0 与 a 相连, P0.1/AD1 与 b 相连, P0.2/AD2 与 c 相连, …… , P0.7/AD7 与 h 相连。 4. 程序设计内容 #8226; LED 数码显示原理 七段 LED 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED 数码管的 g~a 七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表 2 “ 0 ” 3FH “ 8 ” 7FH “ 1 ” 06H “ 9 ” 6FH “ 2 ” 5BH “ A ” 77H “ 3 ” 4FH “ b ” 7CH “ 4 ” 66H “ C ” 39H “ 5 ” 6DH “ d ” 5EH “ 6 ” 7DH “ E ” 79H “ 7 ” 07H “ F ” 71H #8226; 由于显示的数字 0 - 9 的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。 这样我们按着数字 0 - 9 的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示: TABLE DB 3FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH 5.程序框图 500)this.style.ouseg(this) 图 4.7.2 6. 汇编源程序 ORG 0 START: MOV R1,#00H NEXT: MOV A,R1 MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A LCALL DELAY INC R1 CJNE R1,#10,NEXT LJMP START DELAY: MOV R5,#20 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 7. C语言源程序 #include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispcount; void delay02s(void) { unsigned char i,j,k; for(i=20;igt;0;i--) for(j=20;jgt;0;j--) for(k=248;kgt;0;k--); } void main(void) { while(1) { for(dispcount=0;dispcountlt;10;dispcount++) { P0=table[dispcount]; delay02s(); } } }

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档