2片74LS138、2片74HC595驅動16x16點陣顯示漢字的上移源程序及仿真,需要的自取,也歡迎提一些建議。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (107.94 KB, 下載次數: 60)
下載附件
2023-11-3 13:29 上傳
51hei.png (15.39 KB, 下載次數: 107)
下載附件
2020-6-9 22:06 上傳
單片機源程序如下:
- #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)
2023-11-3 13:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|