找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机16×16点阵滚动显示源程序及仿真

[复制链接]
跳转到指定楼层
楼主
       这是一款51单片机16×16点阵源程序及仿真,可以实现滚动效果,程序及仿真文件压缩后放在51黑附件,需要一可以自己下载




所有资料下载: 16X16点阵向左移动.rar (62.26 KB, 下载次数: 49)



1、仿真使用PROTEUS7.8以上版本打开。
2、程序需要Keil 4打开。

程序:
  1. /*******************************/

  2. //功能: 用16*16点阵实现左移显示内容
  3. //使用74154 作为行选信号
  4. //使用74HC595作为列信号

  5. /*******************************/

  6. #include <reg51.h>
  7. #include <intrins.h>


  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. #define ROW  P2



  11. /******位定义*******/
  12. sbit ST_CP        = P3^2;         //74HC_595的上升沿使其数据锁存
  13. sbit MR     = P3^3;  //74HC_595的复位端口


  14. uchar code disp[] = //需显示的字模表
  15. {      
  16. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //" "
  17. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18.                                                                                                                                                                                                                            
  19. 0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30, //欢
  20. 0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
  21.                                                                                                                                                                                                                         
  22. 0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41, //迎
  23. 0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,
  24.                                                                                                                                                                                                                         
  25. 0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,0x40,0x00,0x20,0x08,0x18,0x04,0x0F,0x43, //你
  26. 0x08,0x80,0xC8,0x7F,0x08,0x00,0x08,0x01,0x28,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,
  27.                                                                                                                                                                                                                      
  28. 0x10,0x40,0x10,0x20,0x10,0x1E,0xFF,0x01,0x10,0x20,0x10,0x40,0xF8,0x3F,0x10,0x00, //加
  29. 0x00,0x00,0xF8,0x7F,0x08,0x20,0x08,0x20,0x08,0x20,0xFC,0x7F,0x08,0x00,0x00,0x00,
  30.                                                                                                                                                                                                                   
  31. 0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x0C,0x01,0x03,0xE2,0x00,0x1C,0x00,  //入
  32. 0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0xC0,0x00,0x40,0x00,0x00,
  33.                                                   
  34.                                                                                                                                                                                                                   
  35. 0x00,0x10,0x00,0x10,0xF8,0x17,0x49,0x12,0x4A,0x12,0x4C,0x12,0x48,0x12,0xF8,0xFF,  //单
  36. 0x48,0x12,0x4C,0x12,0x4A,0x12,0x49,0x12,0xFC,0x13,0x08,0x18,0x00,0x10,0x00,0x00,
  37.                                                                                                                                                                                                                   
  38. 0x00,0x80,0x00,0x40,0xFE,0x3F,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01, //片
  39. 0x3F,0x01,0x20,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x30,0x00,0x20,0x00,0x00,0x00,
  40.                                                                                                                                                                                                                      
  41. 0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0xFF,0x90,0x80,0x10,0x41,0x00,0x20,0xFC,0x1F, //片
  42. 0x04,0x00,0x04,0x00,0x04,0x00,0xFE,0x3F,0x04,0x40,0x00,0x40,0x00,0x70,0x00,0x00,
  43.                                                                                                                                                                                                                   
  44. 0x10,0x02,0x10,0x01,0x91,0x00,0xD6,0xFF,0x30,0x01,0x98,0x82,0x00,0x40,0x08,0x20,  //初
  45. 0x08,0x18,0xF8,0x07,0x08,0x40,0x08,0x80,0x08,0x40,0xFC,0x3F,0x08,0x00,0x00,0x00,
  46.                                                                                                                                                                                                                   
  47. 0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E, //学
  48. 0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x06,0x30,0x04,0x00,0x00,
  49.                                                                                                                                                                                                                   
  50. 0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x0C,0x01,0x03,0xE2,0x00,0x1C,0x00, //入
  51. 0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0xC0,0x00,0x40,0x00,0x00,
  52.                                                                                                                                                                                                                  
  53. 0x00,0x00,0xFC,0xFF,0x01,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x02,0x00,0x02,0x00,  //门
  54. 0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x80,0xFF,0x7F,0x02,0x00,0x00,0x00,
  55.                                                                                                                                                                                                                   
  56. 0x00,0x00,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0x38,0x38,0x08,0x38,0x08,0x2C,0x08,0x2C, //QQ
  57. 0x08,0x2C,0x08,0x38,0x08,0x70,0x18,0x70,0xF0,0xDF,0xE0,0x4F,0xC0,0x07,0x00,0x00,
  58. 0x00,0x00,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0x38,0x38,0x08,0x38,0x08,0x2C,0x08,0x2C,
  59. 0x08,0x2C,0x08,0x38,0x08,0x70,0x18,0x70,0xF0,0xDF,0xE0,0x4F,0xC0,0x07,0x00,0x00,
  60.                                                                                                                                                                                                                   
  61. 0x10,0x04,0x92,0x02,0xFE,0xFD,0x92,0x44,0x92,0x44,0x92,0x44,0xFF,0xFE,0x12,0x04,//群
  62. 0x89,0x08,0x8A,0x08,0x8C,0x08,0xF8,0xFF,0x8C,0x08,0xCA,0x0C,0x89,0x08,0x00,0x00,

  63.                                                                                                                                                                                           
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F, // 104412917
  65. 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  66. 0x00,0x00,0x80,0x01,0xE0,0x0F,0xF0,0x1F,0xF0,0x1F,0x18,0x30,0x08,0x20,0x08,0x20,
  67. 0x08,0x20,0x08,0x20,0x18,0x30,0xF8,0x1F,0xF0,0x1F,0xE0,0x0F,0x80,0x01,0x00,0x00,
  68. 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x80,0x05,0x80,0x04,0x40,0x24,0x20,0x24,
  69. 0x30,0x24,0xF0,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x00,
  70. 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x80,0x05,0x80,0x04,0x40,0x24,0x20,0x24,
  71. 0x30,0x24,0xF0,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x00,
  72. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F,
  73. 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  74. 0x00,0x00,0x00,0x00,0x60,0x30,0x70,0x30,0x78,0x38,0x08,0x3C,0x08,0x34,0x08,0x36,
  75. 0x08,0x32,0x08,0x33,0x88,0x31,0xF8,0x31,0xF0,0x30,0x60,0x38,0x00,0x00,0x00,0x00,
  76. 0x00,0x00,0xC0,0x00,0xF0,0x11,0xF0,0x3B,0x18,0x3B,0x08,0x32,0x08,0x22,0x08,0x22,
  77. 0x08,0x22,0x08,0x32,0x08,0x39,0xF8,0x1F,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F,
  79. 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  80. 0x00,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x18,0x00,0x08,0x00,0x08,0x3C,0x08,0x3E,
  81. 0x08,0x3F,0x88,0x01,0xC8,0x00,0x68,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x00,0x00,

  82. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //" "
  83. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  84. };


  85. /*************延时函数***************/                                                     
  86. void delay1ms( unsigned char t)         

  87. {
  88.         unsigned char i,j;
  89.         for( ; t; t--)
  90.         for(i=4; i>0; i--)
  91.         for(j=123; j>0; j--);

  92. }


  93. void main()
  94. {
  95.         uint base   = 0;                                  //在disp[]地址中移动,从0 到 rows - 15,每次加2,实现移动效果 用int类型 计数较多
  96.         uchar tmp  = 0;                                     //临时变量,用于每个字显示的次数
  97.         uint cols   = sizeof(disp);      //" 欢迎你来到桂林电子科技大学"共13个字符块,+两个清屏
  98.         uchar row  = 0;                                        //行选线
  99.         SCON       = 0x00;                             //串口工作模式0;移位寄存器方式 ,P3.1送移位脉冲,P3.0连接串行数据线
  100.                                                                            
  101.         while(1)
  102.         {
  103.                  for(base=0;base<=cols-32;base=base+2) //-32目的是用于显示最后一个字符后没有乱码出现
  104.                  {
  105.                          for(tmp=0;tmp<2;tmp++)       //每个字块显示5次
  106.                         {               
  107.                                 for(row=0;row<16;row++)
  108.                                 {
  109.                                        
  110.                                         MR    = 0;                        //清理行输出,将移位寄存器的数据清0
  111.                                         MR    = 1;
  112.                                         ST_CP = 0;                        //上升沿,将数据锁存
  113.                                         ST_CP = 1;                                
  114.                                         SBUF=disp[base+row*2];

  115.                                         while(TI==0);                //等待发送完毕,串口发送完毕后,TI==1;所以使其TI=1,停止中端
  116.                                         TI = 0;        

  117.                                         SBUF=disp[base+row*2+1];
  118.                                         while(TI==0);                //等待发送完毕,串口发送完毕后,TI==1;所以使其TI=1,停止中端
  119.                                         TI  = 0;         

  120.                                         ST_CP = 0;                        //上升沿,将数据锁存
  121.                                     ST_CP = 1;
  122.                                         ROW   = row;            //行控制,使其点亮
  123.         
  124.                                         delay1ms(3);                //3ms延时
  125.                                 }
  126.                         }
  127.                  }
  128.                  
  129.         }
  130. }
  131.         

复制代码




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

使用道具 举报

沙发
ID:119195 发表于 2016-5-8 06:34 | 只看该作者
这些东西还是很简单的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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