1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: 我做的簡(jiǎn)易單片機(jī)時(shí)鐘 0-99計(jì)數(shù)的另一做法 含原理圖,代碼與仿真 [打印本頁]

作者: icandoit    時(shí)間: 2017-12-3 19:38
標(biāo)題: 我做的簡(jiǎn)易單片機(jī)時(shí)鐘 0-99計(jì)數(shù)的另一做法 含原理圖,代碼與仿真
第一次發(fā)帖如有不足望指正。這個(gè)是我今天制作的.
原理圖是用proteus仿真軟件做的。存在不足。在定時(shí)器那快,計(jì)時(shí)速度大約快了1倍。所以最后我通過增加循環(huán)的方式大致做到1S計(jì)時(shí)。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

也希望有大佬指出我的問題,幫助我,謝謝。

這是運(yùn)行起來的圖,前兩位是分鐘,后兩位是秒。

0-99計(jì)數(shù)的另一做法單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. sbit key1=P1^5;//開始按鍵
  3. sbit key2=P1^6;
  4. sbit key3=P1^7;
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  8. uchar counter=0,second=0,second_1=0,second_0=0,min=0,min_1=0,min_0=0;  

  9. void delay(uint m)
  10.   {
  11.          uint i,j;
  12.          for(i=0;i<m;i++)
  13.                  for(j=0;j<10;j++);
  14.   }
  15.    void display(void)
  16.   {
  17.         P2=seg[second_1];
  18.         P3=0x02;
  19.         delay(20);
  20.         P3=0x00;
  21.         P2=seg[second_0];
  22.         P3=0x01;
  23.         delay(20);
  24.         P3=0x00;
  25.         P2=seg[min_0];
  26.         P3=0x04;
  27.         delay(20);
  28.         P3=0x00;
  29.         P2=seg[min_1];
  30.         P3=0x08;
  31.         delay(20);
  32.         P3=0x00;
  33.     }
  34. void key(void)
  35.   {
  36.    if(key1==0)//判斷按鍵是否被按下
  37.       delay(10);//按鍵消抖*/
  38.    if(key1==0)//再次判斷是否被下
  39.      {
  40.                 EA=1;
  41.                 TR0=1;
  42.        while(!key1)//等待按鍵釋放
  43.             {        
  44.                     display( );
  45.             }
  46.      }
  47.          if(key2==0)//判斷按鍵是否被按下
  48.       delay(10);//按鍵消抖*/
  49.    if(key2==0)//再次判斷是否被下
  50.      {
  51.            display();
  52.            EA=0;
  53.            if(min==60)min=0;
  54.        while(!key2)//等待按鍵釋放
  55.             {        
  56.                     display( );
  57.             }
  58.      }if(key3==0)//判斷按鍵是否被按下
  59.       delay(10);//按鍵消抖*/
  60.    if(key3==0)//再次判斷是否被下
  61.      {
  62.            second=0;
  63.            min=0;
  64.        while(!key3)//等待按鍵釋放
  65.             {        
  66.                     display( );
  67.             }
  68.      }
  69.          }  
  70.                  

  71.   void main( )
  72.   {
  73.         TMOD=0X01;
  74.         TL0=0X3C;
  75.         TH0=0XB0;
  76.         ET0=1;
  77.         
  78.         while(1)
  79.          {
  80.            key();
  81.            min_0=min%10;
  82.            min_1=min/10;
  83.            second_1=second/10;
  84.            second_0=second%10;
  85.            display( );
  86.      }
  87.    }
  88.    void timer()interrupt 1
  89.    {
  90.         ET0=0;
  91.         TL0=0X3C;
  92.         TH0=0XB0;
  93.         counter++;
  94.         if(counter==40){
  95.         counter=0;
  96. ……………………

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


所有資料51hei提供下載:
簡(jiǎn)易時(shí)鐘.rar (49.02 KB, 下載次數(shù): 14)




作者: icandoit    時(shí)間: 2017-12-5 19:31
發(fā)現(xiàn)問題了,文中
TL0=0X3C;
TH0=0XB0;
錯(cuò)誤了,應(yīng)該是
TL0=0XB0;
TH0=0X3C;
所以97行代碼最后的counter只需要=20




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1