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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)數(shù)字鐘仿真

[復(fù)制鏈接]
ID:363373 發(fā)表于 2018-7-2 17:50 | 顯示全部樓層 |閱讀模式
數(shù)字鐘仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機(jī)源程序如下:
  1. #include<reg51.h> //包含51單片機(jī)的頭文件
  2. unsigned char code teble[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//包含數(shù)碼位碼
  3. unsigned char code table[10]={0Xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0Xf8,0X80,0X90};//數(shù)碼管斷碼
  4. unsigned char shijian[6]={0,0,0,0,0,0};//時(shí)間顯示
  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();        //狀態(tài)函數(shù)
  9. void display();        //顯示函數(shù)
  10. void week();//星期顯示
  11. void miaobiao();//秒表顯示
  12. unsigned char keysc();//按鍵模塊
  13. void mDelay(unsigned int Delay); //延遲函數(shù)
  14. unsigned char  hour,sec,minute;//定義小時(shí),分鐘,秒
  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);          //延時(shí)消抖
  26.    if(!k1)              
  27.    while(!k1) display(); //判斷按鍵是否按下返回,因?yàn)榘聪聲r(shí)k1=0即!k1=1,display是消閃爍,一起來(lái)控制按下按鍵為一次的變量
  28.    return 1;        
  29.    }
  30. if(!k2)                 //判斷按鍵按下
  31.   {mDelay(5);                  //延時(shí)消抖
  32.    if(!k2)
  33.    while(!k2) display();   //判斷按鍵是否按下返回,因?yàn)榘聪聲r(shí)k1=0即!k1=1,display是消閃爍,一起來(lái)控制按下按鍵為一次的變量
  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        //定時(shí)器中斷1
  114. {TH0=55536/256;
  115. TL0=55536%256;
  116. j++;

  117. }

  118. void zh()        //轉(zhuǎn)換模塊
  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;        //采用定時(shí)器0的方式0;


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

  202.   while(1)                         //循環(huán)
  203.   {       
  204.     week();                        //星期顯示
  205.           zh();                        //狀態(tài)庫(kù)
  206.     display();           //顯示模塊
  207.         miaobiao();           //秒表顯示
  208.     key=keysc();           //使得key等于按鍵的值
  209.            zh();  //狀態(tài)顯示
  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;}}//讓定時(shí)器0停止工作如果mun大于3那么定時(shí)器從新開(kāi)始;
  215.    if(display_state==1)               //如果display_state==0等于1那么執(zhí)行以下代碼
  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,秒加加,當(dāng)秒加到60的時(shí)候秒等于0
  220.   if(mun==2) {minute++; if(minute==60) minute=00;}         //如果mun等于1,。分加加,當(dāng)分加到60的時(shí)候分等于0
  221.   if(mun==3) {hour++;   if(hour==24)   hour=00;}         //如果hour等于1,shi加加,當(dāng)shi加到60的時(shí)候秒等于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的時(shí)候
  230.   {
  231.   if(mun==1) {w++; if(w==7)day=01;}        //并且mun等于1的時(shí)候w++,當(dāng)w等于
  232.   }
  233.     if(display_state==3)
  234. ……………………

  235. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清一区二区三区 | 超碰网址| 日韩欧美成人精品 | 羞羞视频网页 | 国产女人与拘做受视频 | 91手机精品视频 | 亚洲综合一区二区三区 | 欧美日韩在线观看一区 | 亚洲天天干 | 黄色一级片在线播放 | 成人免费视频在线观看 | 亚洲欧美日韩精品久久亚洲区 | 久久久91精品国产一区二区三区 | 午夜影院在线视频 | 亚洲成人精品 | 亚洲欧美一区在线 | www.99热.com| 亚洲www| 福利精品| 一区二区三区亚洲 | 天天夜夜操 | 国产精品国产成人国产三级 | 国产欧美一区二区久久性色99 | 欧美区在线 | 天天天天天天天干 | 中文字幕亚洲一区二区三区 | 人人干在线视频 | 亚洲成人一区二区 | 视频一区二区三区中文字幕 | 欧洲成人午夜免费大片 | www97影院 | 亚洲永久| 国产精品视频在线播放 | 久久精品国产亚洲一区二区三区 | 欧美成人精品一区二区三区 | 午夜视频网 | 国产伦一区二区三区 | 久艹网站 | 欧美激情a∨在线视频播放 成人免费共享视频 | 激情一区二区三区 | 56pao在线 |