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

標題: 單片機秒表設計,啟動仿真開始計時LCD1602顯示時分秒 [打印本頁]

作者: 18896597781    時間: 2021-5-27 16:43
標題: 單片機秒表設計,啟動仿真開始計時LCD1602顯示時分秒
功能介紹:實現手表功能,
LCD顯示時分秒,
附件包含完整程序及仿真設計。


單片機源程序如下:
  1. #include <REG51.h>
  2. #include <intrins.h>
  3. #define N 50000
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define LCD_DB  P1
  7. void display_time();       //聲明顯示時間函數
  8. void LCD_init();           //申明1602初始化函數
  9. void LCD_write_command(uchar dat);    //申明1602寫命令函數
  10. void LCD_write_data(uchar dat);      //申明1602寫數據函數
  11. void delay_n40us(uint n);   //申明延遲函數
  12. uchar shi,fen,miao;                         //全局變量時分秒
  13. uchar tt[]="Welcome 51Luntan";
  14. uint num=0;
  15. /*****************************************
  16. 電路連接?
  17. P1------DB0~DB7
  18. P2.0------RS
  19. P2.1------RW
  20. P2.2------E
  21. *****************************************/
  22. sbit LCD_RS=P2^0;
  23. sbit LCD_RW=P2^1;
  24. sbit LCD_E=P2^2;

  25. //********延時函數***************
  26. void delay_n40us(uint n)
  27. { uint i;
  28. uchar j;
  29. for(i=n;i>0;i--)
  30. for(j=0;j<2;j++);
  31. }
  32. void LCD_init(void)
  33. {
  34. LCD_write_command(0x38);//設置8位格式,2行,5x7
  35. LCD_write_command(0x0c);//整體顯示,關光標,不閃爍
  36. LCD_write_command(0x06);//設定輸入方式,增量不移位--------------
  37. LCD_write_command(0x01);//清除屏幕顯示----------------
  38. delay_n40us(100);     //實踐證明,我的LCD1602上,用for 循環200 次就能可靠完成清屏指令。
  39. }
  40. //********************************
  41. //********寫指令函數***********設置先向1602寫入的數據為地址*
  42. void LCD_write_command(uchar dat)
  43. {
  44. LCD_DB=dat;
  45. LCD_RS=0;//指令
  46. LCD_RW=0;//寫入
  47. LCD_E=1;//允許
  48. LCD_E=0;//產生下降沿
  49. delay_n40us(1);//實踐證明,我的LCD1602 上,用for 循環1 次就能完成普通寫指令。
  50. }
  51. //*******************************
  52. //********再寫數據函數*****向1602中寫入數據********
  53. void LCD_write_data(uchar dat)
  54. {
  55. LCD_DB=dat;
  56. LCD_RS=1;//數據
  57. LCD_RW=0;//寫入
  58. LCD_E=1;//允許
  59. LCD_E=0;//產生下降沿
  60. delay_n40us(1);
  61. }


  62. //************顯示時間**************
  63. void display_time()
  64. {
  65. LCD_init();
  66. LCD_write_command(0x80);   //從第一行顯示T
  67. LCD_write_data('T');
  68. delay_n40us(15000);
  69. LCD_write_data('i');
  70. delay_n40us(15000);
  71. LCD_write_data('m');
  72. delay_n40us(15000);
  73. LCD_write_data('e');
  74. delay_n40us(15000);
  75. LCD_write_data(':');
  76. delay_n40us(15000);
  77. LCD_write_command(0x80+5);          //***顯示時
  78. LCD_write_data(0x30+shi/10);  //****取十位顯示
  79. delay_n40us(15000);
  80. LCD_write_data(0x30+shi%10);        //***取個位顯示
  81. delay_n40us(15000);
  82. LCD_write_data(':');
  83. LCD_write_data(0x30+fen/10);  //顯示分
  84. delay_n40us(15000);
  85. LCD_write_data(0x30+fen%10);
  86. delay_n40us(15000);
  87. LCD_write_data(':');
  88. LCD_write_data(0x30+miao/10);  //顯示秒
  89. delay_n40us(15000);
  90. LCD_write_data(0x30+miao%10);
  91. delay_n40us(15000);
  92. }


  93. //*****T0中斷函數50ms中斷一次**************
  94. void t0_time() interrupt 1
  95. {
  96.   ++num;
  97.   TH0=(65536-N)/256;
  98.   TH0=(65536-N)%256;
  99.   if(num==20)        //計時滿一秒鐘
  100.   {
  101.   num=0;
  102.   ++miao;
  103.   LCD_write_command(0x80+11);
  104.   LCD_write_data(0x30+miao/10);
  105. delay_n40us(15000);
  106. LCD_write_data(0x30+miao%10);
  107. delay_n40us(15000);
  108. if(miao==60)        //計時滿一分鐘
  109. {
  110. miao=0;
  111. ++fen;
  112. LCD_write_command(0x80+8);
  113.   LCD_write_data(0x30+fen/10);
  114. delay_n40us(15000);
  115. LCD_write_data(0x30+fen%10);
  116. delay_n40us(15000);
  117. LCD_write_data(':');
  118. delay_n40us(15000);
  119. if(fen==60)        //計時滿一小時
  120. {
  121. fen=0;
  122. ++shi;
  123. LCD_write_command(0x80+5);
  124.   LCD_write_data(0x30+shi/10);
  125. delay_n40us(15000);
  126. LCD_write_data(0x30+shi%10);
  127. delay_n40us(15000);
  128. LCD_write_data(':');
  129. delay_n40us(15000);
  130. if(shi==24)             //計時滿一天
  131. {
  132. shi=0;
  133. }
  134. }
  135. }

  136.   }
  137. }



  138. //**************main函數***********
  139. main()
  140. {
  141. int h;
  142. shi=0;
  143. fen=0;
  144. miao=0;
  145. display_time();         //顯示初始時間0
  146. LCD_write_command(0x80+64);//從第二行開始顯示
  147. for(h=0;h<16;++h)                   //顯示定義好的字符串
  148. {
  149. LCD_write_data(tt[h]);
  150. delay_n40us(15000);
  151. }
  152. TH0=(65536-N)/256;          //載入計數初值高八位
  153. TH0=(65536-N)%256;          //載入計數初值低八位
  154. EA=1;                                   //開中斷權限
  155. ET0=1;                                   //開T0中斷
  156. TR0=1;                                   //定時開始
  157. TMOD=0x01;                           //選用模式1定時
  158. while(1);                                //等待中斷
  159. }
