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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20998|回復(fù): 12
收起左側(cè)

單片機 整點報時 定時小鬧鐘程序

  [復(fù)制鏈接]
ID:102668 發(fā)表于 2016-1-16 05:56 | 顯示全部樓層 |閱讀模式
  功能描述:十、分可調(diào)      整點報時      定時小鬧鐘
1.共有4個按鍵 3個指示燈  ,其中D1亮表示正常運行狀態(tài) 滅表示鬧鐘設(shè)置狀態(tài),D2表示按鍵有效提示(即按下任意一個按鍵 D2 都會亮一次)另外一個事供電指示燈,沒有什么大作用。
2.十、分、鬧鐘開關(guān)、鬧鐘設(shè)置 分別接在P1.0、P1.1、P3.2、P3.3口。
按下INT1是進(jìn)入鬧鐘設(shè)置模式,顯示屏左數(shù)第二位顯示“8”,調(diào)整P1.0 P1.1設(shè)置鬧鐘時間,再按下INT1確認(rèn),同時推出鬧鐘設(shè)置模式進(jìn)入運行狀態(tài)。
INT0是鬧鐘開關(guān),開啟時最左顯示“C"否則不顯示。
正常運行下,直接按 P1.0、P1.1對時間進(jìn)行校正。
當(dāng)然,按鍵都會有閃燈,和不同聲音提示。



