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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數字鐘仿真

[復制鏈接]
跳轉到指定樓層
樓主
數字鐘仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h> //包含51單片機的頭文件
  2. unsigned char code teble[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//包含數碼位碼
  3. unsigned char code table[10]={0Xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0Xf8,0X80,0X90};//數碼管斷碼
  4. unsigned char shijian[6]={0,0,0,0,0,0};//時間顯示
  5. unsigned char shijian2[6]={0,0,0,0,0,0};//星期顯示
  6. unsigned char nyr[6]={0,0,0,0,0,0};        //年月日顯示
  7. unsigned char nyr1[6]={0,0,0,0,0,0};
  8. void zh();        //狀態函數
  9. void display();        //顯示函數
  10. void week();//星期顯示
  11. void miaobiao();//秒表顯示
  12. unsigned char keysc();//按鍵模塊
  13. void mDelay(unsigned int Delay); //延遲函數
  14. unsigned char  hour,sec,minute;//定義小時,分鐘,秒
  15. unsigned char  day=22,month=05,year=18;        //定義day month ,year
  16. unsigned char  i,w,year1,j,se,fe,mi;        //定義i,w,year1,j,se,fe,mi.
  17. sbit k1=P1^4;//按鍵k1=P1.0;
  18. sbit k2=P1^1;//按鍵k1=P1.1;
  19. sbit k3=P1^2; //按鍵k1=P1.21;
  20. sbit k4=P1^3;//按鍵k1=P1.3;

  21. unsigned char  display_state=0;

  22.                                                
  23. unsigned char keysc()  //按鍵模塊
  24. {if(!k1)                  //判斷按鍵按下
  25.   {mDelay(5);          //延時消抖
  26.    if(!k1)              
  27.    while(!k1) display(); //判斷按鍵是否按下返回,因為按下時k1=0即!k1=1,display是消閃爍,一起來控制按下按鍵為一次的變量
  28.    return 1;        
  29.    }
  30. if(!k2)                 //判斷按鍵按下
  31.   {mDelay(5);                  //延時消抖
  32.    if(!k2)
  33.    while(!k2) display();   //判斷按鍵是否按下返回,因為按下時k1=0即!k1=1,display是消閃爍,一起來控制按下按鍵為一次的變量
  34.    return 2;         
  35.    }
  36. if(!k3)
  37.   {mDelay(5);
  38.    if(!k3)
  39.    while(!k3) display();  //同上所示
  40.    return 3;          
  41.    }
  42. if(!k4)
  43.   {mDelay(5);
  44.   if(!k4)
  45.    while(!k4) display();  //如上所示
  46.   return 4;          
  47.   }
  48. return 0;
  49. }

  50. void display()        //顯示模塊
  51. {unsigned char k; //定義k
  52. unsigned char y; //定義y
  53.   unsigned char data1; //定義data1
  54.    if(display_state==0)
  55.    {
  56. for(k=0;k<6;k++)          //使得k等于0到6
  57.     {y=0x00;
  58.          if(k==2||k==4) y=0x80;
  59.          P2=0X00;
  60.          data1=shijian[k];
  61.      P0=table[data1]-y;     
  62.          P2=teble[k];
  63.      mDelay(2);
  64.          }
  65.          }
  66.    if(display_state==1)
  67.    {
  68. for(k=0;k<6;k++)
  69.     {y=0x00;
  70.          if(k==2||k==4) y=0x80;
  71.          P2=0X00;
  72.          data1=nyr[k];
  73.      P0=table[data1]-y;     
  74.          P2=teble[k];
  75.      mDelay(2);
  76.          }
  77.           }
  78.         if(display_state==2)
  79.          {for(k=0;k<6;k++)
  80.     {y=0x00;
  81.          if(k==2||k==4) y=0x80;
  82.          P2=0X00;
  83.          data1=nyr1[k];
  84.      P0=table[data1]-y;     
  85.          P2=teble[k];
  86.      mDelay(2);
  87.          }
  88.          }
  89.                  if(display_state==3)
  90.          {for(k=0;k<6;k++)
  91.     {y=0x00;
  92.          if(k==2||k==4) y=0x80;
  93.          P2=0X00;
  94.          data1=shijian2[k];
  95.      P0=table[data1]-y;     
  96.          P2=teble[k];
  97.      mDelay(2);
  98.          }
  99.          }
  100.          }

  101. void mDelay(unsigned int Delay)
  102. {unsigned int k;
  103.   for(;Delay>0;Delay--)
  104.    {for(k=0;k<54;k++);
  105.    }
  106. }

  107. void t0() interrupt 1  //外部中斷0
  108. {
  109. TH0=55536/256;
  110. TL0=55536%256;
  111. i++;
  112. }

  113. void t1()   interrupt 3        //定時器中斷1
  114. {TH0=55536/256;
  115. TL0=55536%256;
  116. j++;

  117. }

  118. void zh()        //轉換模塊
  119. {
  120. if(i==100)
  121. { i=0;sec++;
  122.    if(sec==60)      {sec=0;minute++;}
  123.    if(minute==60)   {minute=0;hour++;}
  124.    if(hour==24)     {hour=0;day++;}

  125.    if(day==31)      {day=0;month++;}
  126.    if(month==12)   {month=0;year++;}
  127.    if(year==99)     {year=0;}

  128.    
  129.   

  130.   if(month==1||month==5||month==7||month==8||month==10||month==12)
  131.     if(day==31){day=0;month++;}
  132.   if(month==3||month==4||month==6||month==9||month==11)
  133.     if(day==30){day=0;month++;}
  134.   if(month==12){month=0;year++;}
  135.   if(year/4==0)if(month==2)if(day==29)
  136.   {day=0;month++;}
  137.   else if(month==2)if(day==28)
  138.   {day=0;month++;}
  139.   

  140.        
  141. }
  142. if(display_state==0)

  143. shijian[0]=sec%10;
  144. shijian[1]=sec/10;
  145. shijian[2]=minute%10;
  146. shijian[3]=minute/10;
  147. shijian[4]=hour%10;
  148. shijian[5]=hour/10;

  149. if(display_state==1)
  150. nyr[0]=day%10;
  151. nyr[1]=day/10;
  152. nyr[2]=month%10;
  153. nyr[3]=month/10;
  154. nyr[4]=year%10;
  155. nyr[5]=year/10;
  156. if(display_state==3)
  157. shijian2[0]=j%10;
  158. shijian2[1]=j/10;
  159. shijian2[2]=se%10;
  160. shijian2[3]=se/10;
  161. shijian2[4]=fe%10;
  162. shijian2[5]=fe/10;

  163. }
  164. void week()          //星期顯示模塊
  165. {if(month==1||month==2)
  166.    {month+=12;
  167.    year--;
  168.    }
  169.    year1=year+2000;
  170.     if(month==1||month==2)  {month+=12; year1--;}
  171.    w=(day+2*month+3*(month+1)/5+year1+year1/4-year1/100+year1/400)%7;
  172.   nyr1[0]=w+2;
  173. }       
  174. void miaobiao()
  175. { if(j==100)
  176.     {se++;j=0;         j=0; }
  177.    if(se==60){ fe++;se=0;

  178. }
  179. shijian2[0]=j%10;
  180. shijian2[1]=j/10;
  181. shijian2[2]=se%10;
  182. shijian2[3]=se/10;
  183. shijian2[4]=fe%10;
  184. shijian2[5]=fe/10;
  185. }


  186. void main()
  187. {
  188.   unsigned char key; //定義key
  189.   unsigned char mun=0;//定義mun
  190.   TMOD=0X01;                 
  191.   TH0=55536/256;
  192.   TL0=55536%256;
  193.   TR0=1;
  194.   EA=1;
  195.   ET0=1;        //采用定時器0的方式0;


  196.   TMOD=0X11;
  197.   TH0=55536/256;
  198.   TL0=55536%256;
  199.   TR1=0;
  200.   EA=1;
  201.   ET1=1;                                      //采用定時器1的方式工作方式1

  202.   while(1)                         //循環
  203.   {       
  204.     week();                        //星期顯示
  205.           zh();                        //狀態庫
  206.     display();           //顯示模塊
  207.         miaobiao();           //秒表顯示
  208.     key=keysc();           //使得key等于按鍵的值
  209.            zh();  //狀態顯示
  210.     display(); //顯示
  211.   switch(key)
  212.   {
  213.   case 1:if(display_state==0)//如果display_state==0等于0
  214.   {TR0=0;mun++;if(mun>3) {mun=0;TR0=1;}}//讓定時器0停止工作如果mun大于3那么定時器從新開始;
  215.    if(display_state==1)               //如果display_state==0等于1那么執行以下代碼
  216.   {TR0=0;mun++;if(mun>3) {mun=0;TR0=1;}} break;       
  217.   case 2:if(display_state==0)          //如果display_state==0等于0
  218.   {
  219.   if(mun==1) {sec++;    if(sec==60)           sec=00;}        //如果mun等于1,秒加加,當秒加到60的時候秒等于0
  220.   if(mun==2) {minute++; if(minute==60) minute=00;}         //如果mun等于1,。分加加,當分加到60的時候分等于0
  221.   if(mun==3) {hour++;   if(hour==24)   hour=00;}         //如果hour等于1,shi加加,當shi加到60的時候秒等于0
  222.   }
  223.   if(display_state==1)
  224.   {
  225.   if(mun==1) {day++; if(day==32)day=00;}
  226.   if(mun==2) {month++; if(month==12) month=00;}
  227.   if(mun==3) {year++;   if(year==99)   year=00;}
  228.   }
  229.   if(display_state==2)        //display_state等于2的時候
  230.   {
  231.   if(mun==1) {w++; if(w==7)day=01;}        //并且mun等于1的時候w++,當w等于
  232.   }
  233.     if(display_state==3)
  234. ……………………

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

所有資料51hei提供下載:
新建文件夾 (2).rar (57.66 KB, 下載次數: 29)



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久aaaa樱花 | 97av视频| 久久精品国产一区二区三区 | 亚洲不卡视频 | 欧美激情欧美激情在线五月 | 日韩久久久久久久久久久 | av在线播放国产 | 天堂在线91| 久久久久久免费毛片精品 | 国产精品亚洲一区二区三区在线 | 亚洲精品一二三区 | 在线亚洲欧美 | 国产精品视频免费看 | 国产色黄 | 亚洲一区欧美一区 | 黄色大片网 | 国产区免费视频 | 国产美女视频 | 极情综合网 | 亚洲91视频| 在线中文av| 午夜成人免费视频 | 中文字幕国产 | 亚洲国产精品一区 | 亚洲视频在线看 | 亚洲一区影院 | 日韩电影一区 | 91视频在线| 中文字幕亚洲国产 | 亚洲免费福利视频 | 91九色网站| 欧美一级淫片007 | 国产成人一区二区 | 综合网在线 | 日韩一区在线播放 | wwww.xxxx免费| 在线免费黄色小视频 | 国产精品久久久久久久久久久久冷 | 精品免费在线 | 成年人免费看 | 妞干网视频 |