点矩阵屏幕滚动显示.docVIP

  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点阵显示与C语言编程(基础篇) ? (2010-04-03 23:18:25) HYPERLINK javascript:; 转载▼ 标签:? HYPERLINK /c.php?t=blogk=%D4%D3%CC%B8ts=bpoststype=tag \t _blank 杂谈 分类:? HYPERLINK /s/articlelist_1658602212_2_1.html \t _blank 单片机 ? ? 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 ? ?????????????????????????????????????图1 以逐行扫描为例,从图2可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如图3所示。 ??????????????????????????? ?????????????????????图2????????????????????????????????????????????????????????图3 一、行扫描静态显示, 用51单片机实现图3静态显示的程序如下: #includereg51.h #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) ???{ ????P2=0x01; ????for(i=0;i8;i++) ????{ ?????P1=TAB[i]; ???delay(100); ???P2=P21|P27; ???} } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图4显示效果的程序如下: #includereg51.h #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,????//空屏 ???????????????????????????????0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,?????//L ??????????????????????????????0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,?????//O ???????????????????????????????0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,?????//V ????????????????????????????????0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,?????//E ???????????????????????????????0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,????//空屏 ??????????????????????????????}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { uchar N,T; while(1) ???{ for(N=0;N6;N++)???????//循环扫描一遍6帧 ????for(T=0;T100;T++)????//速度 ??????{ ????P2=0x01; ??????????for(i=0;i8;i++) ?????????{ ??????????P1=TAB[i+8*N]; ??????????delay(100)

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档