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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1790|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

帶鬧鐘的單片機(jī)萬(wàn)年歷程序 測(cè)試無(wú)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:233717 發(fā)表于 2018-11-28 23:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
帶鬧鐘的萬(wàn)年歷程序測(cè)試無(wú)誤,希望能幫到大家

單片機(jī)源程序如下:
  1. #include "12864.h"
  2. #include "DS1302.h"
  3. #include "KEY.h"
  4. #include "DS18B20.h"
  5. #include<intrins.h>

  6. sfr CLK_DIV=0x97;
  7. uchar clock_page=0;                                                                                  //鬧鐘
  8. //uchar flag=0;
  9. uchar keynum;
  10. char yearH=20,year,month,date,day,hour=0,min=0,sec=0;          //時(shí)間變量
  11. //char cursor_xy=0;                                                                                    //光標(biāo)位置
  12. uchar page=0;                                                                                              //page菜單頁(yè)面
  13. code char* Weekday[8]={"  ","一","二","三","四","五","六","日"};
  14. code uchar cursor[6][2]={{0,16},{4,16},{0,32},{4,32},{0,48},{4,48}}; //光標(biāo)位置
  15. extern code uchar DS1302_Addr[7];
  16. uchar M_num=59,S_num=59;
  17. uchar counter=1;                                                                                   //定時(shí)器計(jì)數(shù)

  18. struct TIME
  19. {
  20.         char x;
  21.         char y;
  22.         char num;
  23.         char max;
  24.         char min;
  25. };
  26. struct TIME  Time[10]=
  27. {
  28.         {1,2,0,99,0},                //年
  29.         {3,2,0,12,1},                //月
  30.         {5,2,0,31,1},                //日

  31.         {1,3,0,23,0},                //時(shí)
  32.         {2,3,0,59,0},                //分
  33.         {4,3,0,59,0},                //秒
  34.         {4,4,0,7,1},                //星期

  35.         {1,2,0,23,0},                //鬧鐘小時(shí)
  36.         {3,2,0,59,0},                //鬧鐘分鐘
  37.         {3,3,0,1,0}                        //鬧鐘標(biāo)志
  38. };

  39. uchar Clock_num_hour[3]={0,0,0};                           //三個(gè)鬧鐘小時(shí)
  40. uchar Clock_num_min[3]={0,0,0};                                   //三個(gè)鬧鐘分鐘
  41. uchar Clock_flag[3]={0,0,0};                                   //三個(gè)鬧鐘使能標(biāo)志

  42. void Timer(void)
  43. {
  44.         uint temp;                                                                                                  //溫度
  45.         while(DS18B20_Init())                                                        //DS18B20初始化
  46.         {
  47.                  LCD12864_datas(3,2,"未插入");
  48.                  LCD12864_datas(2,3,"溫度模塊");
  49.                  LCD12864_WriteCom(0x01);                                           //12864清屏(DDRAM)
  50.         }               
  51.         LCD12864_datas(2,1,"年");
  52.         LCD12864_datas(4,1,"月");
  53.         LCD12864_datas(6,1,"日");

  54.         LCD12864_datas(2,4,"星期");

  55.         while(1)
  56.         {

  57.                 if(Clock_flag[0]==1||Clock_flag[1]==1||Clock_flag[2]==1)        LCD12864_DrawPic1616(0,48,0);
  58.                 else                                 LCD12864_DrawPic1616(0,48,1);                                         //鬧鐘標(biāo)志

  59.                 hour=DS1302_ReadData(HOUR);
  60.                 min=DS1302_ReadData(MIN);
  61.                 sec=DS1302_ReadData(SEC);                                                                                         //讀取時(shí)間
  62.        
  63.                 LCD12864_Num3216(0,16,hour>>4);
  64.                 LCD12864_Num3216(1,16,hour&0x0f);            //小時(shí)
  65.                 LCD12864_Num3216(2,16,10);                                   //冒號(hào)
  66.        
  67.                 LCD12864_Num3216(3,16,min>>4);
  68.                 LCD12864_Num3216(4,16,min&0x0f);                           //分鐘
  69.                 LCD12864_Num3216(5,16,10);                                   //冒號(hào)
  70.        
  71.                 LCD12864_Num3216(6,16,sec>>4);
  72.                 LCD12864_Num3216(7,16,sec&0x0f);                           //秒針
  73.        
  74.                 year=DS1302_ReadData(YEAR);
  75.                 month=DS1302_ReadData(MONTH);
  76.                 date=DS1302_ReadData(DATE);                                                                                        //讀取年月日
  77.        
  78.                 LCD12864_SetXY(0,1);
  79.                 LCD12864_WriteData(yearH/10+'0');
  80.                 LCD12864_WriteData(yearH%10+'0');
  81.                 LCD12864_WriteData('0'+(year>>4));
  82.                 LCD12864_WriteData('0'+(year&0x0f)); //年份
  83.        
  84.                 LCD12864_SetXY(3,1);
  85.                 LCD12864_WriteData('0'+(month>>4));
  86.                 LCD12864_WriteData('0'+(month&0x0f));                  //月份
  87.        
  88.                 LCD12864_SetXY(5,1);
  89.                 LCD12864_WriteData('0'+(date>>4));
  90.                 LCD12864_WriteData('0'+(date&0x0f));                  //日期
  91.        
  92.                 LCD12864_datas(4,4,Weekday[DS1302_ReadData(DAY)]);                                        //星期
  93.        
  94.                 temp=DS18B20_ReadTemp();                                                                                        //讀取溫度值
  95.                 LCD12864_SetXY(6,4);
  96.                 LCD12864_WriteData('0'+(temp%10000/1000));
  97.                 LCD12864_WriteData('0'+(temp%1000/100));
  98. //                LCD12864_WriteData('C');                                                                                         
  99.                 LCD12864_DrawPic1616(7,48,2);                                                                                //溫度符號(hào)

  100.                 keynum=Key_Scan();
  101.                 if(keynum==13) {page=4;break;}                                                                                //當(dāng)按鍵按下鍵值為13時(shí),打開菜單
  102.                 LCD12864_Delay1ms(500);               
  103.         }
  104. }

  105. void Cursor(uchar n)
  106. {
  107.         switch(n)
  108.         {
  109.                 case 0:LCD12864_Reverse(1, 0,0);LCD12864_Reverse(2, 0,0);LCD12864_Reverse(3, 0,0);LCD12864_Reverse(4, 0,0);LCD12864_Reverse(5, 0,0);break;
  110.                 case 1:LCD12864_Reverse(1,16,0);LCD12864_Reverse(2,16,0);LCD12864_Reverse(3,16,0);LCD12864_Reverse(4,16,0);LCD12864_Reverse(5,16,0);break;
  111.                 case 2:LCD12864_Reverse(1,32,0);LCD12864_Reverse(2,32,0);LCD12864_Reverse(3,32,0);LCD12864_Reverse(4,32,0);LCD12864_Reverse(5,32,0);break;
  112.                 case 3:LCD12864_Reverse(1,48,0);LCD12864_Reverse(2,48,0);LCD12864_Reverse(3,48,0);LCD12864_Reverse(4,48,0);LCD12864_Reverse(5,48,0);break;
  113.                 default:break;
  114.         }
  115. }


  116. void meun(void)                                                                                                                                //菜單界面
  117. {
  118.         char n=0,late=7;
  119.        
  120.         LCD12864_datas(0,1,"  1.電子時(shí)鐘");
  121.         LCD12864_datas(0,2,"  2.調(diào)整時(shí)間");
  122.         LCD12864_datas(0,3,"  3.設(shè)置鬧鐘");
  123.         LCD12864_datas(0,4,"  4.倒計(jì)時(shí)器");
  124.         Cursor(0);                                                                //初始光標(biāo)位置
  125.         while(1)
  126.         {       
  127.                 keynum=Key_Scan();
  128.                 late=n;
  129.                 if(keynum==13)                                {page=n;break;}        //確認(rèn)鍵
  130.                 else if(keynum>=1&&keynum<=4)                n=keynum-1;
  131.                 else if(keynum==14) n++;
  132.                 else if(keynum==15) n--;
  133.                 if(n>3)n=0;if(n<0)n=3;
  134.                 if(n!=late)
  135.                 {
  136.                         Cursor(n);
  137.                         Cursor(late);
  138.                 }               
  139.         }
  140. }


  141. void Time_Cursor(char n)
  142. {
  143.         switch(n)                                                                                   //選光標(biāo)
  144.         {
  145.                 case 0:LCD12864_Reverse(0,16,0);LCD12864_Reverse(1,16,0);break;
  146.                 case 1:LCD12864_Reverse(3,16,0);break;
  147.                 case 2:LCD12864_Reverse(5,16,0);break;
  148.                 case 3:LCD12864_Reverse(1,32,0);break;
  149.                 case 4:LCD12864_Reverse(2,32,1);LCD12864_Reverse(3,32,2);break;
  150.                 case 5:LCD12864_Reverse(4,32,0);break;
  151.                 case 6:LCD12864_Reverse(4,48,0);break;
  152.                 case 7:break;
  153.         }
  154. }

  155. void Adjust_time(void)
  156. {
  157.         char n=0,late=7;
  158.         LCD12864_datas(0,1,"----時(shí)間設(shè)置----");
  159.         LCD12864_datas(2,2,"年");
  160.         LCD12864_datas(4,2,"月");
  161.         LCD12864_datas(6,2,"日");
  162.         LCD12864_datas(2,4,"星期");
  163.         hour=DS1302_ReadData(HOUR);
  164.         min=DS1302_ReadData(MIN);
  165.         sec=DS1302_ReadData(SEC);                                                                                         //讀取時(shí)間
  166.         year=DS1302_ReadData(YEAR);
  167.         month=DS1302_ReadData(MONTH);
  168.         date=DS1302_ReadData(DATE);                                                                                        //讀取年月日
  169.         day=DS1302_ReadData(DAY);

  170.         LCD12864_SetXY(0,2);
  171.         LCD12864_WriteData(yearH/10+'0');
  172.         LCD12864_WriteData(yearH%10+'0');
  173.         LCD12864_WriteData('0'+(year>>4));
  174.         LCD12864_WriteData('0'+(year&0x0f)); //年份

  175.         LCD12864_SetXY(3,2);
  176.         LCD12864_WriteData('0'+(month>>4));
  177.         LCD12864_WriteData('0'+(month&0x0f));                  //月份

  178.         LCD12864_SetXY(5,2);
  179.         LCD12864_WriteData('0'+(date>>4));
  180.         LCD12864_WriteData('0'+(date&0x0f));                  //日期

  181.         LCD12864_SetXY(1,3);
  182.         LCD12864_WriteData((hour>>4)+'0');
  183.         LCD12864_WriteData((hour&0x0f)+'0');            //小時(shí)
  184.         LCD12864_WriteData(':');                                   //冒號(hào)

  185.         LCD12864_WriteData((min>>4)+'0');
  186.         LCD12864_WriteData((min&0x0f)+'0');                           //分鐘
  187.         LCD12864_WriteData(':');                                   //冒號(hào)

  188.         LCD12864_WriteData((sec>>4)+'0');
  189.         LCD12864_WriteData((sec&0x0f)+'0');                           //秒針
  190.        
  191.         LCD12864_datas(4,4,Weekday[day]);                        //星期

  192.         Time[0].num=(year>>4)*10+(year&0x0f);
  193.         Time[1].num=(month>>4)*10+(month&0x0f);
  194.         Time[2].num=(date>>4)*10+(date&0x0f);       
  195.         Time[3].num=(hour>>4)*10+(hour&0x0f);
  196.         Time[4].num=(min>>4)*10+(min&0x0f);
  197.         Time[5].num=(sec>>4)*10+(sec&0x0f);
  198.         Time[6].num=day;                                                 //將BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)

  199.         Time_Cursor(0);                                                         //初始光標(biāo)位置
  200.                        
  201.         while(1)
  202.         {       
  203.                 LCD12864_datas(7,4,"00");
  204.                 late=n;
  205.                 keynum=Key_Scan();
  206.                 if(keynum==13)
  207.                 {
  208.                         LCD12864_datas(7,4,"01");
  209.                         while(1)
  210.                         {
  211.                                 keynum=Key_Scan();
  212.                                 if(keynum==14) Time[n].num++;
  213.                                 if(keynum==15) Time[n].num--;
  214.                                 if(Time[n].num>Time[n].max)Time[n].num=Time[n].min;
  215.                                 if(Time[n].num<Time[n].min)Time[n].num=Time[n].max;
  216.                                 if(n==6)
  217.                                 {
  218.                                          LCD12864_datas(4,4,Weekday[Time[n].num]);                        //星期
  219.                                 }
  220.                                 else
  221.                                 {       
  222.                                         LCD12864_SetXY(Time[n].x,Time[n].y);
  223.                                         if(n==4)  LCD12864_WriteData(':');                                   //冒號(hào)
  224.                                         LCD12864_WriteData('0'+(Time[n].num/10));
  225.                                         LCD12864_WriteData('0'+(Time[n].num%10));
  226.                                         if(n==4)  LCD12864_WriteData(':');                                   //冒號(hào)
  227.                                        
  228.                                 }
  229.                                 if(keynum==13)
  230.                                 {
  231.                                         DS1302_WriteDat(0x8e,0x00);                   //關(guān)閉寫保護(hù)
  232.                                         DS1302_WriteDat(DS1302_Addr[n],((Time[n].num/10)<<4)+(Time[n].num%10));
  233.                                         DS1302_WriteDat(0x8e,0x80);                  //開啟寫保護(hù)
  234.                                         break;
  235.                                 }
  236.                                 if(keynum==16) break;
  237.                         }
  238.                 }
  239.                 if(keynum==14) n++;
  240.                 if(keynum==15) n--;
  241.                 if(n>6)n=0;if(n<0)n=6;
  242.                 if(n!=late)
  243.                 {
  244.                         Time_Cursor(n);
  245.                         Time_Cursor(late);
  246.                 }
  247.                 if(keynum==16)        
  248.                 {
  249.                         page=4;
  250.                         break;
  251.                 }
  252.         }
  253.        
  254. }

  255. void Clock_Cursor(char n)
  256. {
  257.         switch(n)                                                                                   //選光標(biāo)
  258.         {
  259.                 case 0:LCD12864_Reverse(1,16,0);break;
  260.                 case 1:LCD12864_Reverse(3,16,0);break;
  261.                 case 2:LCD12864_Reverse(3,32,0);break;
  262.                 case 3:break;
  263.         }
  264. }

  265. void Clock(uchar k)
  266. {
  267.         char n=0,late=3;
  268.         LCD12864_WriteCom(0x01);           //12864清屏

  269.         Time[7].num=Clock_num_hour[k];        //小時(shí)
  270.         Time[8].num=Clock_num_min[k];        //分鐘
  271.         Time[9].num=Clock_flag[k];                //標(biāo)志

  272.         LCD12864_datas(0,1,"----鬧鐘設(shè)置----");

  273.         LCD12864_SetXY(2,2);
  274.         LCD12864_WriteData(':');                                   //冒號(hào)

  275.         LCD12864_SetXY(1,2);
  276.         LCD12864_WriteData((Time[7].num>>4)+'0');
  277.         LCD12864_WriteData((Time[7].num&0x0f)+'0');            //小時(shí)

  278.         LCD12864_SetXY(3,2);
  279.         LCD12864_WriteData((Time[8].num>>4)+'0');
  280.         LCD12864_WriteData((Time[8].num&0x0f)+'0');                           //分鐘

  281.         LCD12864_datas(0,3,"鬧鐘:");
  282.         if(Time[9].num==0)         LCD12864_datas(3,3,"關(guān)");
  283.         else                                 LCD12864_datas(3,3,"開");
  284.        
  285.         Time[7].num=(Time[7].num>>4)*10+(Time[7].num&0x0f);
  286.         Time[8].num=(Time[8].num>>4)*10+(Time[8].num&0x0f);
  287.         Time[9].num=(Time[9].num>>4)*10+(Time[9].num&0x0f);

  288.         Clock_Cursor(0);                                      //初始光標(biāo)位置
  289.         while(1)
  290.         {
  291.                 LCD12864_datas(7,4,"00");
  292.                 keynum=Key_Scan();
  293.                 late=n;

  294.                 if(keynum==13)
  295.                 {
  296.                         LCD12864_datas(7,4,"01");
  297.                         n=n+7;
  298.                         while(1)
  299.                         {
  300.                                 keynum=Key_Scan();
  301.                                 if(keynum==14) Time[n].num++;
  302.                                 if(keynum==15) Time[n].num--;
  303.                                 if(Time[n].num>Time[n].max)Time[n].num=Time[n].min;
  304.                                 if(Time[n].num<Time[n].min)Time[n].num=Time[n].max;
  305.                                
  306.                                 if(Time[9].num==0)         LCD12864_datas(3,3,"關(guān)");
  307.                                 else                                 LCD12864_datas(3,3,"開");
  308.                                
  309.                                 LCD12864_SetXY(1,2);
  310.                                 LCD12864_WriteData((Time[7].num/10)+'0');
  311.                                 LCD12864_WriteData((Time[7].num%10)+'0');            //小時(shí)

  312.                                 LCD12864_SetXY(3,2);
  313.                                 LCD12864_WriteData((Time[8].num/10)+'0');
  314.                                 LCD12864_WriteData((Time[8].num%10)+'0');                           //分鐘
  315.                                 if(keynum==13)
  316.                                 {       
  317.                                         break;
  318.                                 }
  319.                                 if(keynum==16)
  320.                                 {
  321.                                         break;
  322.                                 }
  323.                         }
  324.                         n=n-7;       
  325.                 }        
  326.                 if(keynum==14) n++;
  327.                 if(keynum==15) n--;
  328.                 if(n>2)n=0;if(n<0)n=2;
  329.                 if(n!=late)
  330.                 {
  331.                         Clock_Cursor(n);
  332.                         Clock_Cursor(late);
  333.                 }
  334.                 if(keynum==16)        
  335.                 {
  336.                         page=2;                                                                  //返回菜單
  337.                         Time[7].num=((Time[7].num/10)<<4)+(Time[7].num%10);
  338.                         Time[8].num=((Time[8].num/10)<<4)+(Time[8].num%10);
  339.                         Time[9].num=((Time[9].num/10)<<4)+(Time[9].num%10);

  340.                         Clock_num_hour[k]=Time[7].num;        //小時(shí)
  341.                         Clock_num_min[k]=Time[8].num;        //分鐘
  342.                         Clock_flag[k]=Time[9].num;                //標(biāo)志

  343.                         if(Clock_flag[k]!=0)
  344.                         {
  345.                                 TMOD|=0x01;
  346.                                 EA=1;
  347.                                 ET0=1;
  348.                                 TH0=0x3c;
  349.                                 TL0=0xb0;                                           //定時(shí)50ms
  350.                                 TR0=1;
  351.                         }
  352.                         break;
  353.                 }
  354.         }       
  355. }

  356. void Select_Clock_Cursor(uchar n)
  357. {
  358.         switch(n)
  359.         {
  360.                 case 0:LCD12864_Reverse(2,16,0);LCD12864_Reverse(3,16,0);LCD12864_Reverse(4,16,0);LCD12864_Reverse(5,16,0);break;
  361.                 case 1:LCD12864_Reverse(2,32,0);LCD12864_Reverse(3,32,0);LCD12864_Reverse(4,32,0);LCD12864_Reverse(5,32,0);break;
  362.                 case 2:LCD12864_Reverse(2,48,0);LCD12864_Reverse(3,48,0);LCD12864_Reverse(4,48,0);LCD12864_Reverse(5,48,0);break;
  363.                 default:break;
  364.         }
  365. }

  366. void Select_Clock(void)
  367. {
  368.         char n=0,late=4;
  369.         LCD12864_datas(0,1,"----鬧鐘選擇----");
  370.         LCD12864_datas(0,2,"    1.鬧鐘01");
  371.         LCD12864_datas(0,3,"    2.鬧鐘02");
  372.         LCD12864_datas(0,4,"    3.鬧鐘03");
  373.         Select_Clock_Cursor(0);                                                                //初始光標(biāo)位置
  374.         while(1)
  375.         {       
  376.                 keynum=Key_Scan();
  377.                 late=n;
  378.                 if(keynum==13)                {clock_page=n;page=5;break;}        //確認(rèn)鍵
  379.                 else if(keynum>=1&&keynum<=4)                n=keynum-1;
  380.                 else if(keynum==14) n++;
  381.                 else if(keynum==15) n--;
  382.                 else if(keynum==16) {page=4;        break;}
  383.                 if(n>2)n=0;if(n<0)n=2;
  384.                 if(n!=late)
  385.                 {
  386.                         Select_Clock_Cursor(n);
  387.                         Select_Clock_Cursor(late);
  388.                 }               
  389.         }
  390. }

  391. void Countdown(void)
  392. {       
  393.         LCD12864_datas(0,1,"----倒計(jì)時(shí)器----");
  394.        
  395.         while(1)
  396.         {
  397.                 keynum=Key_Scan();

  398.                 LCD12864_SetXY(3,3);

  399.                 LCD12864_WriteData((M_num/10)+'0');
  400.                 LCD12864_WriteData((M_num%10)+'0');                           //分鐘
  401.                 LCD12864_WriteData(':');                                   //冒號(hào)

  402.                 LCD12864_WriteData((S_num/10)+'0');
  403.                 LCD12864_WriteData((S_num%10)+'0');                           //分鐘

  404.                 if(keynum==13)   
  405.                 {
  406.                         TMOD|=0x10;
  407.                         EA=1;
  408.                         ET1=1;
  409.                         TH1=0x3c;
  410.                         TL1=0xb0;                                           //定時(shí)50ms
  411.                         TR1=1;
  412.                 }
  413.                 else if(keynum==2)                M_num--;         //減低分鐘
  414.                 else if(keynum==3)                S_num--;         //減低秒針
  415.                 else if(keynum==14)                                         //重置計(jì)數(shù)值
  416.                                 {
  417.                                         S_num=59;
  418.                                         M_num=59;       
  419.                                 }
  420.                 else if(keynum==15)                                         //停止計(jì)時(shí)
  421.                                 {
  422.                                         TR1=0;       
  423.                                 }
  424.                 else if(keynum==16) {page=4;        break;}          //退出到菜單頁(yè)

  425.                 if(S_num==0)                                                 //判斷時(shí)間越界
  426.                 {
  427.                         S_num=59;
  428.                         M_num--;
  429.                 }
  430.                 if(M_num==0&&S_num==0)
  431.                 {
  432.                         while(1)
  433.                         {       
  434.                                 Beep_key();
  435.                                 Delay10ms(5);
  436.                                 if(Key_Scan()!=0)
  437.                                 {
  438.                                         TR1=0;
  439.                                         S_num=59;
  440.                                         M_num=59;               
  441.                                         break;
  442.                                 }
  443.                                                
  444.                         }
  445.                 }
  446.         }

  447. }

  448. void time_2(void) interrupt 3
  449. {
  450.         TH1=0x3c;
  451.         TL1=0xb0;                                           //定時(shí)50ms
  452.         counter++;
  453.         if(counter==20)
  454.         {
  455.                 counter=0;
  456.                 S_num--;
  457.         }

  458. }

  459. void main(void)
  460. {
  461.         CLK_DIV=0x03;                                   //八分頻
  462.         LCD12864_Init();                           //12864初始化
  463.         LCD12864_CleanScreen();                   //12864清屏
  464.         DS1302_Init();                                   //DS1302初始化
  465.         while(1)
  466.         {
  467.                 LCD12864_CleanScreen();                                                   //12864清屏(CGRAM)
  468.                 LCD12864_WriteCom(0x01);                                           //12864清屏(DDRAM)
  469.                 if(page==0)                 Timer();                                //page=0時(shí),數(shù)字鐘界面                
  470.                 else if(page==1)        Adjust_time();                        //page=1時(shí),調(diào)整時(shí)間界面        
  471.                    else if(page==2)        Select_Clock();                        //page=2時(shí),系統(tǒng)設(shè)置界面
  472.                 else if(page==3)        Countdown();                                //page=3時(shí),倒計(jì)時(shí)器頁(yè)面
  473.                 else if(page==4)        meun();                                        //page=4時(shí),菜單頁(yè)面
  474.                 else if(page==5)        Clock(clock_page);                                        //page=4時(shí),菜單頁(yè)面         
  475.         }       
  476.        
  477. }

  478. void time_1(void) interrupt 1
  479. {
  480.         uchar i,H,M;
  481.         H=DS1302_ReadData(HOUR);
  482.         M=DS1302_ReadData(MIN);
  483.         TH0=0x3c;
  484.         TL0=0xb0;                                           //定時(shí)50ms
  485.         for(i=0;i<3;i++)
  486.         {       
  487.                 if(Clock_flag[i]==1)
  488.                         while(H==Clock_num_hour[i]&&M==Clock_num_min[i])
  489.                         {       
  490.                                 Clock_flag[i]=0;
  491.                                 Beep_key();
  492.                                 Delay10ms(5);
  493.                                 if(Key_Scan()!=0)         break;               
  494.                         }
  495.         }
  496.         if(Clock_flag[0]==0&&Clock_flag[1]==0&&Clock_flag[2]==0)
  497.         {
  498.                 TR0=0;
  499. //                Time[9].num=0;
  500. //                Clock_flag[0]=1;
  501. //                Clock_flag[1]=1;
  502. //                Clock_flag[2]=1;
  503.         }

  504. }
