久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3545|回復: 0
打印 上一主題 下一主題
收起左側

keyscan()改為 switch........case 語句來判斷,提高程序可讀性

[復制鏈接]
跳轉到指定樓層
樓主
ID:73477 發表于 2015-2-10 01:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. sbit s1=P3^0;
  7. sbit s2=P3^1;
  8. sbit s3=P3^2;
  9. sbit rd=P3^7;
  10. sbit lcden=P3^4;
  11. sbit lcdrs=P3^5;
  12. sbit beep=P2^3;
  13. const uchar table[]=" 2015-02-04 WED";        // 15
  14. const uchar table1[]="  00:00:00";        // 10
  15. uchar t0;s1num;
  16. char year,month,day,week,shi,fen,miao;
  17. void delay(uint z)
  18. {
  19. uint x,y;
  20. for(x=z;x>0;x--)       
  21. for(y=110;y>0;y--);
  22. }
  23. void didi(uchar num)
  24. {
  25. uchar di_num;
  26. for(di_num=num;di_num>0;di_num--)
  27. {
  28. beep=0;
  29. delay(50);
  30. beep=1;
  31. delay(30);
  32. }
  33. }
  34. void write_comm(uchar comm)
  35. {
  36. lcdrs=0;
  37. lcden=0;
  38. P0=comm;
  39. delay(5);
  40. lcden=1;
  41. delay(5);
  42. lcden=0;
  43. }
  44. void write_date(uchar date)
  45. {
  46. lcdrs=1;
  47. lcden=0;
  48. P0=date;
  49. delay(5);
  50. lcden=1;
  51. delay(5);
  52. lcden=0;
  53. }
  54. void init()
  55. {
  56. uchar num;
  57. dula=0;
  58. wela=0;
  59. lcden=0;
  60. write_comm(0x38);
  61. write_comm(0x0c);
  62. write_comm(0x06);
  63. write_comm(0x01);
  64. write_comm(0x80);
  65. for(num=0;num<15;num++)
  66. {
  67. write_date(table[num]);       
  68. delay(5);
  69. }
  70. write_comm(0x80+0x40+2);
  71. for(num=0;num<10;num++)
  72. {
  73. write_date(table1[num]);
  74. delay(5);       
  75. }
  76. TMOD|=0x01;
  77. TH0=(65536-50000)/256;
  78. TL0=(65536-50000)%256;
  79. EA=1;
  80. ET0=1;
  81. TR0=1;
  82. }
  83. void write_sfm(uchar address,uchar date)
  84. {
  85. char shi,ge;
  86. shi=date/10;
  87. ge=date%10;
  88. write_comm(0x80+0x40+address);
  89. write_date(0x30+shi);
  90. write_date(0x30+ge);
  91. }
  92. void write_nyr(uchar address,uchar date)
  93. {
  94. char shi,ge;
  95. shi=date/10;
  96. ge=date%10;
  97. write_comm(0x80+address);
  98. write_date(0x30+shi);
  99. write_date(0x30+ge);
  100. }
  101. void write_week(uchar week)
  102. {
  103. write_comm(0x80+12);
  104. switch(week)
  105. {
  106. case 1: write_date('M'); delay(5);
  107. write_date('O'); delay(5);
  108. write_date('N');
  109. break;
  110. case 2: write_date('T'); delay(5);
  111. write_date('U'); delay(5);
  112. write_date('E');
  113. break;
  114. case 3: write_date('W'); delay(5);
  115. write_date('E'); delay(5);
  116. write_date('D');
  117. break;
  118. case 4: write_date('T'); delay(5);
  119. write_date('H'); delay(5);
  120. write_date('U');
  121. break;
  122. case 5: write_date('F'); delay(5);
  123. write_date('R'); delay(5);
  124. write_date('I');
  125. break;
  126. case 6: write_date('S'); delay(5);
  127. write_date('A'); delay(5);
  128. write_date('T');
  129. break;
  130. case 7: write_date('S'); delay(5);
  131. write_date('U'); delay(5);
  132. write_date('N');
  133. break;
  134. }
  135. }
  136. void keyscan()
  137. {
  138. rd=0;
  139. if(s1==0)
  140. {
  141. delay(5);
  142. if(s1==0)
  143. {
  144. while(!s1);
  145. didi(1);
  146. s1num++;
  147. switch(s1num)
  148. {
  149. case 1:        TR0=0;
  150. write_comm(0x0f);
  151. write_comm(0x80+0x40+10);
  152. break;
  153. case 2:       
  154. write_comm(0x80+0x40+7);
  155. break;
  156. case 3:       
  157. write_comm(0x80+0x40+4);
  158. break;
  159. case 4:       
  160. write_comm(0x80+12);
  161. break;       
  162. case 5:       
  163. write_comm(0x80+9);
  164. break;
  165. case 6:       
  166. write_comm(0x80+6);
  167. break;
  168. case 7:       
  169. write_comm(0x80+3);
  170. break;       
  171. case 8:        s1num=0;
  172. write_comm(0x0c);
  173. write_comm(0x80+12);
  174. TR0=1;
  175. break;       
  176. }
  177. }
  178. }
  179. if(s1num!=0)
  180. {
  181. if(s2==0)
  182. {
  183. delay(5);
  184. if(s2==0)
  185. {
  186. while(!s2);
  187. switch(s1num)
  188. {
  189. case 1: miao++;        didi(1);
  190. if(miao==60)
  191. miao=0;
  192. write_sfm(10,miao);
  193. write_comm(0x80+0x40+10);
  194. break;
  195. case 2: fen++;        didi(1);
  196. if(fen==60)
  197. fen=0;
  198. write_sfm(7,fen);
  199. write_comm(0x80+0x40+7);
  200. break;
  201. case 3: shi++;        didi(1);
  202. if(shi==24)
  203. shi=0;
  204. write_sfm(4,shi);
  205. write_comm(0x80+0x40+4);
  206. break;
  207. case 4: week++;        didi(1);
  208. if(week==8)
  209. week=1;
  210. write_week(week);
  211. write_comm(0x80+12);
  212. break;
  213. case 5: day++;        didi(1);
  214. if(day==32)
  215. day=1;
  216. write_nyr(9,day);
  217. write_comm(0x80+9);
  218. break;
  219. case 6: month++;        didi(1);
  220. if(month==13)
  221. month=1;
  222. write_nyr(6,month);
  223. write_comm(0x80+6);
  224. break;
  225. case 7: year++; didi(1);
  226. if(year==100)
  227. year=1;
  228. write_nyr(3,year);
  229. write_comm(0x80+3);
  230. break;

  231. }
  232. }
  233. }
  234. if(s3==0)
  235. {
  236. delay(5);
  237. if(s3==0)
  238. {
  239. while(!s3);
  240. switch(s1num)
  241. {
  242. case 1: miao--; didi(1);
  243.        if(miao==-1)
  244. miao=59;
  245. write_sfm(10,miao);
  246. write_comm(0x80+0x40+10);
  247. break;
  248. case 2: fen--; didi(1);
  249.        if(fen==-1)
  250. fen=59;
  251. write_sfm(7,fen);
  252. write_comm(0x80+0x40+7);
  253. break;
  254. case 3: shi--; didi(1);
  255.        if(shi==-1)
  256. shi=23;
  257. write_sfm(4,shi);
  258. write_comm(0x80+0x40+4);
  259. break;
  260. case 4: week--; didi(1);
  261.        if(week==0)
  262. week=7;
  263. write_week(week);
  264. write_comm(0x80+12);
  265. break;
  266. case 5: day--; didi(1);
  267.        if(day==0)
  268. day=31;
  269. write_nyr(9,day);
  270. write_comm(0x80+9);
  271. break;
  272. case 6: month--; didi(1);
  273.        if(month==0)
  274. {
  275. month=13;
  276. write_nyr(6,month);
  277. write_comm(0x80+6);
  278. }
  279. break;
  280. case 7: year--; didi(1);
  281.        if(year==0)
  282. year=99;
  283. write_nyr(3,year);
  284. write_comm(0x80+3);
  285. break;
  286. }
  287. }

  288. }
  289. }
  290. }
  291. void main()
  292. {
  293. init();
  294. //        didi(1);
  295. while(1)
  296. {
  297. keyscan();
  298. }
  299. }
  300. void timer0() interrupt 1
  301. {
  302. TH0=(65536-50000)/256;
  303. TL0=(65536-50000)%256;
  304. t0++;
  305. if(t0==18)       
  306. {
  307. t0=0;
  308. miao++;
  309. if(miao==60)
  310. {
  311. miao=0;
  312. fen++;
  313. if(fen==60)
  314. {
  315. fen=0;
  316. shi++;
  317. if(shi==24)
  318. {
  319. shi=0;
  320. day++;
  321. if(day==32)
  322. {
  323. day=1;
  324. month++;
  325. if(month==13)
  326. {
  327. month=1;
  328. year++;
  329. if(year==100)
  330. {
  331. year=1;
  332. }
  333. write_nyr(3,year);
  334. }
  335. write_nyr(6,month);       
  336. }
  337. write_nyr(9,day);
  338. week++;
  339. if(week==8)
  340. {
  341. week=1;
  342. }
  343. write_week(week);
  344. }
  345. write_sfm(4,shi);
  346. }
  347. write_sfm(7,fen);
  348. }
  349. write_sfm(10,miao);
  350. }
  351. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情久久久 | 日韩在线观看一区 | 欧美日本韩国一区二区 | 国产99久久精品一区二区永久免费 | 精品国产一区二区三区成人影院 | 亚洲精品视频在线看 | 亚洲 欧美 日韩在线 | 精品国产乱码久久久久久闺蜜 | 视频一区二区在线观看 | 91精品久久久久久久久久入口 | 色眯眯视频在线观看 | 午夜精品久久久久久久星辰影院 | 久久91精品国产 | 一级片av| 国产在线一区二区三区 | 亚洲va欧美va天堂v国产综合 | www.99re| 国产精品免费在线 | 国外激情av | 亚洲精选一区 | 4h影视| 久久性色 | 国产在线成人 | 亚洲精品福利视频 | 国产精品视频在线播放 | 九九热精品视频在线观看 | 免费视频一区二区 | www.婷婷亚洲基地 | 国产免费看| 草草草网站 | 亚洲成av人影片在线观看 | 欧美一级久久 | 九九久久精品视频 | 久久精品欧美电影 | 国产激情视频 | 国产亚洲精品久久19p | 欧美国产日韩一区二区三区 | 不卡一区 | 黄视频免费观看 | 国产精品视频一二三区 | 欧美日韩在线看 |