欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载
     

    点阵屏显示原理及实验详解..pdf

    • 资源ID:5218956       资源大小:168.72KB        全文页数:32页
    • 资源格式: PDF        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    点阵屏显示原理及实验详解..pdf

    标题: LED 点阵屏学习攻略共享资料 LED 点阵屏学习攻略 在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR 平台下 完成了 128*32 点阵屏的无闪烁显示。现把整个学习过程总结如下: 无论是 51 单片机还是AVR 单片机,点阵屏的显示原理是一样的,所以首先从 51 讲起。 说明:以下所有试验如无特殊说明均在Keil uVision3 + Proteus 6.9 SP5下仿 真完成。 一基于 51 的点阵屏显示:(1)点亮第一个8*8 点阵 : 1.首先在 Proteus 下选择我们需要的元件,AT89C52 、74LS138 、 MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在 Proteus 6.9中 8*8 的点阵 总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE, MATRIX-8*8-ORANGE ,MATRIX-8*8-RED。 在这里请大家牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而 所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的 行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。 2.在选择完以上三个元件后,我们开始布线,具体如下图: 这里 P2 是列选, P3 连接 38 译码器后作为行选。 选择 38 译码器的原因 :38 译码器每次可输出相应一个I/O 口的低电平,正好 与点阵屏的低电平选中行相对,并且节省了I/O 口,大大方便了我们的编程和 以后的扩展。 3.下面让我们把它点亮,先看一个简单的程序: (将奇数行偶数列的点点亮,效果如下图) 下面是源代码: /*8*8LED点阵屏显示 */ #include void delay(int z) /延时函数 int x,y; for(x=0;x char code table=0x0f,0xe9,0xaf,0xe9,0xaf,0xa9,0xeb,0x11; /“明“ 字编码 void delay(int z) /延时函数 int x,y; for(x=0;x char code table=0x00,0x20,0x20,0x7F,0x7E,0x21,0x22,0x21, 0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21, 0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21, 0x80,0x20,0x80,0x20,0x40,0x28,0x20,0x10; / “明” void delay(int z) int x,y; for(x=0;x sbit R=“P2“0; /数据输入端口 sbit CLK=“P2“1; / 时钟信号 sbit STB=“P2“2; / 锁存端 char code table=0x00,0x20,0x20,0x7F,0x7E,0x21,0x22,0x21, 0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21, 0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21, 0x80,0x20,0x80,0x20,0x40,0x28,0x20,0x10; / “明” void delay(int z) int x,y; for(x=0;x1; /右移一位,取出该字节的最低位 R=CY; /将该字节的最低位传给R CLK=0; / 将数据移入595 ,上升沿 CLK=1; void main() int num; while(1) for(num=0;num1 ,把要输入的数据右移一位, 这样最低位便进入移位寄存器CY 中,紧接着我们让R=CY ,把该位传给595 的输入端, CLK 一个上升沿的跳变就实现了把该位数据移入595 的功能。 8 次 循环便可以将一个字节的数据送出。重点还是看while 循环内, 同样也是 16 行 的扫描,然后就是WriteByte (table2*num )等同于上面的P2=table2*num, WriteByte(table2*num+1)等同于 P3=table2*num+1,完成列选,接着行选, 然后有一个STB 的下降沿的跳变, 这个变化能够实现并行输出移位寄存器中的 数据。这样就完成了整个过程。 (3)16*16 点阵的移位控制 点阵的移位一般有上、下、左、右的移动,这里我们重点讲上移和左移,其它 同理。 1. 点阵的上移: 点阵的上移相对来说很简单,看效果图如下: 源代码:(该程序实现了循环上移显示“ 邢台 ” ) /*16*16LED点阵屏显示 */ #include sbit R=“P2“0; /数据输入端口 sbit CLK=“P2“1; / 时钟信号 sbit STB=“P2“2; / 锁存端 char code table= /*- 文字 : 邢-*/ /*- 宋体 12; 此字体下对应的点阵为:宽x 高=16x16 -*/ 0x00,0x00,0xFE,0x3E,0x48,0x22,0x48,0x22, 0x48,0x12,0x48,0x12,0x48,0x0A,0xFF,0x13, 0x48,0x22,0x48,0x42,0x48,0x42,0x48,0x46, 0x44,0x2A,0x44,0x12,0x42,0x02,0x40,0x02, /*- 文字 : 台-*/ /*- 宋体 12; 此字体下对应的点阵为:宽x 高=16x16 -*/ 0x40,0x00,0x40,0x00,0x20,0x00,0x10,0x04, 0x08,0x08,0x04,0x10,0xFE,0x3F,0x00,0x20, 0x00,0x08,0xF8,0x1F,0x08,0x08,0x08,0x08, 0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08, ; void delay(int z) int x,y; for(x=0;x1; /右移一位,取出该字节的最低位 R=CY; /将该字节的最低位传给R CLK=0; / 将数据送出,上升沿 CLK=1; void main() int num,move,speed; while(1) if(+speed8) /移动速度控制 speed=0; move+; /移位 if(move16) /是否完成移位一个汉字 move=0; /从头开始 for(num=0;numtempyid) | (BUFFs+1 #define uchar unsigned char #define uint unsigned int uchar yid,h; /YID 为移动计数器,H 为行段计数器 uint zimuo; /字模计数器 uchar code hanzi; /汉字字模 uchar BUFF4; /缓存 void in_data(void); /调整数据 void rxd_data(void); /发送数据 void sbuf_out(); /16 段扫描 uchar code table=/篇幅有限,省略编码; void main(void) uchar i,d=10; yid=0; zimuo=0; while(1) while(yid=96) /到最后从头开始,有字数决定 zimuo=0; /*/ void sbuf_out() for(h=0;h=0;s-) /h 为向后先择字节计数器,zimuoo 为向后 选字计数器 BUFF2*s+1=tablezimuo+1+32*s+2*h; /把第一个字模的第一个字节 放入 BUFF0 /中,第二个字模的第一个字节放入BUFF2 中 BUFF2*s=tablezimuo+32*s+2*h; / 把第一个字模的第二个字节放 入 BUFF1 中, /第二个字模的第二个字节放入BUFF3 中 /*/ void rxd_data(void) /串行发送数据 char s; uchar inc,tempyid,temp; if(yidtempyid)|(BUFFs+1 #define uchar unsigned char #define uint unsigned int uchar yid,h; /YID 为移动计数器,H 为行段计数器 uint zimuo; /字模计数器 uchar code hanzi; /汉字字模 uchar BUFF18; /缓存 void in_data(void); /调整数据 void rxd_data(void); /发送数据 void sbuf_out(); /16 段扫描 uchar code table=/篇幅有限,省略编码; void main(void) uchar i,d=10; yid=0; zimuo=0; while(1) while(yid=480) /到最后从头开始,有字数决定 zimuo=0; /*/ void sbuf_out() for(h=0;h=0;s-) /h 为向后先择字节计数器,zimuoo 为向后 选字计数器 BUFF2*s+1=tablezimuo+1+32*s+2*h; /把第一个字模的第一个字节 放入 BUFF0 /中,第二个字模的第一个字节放入BUFF2 中 BUFF2*s=tablezimuo+32*s+2*h; / 把第一个字模的第二个字节放 入 BUFF1 中, /第二个字模的第二个字节放入BUFF3 中 /*/ void rxd_data(void) /串行发送数据 char s; uchar inc,tempyid,temp; if(yidtempyid)|(BUFFs+1 #include #define uchar unsigned char #define uint unsigned int #include “delay.h“ #include “code.h“ #pragma data: data #define screen_size 8 /半屏显示汉字个数:8 32*128 uchar BUFF_1screen_size*2+2; /缓存 uchar BUFF_2screen_size*2+2; /缓存 uchar disrow; /disrow 为 16 行变量 uchar temp_up,temp_down; uchar Move_up,Move_down; uchar temp_up,temp_down; uint zimo_up,zimo_down; #define HC595_data1_H() PORTB |= BIT(0) #define HC595_data1_L() PORTB HC595_lock_L; for (i=0x01;i!=0;i=i=0;s-) BUFF_12*s=pf+32*s+2*disrow; BUFF_12*s+1=pf+1+32*s+2*disrow; /* 函数名 :void Move_Down(const uchar *p,uint f) 功能 :下半屏缓存数据左移 输入 : 输出 : /*/ void Move_Down( const uchar *p,uint f) signedchar s; for (s=screen_size;s=0;s-) BUFF_22*s=pf+32*s+2*disrow; BUFF_22*s+1=pf+1+32*s+2*disrow; /* 函数名 :void display(void) 功能 :显示刷新 输入 : 输出 : /*/ void display( void ) uchar i = Move_up; uchar j = Move_down; uchar s; uchar inc,tempyid,temp1,temp2; if(itempyid)|(BUFF_1s+1tempyid)|(BUFF_2s+1(8-tempyid); HC595_send_2byte(temp1,temp2); /发送数据 void port_init( void ) PORTA = 0x00; DDRA = 0xFF; PORTB = 0x00; DDRB = 0xFF; PORTC = 0x00; /m103 output only DDRC = 0xFF; PORTD = 0x00; DDRD = 0xFF; /call this routine to initialize all peripherals void init_devices( void ) /stop errant interrupts until set 2010-8-13 8:5044

    注意事项

    本文(点阵屏显示原理及实验详解..pdf)为本站会员(tbuqq)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开