找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1884|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机+74HC138驱动16*96点阵Proteus仿真源程序

[复制链接]
跳转到指定楼层
楼主
基于51单片机的点阵仿真和源代码,这种级联比较大的点阵网络上比较少,希望能给大家一些帮助
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <atmel\regx52.h>

  2. #define int8 unsigned char
  3. #define int16 unsigned int
  4. #define int32 unsigned long

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

  8. int8 flag;
  9. int8 n;
  10. int8 zzz;
  11. int8 yyy;
  12. int8 code table[][32]={
  13. {0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40},/*"我",0*/

  14. {0x00,0x20,0x00,0x20,0x3E,0x21,0x22,0x21,0x22,0x21,0x22,0x21,0x22,0x21,0x22,0x21,0x22,0x39,0xBE,0x27,0x22,0x21,0x02,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20},/*"叫",1*/

  15. {0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x12,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x10,0x08,0x14,0x08,0x08},/*"梅",2*/

  16. {0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x21,0x04,0x20,0x02,0x00},/*"川",3*/

  17. {0x00,0x04,0x7F,0x04,0x14,0x05,0x14,0x3F,0x7F,0x05,0xD5,0x04,0xD5,0x7F,0x75,0x00,0x43,0x00,0x41,0x3F,0x7F,0x21,0x41,0x21,0x41,0x21,0x7F,0x3F,0x41,0x21,0x00,0x00},/*"酷",4*/

  18. {0x00,0x00,0xFC,0x0F,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00,0x80,0x00,0x80,0x20,0xFF,0x7F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00}/*"子",5*/
  19. };

  20. int8 select_hc138[][4]={
  21. {0x20,0x21,0x22,0x23},
  22. {0x24,0x25,0x26,0x27},

  23. {0x10,0x11,0x12,0x13},
  24. {0x14,0x15,0x16,0x17},
  25. {0x18,0x19,0x1a,0x1b},
  26. {0x1c,0x1d,0x1e,0x1f}
  27. };
  28. void delay(void);
  29. void ldelay(void);
  30. void main(void){

  31. int8 i,j,k;
  32. int8 index;


  33. flag=0x10;
  34. n=0;
  35. TMOD=0x01;
  36. TH0=0xb1;
  37. TL0=0xe0;
  38. ET0=1;
  39. EA=1;
  40. //TR0=1;


  41. flag=0x10;



  42. yyy=0;
  43. zzz=0;

  44. //CTRL_PORT=select_hc138[2][0];

  45. while(1)
  46. {
  47.     for(k=0;k<6;k++){   
  48.            for(j=0;j<60;j++)
  49.                      {                    
  50.                     for(i=0;i<8;i++)
  51.                      {
  52.                             CTRL_PORT=select_hc138[k][0];
  53.                              DATA_PORT=table[k][2*i];

  54.                          ADDR_PORT=i;                                          
  55.                                  delay();

  56.                                  CTRL_PORT=select_hc138[k][1];
  57.                              DATA_PORT=table[k][2*i+1];
  58.                                     
  59.                          ADDR_PORT=i;  
  60.                                   delay();
  61.                      }                              
  62.                     for(i=8;i<16;i++)
  63.                      {
  64.                             CTRL_PORT=select_hc138[k][2];
  65.                              DATA_PORT=table[k][2*i];

  66.                                 ADDR_PORT=i-8;                                            
  67.                                  delay();

  68.                             CTRL_PORT=select_hc138[k][3];
  69.                              DATA_PORT=table[k][2*i+1];

  70.                         ADDR_PORT=i-8;     
  71.                                  delay();
  72.                      }         
  73.          }        

  74.       
  75.    }                                          
  76.                     
  77.   }


  78. }
  79. void ldelay(void){
  80. int16 i;
  81. for(i=0;i<1000;i++);

  82. }
  83. void delay(void){
  84. int16 i;
  85. for(i=0;i<80;i++);

  86. }
  87. void timer0() interrupt 1 using 3
  88. {
  89.          TF0=0;
  90.         TH0=0xb1;
  91.         TL0=0xe0;
  92.         if(n<100)
  93.         {
  94.            n++;
  95.         }
  96.         else
  97.         {

  98.            switch(flag)
  99.            {
  100.                      case 0x10:
  101.                   {
  102.                           flag=0x11;                  
  103.                             break;                  
  104.                   }
  105.                      case 0x11:
  106.                   {
  107.                           flag=0x12;                  
  108.                             break;                  
  109.                   }           
  110.                      case 0x12:
  111.                   {
  112.                           flag=0x13;                  
  113.                             break;                  
  114.                   }                     
  115.                      case 0x13:
  116.                   {
  117.                           flag=0x20;                  
  118.                             break;                  
  119.                   }                  
  120.                      case 0x20:
  121.                   {
  122.                           flag=0x21;                  
  123.                             break;                  
  124.                   }
  125.                      case 0x21:
  126.                   {
  127.                           flag=0x22;                  
  128.                             break;                  
  129.                   }           
  130.                      case 0x22:
  131.                   {
  132.                           flag=0x23;                  
  133.                             break;                  
  134.                   }                     
  135.                      case 0x23:
  136.                   {
  137.                           flag=0x10;                  
  138.                             break;                  
  139.                   }                  
  140.            }
  141.            n=0;
  142.            if(zzz==4)
  143.             {
  144.             zzz=0;
  145.                   }
  146.         else
  147.                 {
  148.              zzz++;
  149.              yyy+=4;                        
  150.                 }

  151.          }


  152. }
复制代码


所有资料51hei提供下载:
6个16×16点阵.zip (150.44 KB, 下载次数: 36)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表