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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

1602+24c02定時器時鐘單片機仿真

[復制鏈接]
跳轉到指定樓層
樓主
定時器時間可調,時間顯示正常,但美中不足之處程序有點瑕疵,望高手指點


單片機源程序如下:
  1. #include<REG52.h>
  2. #include<24c02.h>
  3. #include<1602.h>

  4. sbit s1=P3^2;//光標移位     
  5. sbit s2=P3^3;//加鍵     
  6. sbit s3=P3^4;//減鍵   
  7. sbit beep=P1^0;//蜂鳴器

  8. unsigned char count,s1num;
  9. unsigned char miao,shi,fen;

  10. void delayms(unsigned int time)
  11. {
  12.         unsigned int x,y;
  13.         for(x=time;x>0;x--)
  14.             for(y=110;y>0;y--);        
  15.       }       
  16.                                
  17. void di()  
  18. {
  19.         beep=0;
  20.         delayms(100);
  21.         beep=1;
  22. }

  23. void write_sfm(uchar add,uchar date)   
  24. {
  25.                 uchar shi,ge;
  26.                 shi=date/10;
  27.                 ge=date%10;
  28.                 write_Com(0x80+0x40+add);   
  29.                 write_Date(0x30+shi);        
  30.                 write_Date(0x30+ge);         
  31. }

  32. void InitTimer0(void)
  33. {
  34.     TMOD = 0x01;
  35.     TH0=(65536-50000)/256;
  36.           TL0=(65536-50000)%256;
  37.     EA = 1;
  38.     ET0 = 1;
  39.     TR0 = 1;
  40. }

  41. void keyscan()
  42. {
  43.         if(s1==0)//0是高電平,開
  44.         {
  45.                 delayms(5);
  46.                 if(s1==0)   
  47.                 {
  48.                  s1num++;   
  49.                  while(!s1);
  50.                  di();
  51.                        
  52.                  if(s1num==1)
  53.                  {
  54.                         TR0=0;   
  55.                         write_Com(0x80+0x40+10);  
  56.                         write_Com(0x0f);   
  57.                  }
  58.                  
  59.                  if(s1num==2)  
  60.                  {
  61.                         write_Com(0x80+0x40+7);
  62.                  }
  63.                  
  64.                  if(s1num==3)  
  65.                  {
  66.                         write_Com(0x80+0x40+4);
  67.                  }
  68.                  
  69.                  if(s1num==4)  
  70.                  {
  71.                         s1num=0; //記錄鍵清零  
  72.                         write_Com(0x0c);  
  73.                         TR0=1; //到第四次啟動定時器開始走   
  74.                  }
  75.                 }
  76.         }
  77. /********************************/
  78.         if(s1num!=0) //按完S1才能激活S2   
  79.         {
  80. /********************************/       
  81.                 if(s2==0)
  82.                 {
  83.                  delayms(5);
  84.                  if(s2==0)
  85.                  {
  86.                         while(!s2);
  87.                         di();
  88.                          
  89.                         if(s1num==1)//按下每秒加1   
  90.                         {
  91.                          miao++;
  92.                          if(miao==60)
  93.                                 miao=0;
  94.                          write_sfm(10,miao);//每調節一次送液晶顯示一次
  95.                          write_Com(0x80+0x40+10);//顯示輸入地址
  96.                          write_add(1,miao);//調節完畢數據立即保存  
  97.                         }
  98.                        
  99.                         if(s1num==2)//按下每分加1
  100.                         {
  101.                          fen++;
  102.                          if(fen==60)
  103.                                 fen=0;
  104.                          write_sfm(7,fen);//每調節一次送液晶顯示一次
  105.                          write_Com(0x80+0x40+7);//顯示輸入地址
  106.                          write_add(2,fen);//調節完畢數據立即保存
  107.                         }
  108.                        
  109.                         if(s1num==3)//按下每時加1
  110.                         {
  111.                          shi++;
  112.                          if(shi==24)
  113.                                 shi=0;
  114.                          write_sfm(4,shi);//每調節一次送液晶顯示一次
  115.                          write_Com(0x80+0x40+4);//顯示輸入地址
  116.                          write_add(3,shi);//調節完畢數據立即保存
  117.                         }
  118.                  }
  119.                 }
  120.                
  121. /********************************/               
  122.                 if(s3==0)
  123.                 {
  124.                  delayms(5);
  125.                  if(s3==0)
  126.                  {
  127.                         while(!s3);
  128.                         di();
  129.                          
  130.                         if(s1num==1)//按下每秒減1
  131.                         {
  132.                          miao--;
  133.                          if(miao==-1)
  134.                                 miao=59;
  135.                          write_sfm(10,miao);//每調節一次送液晶顯示一次
  136.                          write_Com(0x80+0x40+10);//顯示輸入地址
  137.                          write_add(1,miao);//調節完畢數據立即保存
  138.                         }
  139.                        
  140.                         if(s1num==2)//按下每分減1
  141.                         {
  142.                          fen--;
  143.                          if(fen==-1)
  144.                                 fen=59;
  145.                          write_sfm(7,fen);//每調節一次送液晶顯示一次
  146.                          write_Com(0x80+0x40+7);//顯示輸入地址
  147.                          write_add(2,fen);//調節完畢數據立即保存
  148.                         }
  149.                        
  150.                         if(s1num==3)//按下每時減1
  151.                         {
  152.                          shi--;
  153.                          if(shi==-1)
  154.                                 shi=23;
  155.                          write_sfm(4,shi);//每調節一次送液晶顯示一次
  156.                          write_Com(0x80+0x40+4);//顯示輸入地址
  157.                          write_add(3,shi);//調節完畢數據立即保存
  158.       }
  159.      }
  160.     }
  161.   }
  162. }

  163. void main()  
  164. {
  165.         P0=0X00;
  166.         dula=0;
  167.         wela=0;
  168.         init();
  169.         lcdinit();
  170.         InitTimer0();
  171.         miao=read_add(1);
  172.         fen=read_add(2);
  173.         shi=read_add(3);
  174.        
  175.         LCD_Write_String(1,2,"2017-6-17-MON");
  176.         LCD_Write_String(0,5,"16-26-00");
  177.         while(1)
  178.         {
  179.                 keyscan();               
  180.    }
  181.   }

  182. void timer0() interrupt 1   
  183. {
  184.         TH0=(65536-50000)/256;
  185.         TL0=(65536-50000)%256;
  186.         count++;
  187.         if(count==20)
  188.         {
  189.   count=0;
  190.                
  191.   miao++;
  192.   if(miao==60)
  193.   {
  194.    miao=0;
  195.                
  196.    fen++;
  197.    if(fen==60)
  198. ……………………

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

所有資料51hei提供下載:
1602 24c02 定時器時間.zip (57.67 KB, 下載次數: 46)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:135253 發表于 2017-6-19 08:45 | 只看該作者
24C02沒有看到,圖文程序似乎不太一致!
回復

使用道具 舉報

板凳
ID:836287 發表于 2020-10-29 19:01 | 只看該作者
加了24c02.h,燒寫程序的時候燒不進去怎么回事?
回復

使用道具 舉報

地板
ID:728202 發表于 2020-10-31 10:46 | 只看該作者
沒有AT24C02啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区视频在线 | gav成人免费播放视频 | 黄色激情毛片 | 成人毛片网站 | 亚洲国产福利视频 | 日韩欧美在线视频一区 | 美女久久 | 久久av一区二区三区 | 99r在线 | 欧美综合在线观看 | 国产精品a久久久久 | 亚洲福利 | jlzzjlzz国产精品久久 | 欧美成人第一页 | 国产日韩精品视频 | 免费观看日韩精品 | 99精品免费久久久久久日本 | 一级黄色毛片免费 | 在线免费观看亚洲 | 国产免费一区二区三区最新6 | 日韩一区二区免费视频 | 91久久爽久久爽爽久久片 | 成人在线播放 | 国产精品久久久久久 | 成人影院在线观看 | 久久久91 | 日韩欧美网 | 日本不卡一区 | 欧美日日| 国产精品美女久久久久久久久久久 | 亚洲永久免费观看 | 天天干天天玩天天操 | 国产91在线播放 | 亚洲日本三级 | 久久久精品一区二区 | 日本超碰 | 国产福利在线看 | 羞羞免费网站 | 啪啪免费网 | 成人影院一区二区三区 | 天天综合国产 |