找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16*32点阵上下移动程序及Proteus仿真

[复制链接]
跳转到指定楼层
楼主
下面是原理图(下载附件可看清晰大图):


51单片机16*32点阵上下移动Proteus仿真和源代码下载: 16 32点阵上下移动程序.rar (23.66 KB, 下载次数: 54)
程序预览:
  1. //16*32点阵上下移动程序
  2. #includereg52.h
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define hang P3 行扫描接在P3口
  6. sbit ds=P2^0;     595数据口
  7. sbit clk=P2^1;  595位移时钟SH_CP
  8. sbit stcp=P2^2; 595寄存器时钟ST_CP
  9. sbit g2=P2^3;  595使能端
  10. sbit mr=P1^6;  595复位端
  11. sbit g1=P1^7;  154使能端
  12. uint counter,m,n;
  13. uchar flag;
  14. uchar code hangsz[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
  15.                      0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};行扫描数组


  16. uchar code display[][32]={

  17. -- 文字 莱 --
  18. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  19. 0x08,0x20,0x08,0x24,0xFF,0xFE,0x09,0x20,0x01,0x08,0x7F,0xFC,0x01,0x00,0x09,0x20,
  20. 0x05,0x44,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x31,0x0E,0xC1,0x04,0x01,0x00,
  21. -- 文字 茵 --
  22. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  23. 0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x3F,0xF8,0x21,0x08,0x21,0x08,0x2F,0xE8,
  24. 0x21,0x08,0x22,0x88,0x22,0x88,0x24,0x48,0x28,0x28,0x20,0x08,0x3F,0xF8,0x20,0x08,
  25. -- 文字 布 --
  26. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  27. 0x02,0x00,0x02,0x00,0x02,0x08,0xFF,0xFC,0x04,0x00,0x09,0x00,0x11,0x08,0x3F,0xFC,
  28. 0x51,0x08,0x91,0x08,0x11,0x08,0x11,0x08,0x11,0x28,0x11,0x10,0x01,0x00,0x01,0x00,
  29. -- 文字 艺 --
  30. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  31. 0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x00,0x00,0x3F,0xC0,0x00,0x80,0x01,0x00,
  32. 0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x02,0x20,0x02,0x20,0x02,0x1F,0xFE,

  33. -- 文字 店 --
  34. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  35. 0x01,0x00,0x00,0x84,0x3F,0xFE,0x20,0x80,0x20,0x88,0x20,0xFC,0x20,0x80,0x20,0x88,
  36. 0x2F,0xFC,0x28,0x08,0x28,0x08,0x28,0x08,0x48,0x08,0x48,0x08,0x8F,0xF8,0x08,0x08,

  37. -- 文字欢 --
  38. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  39. 0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x45,0x04,0x46,0x48,0x28,0x40,0x28,0x40,
  40. 0x10,0x40,0x28,0x40,0x24,0xA0,0x44,0xA0,0x81,0x10,0x01,0x08,0x02,0x0E,0x0C,0x04,

  41. -- 文字 迎 --
  42. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  43. 0x00,0x00,0x41,0x84,0x26,0x7E,0x14,0x44,0x04,0x44,0x04,0x44,0xF4,0x44,0x14,0xC4,
  44. 0x15,0x44,0x16,0x54,0x14,0x48,0x10,0x40,0x10,0x40,0x28,0x46,0x47,0xFC,0x00,0x00,

  45. -- 文字 您 --
  46. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  47. 0x09,0x00,0x09,0x00,0x13,0xFC,0x12,0x04,0x34,0x48,0x59,0x40,0x91,0x50,0x12,0x4C,
  48. 0x14,0x44,0x11,0x40,0x10,0x80,0x02,0x00,0x51,0x84,0x50,0x92,0x90,0x12,0x0F,0xF0,
  49. -- 文字 光 --
  50. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  51. 0x01,0x00,0x21,0x08,0x11,0x0C,0x09,0x10,0x09,0x20,0x01,0x04,0xFF,0xFE,0x04,0x40,
  52. 0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x42,0x10,0x42,0x20,0x3E,0x40,0x00,

  53. -- 文字 临 --
  54. -- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
  55. 0x10,0x80,0x10,0x80,0x51,0x04,0x51,0xFE,0x52,0x00,0x54,0x80,0x58,0x60,0x50,0x24,
  56. 0x57,0xFE,0x54,0x44,0x54,0x44,0x54,0x44,0x54,0x44,0x14,0x44,0x17,0xFC,0x14,0x04,

  57. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  59. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  61. };

  62. void delay_ms(uchar tt)
  63. {
  64.   for(m=0;mtt;m++)
  65.   for(n=0;n50;n++);
  66. }

  67. void write_595(uchar shuju) 向595写一个字节的数据
  68. {
  69.   uchar i;
  70.   for(i=0;i8;i++)
  71.   {
  72.    ds=(~shuju)&0x01;
  73.    clk=1;
  74.    clk=0;
  75.    shuju=shuju1;
  76.   }
  77. }

  78. void main() 主函数
  79. {
  80. uchar i,j,k,x;
  81. mr=1;
  82. g2=0;
  83. TMOD=0x01;       定时器0工作方式0
  84. g1=0;           154使能
  85. EA=1;            开总中断
  86. ET0=1;           定时器0使能
  87. TH0=(65535-50000)256; 定时器0设置初值
  88. TL0=(65536-50000)%256;



  89. while(1)
  90. {
  91. for(x=0;x12;x=x+4)
  92. {

  93. for(i=0;i16;i++) 字从下往上滚动出现
  94. {
  95. k=1;
  96. for(j=i+1;j0;j--)
  97. {
  98. write_595(display[x+3][k]);
  99. write_595(display[x+3][k-1]);
  100. write_595(display[x+2][k]);
  101. write_595(display[x+2][k-1]);
  102. write_595(display[x+1][k]);
  103. write_595(display[x+1][k-1]);
  104. write_595(display[x][k]);
  105. write_595(display[x][k-1]);
  106. write_595(display[5][k]);
  107. write_595(display[5][k-1]);
  108. k+=2;
  109. hang=hangsz[16-j];
  110. stcp=1;stcp=0;
  111. }
  112. delay_ms(80);
  113. }
  114. TR0=1;flag=1;



  115. while(flag) 停留一秒
  116. {
  117. uchar j;
  118. for(j=0;j16;j++)
  119. {
  120. write_595(display[x+3][j2+1]);
  121. write_595(display[x+3][j2]);
  122. write_595(display[x+2][j2+1]);
  123. write_595(display[x+2][j2]);
  124. write_595(display[x+1][j2+1]);
  125. write_595(display[x+1][j2]);
  126. write_595(display[x][j2+1]);
  127. write_595(display[x][j2]);
  128. write_595(display[5][j2+1]);
  129. write_595(display[5][j2]);
  130. hang=hangsz[j];
  131. stcp=1;stcp=0;
  132. }
  133. }



  134. TR0=0;
  135. for(i=16;i0;i--) 字滚动出显示区
  136. {
  137. k=31;
  138. for(j=i-1;j0;j--)
  139. {
  140. write_595(display[x+3][k]);
  141. write_595(display[x+3][k-1]);
  142. write_595(display[x+2][k]);
  143. write_595(display[x+2][k-1]);
  144. write_595(display[x+1][k]);
  145. write_595(display[x+1][k-1]);
  146. write_595(display[x][k]);
  147. write_595(display[x][k-1]);
  148. write_595(display[5][k]);
  149. write_595(display[5][k-1]);
  150. k-=2;
  151. hang=hangsz[j];
  152. stcp=1;stcp=0;
  153. }
  154. delay_ms(80);
  155. }
  156. }
  157. }
  158. }
  159. void timer0() interrupt 1 中断函数
  160. {
  161.   counter++;
  162.   if(counter==10) 1秒设置
  163.   {
  164.    counter=0;
  165.    flag=0;
  166.   }
  167.   TH0=(65535-50000)256;
  168.   TL0=(65536-50000)%256;
  169. }
复制代码





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

使用道具 举报

沙发
ID:22572 发表于 2016-1-14 08:47 | 只看该作者
谢谢分享。
回复

使用道具 举报

板凳
ID:341203 发表于 2018-6-27 11:08 | 只看该作者
这程序有很多地方出现错
回复

使用道具 举报

地板
ID:168911 发表于 2018-6-27 21:38 | 只看该作者
吕永杨 发表于 2018-6-27 11:08
这程序有很多地方出现错

楼主电脑敲不出<>号吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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