51單片機程序源代碼:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. uchar code segtbl[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
  7.                      // 0  1    2   3   4    5    6   7   8   9    -        c   
  8. uchar data dis_b; //位段碼
  9. uchar data dis_r; //位偏移量
  10. uchar data dis[8];      //定義8個連續(xù)的存儲器

  11. uchar data c_min;
  12. uchar data c_hou;
  13. uchar data second;
  14. uchar data minite;
  15. uchar data hour;
  16. uchar data CNTA;
  17. uchar data speaker_num;   //蜂鳴次數(shù)
  18. bit beep;          //整點報時標(biāo)志
  19. bit run;         //運行標(biāo)志
  20. bit flash;         //滅燈標(biāo)志
  21. bit clarm_switch;     //鬧鐘開關(guān)標(biāo)志
  22. bit baoshi;     //報時開關(guān)標(biāo)志
  23. sbit  speaker=P1^3;
  24. sbit minitek=P1^1;
  25. sbit hourk=P1^0;
  26. sbit enter=P1^4;
  27. sbit led1=P1^6;      //  按鍵標(biāo)識
  28. sbit led2=P1^7;      // 運行標(biāo)志
  29. uint n,k;

  30. void delay_10us(uchar n)    //10微秒級延時
  31. { do
  32.   { _nop_();
  33.     _nop_();
  34.     _nop_();
  35.     _nop_();
  36.     _nop_();
  37.   }while(--n);
  38. }
  39. void delay_ms(uint n)     //毫秒級延時
  40. { do delay_10us(131);
  41.   while(--n);
  42. }
  43. clk_to_dis()
  44. {
  45.     dis[0]=minite%10;
  46. dis[1]=minite/10;
  47.      if(flash)dis[2]=10;
  48.         else dis[2]=11;
  49. dis[3]=hour%10;
  50. dis[4]=hour/10;
  51. dis[5]=10;
  52. dis[6]=11;
  53. }
  54. clarm_to_dis()
  55. {
  56.     dis[0]=c_min%10;
  57. dis[1]=c_min/10;
  58. if(flash)dis[2]=10;//亮燈
  59.         else dis[2]=11;    //滅燈
  60. dis[3]=c_hou%10;
  61. dis[4]=c_hou/10;
  62. dis[5]=10;
  63. dis[6]=8;
  64. }
  65. void main()
  66. {
  67. P2=0xff;
  68. P1=0XFF;
  69. P0=0xff;
  70. run=1;
  71. led1=0;
  72. flash=0x00;
  73. dis[2]=10;      //第三位顯示“-”
  74. dis_r=0;        //為偏移量初始為“0”
  75. dis_b=0x80; //選通P2.7
  76. second=0x00;
  77. minite=0x00;
  78. hour=0x00;
  79. CNTA=0x00;
  80. TMOD=0x11;
  81. TH0=19500/256;
  82. TL0=19500%256;
  83. TH1=0xfc;
  84. TL1=0x18;
  85. EA=1;    //開中斷;
  86. TR0=1;
  87. TR1=1;
  88. ET1=1;
  89. EX0=1;
  90. EX1=1;
  91. ET0=1;

  92. while(1)
  93.   {

  94.    while(run==1)
  95.    {
  96.   while(!minitek)
  97.   {
  98.   for(n=0;n<1000;n++);
  99.   if(!minitek==0)break;    //延時防抖
  100.   minite++;
  101.   second=0x00;
  102.   led1=0;
  103.       for(n=0;n<20;n++)
  104.         {
  105.          speaker=!speaker;
  106.            delay_10us(50);             //蜂鳴器響
  107.          }
  108.    
  109.   if(minite==60)minite=0x00;
  110.   while(!minitek);  //等待鍵松開
  111.    led1=1;    //顯示燈   
  112.   }

  113.       while(!hourk)
  114.   {
  115.   for(n=0;n<1000;n++);
  116.   if(!hourk==0)break;
  117.   hour++;
  118.   second=0x00;
  119.   led1=0;
  120.    for(n=0;n<30;n++)
  121.    {
  122.    speaker=!speaker;
  123.    delay_10us(30);             //蜂鳴器響
  124.    }

  125.   if(hour==24) hour=0x00;
  126.   while(!hourk);
  127.   led1=1;
  128.   }
  129.   
  130.   if(clarm_switch)
  131.   {
  132.   if(c_min==minite&&c_hou==hour)
  133.   
  134.    {speaker_num=60;
  135.    beep=1;
  136.    while(beep&& clarm_switch)
  137.    {
  138.    led1=!led1;
  139.    delay_ms(100);
  140.    }
  141.    led1=1;
  142.    beep=0;
  143.    }
  144.          }

  145.   while(run==0)
  146.   {
  147.      while(!minitek)
  148. {
  149. for(n=0;n<1000;n++);
  150. if(!minitek==0)break;    //延時防抖
  151. c_min++;
  152. led1=0;
  153. for(n=0;n<25;n++)
  154. {
  155. speaker=!speaker;
  156. delay_10us(40);             //蜂鳴器響
  157. }
  158. if(c_min==60)c_min=0x00;
  159. while(!minitek);        //等待鍵松開
  160. led1=1;
  161. }

  162.   while(!hourk)
  163. {for(n=0;n<1000;n++);
  164. if(!hourk==0)break;
  165. c_hou++;
  166. led1=0;
  167. for(n=0;n<40;n++)
  168. {
  169. speaker=!speaker;
  170. delay_10us(20);             //蜂鳴器響
  171. }
  172. if(c_hou==24) c_hou=0x00;
  173. while(!hourk);
  174. led1=1;
  175. }

  176.   

  177. }
  178.     }
  179. }

  180. }
  181. timer0() interrupt 1 using 2//定時器0中斷號為1號 使用第2組寄存器
  182. {
  183. TH0=19534/256;
  184. TL0=19534%256;
  185. CNTA++;
  186. if(beep)
  187. {
  188. if(speaker_num%2)speaker=!speaker;
  189. if(!speaker_num) beep=0;

  190. }
  191. if(CNTA==20)
  192. {       if(speaker_num)speaker_num--;
  193. flash=!flash;
  194. CNTA=0;
  195.          second++;//秒加
  196.    if(second==60)
  197.    {second=0;
  198.     minite++;
  199.   if(minite==60)
  200.   {
  201.   minite=0;
  202.   hour++;
  203.   if(hour>7){speaker_num=2*hour;    //整點到 蜂鳴標(biāo)志  置1
  204.      beep=1;}
  205.    if(hour==24)

  206.    {
  207.    hour=0;
  208.    }
  209.   }
  210.     }
  211. }

  212. }
  213. timer1() interrupt 3 using 3
  214.   {
  215.       
  216. uchar ttt=0;                   //ttt存儲段碼
  217. if(run==0) clarm_to_dis();
  218. else clk_to_dis();
  219. ttt = segtbl[dis[dis_r]];        //段碼賦值

  220. P2= dis_b;                       //位碼送P2
  221. P0=ttt;                          //段碼送P0

  222. if(++dis_r==8)dis_r=0x00;
  223. dis_b=_cror_(dis_b,1);          //位碼右移
  224. TH1=0xfc;
  225.         TL1=0x18;

  226.   }

  227. int_0() interrupt 0    //鬧鐘開關(guān)
  228. {
  229. clarm_switch=!clarm_switch;
  230. if(clarm_switch)dis[7]=12;   //開啟顯示   C
  231. else dis[7]=11;      //關(guān)閉 不顯示   
  232.   for(k=0;k<40;k++)
  233. {speaker=!speaker;
  234. led1=!led1;
  235. delay_ms(5);
  236. }
  237. led1=1;
  238. }

  239. int_1() interrupt 2     //鬧鐘時間設(shè)置/運行 轉(zhuǎn)換開關(guān)
  240. {
  241. run=!run;
  242. if(run)led2=0;
  243. else led2=1;
  244. for(k=0;k<90;k++)      // 蜂鳴器響
  245. {speaker=!speaker;      //指示燈閃爍
  246. led1=!led1;
  247. delay_10us(100);
  248. }
  249. led1=1;
  250. }
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:223127 發(fā)表于 2017-11-1 16:11 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

ID:246166 發(fā)表于 2017-11-8 18:34 | 顯示全部樓層
樓主太強了,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:271702 發(fā)表于 2018-1-4 22:53 | 顯示全部樓層
樓主有hex文件嗎
763958866@qq.com
回復(fù)

使用道具 舉報

ID:272316 發(fā)表于 2018-1-6 16:38 | 顯示全部樓層
這個怎么操作,我運行之后不太會操作
回復(fù)

使用道具 舉報

ID:146834 發(fā)表于 2018-1-6 21:06 | 顯示全部樓層
學(xué)習(xí)來了。謝謝樓主的共享。
回復(fù)

使用道具 舉報

ID:450918 發(fā)表于 2018-12-22 11:45 | 顯示全部樓層
怎么液晶顯示沒反應(yīng)呀?
回復(fù)

使用道具 舉報

ID:455664 發(fā)表于 2018-12-26 17:06 | 顯示全部樓層
有hex文件嗎?
1823520922@qq.com
回復(fù)

使用道具 舉報

ID:440558 發(fā)表于 2018-12-27 23:09 | 顯示全部樓層

他給你發(fā)了exe文件了嗎
回復(fù)

使用道具 舉報

ID:455664 發(fā)表于 2018-12-28 14:26 | 顯示全部樓層
mxjymm 發(fā)表于 2018-12-27 23:09
他給你發(fā)了exe文件了嗎

   沒有呢
回復(fù)

使用道具 舉報

ID:821033 發(fā)表于 2020-9-29 09:05 | 顯示全部樓層
我用proteus8仿真時程序報171個錯誤,不知為什么?
回復(fù)

使用道具 舉報

ID:825230 發(fā)表于 2020-10-2 11:51 | 顯示全部樓層
keil檢測有兩個警告
回復(fù)

使用道具 舉報

ID:825230 發(fā)表于 2020-10-2 11:51 | 顯示全部樓層
xiao123456789 發(fā)表于 2018-1-6 16:38
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

用keil寫
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女网站视频免费黄 | 久久在视频 | 日韩中出| 亚洲一区二区中文字幕 | 亚洲一区二区久久久 | 国产探花在线精品一区二区 | 日本一区二区视频 | 18性欧美 | 午夜av免费 | 国产成人在线一区 | 欧美a在线 | xxxxxx国产 | 欧美日韩在线视频一区 | 亚洲激情视频在线 | 九九伊人sl水蜜桃色推荐 | 性色av一区| 青青久在线视频 | 国产一区二区在线播放 | 中文字幕欧美一区二区 | 亚洲精品一区二三区不卡 | 狠狠草视频 | 91亚洲国产成人久久精品网站 | 一区二区高清 | 中文字幕日韩一区 | 性色av网站 | 在线视频一区二区 | 在线日韩欧美 | 午夜视频网站 | 日韩成人免费视频 | 一本色道精品久久一区二区三区 | 91手机精品视频 | 伊人网站 | 嫩草黄色影院 | 中文字幕在线观看日韩 | 国产精品免费在线 | 欧美a免费 | 91在线观看 | 视频一区在线播放 | 黄篇网址 | 成人做爰69片免费观看 | 91中文|