欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機51的數字鐘設計:內容包括完整程序和仿真及實驗報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:340872 發表于 2018-5-29 22:58 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
一、        實驗名稱:電子鐘表設計
二、        試驗任務:
      利用51單片機、鍵盤、1602液晶顯示屏等電子元器件,編寫電子表的程序,實現電子表正常工作,顯示時、分、秒;按鍵可以控制電子表的設置與調整。
三、        軟件設計:利用isis軟件仿真進行電子表的仿真圖如下
     
四、        實驗步驟:
1.    運用仿真軟件isis畫實驗原理圖,擺放所需要的電子元器件并進行連線。
2.    按照任務要求進行程序模塊兒的分析,大概需要函數聲明、1602初始化函數、延時函數、中斷函數、按鍵程序、主程序等部分。
3.    按照軟件原理圖的接口,定義相應的單片機I/O口。

五、        實驗程序
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit wela=P2^7;
  5. sbit dula=P2^6;
  6. sbit lcdrs=P2^1;
  7. sbit lcden=P1^6;
  8. sbit lcdrw=P1^5;
  9. sbit shezhi=P3^2;
  10. sbit jia=P3^3;
  11. sbit jian=P3^4;
  12. uchar count,num;
  13. char shi,fen,miao;
  14. uchar code table[]="  2012.11.1 Wed";
  15. uchar code table1[]="    00:00:00  ";
  16. void delay(uint z)
  17. {
  18. uint x,y;
  19. for(x=0;x<z;x++)
  20.      for(y=0;y<110;y++);
  21. }
  22. voidwrite_com(uchar com)
  23. {
  24.   lcdrs=0;
  25.   lcdrw=0;
  26.   lcden=0;
  27.   P0=com;
  28.   delay(5);
  29.   lcden=1;
  30.   delay(5);
  31.   lcden=0;
  32. }
  33. voidwrite_data(uchardate)
  34. {
  35.   lcdrs=1;
  36.   lcdrw=0;
  37.   lcden=0;
  38.   P0=date;
  39. delay(5);
  40. lcden=1;
  41. delay(5);
  42. lcden=0;
  43. }
  44. voidinit()
  45. {
  46. uchar num;
  47. dula=0;
  48. wela=0;
  49. lcden=0;
  50. write_com(0x38);    //功能設置,8位數據接口,2行顯示,5*7點陣
  51. write_com(0x0c);    //顯示開關控制,開顯示,關光標,關閃爍
  52. write_com(0x06);    //輸入方式設置,AC自動增一,畫面不動
  53. write_com(0x01);    //清屏
  54. write_com(0x80);    //首地址為第一行
  55. for(num=0;num<15;num++)
  56. {
  57. write_data(table[num]);
  58. delay(20);
  59. }
  60. write_com(0x80+0x40);//第二行
  61. for(num=0;num<15;num++)
  62. {
  63. write_data(table1[num]);
  64. delay(20);
  65. }
  66. /* 定時器做中斷設置*/
  67. TMOD=0X01;    //定時器0的方式1
  68. TH0=(65536-50000)/256;
  69. TL0=(65536-50000)%256;
  70. EA=1;
  71. ET0=1;
  72. TR0=1;
  73. }
  74. /*刷新地址及數據*/
  75. void write_sfm(uchar
  76. add,uchar date)
  77. {
  78. uchar shi,ge;
  79. shi=date/10;
  80. ge=date%10;
  81. write_com(0x80+0x40+add);
  82. write_data(0x30+shi);
  83. write_data(0x30+ge);
  84. }
  85. /*功能鍵控制函數*/
  86. voidkeyscan()
  87. {
  88. if(shezhi==0)
  89. {
  90. delay(5);
  91. if(shezhi==0)
  92. {
  93. num++;
  94. while(!shezhi);
  95. if(num==1)
  96. {
  97. TR0=0;
  98. write_com(0x80+0x40+10);
  99. write_com(0x0f);
  100. }
  101. if(num==2)
  102. {
  103. write_com(0x80+0x40+7);
  104. }
  105. if(num==3)
  106. {
  107. write_com(0x80+0x40+4);
  108. }
  109. if(num==4)
  110. {
  111. num=0;
  112. write_com(0x0c);
  113. TR0=1;
  114. }
  115. }
  116. }
  117. if(shezhi!=0)
  118. {
  119. if(jia==0)
  120. {
  121. delay(5);
  122. if(jia==0)
  123. {
  124.   while(!jia);
  125.   if(num==1)
  126.   {
  127.   miao++;
  128.   if(miao==60)
  129.   miao=0;
  130.     write_sfm(10,miao);
  131. write_com(0x80+0x40
  132. +10);
  133.   }
  134. if(num==2)
  135.   {
  136.      fen++;
  137.      if(fen==60)
  138.      fen=0;
  139. write_sfm(7,fen);
  140. write_com(0x80+0x40+7);  
  141. }
  142. if(num==3)
  143. {
  144. shi++;
  145. if(shi==24)
  146. shi=0;
  147. write_sfm(4,shi);
  148. write_com(0x80+0x40+4);
  149. }
  150. }
  151. }
  152. if(jian==0)
  153. {
  154. delay(5);
  155. if(jian==0)
  156. {
  157. while(!jian);
  158. if(num==1)
  159. {
  160. miao--;
  161. if(miao==-1)
  162. miao=59;
  163. write_sfm(10,miao);
  164. write_com(0x80+0x40+10);
  165. }
  166. if(num==2)
  167. {
  168. fen--;
  169. if(fen==-1)
  170. fen=59;
  171. write_sfm(7,fen);
  172. write_com(0x80+0x40+7);
  173. }
  174. if(num==3)
  175. {
  176. shi--;
  177. if(shi==-1)
  178. shi=23;
  179. write_sfm(4,shi);
  180. write_com(0x80+0x40+4);
  181. }
  182. }
  183. }
  184. }
  185. }
  186. /*主函數*/
  187. void main()
  188. {
  189.   init();
  190.   while(1)
  191.   {
  192.      keyscan();
  193.   }
  194. }
  195. /*定時器中斷函數*/
  196. oid timer0()interrupt 1
  197. {
  198. TH0=(65536-50000)/256;
  199. TL0=(65536-50000)%256;
  200. count++;
  201. if(count==20)
  202. {
  203.   count=0;
  204.   miao++;


  205. {
  206.   if(miao==60)
  207. miao=0;
  208. fen++;
  209. if(fen==60)
  210. {
  211. fen=0;
  212. shi++;
  213. if(shi==24)
  214. {
  215.   shi=0;
  216. }
  217. write_sfm(4,shi);    //時時鐘動作
  218. }
  219. write_sfm(7,fen);     //分時鐘動作
  220. }
  221. write_sfm(10,miao);   //秒時鐘動作
  222. }
  223. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

地板
ID:985386 發表于 2021-11-27 18:54 | 只看該作者
有原理圖嗎,方便學習!
回復

使用道具 舉報

板凳
ID:667078 發表于 2019-12-18 17:24 來自觸屏版 | 只看該作者
有沒有硬件連接圖啊,方便學習!
回復

使用道具 舉報

沙發
ID:667078 發表于 2019-12-18 10:38 來自觸屏版 | 只看該作者
能說一下wela  dula是什么嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表