新手为学习大佬们的知识发帖赚积分
8X8点阵屏滚动显示仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下(带详细注释):
- #include<reg51.h>
- #include<intrins.h>
- unsigned char ldis[16] = {0xFF,0xF3,0xE1,0xC1,0x83,0xC1,0xE1,0xF3};//图片点阵,阳码(0亮)、按列取字模、低位在前
- unsigned char hdis[8] = {0x66,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0x18};//{0x00,0x6c,0xfe,0xfe,0x7c,0x38,0x10,0x00};//图片点阵,阴码(1亮)、按行取字模、低位在前
- void delay(unsigned char i) // 延时函数
- {
- unsigned char j,k;
- for(j=i;j>0;j--)
- for(k=110;k>0;k--);
- }
- void main() //主函数
- {
- unsigned char i,j,k,temp;
- for (i = 8; i < 16; i++) //补8列不显示的列编码
- ldis[i]=0xff;
- //for (i = 8; i < 16; i++) //补8行不显示的行编码
- //hdis[i]=0x00;
- while(1)
- {
- /* //按列扫描,左右滚动
- for(j=0;j<17;j++) //9帧,要循环显示就有17帧
- {
- for(k=0;k<50;k++)//重复显示一帧数据50次
- { temp=1;
- for (i = 0; i < 8; i++)
- {
- P3 = temp;//列选
- P2 = ldis[(i+j)%16];//图片点阵列编码,要循环显示ldis[(i+j)%16];
- temp=temp<<1;
- delay(2);
- }
- }
- }*/
-
- //按行扫描,上下滚动
- for(j=0;j<8;j++) //9帧,要循环显示就有17帧
- {
- for(k=0;k<50;k++)//重复显示一帧数据50次
- { temp=0xfe;
- for (i = 0; i < 8; i++)
- {
- P2 = temp;//行选
- P3 = hdis[(i+j)%8];//图片点阵行编码,要循环显示hdis[(i+j)%16];
- temp=_crol_(temp,1);
- delay(2);
- }
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
8X8点阵屏滚动显示.zip
(20.05 KB, 下载次数: 267)
|