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

標(biāo)題: 51單片機(jī)數(shù)碼管24小時(shí)可調(diào)時(shí)鐘 可存多條時(shí)間記錄 用于記錄某事件發(fā)生時(shí)間 [打印本頁(yè)]

作者: 2864440123    時(shí)間: 2019-4-19 21:55
標(biāo)題: 51單片機(jī)數(shù)碼管24小時(shí)可調(diào)時(shí)鐘 可存多條時(shí)間記錄 用于記錄某事件發(fā)生時(shí)間
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. /*
  2. P1口三個(gè)led燈代表模式:
  3. 模式1:開始記錄
  4. 模式2:查看記錄  按s3下一條  s4下一條
  5. 模式3:時(shí)間矯正 按s2選擇矯正位  按s3加一 按s4減一  led       
  6. 注:p33口低電平觸發(fā)記錄;  調(diào)整實(shí)踐時(shí)時(shí)鐘停止        可存儲(chǔ)十條記錄,自動(dòng)清除最舊記錄
  7. */

  8. #include<reg52.h>
  9. #include<intrins.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. sbit du=P2^6;
  13. sbit we=P2^7;
  14. sbit s2=P3^0;
  15. sbit s3=P3^1;
  16. sbit s4=P3^2;
  17. sbit led1=P1^7;
  18. sbit led2=P1^6;
  19. sbit led3=P1^5;                  //模式狀態(tài)燈


  20. uchar temp0;//P1口狀態(tài)存儲(chǔ)
  21. uint temp;//秒調(diào)整
  22. uchar ii,ii2; //中斷存儲(chǔ)循環(huán)用
  23. uchar Mode=1;//模式選擇
  24. uchar num=1; //記錄調(diào)出值
  25. uchar time[10][4];        //雞蛋時(shí)間記錄儲(chǔ)存
  26. double timeh,timem,times; //系統(tǒng)時(shí)間


  27. uchar code ld[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
  28. void display(uchar i,uchar j,uchar k,uchar l);
  29. void delay(uint z);
  30. void inti()
  31. {
  32. EA=1;//總開關(guān)
  33. EX1=1;//int1中斷                 p33口
  34. IT1=0;//觸發(fā)方式:低電平
  35. ET0=1;//定時(shí)器0中斷允許
  36. TMOD=0x01;//模式選擇;//定時(shí)器0,1,16位定時(shí)器
  37. TH0=0x4b;
  38. TL0=0xfe;//50ms
  39. TR0=1;
  40. }               
  41. void main()
  42. {
  43. inti(); //初始化配置
  44. while(1)
  45. {
  46.   if(s2==0)
  47.   {
  48.   Mode++;
  49.   if(Mode==6)Mode=1;
  50.   if(!(Mode==1||Mode==2))ET0=0;
  51.   if(Mode==1||Mode==2)ET0=1;
  52.   while(!s2);
  53.   delay(100);
  54.   }        //模式選擇


  55.   if(Mode==1)//模式1     工作模式顯示時(shí)間
  56.   {
  57.   display(100,timeh,timem,times);
  58.   led1=0;led2=1;led3=1;
  59.   }


  60.   if(Mode==2)//模式2 查詢
  61.   {
  62.   led1=1;led2=0;led3=1;
  63.   if(s3==0)
  64.   {
  65.   num++;
  66.   if(num==11)num=10;//防止查詢溢出
  67.   while(!s3);
  68.   delay(100);
  69.   }
  70.   if(s4==0)
  71.   {
  72.   num--;
  73.   if(num==0)num=1;//防止查詢溢出
  74.   while(!s4);
  75.   delay(100);
  76.   }
  77.   display(num,time[num-1][0],time[num-1][1],time[num-1][2]);  
  78.   }


  79.   if(Mode==3)//模式3   時(shí)間矯正  時(shí)
  80.   {
  81.   led1=1;led2=1;led3=0;
  82.   if(s3==0)
  83.   {
  84.   timeh++;
  85.   if(timeh==24)timeh=0;
  86.   if(timeh<0)timeh=23;
  87.   while(!s3);
  88.   delay(100);
  89.   }
  90.   if(s4==0)
  91.   {
  92.   timeh--;
  93.   if(timeh==24)timeh=0;
  94.   if(timeh<0)timeh=23;
  95.   while(!s4);
  96.   delay(100);
  97.   }
  98.   display(100,timeh,100,100);
  99.   }
  100.   if(Mode==4)//模式3   時(shí)間矯正  分
  101.   {
  102.   led1=1;led2=1;led3=0;
  103.   if(s3==0)
  104.   {
  105.   timem++;
  106.   if(timem==60)timem=0;
  107.   if(timem<0)timem=59;
  108.   while(!s3);
  109.   delay(100);
  110.   }
  111.   if(s4==0)
  112.   {
  113.   timem--;
  114.   if(timem==60)timem=0;
  115.   if(timem<0)timem=59;
  116.   while(!s4);
  117.   delay(100);
  118.   }
  119.   display(100,100,timem,100);
  120.   }
  121.   if(Mode==5)//模式3   時(shí)間矯正  秒
  122.   {
  123.   led1=1;led2=1;led3=0;
  124.   if(s3==0)
  125.   {
  126.   times++;
  127.   if(times==60)times=0;
  128.   if(times<0)times=59;
  129.   while(!s3);
  130.   delay(100);
  131.   }
  132.   if(s4==0)
  133.   {
  134.   times--;
  135.   if(times==60)times=0;
  136.   if(times<0)times=59;
  137.   while(!s4);
  138.   delay(100);
  139.   }
  140.   display(100,100,100,times);   
  141.   }

  142. }
  143. }
  144. void timer0() interrupt 1
  145. {

  146. temp++;
  147. TH0=0x4b;
  148. TL0=0xfe; //50ms進(jìn)入一次
  149. if(temp==20)
  150. {
  151. times++;
  152. temp=0;
  153. }
  154. if(times==60)
  155. {
  156. timem++;
  157. times=0;
  158. }
  159. if(timem==60)
  160. {
  161. timeh++;
  162. timem=0;
  163. }
  164. if(timeh==24)
  165. {
  166. timeh=0;
  167. } //時(shí)間計(jì)算




  168. }
  169. void int1() interrupt 2         //p33口
  170. {
  171. for(ii=0;ii<10;ii++)
  172. {
  173. for(ii2=0;ii2<3;ii2++)
  174. {
  175.   time[9-ii][ii2]=time[8-ii][ii2];
  176. }
  177. }
  178. time[0][0]=timeh;
  179. time[0][1]=timem;
  180. time[0][2]=times;//存儲(chǔ)數(shù)據(jù)
  181. temp0=P1;
  182. P1=0;//中斷響應(yīng)
  183. delay(1000);
  184. P1=temp0;
  185. }               
  186. void display(uchar i,uchar j,uchar k,uchar l)
  187. {
  188.         
  189.         uchar shi1,ge1,shi2,ge2,shi3,ge3,shi4,ge4;
  190.                 if(i<100)
  191.                 {
  192.                 shi1=i/10;
  193.                 ge1=i%10;
  194.                 }
  195.                 else
  196.                 {
  197.                 shi1=ge1=10;
  198.                 }
  199.                 if(j<100)
  200.                 {
  201.                 shi2=j/10;
  202.                 ge2=j%10;
  203.                 }
  204.                 else
  205.                 {
  206.                 shi2=ge2=10;
  207.                 }
  208.                 if(k<100)
  209.                 {
  210.                 shi3=k/10;
  211.                 ge3=k%10;
  212.                 }
  213.                 else
  214.                 {
  215.                 shi3=ge3=10;
  216.                 }
  217.                 if(l<100)
  218.                 {
  219.                 shi4=l/10;
  220.                 ge4=l%10;
  221.                 }
  222.                 else
  223.                 {
  224.                 shi4=ge4=10;
  225.                 }            
  226.                 P0=0xff;                 //清除段碼
  227.         we=1;  
  228.         P0=0xfe;//1111 1110
  229.         we=0;//第一次位選
  230.                              
  231.         du=1;                       
  232.         P0=ld[shi1];
  233.         du=0;
  234.         delay(1);//第一次段選

  235.                 P0=0xff;                 //清除段碼
  236.         we=1;  
  237.         P0=0xfd;//1111 1101
  238.         we=0;//第二次位選

  239.         du=1;
  240.         P0=ld[ge1];
  241.         du=0;
  242.         delay(1);//第二次段選


  243.                                 P0=0xff;                 //清除段碼
  244.         we=1;  
  245.         P0=0xfb;//1111 1011
  246.         we=0;//第一次位選
  247.                              
  248.         du=1;                       
  249.         P0=ld[shi2];
  250.         du=0;
  251.         delay(1);//第一次段選

  252.                 P0=0xff;                 //清除段碼
  253.         we=1;  
  254.         P0=0xf7;//1111 0111
  255.         we=0;//第二次位選

  256.         du=1;
  257.         P0=ld[ge2];
  258.         du=0;
  259.         delay(1);//第二次段選


  260.                                 P0=0xff;                 //清除段碼
  261.         we=1;  
  262.         P0=0xef;//1110 1111
  263.         we=0;//第一次位選
  264.                              
  265.         du=1;                       
  266.         P0=ld[shi3];
  267.         du=0;
  268.         delay(1);//第一次段選

  269.                 P0=0xff;                 //清除段碼
  270. ……………………

  271. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
proteus仿真51開發(fā)板.zip (35.92 KB, 下載次數(shù): 25)
程序.zip (33.62 KB, 下載次數(shù): 37)


作者: 2864440123    時(shí)間: 2019-4-19 21:59
喜歡分享自己做的東西  大佬勿噴
作者: 文鳳軒    時(shí)間: 2019-4-20 18:57
這個(gè)實(shí)用,可以記錄電池充或放電的時(shí)間,謝謝樓主分享。
作者: 2864440123    時(shí)間: 2019-4-21 22:55
文鳳軒 發(fā)表于 2019-4-20 18:57
這個(gè)實(shí)用,可以記錄電池充或放電的時(shí)間,謝謝樓主分享。

我都沒想到呢,,改一改就可以實(shí)現(xiàn)記錄電池充電和放點(diǎn)時(shí)間了呢




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91看片免费版 | 久久香焦| 日韩有码一区 | 亚洲国产69| 玖玖玖在线 | 人人看人人爽 | 中文字幕人成乱码在线观看 | 日本午夜在线视频 | 欧美日韩综合一区 | 国产精品视频一二三区 | 美女视频h| 一区视频在线 | 一级欧美一级日韩片免费观看 | av网址在线播放 | 99视频精品 | 在线午夜| 亚洲精品一区二区三区 | 欧美日韩在线视频一区 | 亚洲精品456 | 午夜视频在线免费观看 | 国产免费一区二区三区免费视频 | 99久久夜色精品国产亚洲96 | 国产在线不卡 | 久久精品一 | 国产激情视频 | 日本精品视频在线观看 | 婷婷丁香激情 | 国产日韩一区二区三免费高清 | 羞羞视频网站免费观看 | 国产欧美在线视频 | 亭亭五月激情 | 黄色综合| 亚洲精品视频免费看 | 欧美精品导航 | 天天综合网91 | 国产a级黄色录像 | 日韩精品一区二区三区中文在线 | 黄色大片免费网站 | 中文字幕一区二区三区精彩视频 | 久久精品视频在线播放 | 久草网免费|