復制代碼

所有資料51hei提供下載:
利用定時中斷設計手表LCD1602顯示時分秒.zip (64.88 KB, 下載次數: 43)









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品中文字幕在线 | 成人av观看 | 99久久婷婷国产精品综合 | 国产精品福利在线观看 | 久久久久国产精品 | 不卡欧美| 全免费a级毛片免费看视频免 | 欧美精品久久久久 | 久久久国产一区 | 国产日韩在线观看一区 | 国产精品久久久久久久久久 | 成年人视频免费在线观看 | 日本又色又爽又黄又高潮 | 超碰人人人人 | 久草在线免费资源 | 久久不卡| 欧美日韩网站 | 久久丁香| 少妇av片| 日韩视频一区二区在线 | 99精品欧美一区二区三区 | 欧美精品一区在线观看 | 99精品久久久国产一区二区三 | 97人人超碰 | 国产高清视频在线 | 嫩草影院黄| 伊人网站在线 | 免费v片在线观看 | 三级欧美 | 国产视频h | 国产精品一二区 | av影音在线| 中文字幕一区二区视频 | 国产精品视频免费观看 | 亚洲欧美高清 | 欧美精品一区三区 | 日韩av啪啪网站大全免费观看 | 黄色一级大片在线免费看产 | 超碰av在线| 中文在线日韩 | 伊人色综合久久久天天蜜桃 |