标题: 51单片机+74HC138驱动16*96点阵显示汉字的Proteus仿真+源代码 [打印本页]

作者: jinsheng7533967    时间: 2018-12-22 20:57
标题: 51单片机+74HC138驱动16*96点阵显示汉字的Proteus仿真+源代码
16*96点阵仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



单片机源码如下:
  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看起来简节一些
  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=另外一个定义数组,就能达到换内容的效果
  98.         }
  99. }

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

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

51知识点16vs16点阵基本操作.rar (342.7 KB, 下载次数: 104)


作者: shuisheng    时间: 2019-1-26 18:52
我来过一阵子!哈哈哈!
作者: ty417502873    时间: 2019-1-28 15:47
学习一下。
作者: sheng7533967    时间: 2019-2-7 00:33
真的不错!来你空间好好看了看
作者: 站着说话不腰疼    时间: 2019-2-9 13:59
很不错,学习了
作者: 就你****    时间: 2019-2-11 13:33
强大,好人啊!
作者: 春风十里吹    时间: 2019-2-19 19:21

强人啊!么么哒!
作者: 天下第一刀    时间: 2019-2-19 23:42
很不错,学习了,厉害厉害
作者: zhengchong60    时间: 2019-3-7 23:08

收下了,学习一下。
作者: hubing9973316    时间: 2019-10-14 22:02
赞,学习了
作者: hulilanyua    时间: 2019-10-14 23:31
收下了,学习一下。
作者: richardle    时间: 2019-10-17 07:18
没有仿真啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1