標(biāo)題: 51單片機(jī)+74HC138驅(qū)動16*96點(diǎn)陣顯示漢字的Proteus仿真+源代碼 [打印本頁]

作者: jinsheng7533967    時間: 2018-12-22 20:57
標(biāo)題: 51單片機(jī)+74HC138驅(qū)動16*96點(diǎn)陣顯示漢字的Proteus仿真+源代碼
16*96點(diǎn)陣仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源碼如下:
  1. /*********************   希望那些還在論壇苦惱的朋友們能看到這款16*16漢字顯示案例  ************************/

  2. #include<reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned  int
  5. #define ulong unsigned long

  6. #define  CTRL_PORT  P2
  7. #define  DATA_PORT  P0
  8. #define  ADDR_PORT  P1

  9. uchar code *p;

  10. uchar code zifu[12][32]={
  11.         
  12.         {0x00,0x01,0x00,0x01,0x3F,0x01,0xA0,0x7F,0xA1,0x20,0x52,0x12,0x14,0x02,0x08,0x02,
  13.         0x18,0x02,0x18,0x06,0x24,0x05,0x24,0x09,0x82,0x18,0x61,0x70,0x1C,0x20,0x00,0x00},
  14.                         
  15.         {0x02,0x00,0x84,0x01,0x6C,0x3E,0x24,0x22,0x20,0x22,0x20,0x22,0x27,0x22,0x24,0x22,
  16.         0xA4,0x22,0x64,0x2A,0x24,0x12,0x04,0x02,0x04,0x02,0x0A,0x00,0xF1,0x7F,0x00,0x00},
  17.                                 
  18.         {0x80,0x00,0x80,0x00,0xFC,0x3F,0x80,0x00,0x90,0x0C,0xA0,0x04,0xC0,0x02,0xFE,0x7F,
  19.         0x80,0x01,0xC0,0x02,0xA0,0x04,0x90,0x18,0x8C,0x70,0x83,0x20,0x80,0x00,0x80,0x00},
  20.         
  21.         {0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,
  22.         0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40},
  23.         
  24.         {0x40,0x00,0x80,0x00,0xFE,0x7F,0x02,0x40,0x21,0x22,0x10,0x04,0x08,0x08,0x04,0x10,
  25.         0xF8,0x0F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFE,0x3F,0x00,0x00},
  26.         
  27.         {0x04,0x00,0xC8,0x3F,0x08,0x20,0x02,0x20,0xE2,0x27,0x22,0x24,0x22,0x24,0xE2,0x27,
  28.         0x22,0x24,0x22,0x24,0xE2,0x27,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x28,0x02,0x10}
  29. };

  30. uchar select_hc138[][4]=
  31. {
  32.         {0x20,0x21,0x22,0x23},
  33.         {0x24,0x25,0x26,0x27},
  34.         
  35.         {0x10,0x11,0x12,0x13},
  36.         {0x14,0x15,0x16,0x17},
  37.         {0x18,0x19,0x1a,0x1b},
  38.         {0x1c,0x1d,0x1e,0x1f}
  39. };

  40. void delay(void)
  41. {
  42.         uchar i;
  43.         for(i=0;i<20;i++);        
  44. }

  45. void plany(void)
  46. {
  47.         uchar i,j,k;
  48.         for(k=0;k<6;k++)
  49.         {   
  50.                 for(j=0;j<1;j++)
  51.                 {                    
  52.                         for(i=0;i<8;i++)
  53.                         {
  54.                                 CTRL_PORT=select_hc138[k][0];
  55.                                 DATA_PORT=zifu[k][2*i];
  56.                                 
  57.                                 ADDR_PORT=i;                                          
  58.                                 delay();
  59.                                 
  60.                                 CTRL_PORT=select_hc138[k][1];
  61.                                 DATA_PORT=zifu[k][2*i+1];
  62.                                 
  63.                                 ADDR_PORT=i;  
  64.                                 delay();
  65.                         }                              
  66.                         for(i=8;i<16;i++)
  67.                         {
  68.                                 CTRL_PORT=select_hc138[k][2];
  69.                                 DATA_PORT=zifu[k][2*i];
  70.                                 
  71.                                 ADDR_PORT=i-8;                                            
  72.                                 delay();
  73.                                 
  74.                                 CTRL_PORT=select_hc138[k][3];
  75.                                 DATA_PORT=zifu[k][2*i+1];
  76.                                 
  77.                                 ADDR_PORT=i-8;     
  78.                                 delay();
  79.                         }         
  80.                 }           
  81.         }                                          
  82. }

  83. void PORT_init()//可放main中,初始化分開放main看起來簡節(jié)一些
  84. {

  85.         TMOD=0x01;
  86.         TH0=0xb1;
  87.         TL0=0xe0;
  88.         ET0=1;
  89.         EA=1;
  90. }

  91. void main()
  92. {
  93.         PORT_init();

  94.         while(1)
  95.         {
  96.                 p=zifu;
  97.                 plany();//此處加一定的延時,讓P=另外一個定義數(shù)組,就能達(dá)到換內(nèi)容的效果
  98.         }
  99. }

  100. void timer0() interrupt 1 using 3
  101. {
  102.         TF0=0;
  103.         TH0=0xb1;
  104.         TL0=0xe0;
  105. }
復(fù)制代碼

附上原碼,仿真,取字工具

51知識點(diǎn)16vs16點(diǎn)陣基本操作.rar (342.7 KB, 下載次數(shù): 104)


作者: shuisheng    時間: 2019-1-26 18:52
我來過一陣子!哈哈哈!
作者: ty417502873    時間: 2019-1-28 15:47
學(xué)習(xí)一下。
作者: sheng7533967    時間: 2019-2-7 00:33
真的不錯!來你空間好好看了看
作者: 站著說話不腰疼    時間: 2019-2-9 13:59
很不錯,學(xué)習(xí)了
作者: 就你****    時間: 2019-2-11 13:33
強(qiáng)大,好人啊!
作者: 春風(fēng)十里吹    時間: 2019-2-19 19:21

強(qiáng)人啊!么么噠!
作者: 天下第一刀    時間: 2019-2-19 23:42
很不錯,學(xué)習(xí)了,厲害厲害
作者: zhengchong60    時間: 2019-3-7 23:08

收下了,學(xué)習(xí)一下。
作者: hubing9973316    時間: 2019-10-14 22:02
贊,學(xué)習(xí)了
作者: hulilanyua    時間: 2019-10-14 23:31
收下了,學(xué)習(xí)一下。
作者: richardle    時間: 2019-10-17 07:18
沒有仿真啊




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