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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

分享一個LCD1602電子鬧鐘 雙鬧版 帶單片機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:159515 發表于 2017-4-9 17:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 liyz 于 2017-4-10 09:01 編輯

   我是從95年左右開始玩單片機,還買片TD-II單板機(純機器代碼輸入的)那時我還沒有電腦,我只學會用匯編,現在已經好多年沒玩了,最近突然又想玩玩單片機做個鬧鐘,匯編語言已經忘得差不多了,那就學學用C語言吧,在網上找到幾份學習資料逐漸明白了C語言奧秘。這是參考別人的資料花了好幾個星期一步一步增加功能修改出來的,已經做了成品給小孩當鬧鐘用,增加了語音報時(用yf017語音芯片),存儲記憶(24C02),兩組鬧鐘(一組可設置每周工作日響鬧,另一組可設置每天響鬧或只響一次,還有再響等功能),電路圖就懶得畫了,純屬業余玩玩給大家參考。




附上不錯的C51學習資料:
《51單片機C語言快速上手》.pdf (4.6 MB, 下載次數: 100)
十天學會單片機實例100.docx (198.15 KB, 下載次數: 57)

單片機源程序:
  1. /*******************************************************************************
  2. *標題:                    DS1302+DS18B20+LCD1602電子時鐘                       *
  3. *                                                                                                   *
  4. ********************************************************************************
  5. * 添加鬧鐘時間記憶,鬧鈴時長,鬧鐘再響次數,間隔,周鬧鐘功能,語音整點報時          *
  6. *                                                               
  7. *                        
  8. ********************************************************************************/                                       
  9. #include <reg52.h>
  10. #include <intrins.h>
  11. #define uchar unsigned char
  12. #define uint  unsigned int
  13. #include "24c02.h"
  14. #include "LCD1602.h"
  15. #include "DS1302.h"
  16. #include "DS18B20.h"
  17. #include "yuyin.h"

  18. sbit key1=P2^3;                  //調時鐘和鬧鐘鍵
  19. sbit key2=P2^2;                  //調時加鍵,正常走時狀態語音報時鍵
  20. sbit key3=P2^1;                  //調時減鍵,鬧鐘開關
  21. sbit key4=P2^0;                  //查看鬧鈴鍵

  22. sbit beep = P2^4;                  //蜂鳴器控制IO口
  23. sbit led1 = P1^0;                  //LED燈,鬧鈴響標志
  24. /******************************************************************/
  25. /*                    函數聲明                                    */
  26. /******************************************************************/                                                                                                
  27. void Read_RTC(void);
  28. void temp_to_str();   
  29. void keyscan();

  30. bit  ReadRTC_Flag,Display_Flag,Alarm_Flag,Alarm_Flag1,Aset_Flag,yuyin_flag,zd_baoshi,each,setzx=0;      //定義標志位
  31. uchar miao,fen,shi,ri,yue,week,nian,T,nz_flag,yuyin_shi,yuyin_ge,m=0,n=0,w=0,m1=0;
  32. uchar set_miao,set_fen,set_shi,set_time,setzx_time,setzx_f,nz_miao,nz_fen,nz_shi,miao_ss;

  33. char l_tmpdate[7];                    //秒分時日月周年
  34. uchar TempBuffer[5],nz_week[7];
  35. uchar code  write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時日月周年 最低位寫位
  36. uchar code  read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //秒分時日月周年 最低位讀位
  37. uchar code  nz_week_address[7]={0x10,0x11,0x12,0x13,0x14,0x15,0x16};
  38.   
  39. uchar code table1[]="SUN";                             //星期字表
  40. uchar code table2[]="MON";
  41. uchar code table3[]="TUE";
  42. uchar code table4[]="WED";
  43. uchar code table5[]="THU";
  44. uchar code table6[]="FRI";
  45. uchar code table7[]="SAT";

  46. uchar code tab1[]=" 20  -  -     ";
  47. uchar code tab2[]="   :  :   ";
  48. uchar code tab3[14]="Set Alarm!    ";
  49. uchar code tab4[16]="w:S M T W T F S ";
  50. uchar code tab5[]="  *ON  *OFF";

  51. /******************************************************************/
  52. /*                             毫秒級延時函數                                                       */
  53. /******************************************************************/
  54. void delay(uchar a)
  55. {
  56.      uchar i;
  57.      while(a--)
  58.            {
  59.               for(i=0;i<250;i++)
  60.                     {
  61.                            _nop_();
  62.                _nop_();
  63.                            _nop_();
  64.                _nop_();  
  65.                         }
  66.            }   
  67. }

  68. void delay1(uchar a)
  69. {
  70.      uchar i;
  71.      while(a--)
  72.            {
  73.               for(i=0;i<5;i++)
  74.                     {}
  75.            }   
  76. }
  77. /********************************************/
  78. /*      取出EEPROM時鐘參數初始化函數         */
  79. /*******************************************/
  80. void Set_read()
  81. {
  82.         uchar i,*p;
  83.         p=nz_week_address;             //地址傳遞
  84.         for(i=0;i<7;i++)                    //分7次讀取
  85.         {
  86.                 nz_week[i]=Read24c02(*p);
  87.                 p++;
  88.         }
  89.   set_miao=Read24c02(0x03);
  90.   set_fen=Read24c02(0x02);
  91.   set_shi=Read24c02(0x01);
  92.         set_time=Read24c02(0x05);
  93.   nz_flag=Read24c02(0x06);
  94.         setzx_time=Read24c02(0x07);
  95.         setzx_f=Read24c02(0x08);
  96.         zd_baoshi=Read24c02(0x09);
  97.         yuyin_flag=Read24c02(0x0a);
  98.         nz_miao=Read24c02(0x1a);
  99.   nz_fen=Read24c02(0x1b);
  100.   nz_shi=Read24c02(0x1c);
  101.         each=Read24c02(0x1d);
  102. }

  103. /**************************************************
  104.    初始化函數
  105. ***************************************************/
  106. void init()
  107. {
  108.         uchar i;
  109.   Alarm_Flag=0;
  110.         miao_ss=0;
  111.         led1=1;
  112. TMOD=0x01;         //設置定時器0為工作方式1(0000 0001)
  113. TH0=(65536-50000)/256;                      //裝初值50ms一次中斷
  114. TL0=(65536-50000)%256;                      //
  115. IE=0x82;         //開總中斷,開定時器0中斷
  116. TR0=0;
  117.         write_lcd1602(0x80,0);
  118.   for(i=0;i<10;i++)
  119.   {
  120.             write_lcd1602(tab1[i],1);
  121.   }
  122.   write_lcd1602(0x80+0x40+1,0);
  123.   for(i=0;i<7;i++)
  124.   {
  125.             write_lcd1602(tab2[i],1);
  126.   }
  127. }

  128. /******************************************************************/
  129. /*                                     溫度數據轉換                                                     */
  130. /******************************************************************/
  131. void temp_to_str()   //溫度數據轉換成液晶字符顯示
  132. {
  133.   /*TempBuffer[0]=temp_value/100%10+0x30;     //十位
  134.   TempBuffer[1]=temp_value/10%10+0x30;    //個位
  135.   TempBuffer[2]='.';   
  136.   TempBuffer[3]=temp_value%10+0x30;
  137.   TempBuffer[4]=0xdf;                  //溫度符號
  138.         */
  139.         TempBuffer[0]=temp_value/100+0x30;     //十位
  140.   TempBuffer[1]=temp_value%100/10+0x30;    //個位
  141.   TempBuffer[2]='.';   
  142.   TempBuffer[3]=temp_value%10+0x30;
  143.   TempBuffer[4]=0xdf;                  //溫度符號
  144. }

  145. /******************************************************************/
  146. /*                                             顯示星期                                                     */
  147. /******************************************************************/
  148. void write_week(uchar xq)                                                
  149. {
  150.         uchar x;
  151.         write_lcd1602(0x80+12,0);
  152.         switch(xq)
  153.         {
  154.                 case 1:
  155.                 for(x=0;x<3;x++)
  156.                 {
  157.                         write_lcd1602(table1[x],1);
  158.                 }
  159.                 break;
  160.                 case 2:
  161.                 for(x=0;x<3;x++)
  162.                 {
  163.                         write_lcd1602(table2[x],1);
  164.                 }
  165.                 break;
  166.                 case 3:
  167.                 for(x=0;x<3;x++)
  168.                 {
  169.                         write_lcd1602(table3[x],1);
  170.                 }
  171.                 break;
  172.                 case 4:
  173.                 for(x=0;x<3;x++)
  174.             {
  175.                         write_lcd1602(table4[x],1);
  176.                 }
  177.                 break;
  178.                 case 5:
  179.                 for(x=0;x<3;x++)
  180.                 {
  181.                         write_lcd1602(table5[x],1);
  182.                 }
  183.                 break;
  184.                 case 6:
  185.                 for(x=0;x<3;x++)
  186.                 {
  187.                         write_lcd1602(table6[x],1);
  188.                 }
  189.                 break;
  190.                 case 7:
  191.                 for(x=0;x<3;x++)
  192.                 {
  193.                         write_lcd1602(table7[x],1);
  194.                 }
  195.                 break;
  196.         }
  197.         write_lcd1602(0x80+12,0);        
  198. }
  199. /*****************************************************/
  200. /*                  顯示鬧鐘1開關標志函數                   */
  201. /*****************************************************/
  202. void a_lcd()
  203. {
  204.         if(nz_flag==1)
  205.                         {
  206.                                 write_lcd1602(0x80+0x40,0);
  207.                                 write_lcd1602('A',1);
  208.                         }
  209.                         else
  210.                         {
  211.                                 write_lcd1602(0x80+0x40,0);
  212.                                 write_lcd1602(' ',1);
  213.                           }
  214.                         }
  215. /*****************************************************/
  216. /*                  顯示ON和OFF函數                   */
  217. /*****************************************************/
  218. void on_off_lcd(uchar f)
  219. {
  220.         uchar i;
  221.                  write_lcd1602(0x80+0x40+10,0);
  222.            if(f==1)
  223.                                           {
  224.                                                       for(i=0;i<6;i++)        
  225.                                                    {write_lcd1602(tab5[i],1);         }
  226.                                                           write_lcd1602(0x80+0x40+13,0);
  227.                                                  }
  228.                                                         else
  229.                                                 {
  230.                                                         for(i=5;i<11;i++)        
  231.                                                   {    write_lcd1602(tab5[i],1);        }
  232.                                                          write_lcd1602(0x80+0x40+13,0);
  233.                                                 }
  234. }
  235. /******************************************************************/
  236. /*                                             顯示函數                                                     */
  237. /******************************************************************/
  238. void display()
  239. {
  240.         uchar i,ww;
  241.         Read_RTC();
  242.         write_sfm(8,miao);
  243.         write_sfm(5,fen);
  244.         write_sfm(2,shi);
  245.         write_nyr(3,nian);
  246.         write_nyr(6,yue);        
  247.         write_nyr(9,ri);
  248.         write_week(week);
  249.         write_lcd1602(0x80+15,0);
  250.         if(setzx==1)
  251. {write_lcd1602(0xf3,1);}
  252. else
  253.     {
  254.         ww=nz_week[week-1];
  255.         if(ww==1)
  256.         {write_lcd1602(0xeb,1);}
  257.         else
  258.         {write_lcd1602(' ',1);}
  259.      }
  260.         a_lcd();
  261.         ReadTemp();
  262.         temp_to_str();
  263.         write_lcd1602(0x80+0x40+11,0);
  264.         for(i=0;i<5;i++)
  265.         {
  266.                 write_lcd1602(TempBuffer[i],1);
  267.         }
  268. }

  269. /******************************************************************/
  270. /*                   讀時鐘數據                                   */
  271. /******************************************************************/
  272. void Read_RTC(void)                //讀取 日歷
  273. {
  274.          uchar i,*p;
  275.          p=read_rtc_address;             //地址傳遞
  276.          for(i=0;i<7;i++)                     //分7次讀取 秒分時日月周年
  277.          {
  278.                   l_tmpdate[i]=Read_Ds1302(*p);
  279.                   p++;
  280.                                                                                                         
  281.                   miao=((l_tmpdate[0]&0x70)>>4)*10 + (l_tmpdate[0]&0x0f);
  282.                   fen =((l_tmpdate[1]&0x70)>>4)*10 + (l_tmpdate[1]&0x0f);
  283.                   shi =((l_tmpdate[2]&0x70)>>4)*10 + (l_tmpdate[2]&0x0f);
  284.                   ri  =((l_tmpdate[3]&0x70)>>4)*10 + (l_tmpdate[3]&0x0f);
  285.                   yue =((l_tmpdate[4]&0x70)>>4)*10 + (l_tmpdate[4]&0x0f);
  286.                   week=((l_tmpdate[5]&0x70)>>4)*10 + (l_tmpdate[5]&0x0f);
  287.                    nian=((l_tmpdate[6]&0x70)>>4)*10 + (l_tmpdate[6]&0x0f);                    
  288.          }

  289. }

  290. /******************************************************************/
  291. /*                                     蜂鳴器發聲函數                                         */
  292. /******************************************************************/
  293. void di()
  294. {
  295.         uchar i;
  296.         while(key1==0||key2==0||key3==0||key4==0)
  297.         {
  298.                 for(i=0;i<50;i++)
  299.                 {
  300.                         delay1(4);
  301.                         beep=~beep;
  302.                 }               
  303.         }
  304. }
  305. /******************/
  306. void Abeep()
  307. {
  308.         uchar i;
  309.         for(i=0;i<250;i++)
  310.                         {
  311.                                 delay1(4);
  312.                                 beep=~beep;               
  313.                                 led1=~led1;
  314.                         }
  315.                         delay(50);
  316.                         for(i=0;i<250;i++)
  317.                         {
  318.                                 delay1(4);
  319.                                 beep=~beep;
  320.                                 led1=~led1;
  321.                         }
  322.                         delay(50);
  323.                         for(i=0;i<250;i++)
  324.                         {
  325.                                 delay1(4);
  326.                                 beep=~beep;
  327.                                 led1=~led1;
  328.                         }
  329. }
  330. /*********************返回正常計時狀態程序******************************/
  331. void R_normal()

  332. {
  333.             uchar i;
  334.               TR0=0;
  335.                           miao_ss=0;
  336.                                 ReadRTC_Flag=0;
  337.                                 Display_Flag=0;
  338.                                 Aset_Flag=0;
  339.                                 n=0;
  340.                                 write_lcd1602(0x0c,0);
  341.                                 if(m!=0||m1!=0||w!=0)
  342.                                 {
  343.                                    m=0;
  344.                              m1=0;
  345.                                          w=0;
  346.                                          write_lcd1602(0x80,0);  //清掉Set Alarm                           
  347.                                                 for(i=0;i<12;i++)
  348.                                                 {
  349.                                                         write_lcd1602(tab1[i],1);
  350.                                                 }
  351.                                                   write_lcd1602(0x80+0x40+1,0);
  352.             for(i=0;i<10;i++)
  353.            {
  354.                     write_lcd1602(tab2[i],1);
  355.             }
  356.                                 }
  357.                                 
  358.                                                 display();                        
  359.                         
  360.                         }

  361. /******************************************************************/
  362. /*                                             鬧鐘函數                                                             */
  363. /******************************************************************/
  364. void alarm()
  365. {
  366.         uchar tmp,temp;
  367.         if((nz_week[week-1]==1)&&(shi==set_shi)&&(fen==set_fen)&&(miao==set_miao))
  368.         {        
  369.                 //Read_RTC();               
  370.                 R_normal();
  371.                 tmp=set_time+fen;              //計算響鈴分鐘數
  372.                 if(tmp>=60)
  373.                 {tmp=tmp%60;}
  374.                 Alarm_Flag=1;                                            //鬧鈴響標志位
  375.                 setzx=1;
  376.                 led1=0;
  377.                 if(yuyin_flag==1)
  378.                         baoshi(shi,fen,week,0);         //語音報當前時間               
  379.                 while(Alarm_Flag)
  380.                 {        
  381.                         Abeep();
  382.                         delay(500);
  383.                         Read_RTC();                           //邊響邊走時
  384.                         display();
  385.                         keyscan();
  386.                          if(tmp==fen)
  387.                         {
  388.                                 Alarm_Flag=0;
  389.                                 setzx_f--;                   //響鈴次數減一次
  390.                                 if(setzx_f!=0)
  391.                 {
  392.                         temp=setzx_time+fen;
  393.                         if(temp>=60)
  394.                         {
  395.                         temp=temp%60;
  396.                          set_shi++;
  397.                         if(set_shi>23)        
  398.                         {set_shi=0;}
  399.                         }        
  400.                         set_fen=temp;
  401.                         led1=0;
  402.                         if(yuyin_flag==1)
  403.                           baoshi(shi,fen,week,0);         //語音報當前時間
  404.             }
  405.                 else               
  406.                   {
  407.                           setzx=0;
  408.                           led1=1;
  409.         set_fen=Read24c02(0x02);
  410.         set_shi=Read24c02(0x01);
  411.                                 setzx_f=Read24c02(0x08);
  412.                           if(yuyin_flag==1)
  413.                           baoshi(shi,fen,week,0);         //語音報當前時間   
  414.                     }
  415.                         }
  416.                 }                                                                        
  417.         }        
  418. }

  419. /******************************************************************/
  420. /*                                             鬧鐘1函數                                                             */
  421. /******************************************************************/
  422. void alarm1()
  423. {
  424.         uchar tmp,temp;
  425.         if((nz_flag==1)&&(shi==nz_shi)&&(fen==nz_fen)&&(miao==nz_miao))
  426.         {        
  427.                 //Read_RTC();               
  428.                 R_normal();
  429.                 tmp=set_time+fen;              //計算響鈴分鐘數
  430.                 if(tmp>=60)
  431.                 {tmp=tmp%60;}
  432.                 Alarm_Flag1=1;                                            //鬧鈴響標志位
  433.                 setzx=1;
  434.                 led1=0;
  435.                 if(yuyin_flag==1)
  436.                         baoshi(shi,fen,week,0);         //語音報當前時間               
  437.                 while(Alarm_Flag1)
  438.                 {        
  439.                         Abeep();
  440.                         delay(500);
  441.                         Read_RTC();                           //邊響邊走時
  442.                         display();
  443.                         keyscan();
  444.                          if(tmp==fen)
  445.                         {
  446.                                 Alarm_Flag1=0;
  447.                                 setzx_f--;                   //響鈴次數減一次
  448.                                 if(setzx_f!=0)
  449.                 {
  450.                         temp=setzx_time+fen;
  451.                         if(temp>=60)
  452.                         {
  453.                         temp=temp%60;
  454.                          nz_shi++;
  455.                         if(nz_shi>23)        
  456.                         {nz_shi=0;}
  457.                         }        
  458.                         nz_fen=temp;
  459.                         led1=0;
  460.                         if(yuyin_flag==1)
  461.                           baoshi(shi,fen,week,0);         //語音報當前時間
  462.             }
  463.                 else               
  464.                   {
  465.                           setzx=0;
  466.                           led1=1;
  467.         nz_fen=Read24c02(0x1b);
  468.         nz_shi=Read24c02(0x1c);
  469.                                 setzx_f=Read24c02(0x08);
  470.                                 if(each==0)
  471.                                 nz_flag=0;
  472.                           if(yuyin_flag==1)
  473.                           baoshi(shi,fen,week,0);         //語音報當前時間   
  474.                     }
  475.                         }
  476.                 }                                                                        
  477. /*                tmp=fen+5;       //響鈴x分鐘
  478.                 if(tmp>=60)
  479.                 {tmp=tmp%60;}
  480.                 Alarm_Flag1=1;                                            //鬧鈴響標志位
  481.                 led1=0;
  482.                 if(yuyin_flag==1)
  483.                          baoshi(shi,fen,week,0);         //語音報鬧鐘時間               
  484.                 while(Alarm_Flag1)
  485.                 {        
  486.                         Abeep();
  487.                         delay(500);
  488.                         Read_RTC();                           //邊響邊走時
  489.                         display();
  490.                         keyscan();
  491.                          if(tmp==fen)
  492.                         {
  493.                                 Alarm_Flag1=0;
  494.                                 led1=1;
  495.                         if(each==0)
  496.                                 nz_flag=0;
  497.                         if(yuyin_flag==1)
  498.                           baoshi(shi,fen,week,0);         //語音報鬧鐘時間   
  499.                         }
  500.                 }                                                                        */
  501.         }        
  502. }

  503. /******************************************************************/
  504. /*                                             鍵盤掃描函數                                             */
  505. /******************************************************************/
  506. void keyscan()
  507. {
  508.         uchar i,temp;
  509.         if(Alarm_Flag==0&&Alarm_Flag1==0&&setzx==0)
  510.         {
  511.                 if(key1==0)                                                         //調時功能鍵
  512.                 {
  513.                         delay(9);
  514.                         if(key1==0)
  515.                         {
  516.                                 di();
  517.                                 while(!key1);                                                                                       //松手檢測
  518.                                 miao_ss=0;
  519.                 if(Display_Flag==0&&m==0&&w==0&&m1==0)               
  520.                 {               
  521.                                 ++n;
  522.                                 Aset_Flag=1;                          //屏蔽調鬧鈴功能鍵,進入調時功能
  523.                                 ReadRTC_Flag=1;                                                                                         //停止走時
  524.                                 switch(n)
  525.                                 {
  526.                                         case 1: on_off_lcd(zd_baoshi);                                      //按一次功能鍵閃爍
  527.                                                             write_lcd1602(0x0f,0);
  528.                                 break;
  529.                                         case 2: write_lcd1602(0x80+0x40+9,0);                                     //按兩次功能鍵秒閃爍
  530.                                                             //Write_Ds1302(0x8e,0x00);                                                //允許寫,禁止寫保護
  531.                                                             //Write_Ds1302(0x80,((miao/10)*16+miao%10));        //寫入DS1302秒位
  532.                                                             //Write_Ds1302(0x8e,0x80);                                               //打開寫保護
  533.                                                         break;
  534.                                         case 3: write_lcd1602(0x80+0x40+6,0);                                 //按三次功能鍵分閃爍                                
  535.                                                         break;
  536.                                         case 4: write_lcd1602(0x80+0x40+3,0);                                 //按四次功能鍵時閃爍                                                               
  537.                                                         break;
  538.                                         case 5: write_lcd1602(0x80+10,0);                                          //按五次功能鍵日閃爍                                                
  539.                                                         break;
  540.                                         case 6: write_lcd1602(0x80+7,0);                                          //按六次功能鍵月閃爍                                                
  541.                                                         break;
  542.                                         case 7:write_lcd1602(0x80+4,0);                                          //按七次功能鍵年閃爍
  543.                                                         break;
  544.                                         case 8: write_lcd1602(0x80+12,0);                                         //按八次功能鍵周閃爍        
  545.                                                         break;
  546.                                         case 9: TR0=0;                                                                        //按九次功能鍵開始走時,停止閃爍
  547.                                                 n=0;
  548.                                                          ReadRTC_Flag=0;                                                
  549.                                             Aset_Flag=0;
  550.                                                         write_lcd1602(0x0c,0);
  551.                                                         Write_Ds1302(0x8e,0x00);
  552.                                                         Write_Ds1302(0x80,((miao/10)*16+miao%10));
  553.                                                         Write_Ds1302(0x82,((fen/10)*16+fen%10));
  554.                                                         Write_Ds1302(0x84,((shi/10)*16+shi%10));
  555.                                                         Write_Ds1302(0x8e,0x80);
  556.                                                         break;
  557.                                 }
  558.                         }
  559.                 else
  560.                 {
  561.                         if(n==0&&w==0&&m1==0&&m>0)
  562.                 {
  563.                         m++;
  564.                         Alarm_Flag=0;                                                 //初始化鬧鈴標志位,鬧鈴不響
  565.                         Alarm_Flag1=0;        
  566.                         switch(m)
  567.                         {        case 2: write_lcd1602(0x80+0x40+9,0);                   //開始設定鬧鈴,秒位閃爍可調
  568.                                                 write_lcd1602(0x0f,0);
  569.                                                 break;
  570.                                 case 3: write_lcd1602(0x80+0x40+6,0);                   //分位閃爍可調
  571.                                                 break;
  572.                                 case 4:        write_lcd1602(0x80+0x40+3,0);                   //時位閃爍可調
  573.                                                 break;
  574.                                 case 5:        write_lcd1602(0x80+0x40+14,0);                 //
  575.                                                 break;               
  576.                                 case 6:        write_lcd1602(0x80+15,0);                       //
  577.                                     break;
  578.                                 case 7:        write_lcd1602(0x80+12,0);                       //
  579.                                     break;
  580.                                 case 8:        write_lcd1602(0x80+0x40+11,0);                 //
  581.                                     break;
  582.                                 case 9:R_normal();
  583. //                                                display();                                                           //返回時間顯示
  584.                                                 break;
  585.                                         }
  586.                     }        
  587.                 else
  588.                 if(n==0&&m==0&&m1==0&&w>0)        
  589.                 {
  590.                         w++;
  591.                         Alarm_Flag=0;                                                 //初始化鬧鈴標志位,鬧鈴不響
  592.                         Alarm_Flag1=0;        
  593.                         switch(w)
  594.                         {        case 2: write_lcd1602(0x80+0x40+2,0);                  
  595.                                                     write_lcd1602(0x0f,0);           //開始閃爍
  596.                                                 break;
  597.                                 case 3: write_lcd1602(0x80+0x40+4,0);                  
  598.                                                 break;
  599.                                 case 4:        write_lcd1602(0x80+0x40+6,0);                  
  600.                                                 break;
  601.                                 case 5:        write_lcd1602(0x80+0x40+8,0);                 //
  602.                                                 break;               
  603.                                 case 6:        write_lcd1602(0x80+0x40+10,0);                 //
  604.                                     break;
  605.                                 case 7:        write_lcd1602(0x80+0x40+12,0);                 //
  606.                                     break;
  607.                                 case 8:        write_lcd1602(0x80+0x40+14,0);                 //
  608.                                     break;
  609.                                 case 9:        R_normal();
  610.                                          break;
  611.                        }
  612.                       }
  613.                 else
  614.                 {
  615.                         if(n==0&&m==0&&w==0&&m1>0)
  616.                         {
  617.                                 m1++;
  618.                                 Alarm_Flag=0;                                                 //初始化鬧鈴標志位,鬧鈴不響
  619.                           Alarm_Flag1=0;        
  620.                                 switch(m1)
  621.                         {        case 2: write_lcd1602(0x80+0x40+9,0);                   //開始設定鬧鈴,秒位閃爍可調
  622.                                                     write_lcd1602(0x0f,0);
  623.                                                 break;
  624.                                 case 3: write_lcd1602(0x80+0x40+6,0);                   //分位閃爍可調
  625.                                                 break;
  626.                                 case 4:        write_lcd1602(0x80+0x40+3,0);                   //時位閃爍可調
  627.                                                 break;
  628.                                 case 5:        on_off_lcd(each);                            //
  629.                                     break;
  630.                                 case 6:
  631.                                        nz_flag=1;                                                                        //開啟鬧鐘檢測
  632.                      R_normal();
  633.                                         break;
  634.                                   }
  635.                                         }
  636.                      }
  637.                   }
  638.                 }
  639.          }
  640. }
  641.            if(Alarm_Flag==0&&Alarm_Flag1==0&&setzx==0)
  642.   {        if(key4==0)                                                                 //鬧鈴功能鍵
  643.           {
  644.                 delay(9);
  645.                 if(key4==0)
  646.                 {
  647.                         di();
  648.                         while(!key4);
  649.                         if(Aset_Flag==0)        //不是調時鐘狀態就可以進入調鬧鐘
  650.    {               
  651.                  miao_ss=0;
  652.                  if(m1==0)
  653.                  {
  654.                  if(w==0)
  655.                  {
  656.                         m++;
  657.                         if(m>1)
  658.                         {m=9;}
  659.                         Display_Flag=1;                                                 //屏蔽調時功能鍵,進入調鬧鈴功能
  660.                         switch(m)
  661.                         {
  662.                                 case 1:        n=0;
  663.                                                 ReadRTC_Flag=0;                                            //開顯示        
  664.                                                 write_lcd1602(0x0c,0);                        //停止閃爍
  665.                                                 Write_Ds1302(0x8e,0x00);
  666.                                                 Write_Ds1302(0x80,((miao/10)*16+miao%10));
  667.                                                 Write_Ds1302(0x8e,0x80);
  668.                                                 write_lcd1602(0x80,0);                  //首行寫入Set Alarm!
  669.                                     write_lcd1602('w',1);
  670.                                     write_lcd1602(':',1);
  671. //                                    write_lcd1602(' ',1);
  672.                                                 for(i=3;i<12;i++)
  673.                                                 {
  674.                                                         write_lcd1602(tab3[i],1);
  675.                                                 }
  676.                                                 write_lcd1602(setzx_f/10+'0',1);
  677.                                                 write_lcd1602(setzx_f%10+'0',1);
  678.                                                 write_lcd1602(0xde,1);
  679.                                                 write_lcd1602(setzx_time/10+'0',1);
  680.                                                 write_lcd1602(setzx_time%10+'0',1);
  681.                                                 write_lcd1602(0x80+0x40,0);          //第二行寫入設定的時間
  682.                                                 write_lcd1602('*',1);
  683.                                                 for(i=0;i<7;i++)
  684.                                                 {
  685.                                                         write_lcd1602(tab2[i],1);        
  686.                                                 }
  687.                                                 write_lcd1602(0x80+0x40+8,0);
  688.                                                 write_lcd1602(set_miao/10+'0',1);
  689.                                           write_lcd1602(set_miao%10+'0',1);
  690.                                                 write_lcd1602(0x80+0x40+5,0);
  691.                                                 write_lcd1602(set_fen/10+'0',1);
  692.                                                 write_lcd1602(set_fen%10+'0',1);
  693.                                                 write_lcd1602(0x80+0x40+2,0);
  694.                                                 write_lcd1602(set_shi/10+'0',1);
  695.                                                 write_lcd1602(set_shi%10+'0',1);
  696.                                                 write_lcd1602(0x80+0x40+11,0);
  697.                                                 if(yuyin_flag==1)
  698.                                                 {write_lcd1602('V',1);}
  699.                                                 else
  700.                                                 {write_lcd1602('_',1);}
  701.                                                 write_lcd1602(' ',1);
  702.                                                 write_lcd1602(set_time/10+'0',1);
  703.                                                 write_lcd1602(set_time%10+'0',1);
  704.                                                 write_lcd1602('m',1);
  705.                                                 break;
  706.                                 case 9:
  707.                                            m=0;                                                                   //關閉更更改鬧鈴時間
  708.                                w=1;                  //
  709.                                     write_lcd1602(0x0c,0); //停止閃爍
  710.                                     write_lcd1602(0x80,0);                  //首行寫入星期表
  711.                                                 for(i=0;i<16;i++)
  712.                                                 {
  713.                                                         write_lcd1602(tab4[i],1);
  714.                                                 }
  715.                                                 write_lcd1602(0x80+0x40,0);
  716.                                                 write_lcd1602('*',1);
  717.                                                 write_lcd1602(':',1);
  718.                                                 write_lcd1602(nz_week[0]+'0',1);
  719.                                                 write_lcd1602(' ',1);
  720.                                                 write_lcd1602(nz_week[1]+'0',1);
  721.                                                 write_lcd1602(' ',1);
  722.                                                 write_lcd1602(nz_week[2]+'0',1);
  723.                                                 write_lcd1602(' ',1);
  724.                                                 write_lcd1602(nz_week[3]+'0',1);
  725.                                                 write_lcd1602(' ',1);
  726.                                                 write_lcd1602(nz_week[4]+'0',1);
  727.                                                 write_lcd1602(' ',1);
  728.                                                 write_lcd1602(nz_week[5]+'0',1);
  729.                                                 write_lcd1602(' ',1);
  730.                                                 write_lcd1602(nz_week[6]+'0',1);
  731.                                                 write_lcd1602(' ',1);
  732.                                         break;
  733.                         }
  734.                 }
  735.                  else
  736.                  {
  737.                         w=0;
  738.                         m1=1;
  739.                          write_lcd1602(0x0c,0);     //停止閃爍
  740.              write_lcd1602(0x80,0);                  //首行寫入Set Alarm!
  741.                                                 for(i=0;i<11;i++)
  742.                                                 {
  743.                                                         write_lcd1602(tab3[i],1);
  744.                                                 }
  745.                                                 write_lcd1602('E',1);
  746.                                                 write_lcd1602('.',1);
  747.                                                 write_lcd1602('d',1);
  748.                                                 write_lcd1602('a',1);
  749.                                                 write_lcd1602('y',1);
  750.                                                 write_lcd1602(0x80+0x40,0);          //第二行寫入設定的時間
  751.                                                 write_lcd1602(' ',1);
  752.                                                 for(i=0;i<7;i++)
  753.                                                 {
  754.                                                         write_lcd1602(tab2[i],1);        
  755.                                                 }
  756.                                                 write_lcd1602(0x80+0x40+8,0);
  757.                                                 write_lcd1602(nz_miao/10+'0',1);
  758.                                           write_lcd1602(nz_miao%10+'0',1);
  759.                                                 on_off_lcd(each);
  760.                                                 write_lcd1602(0x80+0x40+5,0);
  761.                                                 write_lcd1602(nz_fen/10+'0',1);
  762.                                                 write_lcd1602(nz_fen%10+'0',1);
  763.                                                 write_lcd1602(0x80+0x40+2,0);
  764.                                                 write_lcd1602(nz_shi/10+'0',1);
  765.                                                 write_lcd1602(nz_shi%10+'0',1);
  766.                                                 a_lcd();
  767.                  }
  768.          }
  769.                  else
  770.                  {
  771.                   R_normal();
  772.                                         //        display();                                                           //返回時間顯示*/
  773.                         
  774.                  }
  775.                 }
  776.          else         
  777.          
  778.            R_normal();
  779.          
  780.          }
  781.         }
  782. }
  783.         if(n!=0||m>1||m1>1||w>1)                                                                                                                //功能加鍵
  784.         {
  785.                 if(key2==0)
  786.                 {
  787.                         delay(9);
  788.                         if(key2==0)
  789.                         {                                       
  790.                                 di();
  791.                                 while(!key2);
  792.                                 miao_ss=0;
  793.                                 if(Display_Flag==0)
  794.                                 {
  795.                                         switch(n)
  796.                                         {
  797.                                                 case 1:zd_baoshi=~zd_baoshi;
  798.                                                        Write24c02(0x09,zd_baoshi);
  799.                                                              on_off_lcd(zd_baoshi);
  800.                                                       break;
  801.                                                 case 2: miao++;
  802.                                                                 if(miao==60)
  803.                                                                 miao=0;
  804.                                                                 write_lcd1602(0x80+0x40+8,0);           //使LCD1602在秒位上顯示“加”設好的秒數
  805.                                                                 write_lcd1602((miao/10)+'0',1);         //十進制轉換成LCD1602能顯示的字符,顯示出來
  806.                                                                 write_lcd1602((miao%10)+'0',1);
  807.                                                                 T=(miao/10)*16+(miao%10);                     //十進制轉換成DS1302能寫的BCD碼
  808.                                                                 Write_Ds1302(0x8e,0x00);                     //允許寫,禁止寫保護
  809.                                                                 Write_Ds1302(0x80,T);                              //寫入DS1302
  810.                                                                 Write_Ds1302(0x8e,0x80);                    //打開寫保護
  811.                                                                 //Read_RTC();                                                                                                                                
  812.                                                                 write_lcd1602(0x80+0x40+9,0);     //寫完數據后光標自動右移,所以要歸位                                                                                                               
  813.                                                                 break;
  814.                                                 case 3: fen++;
  815.                                                                 if(fen==60)
  816.                                                                 fen=0;
  817.                                                                 write_lcd1602(0x80+0x40+5,0);
  818.                                                                 write_lcd1602((fen/10)+'0',1);
  819.                                                                 write_lcd1602((fen%10)+'0',1);
  820.                                                                 T=(fen/10)*16+(fen%10);
  821.                                                                 Write_Ds1302(0x8e,0x00);
  822.                                                                 Write_Ds1302(0x82,T);
  823.                                                                 Write_Ds1302(0x8e,0x80);                                                               
  824.                                                                 write_lcd1602(0x80+0x40+6,0);
  825.                                                                 break;
  826.                                                 case 4: shi++;
  827.                                                                 if(shi==24)
  828.                                                                 shi=0;
  829.                                                                 write_lcd1602(0x80+0x40+2,0);
  830.                                                                 write_lcd1602((shi/10)+'0',1);
  831.                                                                 write_lcd1602((shi%10)+'0',1);
  832.                                                                 T=(shi/10)*16+(shi%10);
  833.                                                                 Write_Ds1302(0x8e,0x00);
  834.                                                                 Write_Ds1302(0x84,T);
  835.                                                                 Write_Ds1302(0x8e,0x80);                                                               
  836.                                                                 write_lcd1602(0x80+0x40+3,0);
  837.                                                                 break;
  838.                                                 case 5: ri++;
  839.                                                                 if(ri==32)
  840.                                                                 ri=1;
  841.                                                                 write_lcd1602(0x80+9,0);
  842.                                                                 write_lcd1602((ri/10)+'0',1);
  843.                                                                 write_lcd1602((ri%10)+'0',1);
  844.                                                                 T=(ri/10)*16+(ri%10);                        
  845.                                                                 Write_Ds1302(0x8e,0x00);        
  846.                                                                 Write_Ds1302(0x86,T);
  847.                                                                 Write_Ds1302(0x8e,0x80);
  848.                                                                 write_lcd1602(0x80+10,0);
  849.                                                                 break;
  850.                                                 case 6: yue++;
  851.                                                                 if(yue==13)
  852.                                                                 yue=1;
  853.                                                                 write_lcd1602(0x80+6,0);
  854.                                                                 write_lcd1602((yue/10)+'0',1);
  855.                                                                 write_lcd1602((yue%10)+'0',1);
  856.                                                                 T=(yue/10)*16+(yue%10);
  857.                                                                 Write_Ds1302(0x8e,0x00);
  858.                                                                 Write_Ds1302(0x88,T);
  859.                                                                 Write_Ds1302(0x8e,0x80);
  860.                                                                 write_lcd1602(0x80+7,0);
  861.                                                                 break;
  862.                                                 case 7: nian++;
  863.                                                                 if(nian==100)
  864.                                                                 nian=0;
  865.                                                                 write_lcd1602(0x80+3,0);
  866.                                                                 write_lcd1602((nian/10)+'0',1);
  867.                                                                 write_lcd1602((nian%10)+'0',1);
  868.                                                                 T=(nian/10)*16+(nian%10);
  869.                                                                 Write_Ds1302(0x8e,0x00);
  870.                                                                 Write_Ds1302(0x8c,T);
  871.                                                                 Write_Ds1302(0x8e,0x80);
  872.                                                                 write_lcd1602(0x80+4,0);
  873.                                                                 break;
  874.                                                 case 8: week++;
  875.                                                                 if(week==8)
  876.                                                                 week=1;
  877.                                                                 write_week(week);
  878.                                                                 T=(week/10)*16+(week%10);
  879.                                                                 Write_Ds1302(0x8e,0x00);
  880.                                                                 Write_Ds1302(0x8a,T);
  881.                                                                 Write_Ds1302(0x8e,0x80);
  882.                                                                 break;
  883.                                         }
  884.                                 }
  885.                                 else  
  886.                                         if(w==0&&m1==0&&m>1)
  887.                                 {               
  888.                                         switch(m)
  889.                                                 {
  890.                                                          case 2: set_miao++;                     //鬧鐘秒加1
  891.                                                                         if(set_miao==60)
  892.                                                                         set_miao=0;
  893.                                                                         write_lcd1602(0x80+0x40+8,0);
  894.                                                                         write_lcd1602(set_miao/10+'0',1);
  895.                                                                         write_lcd1602(set_miao%10+'0',1);
  896.                                                                         write_lcd1602(0x80+0x40+9,0);
  897.                                                                         Write24c02(0x03,set_miao);
  898.                                                                         break;
  899.                                                     case 3: set_fen++;                   //鬧鐘分加1
  900.                                                                         if(set_fen==60)
  901.                                                                         set_fen=0;
  902.                                                                         write_lcd1602(0x80+0x40+5,0);
  903.                                                                         write_lcd1602(set_fen/10+'0',1);
  904.                                                                         write_lcd1602(set_fen%10+'0',1);
  905.                                                                         write_lcd1602(0x80+0x40+6,0);
  906.                                                                         Write24c02(0x02,set_fen);
  907.                                                                         break;
  908.                                                     case 4: set_shi++;                  //鬧鐘時加1
  909.                                                                         if(set_shi==24)
  910.                                                                         set_shi=0;
  911.                                                                         write_lcd1602(0x80+0x40+2,0);
  912.                                                                         write_lcd1602(set_shi/10+'0',1);
  913.                                                                         write_lcd1602(set_shi%10+'0',1);
  914.                                                                         write_lcd1602(0x80+0x40+3,0);
  915.                                                                         Write24c02(0x01,set_shi);
  916.                                                                         break;
  917.                                                         case 5: set_time++;                   //鬧鐘響鈴時長
  918.                                                                         if(set_time==31)
  919.                                                                         set_time=1;
  920.                                                                         write_lcd1602(0x80+0x40+13,0);
  921.                                                                         write_lcd1602(set_time/10+'0',1);
  922.                                                                         write_lcd1602(set_time%10+'0',1);
  923.                                                                         write_lcd1602(0x80+0x40+14,0);
  924.                                                                         Write24c02(0x05,set_time);
  925.                                                                         break;               
  926.                                                         case 6: setzx_time++;                 //鬧鐘再響間隔
  927.                                                                         if(setzx_time==31)
  928.                                                                         setzx_time=1;
  929.                                                                         write_lcd1602(0x80+14,0);
  930.                                                                         write_lcd1602(setzx_time/10+'0',1);
  931.                                                                         write_lcd1602(setzx_time%10+'0',1);
  932.                                                                         write_lcd1602(0x80+15,0);
  933.                                                                         Write24c02(0x07,setzx_time);
  934.                                                                         break;               
  935.                                                         case 7: setzx_f++;                    //鬧鐘響鈴次數
  936.                                                                         if(setzx_f==11)
  937.                                                                         setzx_f=1;
  938.                                                                         write_lcd1602(0x80+11,0);
  939.                                                                         write_lcd1602(setzx_f/10+'0',1);
  940.                                                                         write_lcd1602(setzx_f%10+'0',1);
  941.                                                                         write_lcd1602(0x80+12,0);
  942.                                                                         Write24c02(0x08,setzx_f);
  943.                                                                         break;
  944.                                                         case 8: yuyin_flag=~yuyin_flag;
  945.                                                                         write_lcd1602(0x80+0x40+11,0);
  946.                                                                         if(yuyin_flag==1)
  947.                                                         {write_lcd1602('V',1);}
  948.                                                     else
  949.                                                         {write_lcd1602('_',1);}
  950.                                                                         write_lcd1602(0x80+0x40+11,0);
  951.                                                                         Write24c02(0x0a,yuyin_flag);
  952.                                                                         break;
  953.                                                 }
  954.                                         }
  955.                                 else
  956.                                 if(m==0&&m1==0&&w>1)
  957.                                 {
  958.                                         switch(w)
  959.                                         {
  960.                                                 case 2:                               //星期日鬧鐘開關,1為開
  961.                                                 nz_week[0]=1;
  962.                                                 write_lcd1602(0x80+0x40+2,0);
  963.                                                 write_lcd1602(nz_week[0]+'0',1);
  964.                                                 write_lcd1602(0x80+0x40+2,0);
  965.                                                 Write24c02(0x10,nz_week[0]);
  966.                                                         break;
  967.                                                 case 3:                               //星期一鬧鐘開關
  968.                                                 nz_week[1]=1;
  969.                                                 write_lcd1602(0x80+0x40+4,0);
  970.                                                 write_lcd1602(nz_week[1]+'0',1);
  971.                                                 write_lcd1602(0x80+0x40+4,0);
  972.                                                 Write24c02(0x11,nz_week[1]);        
  973.                                                         break;
  974.                                                 case 4:                               //星期二鬧鐘開關
  975.                                                 nz_week[2]=1;
  976.                                                 write_lcd1602(0x80+0x40+6,0);
  977.                                                 write_lcd1602(nz_week[2]+'0',1);
  978.                                                 write_lcd1602(0x80+0x40+6,0);
  979.                                                 Write24c02(0x12,nz_week[2]);        
  980.                                                         break;
  981.                                                 case 5:                               //星期三鬧鐘開關
  982.                                                 nz_week[3]=1;
  983.                                                 write_lcd1602(0x80+0x40+8,0);
  984.                                                 write_lcd1602(nz_week[3]+'0',1);
  985.                                                 write_lcd1602(0x80+0x40+8,0);
  986.                                                 Write24c02(0x13,nz_week[3]);        
  987.                                                         break;
  988.                                                 case 6:                               //星期四鬧鐘開關
  989.                                                 nz_week[4]=1;
  990.                                                 write_lcd1602(0x80+0x40+10,0);
  991.                                                 write_lcd1602(nz_week[4]+'0',1);
  992.                                                 write_lcd1602(0x80+0x40+10,0);
  993.                                                 Write24c02(0x14,nz_week[4]);        
  994.                                                         break;
  995.                                                 case 7:                               //星期五鬧鐘開關
  996.                                                 nz_week[5]=1;
  997.                                                 write_lcd1602(0x80+0x40+12,0);
  998.                                                 write_lcd1602(nz_week[5]+'0',1);
  999.                                                 write_lcd1602(0x80+0x40+12,0);
  1000.                                                 Write24c02(0x15,nz_week[5]);        
  1001.                                                         break;
  1002.                                                 case 8:                               //星期六鬧鐘開關
  1003.                                                 

  1004. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼




程序:
電子時鐘最終雙鬧版.rar (20.54 KB, 下載次數: 166)


評分

參與人數 2黑幣 +55 收起 理由
1370771146 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:74784 發表于 2017-4-9 21:59 | 只看該作者
這個c語言的代碼
比匯編代碼還復雜啊~~~~~~~~~
回復

使用道具 舉報

板凳
ID:171111 發表于 2017-4-17 17:13 來自手機 | 只看該作者
謝謝樓主的資料 正想學51c語言 很好很有用
回復

使用道具 舉報

地板
ID:171111 發表于 2017-5-6 21:55 | 只看該作者
要是能有個說明就好了 我這調了半天也沒太弄明白鬧鐘設置里的東東 是個很不錯的程序
回復

使用道具 舉報

5#
ID:171111 發表于 2017-5-6 21:56 | 只看該作者
而且到了鬧鐘的時間就死機了呢 卡住不動了 是哪里設置的不對呢
回復

使用道具 舉報

6#
ID:159515 發表于 2017-5-6 23:06 | 只看該作者
鬧鐘在語音報時的時候顯示屏會停下不走動,語音報完就正常走時了
回復

使用道具 舉報

7#
ID:159515 發表于 2017-5-7 00:04 | 只看該作者
xuwei517 發表于 2017-5-6 21:55
要是能有個說明就好了 我這調了半天也沒太弄明白鬧鐘設置里的東東 是個很不錯的程序


發幾張圖片說明看看吧

回復

使用道具 舉報

8#
ID:159515 發表于 2018-4-14 09:33 | 只看該作者

更新一下:做了一點小優化,解決語音報時走時停頓問題 電子時鐘最終雙鬧版(2017.11.30).rar (113.58 KB, 下載次數: 97)

回復

使用道具 舉報

9#
ID:124995 發表于 2018-4-15 12:15 | 只看該作者
灰常不錯,謝謝樓主
回復

使用道具 舉報

10#
ID:311224 發表于 2018-4-18 21:05 | 只看該作者
樓主,請問你這個設備能否買一個給我,謝謝!急用,需要給女朋友送一個。
回復

使用道具 舉報

11#
ID:323766 發表于 2018-5-10 18:20 | 只看該作者
羨慕大神
回復

使用道具 舉報

12#
ID:190192 發表于 2018-5-10 22:00 | 只看該作者
正想學51c語言,羨慕大神
回復

使用道具 舉報

13#
ID:102293 發表于 2018-5-10 22:43 | 只看該作者
辛苦了,謝謝樓主的資料,
回復

使用道具 舉報

14#
ID:104838 發表于 2018-8-10 03:11 | 只看該作者
程序試好,可以用,新手可以放心下載

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

15#
ID:287128 發表于 2018-8-10 18:18 | 只看該作者
謝謝樓主的資料 正想學51c語言 很好很有用
回復

使用道具 舉報

16#
ID:385160 發表于 2018-8-11 00:44 來自手機 | 只看該作者
很好,我也想做一個
回復

使用道具 舉報

17#
ID:380389 發表于 2018-9-2 19:19 | 只看該作者
沒有接AT24C02就不能顯示嗎?
回復

使用道具 舉報

18#
ID:282431 發表于 2018-9-9 08:05 | 只看該作者
謝謝樓主的資料  很好很有用
回復

使用道具 舉報

19#
ID:408691 發表于 2019-3-28 18:48 | 只看該作者
樓主,有沒有仿真圖
回復

使用道具 舉報

20#
ID:471632 發表于 2019-3-29 10:45 | 只看該作者
有歷史的牛人呀!
回復

使用道具 舉報

21#
ID:293356 發表于 2019-4-4 13:06 | 只看該作者
正想學51c語言,黑幣不夠無法下載
回復

使用道具 舉報

22#
ID:485189 發表于 2019-4-5 10:39 | 只看該作者
不會設置鬧鐘
回復

使用道具 舉報

23#
ID:846185 發表于 2020-11-23 20:49 | 只看該作者
為什么我的仿真里led1602不顯示
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕第三页 | 亚洲日本成人 | 婷婷桃色网 | 亚洲欧美一区二区三区1000 | 四虎精品在线 | 成人深夜福利网站 | 麻豆精品国产91久久久久久 | 精品国产欧美一区二区 | 久久精品视频网站 | 久久精品电影 | 一区二区在线不卡 | 久久久久国产精品一区 | 午夜精品一区 | 久久久成人动漫 | 91xxx在线观看 | 日韩一区二区免费视频 | 欧美黄色大片在线观看 | 蜜桃传媒av | 91免费在线 | 天天宗合网 | 久久性| 亚洲精品一区中文字幕乱码 | 国产精品一区二区三区四区 | 九九九视频 | 亚洲精品一区二区三区中文字幕 | 久久噜噜噜精品国产亚洲综合 | 精品国产乱码久久久久久丨区2区 | 99精品视频在线 | 欧美11一13sex性hd | 成人欧美一区二区三区在线播放 | 特一级黄色毛片 | 在线观看欧美日韩视频 | 国产欧美在线观看 | 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美综合网| 一区二区三区国产精品 | 免费在线观看一区二区三区 | 成人在线观看免费 | 欧美福利| 成人小视频在线观看 | 九九热在线观看 |