找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个是单片机点阵控制路灯,怎么用按键控制点阵数字增减

[复制链接]
跳转到指定楼层
楼主
ID:907621 发表于 2021-4-22 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>

  2. sbit T_STR = P2^6;       //锁存引脚,屏上标识位STR
  3. sbit R1    = P2^4;       //数据引脚,屏上标识R1
  4. sbit G1    = P0^4;       //数据引脚,屏上标识G1
  5. sbit T_CLK = P2^5;       //时钟引脚,屏上标识位CLK
  6. sbit OE    = P2^1;       //使能引脚,屏上标识EN/OE

  7. unsigned int k;
  8. unsigned char HzNum;
  9. unsigned char tab[8];
  10. unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//行数据

  11. /*-----------------------------------------------
  12.              16x16汉字取模数据
  13. ------------------------------------------------*/
  14. unsigned char code hztest1[][32]=    //二维数组,目的是减少运算,可以用最基本的一维数组,每个汉字有32个字节数据
  15. {
  16. /*hong ren*/
  17. 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
  18. 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  19. /*10*/
  20. 0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x1F,0x98,0x10,0x90,0x10,0x90,0x10,0x90,0x10,
  21. 0x90,0x10,0x90,0x10,0x90,0x10,0x90,0x10,0xB8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
  22. /*-- hongren2 宽度x高度=16x16  --*/
  23. 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
  24. 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  25. /*9*/
  26. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,
  27. 0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  28. /*hong ren*/
  29. 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
  30. 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  31. /*8*/
  32. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
  33. 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  34. /*-- hongren2 宽度x高度=16x16  --*/
  35. 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
  36. 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  37. /*7*/
  38. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
  39. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
  40. /*hong ren*/
  41. 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
  42. 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  43. /*6*/
  44. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
  45. 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  46. /*-- hongren2 宽度x高度=16x16  --*/
  47. 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
  48. 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  49. /*5*/
  50. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
  51. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  52. /*hong ren*/
  53. 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
  54. 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  55. /*4*/
  56. 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
  57. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
  58. /*-- hongren2 宽度x高度=16x16  --*/
  59. 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
  60. 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  61. /*3*/
  62. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
  63. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  64. /*hong ren*/
  65. 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
  66. 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  67. /*2*/
  68. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
  69. 0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  70. /*-- hongren2 宽度x高度=16x16  --*/
  71. 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
  72. 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
  73. /*1*/
  74. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
  75. 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,

  76. };
  77. unsigned char code hztest2[][32]=    //二维数组,目的是减少运算,可以用最基本的一维数组,每个汉字有32个字节数据
  78. {

  79. /*10*/
  80. 0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x1F,0x98,0x10,0x90,0x10,0x90,0x10,0x90,0x10,
  81. 0x90,0x10,0x90,0x10,0x90,0x10,0x90,0x10,0xB8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
  82. /*-- lvren 宽度x高度=16x16  --*/
  83. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
  84. 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
  85. /*9*/
  86. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,
  87. 0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  88. /*--  lvren2宽度x高度=16x16  --*/
  89. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
  90. 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
  91. /*8*/
  92. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
  93. 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  94. /*-- lvren 宽度x高度=16x16  --*/
  95. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
  96. 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
  97. /*7*/
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
  99. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
  100. /*--  lvren2宽度x高度=16x16  --*/
  101. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
  102. 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
  103. /*6*/
  104. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
  105. 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  106. /*-- lvren 宽度x高度=16x16  --*/
  107. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
  108. 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
  109. /*5*/
  110. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
  111. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  112. /*--  lvren2宽度x高度=16x16  --*/
  113. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
  114. 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
  115. /*4*/
  116. 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
  117. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
  118. /*-- lvren 宽度x高度=16x16  --*/
  119. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
  120. 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
  121. /*3*/
  122. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
  123. 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  124. /*--  lvren2宽度x高度=16x16  --*/
  125. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
  126. 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
  127. /*2*/
  128. 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
  129. 0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  130. /*-- lvren 宽度x高度=16x16  --*/
  131. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
  132. 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
  133. /*1*/
  134. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
  135. 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
  136. /*--  lvren2宽度x高度=16x16  --*/
  137. 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
  138. 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
  139. };
  140. /*-----------------------------------------------

  141. /*-----------------------------------------------
  142.             初始化定时器,做为动态扫描
  143. ------------------------------------------------*/
  144. void Init_Timer1(void)
  145. {
  146. TMOD |= 0x10;                             
  147. EA=1;                      //总中断使能
  148. ET1=1;                     //定时中断使能
  149. TR1=1;                     //打开定时器开关
  150. }


  151. /*-----------------------------------------------
  152.                       主程序
  153. ------------------------------------------------*/
  154. main()
  155. {  unsigned int i;
  156.     unsigned char a=0;
  157. Init_Timer1(); //初始化定时器

  158. while(1)
  159. {
  160.   k=0;//可以加入其它的控制程序
  161.    HzNum = a;
  162. for(i=0;i<200;i++);//循环延时时间,可以自行调节参数
  163. a++;
  164. k++;
  165. if(a == 20)
  166.     a = 0;  
  167. if(k == 20)
  168.         k = 0;

  169. }
  170. }

  171. /*-----------------------------------------------
  172.              定时器执行动态扫描
  173. ------------------------------------------------*/
  174. void Timer1_isr(void) interrupt 3
  175. {

  176. static unsigned char count,j;
  177. unsigned char i;
  178. TH1=0xff;                //重装初值
  179. TL1=0;


  180. T_STR=0;       //锁存释放
  181. if(k<=9)  
  182. {for(j=0;j<2;j++) //取每个汉字的前2个字节,数据传输完成后锁存输出即可 j表示汉字个数,如果是3个汉字屏就可以修改成3
  183.         {

  184.     {InputByteR(hztest1[j+2*HzNum][i]);
  185.     InputByteR(hztest1[j+2*HzNum][i+1]);}

  186.         }}
  187. if(k>9)  
  188. {for(j=0;j<2;j++) //取每个汉字的前2个字节,数据传输完成后锁存输出即可 j表示汉字个数,如果是3个汉字屏就可以修改成3
  189.         {

  190.     {InputByteG(hztest2[j+2*HzNum][i]);
  191.     InputByteG(hztest2[j+2*HzNum][i+1]);}

  192.         }}
  193. OE=1;  //暂时关闭屏幕,防止出现鬼影,如果没有使用该引脚控制则会出现拖影现象。
  194. T_STR=1;      //锁存有效,此时一行的数据显示到屏上
  195. P0=DIS[count]|0xf0;//用P0口的前4位控制16行,屏内部通过4-16译码器工作,循环扫描其他15行
  196. OE=0;//使能
  197. count++;
  198. i+=2;              //累加调用下一行数据
  199. if(count==16)
  200.     count=0;
  201. if(i==32)
  202.     i=0;

  203. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:907621 发表于 2021-4-22 21:49 | 只看该作者
有人告诉哪,增加按键要怎么加
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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