復(fù)制代碼

所有資料51hei提供下載:
帶鬧鐘萬(wàn)年歷程序.zip (117.86 KB, 下載次數(shù): 36)


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

使用道具 舉報(bào)

沙發(fā)
ID:782897 發(fā)表于 2020-6-19 13:27 來(lái)自手機(jī) | 只看該作者
仿真都沒(méi)有?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人影院在线观看 | 欧美综合一区 | 日本在线精品视频 | 国产一区二区自拍 | 欧美日韩不卡 | 成人一区二区三区在线观看 | 国产视频久久 | 自拍偷拍亚洲视频 | 91免费观看视频 | 日韩成人| 91精品久久久 | 国产男人的天堂 | 自拍偷拍精品 | 国产成人精品久久 | 99精品欧美一区二区三区 | 久久精品久久久久久 | 亚洲天堂中文字幕 | 国内自拍偷拍 | 国产福利在线 | 天堂亚洲 | 中文字幕在线观看精品 | av资源中文在线 | 别c我啊嗯国产av一毛片 | 在线日韩欧美 | 免费成人在线网站 | 一区二区三区视频在线观看 | 日韩欧美国产精品一区二区 | 日韩在线视频一区 | 91国产视频在线 | 久久久久久国产 | 国产成人一区二区三区电影 | 91影片| 91精品国产综合久久久久久蜜臀 | 成人精品一区 | 亚洲一区| 久一久 | 精品成人一区二区 | 粉嫩av | 午夜影院在线视频 | 国产69精品久久99不卡免费版 | 美女一区二区在线观看 |