51单片机做的16*96点阵屏仿真,使用的驱动芯片是74hc138和74hc595,电路原理图如上
单片机程序源码如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit SH=P3^0;
- sbit DS=P3^1;
- sbit ST=P3^2;
- uchar num=12; //汉字个数
- uchar code hanzi[]={
- //好
- //C51 Code,逐行从上到下取模,每行左为最高位
- //Creat By Super Led_Dot_Matrix Char V1.0
- 0x00,0x00,0x0C,0xC6,0x0F,0xCC,0x7F,0x78,
- 0x7C,0x70,0x0F,0xF8,0x0F,0x9C,0x21,0x88,
- 0x21,0x80,0x21,0x86,0x27,0x86,0x2F,0xFE,
- 0x29,0x80,0x39,0x80,0x31,0x80,0x00,0x80,
- 0x00,0x00,0x0C,0xC6,0x0F,0xCC,0x7F,0x78,
- 0x7C,0x70,0x0F,0xF8,0x0F,0x9C,0x21,0x88,
- 0x21,0x80,0x21,0x86,0x27,0x86,0x2F,0xFE,
- 0x29,0x80,0x39,0x80,0x31,0x80,0x00,0x80,
- //学
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x0E,0x30,0x4E,0x30,0x7D,0x30,
- 0x3D,0x30,0x0D,0x32,0x4D,0x33,0xED,0x73,
- 0x2D,0xFE,0x0D,0xF0,0x1D,0xB0,0x7D,0xB0,
- 0xED,0x30,0x4E,0x30,0x0E,0x30,0x00,0x00,
- //习
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x00,0x00,0x00,0x10,0x60,0x18,
- 0x2C,0x18,0x2E,0x30,0x26,0x30,0x23,0x20,
- 0x22,0x60,0x20,0x66,0x20,0xC6,0x20,0x06,
- 0x3F,0xFE,0x3F,0xFC,0x00,0x00,0x00,0x00,
- //完
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x3C,0x82,0x3C,0x86,0x34,0x86,
- 0x36,0x8C,0x36,0xF8,0x36,0xE0,0xF6,0x80,
- 0x76,0x80,0x36,0xFE,0x36,0x86,0x36,0x82,
- 0x30,0x82,0x38,0x8E,0x3C,0x8C,0x00,0x00,
- //善
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x11,0x20,0x15,0x3E,0x15,0x31,
- 0x55,0xF1,0x35,0x31,0x15,0x31,0x1F,0xF1,
- 0x15,0x31,0x15,0x31,0x35,0x31,0x75,0xF1,
- 0x15,0x31,0x15,0x3F,0x11,0x20,0x00,0x00,
- //自
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x00,0x00,0x10,0x02,0x1F,0xFE,
- 0x12,0x4C,0x12,0x4C,0xF2,0x4C,0x72,0x4C,
- 0x12,0x4C,0x12,0x4C,0x12,0x4C,0x12,0x4C,
- 0x1F,0xFE,0x1F,0xFE,0x00,0x00,0x00,0x00,
- //我
- //C51 Code,逐行从上到下取模,每行左为最高位
- 0x00,0x00,0x16,0x60,0x36,0x62,0x36,0x62,
- 0x3F,0xFE,0x3F,0xFC,0x66,0xC4,0x66,0xC6,
- 0x06,0x0C,0x7F,0xEC,0x06,0xF8,0x26,0x3C,
- 0x36,0xE6,0x1F,0xC2,0x06,0x0E,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- void delay(uint z)
- {
- uint x,y;
- for(x=0;x<z;x++)
- for(y=50;y>0;y--);
- }
- void send(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- dat>>=1;
- DS=CY;
- SH=0;
- SH=1;
- }
- }
- void display(uchar k)
- {
- uchar i,j,hang,m;
- uint g;
- for(j=0;j<5;j++) //动态扫描5次
- {
- hang=0x08; // 开通第一个138
- for(i=0;i<16;i++)
- {
- ST=0;
- for(m=4;m>0;m--)
- {
- g=2*i+2*k+m*32-32;
- send(hanzi[g]);
- send(hanzi[g+1]);
- }
- P1=hang;
- hang++;
- ST=1; //锁存数据
- delay(1);
- }
- }
- }
- void move()
- {
- uint k,j,a,b;
- for(k=0;k<16*(num-4);k++)
- {
- display(k);
- }
- for(a=16*(num-4);a>0;a--)
- {
- display(a);
- }
- for(j=0;j<2;j++)
- {
- for(b=16;b>0;b--)
- {
- display(16*4*j);
- }
- }
- }
- void main()
- {
- while(1)
- {
- move();
- }
- }
复制代码
所有资料下载:
595.138点阵屏.zip
(74.98 KB, 下载次数: 62)
|