任务四键控流水灯及LED数码管显示.pptVIP

  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文档。上传文档
查看更多
任务四键控流水灯及LED数码管显示

任务四 键控流水灯和LED数码管显示 ;LED显示的原理; LED的显示可分静态和动态显示。静态显示是各只数码管单独用一只显示译码器,单片机与显示器的连接如下图如示:;共阳数码管组成的动态扫描电路;LED显示动态显示的原理 静态显示的优点显示稳定,不存在闪烁。与CPU并行工作。但从静态显示的硬件可以看出,当选用的数码管越多,译码器的数量也随之增多,这样会增加硬件的开销。为此人们采用动态显示。如图所示;动态显示的原理 某一时刻位选先选通其中一位,如对图中的共阳数码管,要使最左边位能点亮,则令P2.0为0,其余位选位均为1;这时在字型口输出该位要显示的数字(或字符)的字型,亮1ms左右;接着位选选通另一位,其余位选关闭,字型口输出该位要显示的数字(或字符)的字型,虽然这时前一位位选已关闭,但基于眼睛的惰性,前一位显示的数字或字型还留在眼中,依次一位位循环显示下去,直至最后一位显示完毕,一个动态扫描显示过程结束。 可见动态扫描显示是在执行动态扫描显示程序的。要连续显示必须反复的去执行动态扫描显示程序。一般可把动态扫描显示编成个子函数,主函数反复去调用它。人眼的惰性有一定时间,一般10ms左右, 超过这一时间再去执行显示程序,它就会闪烁,所以LED的位数不能太多。;动态扫描具体实现方法:;动态扫描子程序流程图:;#includereg51.h unsigned char code dt[]={0x01,0x02,0x03,0x04,0x05,0x06}; //待显示的信息在显示缓冲区数组; unsigned char code TAB_Font[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x83,0xF8,0x8 0,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C,0xFF,0x89};//共 阳字型表数组 unsigned r=1; //位输出口初值,选中最左位LED void delay1 (unsigned int); //延时1ms子函数原型说明 main() //主函数 { unsigned chaar i=0,a; //定义变量i —显示缓冲区数组元素 ; 指针,a—某位待输出信息 while (1) { P2=r; // 选中某一位 a=dt[i]; //从显示缓冲区数组取出该位显示信息 P0=TAB_Font[a]; // 查字型表,输出字型 delay1 (1); //延时1ms r=1; //扫描位左移(在实际图中即右移) i++; //指针加1 if(r==0x40) { r=1; //6 位扫描结束判断 i=0; } // 结束后指针复位 } }; // 延时程序1 void delay1 (unsigned int ms) { unsigned int i,j; for(i=0;ims;i++) for(j=0;j60;j++) ; } ;动态显示作为子函数的程序设计 #includereg51.h unsigned char code dt[]={0x01,0x02,0x03,0x04,0x05,0x06}; unsigned char code TAB_Font[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x83,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C,0xFF,0x89}; unsigned r=1; unsigned i=0,a; void delay1 (unsigned int); display(); ;main() { while (1) display( ); } display( ) // LED动态扫描显示子函数 { r=1; //1位选通,要根据数码管类型和硬件电路决 定,若0选通应该为r=0xfe; i=0; while (r!=0x40) // 6个数码管没全扫完,继续扫描 { P3=r;

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档