最近有人不知道怎么用8x8的点阵做16x16的滚动点阵显示,今天做了一个例程,附上proteus仿真图
显示内容为 别问,问就是没有 哭表情 GG!
此篇内容及其内容仅限参考学习交流使用,切勿抄袭,或者售卖,有些东西建议还是自己学明白好!!
2020/1/1 拾暮入殇-HT
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define data_point P0
- sbit cs1=P2^1;
- sbit cs2=P2^0;
- sbit sda=P2^6;
- sbit sclk=P2^7;
- uchar code hz[]=
- {
-
- 0x00,0x02,0x7C,0x84,0x44,0x98,0x47,0xE0,
- 0x44,0x84,0x7C,0xC2,0x00,0x7E,0x00,0x00,
- 0x00,0x00,0x0F,0x80,0x00,0x08,0x00,0x0C,
- 0x7F,0xFE,0x7F,0xFF,0x00,0x00,0x00,0x00,//别
-
- 0x00,0x00,0x00,0x00,0x77,0xFE,0x77,0xFE,
- 0x00,0x00,0x67,0xC0,0x64,0x40,0x64,0x40,
- 0x64,0x40,0x67,0xC0,0x60,0x08,0x60,0x0C,
- 0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,//问
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x00,0x08,0x1F,0x18,0x1F,0x30,0x1F,0xF0,
- 0x1F,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//,
-
- 0x00,0x00,0x00,0x00,0x77,0xFE,0x77,0xFE,
- 0x00,0x00,0x67,0xC0,0x64,0x40,0x64,0x40,
- 0x64,0x40,0x67,0xC0,0x60,0x08,0x60,0x0C,
- 0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,//问
-
- 0x10,0x00,0x17,0x18,0xD5,0x04,0xD5,0x7C,
- 0x17,0x00,0x10,0x18,0x00,0x00,0x00,0x0C,
- 0x10,0x18,0x10,0x30,0xFF,0xE0,0xFF,0xFC,
- 0x10,0x04,0xD0,0x0C,0xD0,0x1C,0x00,0x00,//就
-
-
- 0x00,0x02,0x00,0x06,0x02,0x0C,0x02,0x18,
- 0xFA,0x30,0xAA,0xE0,0xAA,0x20,0xAB,0xD0,
- 0xAA,0x90,0xAA,0x98,0xFA,0x88,0x02,0x04,
- 0x02,0x06,0x00,0x02,0x00,0x00,0x00,0x00,//是
-
- 0x00,0x00,0x08,0x08,0x44,0x10,0x22,0x20,
- 0x10,0x00,0x00,0x06,0x07,0x06,0xF5,0x8C,
- 0x84,0xD8,0x84,0x70,0x84,0xD8,0xF5,0x8C,
- 0x17,0x04,0x00,0x00,0x00,0x00,0x00,0x00,//没
-
-
- 0x00,0x00,0x00,0x00,0x61,0x80,0x63,0x00,
- 0x67,0xFE,0x6F,0xFE,0x7D,0x40,0xFD,0x40,
- 0xED,0x48,0x6D,0x4C,0x6F,0xFE,0x6F,0xFE,
- 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//有
-
- 0x00,0x1C,0x00,0x22,0xE0,0x2A,0xBA,0x2E,
- 0xE0,0x00,0x01,0x80,0x02,0x00,0x04,0x1C,
- 0x04,0x22,0x02,0x2A,0x01,0xAE,0xE0,0x00,
- 0xBA,0x00,0xE0,0x7B,0x00,0x7B,0x00,0x00//未命名文件0
-
- };
- uint p;
- void init()
- {
- unsigned char i;
- data_point=0;
- cs1=1;cs1=0;
- cs2=1;cs2=0;
- sda=1;
- for(i=0;i<32;i++)
- {
- sclk=1;
- sclk=0;
- }
- }
- void display()
- {
- uint i,j,k;
- k=p<<1;
- data_point=0;
- cs1=1;cs1=0;
- cs2=1;cs2=0;
- sda=0;
- sclk=1; sclk=0;
- sda=1;
- for(i=0;i<16;i++)
- {
- data_point=hz[k];
- cs1=1; cs1=0;
- k++;
- data_point=hz[k];
- cs2=1; cs2=0;
- k++;
- if(k>=sizeof(hz))k=0;
- for(j=100;j>0;j--);
- data_point=0;
- cs1=1;cs1=0;
- cs2=1;cs2=0;
- sclk=1;sclk=0;
-
- }
- }
- void main(void)
- {
- TMOD=0x01;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- ET0=1;
- EA=1;
- p=0;
- TR0=1;
- init();
- while(1)
- {
- display();
- }
- }
- void timer0()interrupt 1
- {
- static uchar t=0;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- t++;
- if(t==7) //调速度
-
-
- {
- t=0;
- p++;
- if(p>=sizeof(hz)/2)p=0;
- }
- }
复制代码
所有资料51hei提供下载:
16x16点阵.7z
(35.78 KB, 下载次数: 62)
|