標(biāo)題: 單片機(jī)使用2片74LS138、2片74HC595驅(qū)動16x16點陣顯示漢字的上移源程序及源程序 [打印本頁]

作者: 風(fēng)星子    時間: 2020-6-9 20:57
標(biāo)題: 單片機(jī)使用2片74LS138、2片74HC595驅(qū)動16x16點陣顯示漢字的上移源程序及源程序
2片74LS138、2片74HC595驅(qū)動16x16點陣顯示漢字的上移源程序及仿真,需要的自取,也歡迎提一些建議。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. sbit R=P2^0;        //數(shù)據(jù)串口輸入
  4. sbit CLK=P2^1;        //脈沖信號輸入
  5. sbit STB=P2^2;        //鎖存信號

  6. char code table[]={
  7. /*--  文字:  風(fēng)  --*/
  8. /*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
  9. 0x00,0x00,0xFC,0x0F,0x04,0x08,0x04,0x08,0x14,0x0A,0x24,0x0A,0x44,0x09,0x44,0x09,
  10. 0x84,0x08,0x84,0x08,0x44,0x09,0x44,0x49,0x24,0x52,0x12,0x52,0x02,0x60,0x01,0x40,

  11. /*--  文字:  星  --*/
  12. /*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
  13. 0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x80,0x00,0x88,0x00,
  14. 0xF8,0x1F,0x84,0x00,0x82,0x00,0xF8,0x0F,0x80,0x00,0x80,0x00,0xFE,0x3F,0x00,0x00,

  15. /*--  文字:  子  --*/
  16. /*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
  17. 0x00,0x00,0xFE,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x80,0x01,0x80,0x00,0xFF,0x7F,
  18. 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00,

  19. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //尾部的一屏的空字符,用于清屏,參數(shù)和屏大小有關(guān)。
  20. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21. };        

  22. void delay(int z)                                //延時程序
  23. {
  24.         int x,y;
  25.         for(x=55;x>0;x--)
  26.                 for(y=z;y>0;y--);
  27. }

  28. void wordByt(char b)                        //寫(拆分)一個字節(jié)數(shù)據(jù)
  29. {
  30.         char i;
  31.         for(i=0;i<8;i++)
  32.         {
  33.                 b=b>>1;                        //右移一位,暫存近CY
  34.                 R=CY;                                //取出最低位
  35.                 CLK=0;                        //上升沿        
  36.                 CLK=1;
  37.         }
  38. }

  39. void main()
  40. {
  41.         int num,move,speed,i;
  42.         i=3;                                        //漢字個數(shù)
  43.         while(1)
  44.         {
  45.                 if(++speed>2)                //速度控制(數(shù)字小速度快)
  46.                 {
  47.                         speed=0;
  48.                         move++;                //移位

  49.                         if(move>16*i)        //判斷是否完成一個漢字
  50.                                 move=0;        //從頭開始

  51.                 }

  52.                         for(num=0;num<16;num++)
  53.                         {
  54.                                 wordByt(table[2*num+move*2]);
  55.                                 wordByt(table[2*num+1+move*2]);
  56.                                 P1=num;
  57.                                 STB=1;                //輸出鎖存中的數(shù)據(jù),下降沿
  58.                                 STB=0;
  59.                                 delay(3);
  60.                         }
  61.         }
  62. }
復(fù)制代碼

所有資料51hei提供下載:
上移位16x16點陣源程序及仿真.7z (60.79 KB, 下載次數(shù): 211)


作者: 多喝水    時間: 2020-6-18 00:47
謝謝分享
作者: xsjsensei    時間: 2020-6-21 22:32
為啥我用字模軟件轉(zhuǎn)換的時候,用你這個程序,顯示出來的左右是顛倒的啊,請問有什么需要改動么
作者: 666mk    時間: 2021-7-14 09:50
為什么我改不了程序里的漢字啊樓主,我一打字都是亂碼
作者: aecuter    時間: 2023-5-30 20:15
xsjsensei 發(fā)表于 2020-6-21 22:32
為啥我用字模軟件轉(zhuǎn)換的時候,用你這個程序,顯示出來的左右是顛倒的啊,請問有什么需要改動么

程序里的字模以0X3F為例,自己取得字模是0XFC
作者: aecuter    時間: 2023-5-30 20:34
xsjsensei 發(fā)表于 2020-6-21 22:32
為啥我用字模軟件轉(zhuǎn)換的時候,用你這個程序,顯示出來的左右是顛倒的啊,請問有什么需要改動么

將LED接口的前八位接成(8~15)后八位接成(0~7)
作者: perivalue    時間: 2023-11-3 13:18
這個確實很棒




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1