NY8LP05A段码屏配置,显示1234菜单

[复制链接]
892|0
 楼主| 34af9uc 发表于 2024-10-13 20:40 | 显示全部楼层 |阅读模式
NY8LP05A段码屏配置,显示1234菜单
  1. /*****************NY8LP05A*************************/
  2. /*****************LCD_GDC04212S********************/
  3. /*****************ID:共同学习stm8*******************/
  4. /*****************20241001*************************/
  5. /**************************************************/
  6. //        _1A_        ____GDC04212S___        ____
  7. //       | 1  |      | 2  |      | 3  |      | 4  |
  8. //       1F  1B      |    |  .   |    |      |    |
  9. //       |-1G-|      |----| 2H   |----|      |----|
  10. //       1E  1C      |    |  .   |    |      |    |
  11. //       |_1D_|.1H   |____|.3H   |____|.4H   |____|
  12. //         1[url=home.php?mod=space&uid=72445]@[/url] 2@ 3@ 4@ 5@ 6@ 7@ 8@ 9@ 10@ 11@ 12@
  13. // 段码屏脚位________________________________________________________
  14. //|_PIN_|_1__|_2__|_3__|_4__|_5__|_6__|_7__|_8__|_9__|_10_|_11_|_12_|
  15. //|COM0_|COM0|____|____|____|_1F_|_1A_|_2F_|_2A_|_3F_|_3A_|_4F_|_4A_|
  16. //|COM1_|____|COM1|____|____|_1G_|_1B_|_2G_|_2B_|_3G_|_3B_|_4G_|_4B_|
  17. //|COM2_|____|____|COM2|____|_1E_|_1C_|_2E_|_2C_|_3E_|_3C_|_4E_|_4C_|
  18. //|COM3_|____|____|____|COM3|_1H_|_1D_|_2H_|_2D_|_3H_|_3D_|_4H_|_4D_|

  19. //ram位置            ________________________________________________
  20. //                  |_0x200_|_4A_|_4F_|_3A_|_3F_|_2A_|_2F_|_1A_|_1F_|
  21. //                  |_0x208_|_4B_|_4G_|_3B_|_3G_|_2B_|_2G_|_1B_|_1G_|
  22. //                  |_0x210_|_4C_|_4E_|_3C_|_3E_|_2C_|_2E_|_1C_|_1E_|
  23. //                  |_0x218_|_4D_|_4H_|_3D_|_3H_|_2D_|_2H_|_1D_|_1H_|
  24. /**************************************************/
  25. #include <ny8l.h>
  26. /**************************************************/
  27. #define                led_l                PB&=~(1<<0)
  28. #define                led_h                PB|=(1<<0)
  29. #define                anjian                PA&(1<<0)

  30. /**************************************************/
  31. void                yanshi(unsigned char z1);                //延时
  32. void                chushihua();        //初始化
  33. void                xianshi();                //显示
  34. void                caidan();                //菜单
  35. /**************************************************/
  36. unsigned char xianshi_a1;                //显示RAM变量
  37. unsigned char xianshi_a2;
  38. unsigned char xianshi_a3;
  39. unsigned char xianshi_a4;

  40. /**************************************************/
  41. unsigned char const zi1[]={
  42. 0x3f, //0,0
  43. 0x06, //1,1
  44. 0x5b, //2,2
  45. 0x4f, //3,3
  46. 0x66, //4,4
  47. 0x6d, //5,5
  48. 0x7d, //6,6
  49. 0x07, //7,7
  50. 0x7f, //8,8
  51. 0x6f, //9,9
  52. 0x77, //10,a
  53. 0x7c, //11,b
  54. 0x39, //12,c
  55. 0x5e, //13,d
  56. 0x79, //14,e
  57. 0x71, //15,f
  58. 0x3d, //16,g
  59. 0x76, //17,h
  60. 0x04, //18,i
  61. 0x1e, //19,j
  62. 0x78, //20,k
  63. 0x38, //21,l
  64. 0x55, //22,m
  65. 0x54, //23,n
  66. 0x5c, //24,o
  67. 0X73, //25,p
  68. 0X67, //26,q
  69. 0X50, //27,r
  70. 0X6d, //28,s
  71. 0X31, //29,t
  72. 0X3e, //30,u
  73. 0X1c, //31,v
  74. 0X1d, //32,w
  75. 0X52, //33,x
  76. 0X6e, //34,y
  77. 0X5b, //35,z
  78. 0x00, //36,不显
  79. 0b10000000, //37,.
  80. 0b01000000, //38,-
  81. 0b01111110 //39,廿
  82. };
  83. /**************************************************/                //元素数量+元素位置+不显*4
  84. unsigned char const caidan1[]={ 9,1,38,23,18,17,10,24,36,36,36,36};                //1.nihao
  85. unsigned char const caidan2[]={13,2,38,20,10,18,16,30,10,23,19,18,36,36,36,36};                //2.kaiguanji
  86. unsigned char const caidan3[]={18,3,38,32,14,23,13,30,28,17,10,23,16,33,18,10,23,36,36,36,36};                //3.wendushangxian
  87. unsigned char const caidan4[]={16,4,38,32,14,23,13,30,33,18,10,33,18,10,23,36,36,36,36};                //4.wenduxiaxian
  88. unsigned char const caidan5[]={11,5,38,28,17,18,19,18,10,23,36,36,36,36};                //5.shijian
  89. unsigned char const caidan6[]={13,6,38,19,18,10,24,35,17,14,23,16,36,36,36,36};                //6.jiaozheng
  90. unsigned char const caidan7[]={16,7,38,19,18,10,28,30,28,17,18,19,18,10,23,36,36,36,36};                //7.jiasushijian

  91. unsigned char                caidan_a1;                //菜单状态0,1菜单位数1-6
  92. unsigned char                kaiguanji =1;
  93. unsigned char                wendushangxian =20;
  94. unsigned char                wenduxiaxian =10;
  95. unsigned char                shijian =1;
  96. unsigned char                jiaozheng=10;
  97. unsigned char                jiasushijian=10;
  98. /**************************************************/
  99. void main(void)
  100. {
  101. //unsigned char a1;


  102. chushihua();                //初始化

  103. /**************************************************/

  104. while(1)
  105. {

  106. if(anjian)
  107. {
  108. led_h;
  109. caidan_a1 ++;        if(caidan_a1 ==8){caidan_a1 =1;}
  110. caidan();                //菜单
  111. chushihua();                //初始化
  112. }
  113. else{led_l;}




  114. }


  115. }
  116. /**************************************************/
  117. void                chushihua()                //初始化
  118. {
  119. //CLRWDT();                //关狗
  120. /**************************************************/                //IO初始化
  121. //PAIO                &=~(1<<2);                //0/1 输出/输入
  122. //PAC                |=(1<<2);                //输出模式下:IO模式 0/1开漏/标准输出

  123. //PAIO                |=(1<<6);                //0/1 输出/输入
  124. //PAC                |=(1<<6);                //输入模式下:下拉电阻 1/0启用/禁用

  125. PAIO                |=1<<0;                        //1输入,按键PA0
  126. PAC                        |=1<<0;                        //下拉电阻

  127. PAIO                &=~(1<<3);                //PA3输出高
  128. PAC                        |=(1<<3);
  129. PA                        |=(1<<3);


  130. PBIO                &=~(1<<0);                //led输出
  131. PBC                        |=(1<<0);
  132. PB                        &=~(1<<0);

  133. PBIO                &=0B00000011;                //与lcd共用部分设为输出
  134. PBC                        |=0B11111100;                //输出模式下:IO模式 0/1开漏/标准输出
  135. /**************************************************/                //LCD初始化
  136. LCDPC                =0;


  137. LCDPC                |=0b000                <<0;                //[2:0]电荷泵时钟256HZ
  138. //LCDPC                |=0b001                <<0;                //[2:0]电荷泵时钟512HZ
  139. //LCDPC                |=0b010                <<0;                //[2:0]电荷泵时钟1KHZ
  140. //LCDPC                |=0b011                <<0;                //[2:0]电荷泵时钟2KHZ
  141. //LCDPC                |=0b100                <<0;                //[2:0]电荷泵时钟4KHZ
  142. //LCDPC                |=0b101                <<0;                //[2:0]电荷泵时钟8KHZ
  143. //LCDPC                |=0b110                <<0;                //[2:0]电荷泵时钟16KHZ
  144. //LCDPC                |=0b111                <<0;                //[2:0]电荷泵时钟32KHZ
  145. LCDPC                |=0b1                <<3;                //[3]电荷泵启用
  146. LCDPC                |=0b00                <<5;                //[6:5]电压调节器1v
  147. //LCDPC                |=0b01                <<5;                //[6:5]电压调节器1.17v
  148. //LCDPC                |=0b10                <<5;                //[6:5]电压调节器1.33v
  149. //LCDPC                |=0b11                <<5;                //[6:5]电压调节器1.5v
  150. LCDPC                |=0b1                <<4;                //[4]内部电压调节器启用

  151. LCDC                =0;
  152. LCDC                |=0b100                <<0;                //[2:0]128hz
  153. LCDC                |=0b01                <<3;                //[4-3]打开LCD

  154. //*(volatile unsigned char *)(0x200)=                0b00101000;                //显示1234
  155. //*(volatile unsigned char *)(0x208)=                0b10100110;
  156. //*(volatile unsigned char *)(0x210)=                0b11101000;
  157. //*(volatile unsigned char *)(0x218)=                0b10111110;

  158. *(volatile unsigned char *)(0x200)=                0b01101000;                //显示1234
  159. *(volatile unsigned char *)(0x208)=                0b11111110;
  160. *(volatile unsigned char *)(0x210)=                0b10100110;
  161. *(volatile unsigned char *)(0x218)=                0b00101000;
  162. yanshi(50);                //延时
  163. //while(1){}
  164. /**************************************************/
  165. }
  166. /**************************************************/
  167. void                yanshi(unsigned char z1)                //延时
  168. {
  169. unsigned char z2,z3;
  170. for(z2=z1;z2>0;z2--)
  171.         for(z3=180;z3>0;z3--);
  172. }
  173. /**************************************************/
  174. void                xianshi()                //显示
  175. {
  176. //ram位置__________________________________________
  177. //|_0x200_|_4A_|_4F_|_3A_|_3F_|_2A_|_2F_|_1A_|_1F_|  //高位....低位,xianshi_b1
  178. //|_0x208_|_4B_|_4G_|_3B_|_3G_|_2B_|_2G_|_1B_|_1G_|  //高位....低位,xianshi_b2
  179. //|_0x210_|_4C_|_4E_|_3C_|_3E_|_2C_|_2E_|_1C_|_1E_|  //高位....低位,xianshi_b3
  180. //|_0x218_|_4D_|_4H_|_3D_|_3H_|_2D_|_2H_|_1D_|_1H_|  //高位....低位,xianshi_b4
  181. //unsigned char xianshi_a1;                //全局变量
  182. //unsigned char xianshi_a2;
  183. //unsigned char xianshi_a3;
  184. //unsigned char xianshi_a4;
  185. unsigned char xianshi_b1 =0;
  186. unsigned char xianshi_b2 =0;
  187. unsigned char xianshi_b3 =0;
  188. unsigned char xianshi_b4 =0;
  189. if(xianshi_a1 &0b00000001) {xianshi_b1 |=0b00000010;}                //1a                //解码
  190. if(xianshi_a1 &0b00000010) {xianshi_b2 |=0b00000010;}                //1b
  191. if(xianshi_a1 &0b00000100) {xianshi_b3 |=0b00000010;}                //1c
  192. if(xianshi_a1 &0b00001000) {xianshi_b4 |=0b00000010;}                //1d
  193. if(xianshi_a1 &0b00010000) {xianshi_b3 |=0b00000001;}                //1e
  194. if(xianshi_a1 &0b00100000) {xianshi_b1 |=0b00000001;}                //1f
  195. if(xianshi_a1 &0b01000000) {xianshi_b2 |=0b00000001;}                //1g
  196. if(xianshi_a1 &0b10000000) {xianshi_b4 |=0b00000001;}                //1h

  197. if(xianshi_a2 &0b00000001) {xianshi_b1 |=0b00001000;}                //2a
  198. if(xianshi_a2 &0b00000010) {xianshi_b2 |=0b00001000;}                //2b
  199. if(xianshi_a2 &0b00000100) {xianshi_b3 |=0b00001000;}                //2c
  200. if(xianshi_a2 &0b00001000) {xianshi_b4 |=0b00001000;}                //2d
  201. if(xianshi_a2 &0b00010000) {xianshi_b3 |=0b00000100;}                //2e
  202. if(xianshi_a2 &0b00100000) {xianshi_b1 |=0b00000100;}                //2f
  203. if(xianshi_a2 &0b01000000) {xianshi_b2 |=0b00000100;}                //2g
  204. if(xianshi_a2 &0b10000000) {xianshi_b4 |=0b00000100;}                //2h

  205. if(xianshi_a3 &0b00000001) {xianshi_b1 |=0b00100000;}                //3a
  206. if(xianshi_a3 &0b00000010) {xianshi_b2 |=0b00100000;}                //3b
  207. if(xianshi_a3 &0b00000100) {xianshi_b3 |=0b00100000;}                //3c
  208. if(xianshi_a3 &0b00001000) {xianshi_b4 |=0b00100000;}                //3d
  209. if(xianshi_a3 &0b00010000) {xianshi_b3 |=0b00010000;}                //3e
  210. if(xianshi_a3 &0b00100000) {xianshi_b1 |=0b00010000;}                //3f
  211. if(xianshi_a3 &0b01000000) {xianshi_b2 |=0b00010000;}                //3g
  212. if(xianshi_a3 &0b10000000) {xianshi_b4 |=0b00010000;}                //3h

  213. if(xianshi_a4 &0b00000001) {xianshi_b1 |=0b10000000;}                //4a
  214. if(xianshi_a4 &0b00000010) {xianshi_b2 |=0b10000000;}                //4b
  215. if(xianshi_a4 &0b00000100) {xianshi_b3 |=0b10000000;}                //4c
  216. if(xianshi_a4 &0b00001000) {xianshi_b4 |=0b10000000;}                //4d
  217. if(xianshi_a4 &0b00010000) {xianshi_b3 |=0b01000000;}                //4e
  218. if(xianshi_a4 &0b00100000) {xianshi_b1 |=0b01000000;}                //4f
  219. if(xianshi_a4 &0b01000000) {xianshi_b2 |=0b01000000;}                //4g
  220. if(xianshi_a4 &0b10000000) {xianshi_b4 |=0b01000000;}                //4h

  221. *(volatile unsigned char *)(0x200)=                xianshi_b1;                //放到指定位置
  222. *(volatile unsigned char *)(0x208)=                xianshi_b2;
  223. *(volatile unsigned char *)(0x210)=                xianshi_b3;
  224. *(volatile unsigned char *)(0x218)=                xianshi_b4;
  225. }
  226. /**************************************************/
  227. void                caidan()                //菜单
  228. {
  229. unsigned char caidan_b1;
  230. unsigned char caidan_b2;

  231. if(caidan_a1 ==0){return;}                //0退出
  232. if(caidan_a1 ==1)                //1-nihao,你好
  233. {
  234. for(caidan_b1 =1;caidan_b1 <caidan1[0];caidan_b1 ++)                //取出菜单1的字模循环左移显示
  235.         {
  236.         caidan_b2                =caidan1[caidan_b1 +0];                //取元素位置
  237.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  238.        
  239.         caidan_b2                =caidan1[caidan_b1 +1];                //取元素位置
  240.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  241.        
  242.         caidan_b2                =caidan1[caidan_b1 +2];                //取元素位置
  243.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  244.        
  245.         caidan_b2                =caidan1[caidan_b1 +3];                //取元素位置
  246.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  247.         xianshi();                //显示译码
  248.         yanshi(100);                //延时
  249.         }
  250. //caidan_a1                =0;                //结束菜单
  251. return;
  252. }

  253. if(caidan_a1 ==2)                //2-kaiguanji,开关机
  254. {for(caidan_b1 =1;caidan_b1 <caidan2[0];caidan_b1 ++)                //取出菜单2的字模循环左移显示
  255.         {
  256.         caidan_b2                =caidan2[caidan_b1 +0];                //取元素位置
  257.         xianshi_a1                =zi1[caidan_b2];                //取元素
  258.        
  259.         caidan_b2                =caidan2[caidan_b1 +1];                //取元素位置
  260.         xianshi_a2                =zi1[caidan_b2];                //取元素
  261.        
  262.         caidan_b2                =caidan2[caidan_b1 +2];                //取元素位置
  263.         xianshi_a3                =zi1[caidan_b2];                //取元素
  264.        
  265.         caidan_b2                =caidan2[caidan_b1 +3];                //取元素位置
  266.         xianshi_a4                =zi1[caidan_b2];                //取元素
  267.         xianshi();                //显示译码       
  268.         yanshi(100);                //延时
  269.         }
  270. //caidan_a1                =0;                //结束菜单
  271. return;
  272. }
  273. if(caidan_a1 ==3)                //3-wendushangxian,温度上限
  274. {
  275. for(caidan_b1 =1;caidan_b1 <caidan3[0];caidan_b1 ++)                //取出菜单3的字模循环左移显示
  276.         {
  277.         caidan_b2                =caidan3[caidan_b1 +0];                //取元素位置
  278.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  279.        
  280.         caidan_b2                =caidan3[caidan_b1 +1];                //取元素位置
  281.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  282.        
  283.         caidan_b2                =caidan3[caidan_b1 +2];                //取元素位置
  284.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  285.        
  286.         caidan_b2                =caidan3[caidan_b1 +3];                //取元素位置
  287.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  288.         xianshi();                //显示译码
  289.         yanshi(100);                //延时
  290.         }
  291. //caidan_a1                =0;                //结束菜单
  292. return;
  293. }
  294. if(caidan_a1 ==4)                //4-wenduxiaxian,温度下限
  295. {
  296. for(caidan_b1 =1;caidan_b1 <caidan4[0];caidan_b1 ++)                //取出菜单1的字模循环左移显示
  297.         {
  298.         caidan_b2                =caidan4[caidan_b1 +0];                //取元素位置
  299.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  300.        
  301.         caidan_b2                =caidan4[caidan_b1 +1];                //取元素位置
  302.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  303.        
  304.         caidan_b2                =caidan4[caidan_b1 +2];                //取元素位置
  305.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  306.        
  307.         caidan_b2                =caidan4[caidan_b1 +3];                //取元素位置
  308.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  309.         xianshi();                //显示译码
  310.         yanshi(100);                //延时
  311.         }
  312. //caidan_a1                =0;                //结束菜单
  313. return;
  314. }
  315. if(caidan_a1 ==5)                //5-shijian,时间
  316. {
  317. for(caidan_b1 =1;caidan_b1 <caidan5[0];caidan_b1 ++)                //取出菜单1的字模循环左移显示
  318.         {
  319.         caidan_b2                =caidan5[caidan_b1 +0];                //取元素位置
  320.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  321.        
  322.         caidan_b2                =caidan5[caidan_b1 +1];                //取元素位置
  323.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  324.        
  325.         caidan_b2                =caidan5[caidan_b1 +2];                //取元素位置
  326.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  327.        
  328.         caidan_b2                =caidan5[caidan_b1 +3];                //取元素位置
  329.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  330.         xianshi();                //显示译码
  331.         yanshi(100);                //延时
  332.         }
  333. //caidan_a1                =0;                //结束菜单
  334. return;
  335. }
  336. if(caidan_a1 ==6)                //6-jiaozheng,矫正
  337. {
  338. for(caidan_b1 =1;caidan_b1 <caidan6[0];caidan_b1 ++)                //取出菜单1的字模循环左移显示
  339.         {
  340.         caidan_b2                =caidan6[caidan_b1 +0];                //取元素位置
  341.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  342.        
  343.         caidan_b2                =caidan6[caidan_b1 +1];                //取元素位置
  344.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  345.        
  346.         caidan_b2                =caidan6[caidan_b1 +2];                //取元素位置
  347.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  348.        
  349.         caidan_b2                =caidan6[caidan_b1 +3];                //取元素位置
  350.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  351.         xianshi();                //显示译码
  352.         yanshi(100);                //延时
  353.         }
  354. //caidan_a1                =0;                //结束菜单
  355. return;
  356. }
  357. if(caidan_a1 ==7)                //7-jiasushijian,加速时间
  358. {
  359. for(caidan_b1 =1;caidan_b1 <caidan7[0];caidan_b1 ++)                //取出菜单1的字模循环左移显示
  360.         {
  361.         caidan_b2                =caidan7[caidan_b1 +0];                //取元素位置
  362.         xianshi_a1                =zi1[caidan_b2];                        //取元素
  363.        
  364.         caidan_b2                =caidan7[caidan_b1 +1];                //取元素位置
  365.         xianshi_a2                =zi1[caidan_b2];                        //取元素
  366.        
  367.         caidan_b2                =caidan7[caidan_b1 +2];                //取元素位置
  368.         xianshi_a3                =zi1[caidan_b2];                        //取元素
  369.        
  370.         caidan_b2                =caidan7[caidan_b1 +3];                //取元素位置
  371.         xianshi_a4                =zi1[caidan_b2];                        //取元素
  372.         xianshi();                //显示译码
  373.         yanshi(100);                //延时
  374.         }
  375. //caidan_a1                =0;                //结束菜单
  376. return;
  377. }

  378. }

  379. /**************************************************/














NY8LP05Alcd配置.png

main.zip

2.97 KB, 下载次数: 2

319

主题

487

帖子

64

粉丝
快速回复 在线客服 返回列表 返回顶部