2片74LS138、2片74HC595驱动16x16点阵显示汉字的上移源程序及仿真,需要的自取,也欢迎提一些建议。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- sbit R=P2^0; //数据串口输入
- sbit CLK=P2^1; //脉冲信号输入
- sbit STB=P2^2; //锁存信号
- char code table[]={
- /*-- 文字: 风 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x00,0xFC,0x0F,0x04,0x08,0x04,0x08,0x14,0x0A,0x24,0x0A,0x44,0x09,0x44,0x09,
- 0x84,0x08,0x84,0x08,0x44,0x09,0x44,0x49,0x24,0x52,0x12,0x52,0x02,0x60,0x01,0x40,
- /*-- 文字: 星 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x80,0x00,0x88,0x00,
- 0xF8,0x1F,0x84,0x00,0x82,0x00,0xF8,0x0F,0x80,0x00,0x80,0x00,0xFE,0x3F,0x00,0x00,
- /*-- 文字: 子 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
- 0x00,0x00,0xFE,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x80,0x01,0x80,0x00,0xFF,0x7F,
- 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,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(int z) //延时程序
- {
- int x,y;
- for(x=55;x>0;x--)
- for(y=z;y>0;y--);
- }
- void wordByt(char b) //写(拆分)一个字节数据
- {
- char i;
- for(i=0;i<8;i++)
- {
- b=b>>1; //右移一位,暂存近CY
- R=CY; //取出最低位
- CLK=0; //上升沿
- CLK=1;
- }
- }
- void main()
- {
- int num,move,speed,i;
- i=3; //汉字个数
- while(1)
- {
- if(++speed>2) //速度控制(数字小速度快)
- {
- speed=0;
- move++; //移位
- if(move>16*i) //判断是否完成一个汉字
- move=0; //从头开始
- }
- for(num=0;num<16;num++)
- {
- wordByt(table[2*num+move*2]);
- wordByt(table[2*num+1+move*2]);
- P1=num;
- STB=1; //输出锁存中的数据,下降沿
- STB=0;
- delay(3);
- }
- }
- }
复制代码
所有资料51hei提供下载:
上移位16x16点阵源程序及仿真.7z
(60.79 KB, 下载次数: 211)
|