找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機計時表proteus仿真和源程序

[復(fù)制鏈接]
ID:108102 發(fā)表于 2017-4-8 23:43 | 顯示全部樓層 |閱讀模式
proteus計時表仿真圖+程序,下面是原理圖:
0.png

51單片機源程序:
  1. //簡易計時表,未開始計時時8循環(huán)左移,INT0計時開始,INT1計時停止,精確度為0.1s
  2. //單片機晶振選擇12MHZ
  3. //收獲,定時器計算1us為一個指令周期,可以通過公式直接        求的所需時間
  4. //在數(shù)據(jù)傳輸很容易犯錯誤,因此要注意在草稿紙上演練
  5. //在獲得數(shù)值與運用數(shù)值時,除了必要的數(shù)據(jù)轉(zhuǎn)化,盡量不要處理,直接運用有利于減少錯誤
  6. #include<reg52.h>
  7. unsigned char  M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  8. void System_Init();
  9. unsigned char flag=0;
  10. unsigned int Timer,Time;       
  11. unsigned char Dissbuf[3]={0,0,0};   
  12. void main()
  13. {
  14.   unsigned char i=0;
  15.   System_Init();
  16.   while(1)
  17.   {

  18.   if(flag==0)
  19.   {               
  20.     i=Time/10;
  21.     if(i%3==0)
  22.         {P0=0x00;P2=0xff;P1=0xff;}
  23.         if((i+2)%3==0)
  24.         {P0=0xff;P2=0x00;P1=0xff;}
  25.         if((i+1)%3==0)
  26.         {P0=0xff;P2=0xff;P1=0x00;}
  27.   }
  28.   if(flag==1)
  29.   {
  30.     i=20;
  31.     P0=0xff;
  32.         P2=0xff;
  33.         P1=0xff;
  34.         while(i--);
  35.         i=256;
  36.     P0=Dissbuf[0];
  37.         P2=Dissbuf[1];
  38.         P1=Dissbuf[2];
  39.         while(i--);
  40.   }
  41.   }
  42. }

  43. void System_Init()
  44.     {
  45.        
  46.     TMOD = 0x01;
  47.     TH0 = (65535-50000)/256;
  48.     TL0 = (65535-50000)%256;
  49.     EA = 1;
  50.     ET0 = 1;
  51.     TR0 = 1;
  52.         IT0=1;
  53.         EX0=1;
  54.         IT1=1;
  55.         EX1=1;
  56.         }
  57.         void into() interrupt 0
  58.         {
  59.          flag=1;
  60.          P0=0xff;
  61.          P2=0xff;
  62.          P1=0xff;
  63.          Time=0;
  64.          TR0=1;
  65.         }
  66.         void TIMER0() interrupt 1
  67.         {
  68.      TH0 = (65535-50000)/256;
  69.      TL0 = (65535-50000)%256;
  70.           Timer++;
  71.           if(Timer==2)
  72.           {
  73.           Timer=0;
  74.           Time++;
  75.           if(Time==999)
  76.           {Time=0;}
  77.           Dissbuf[0]=M[Time%10];
  78.           Dissbuf[1]=M[Time%100/10]-0x80;
  79.           Dissbuf[2]=M[Time/100];
  80.           }


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


0.png
單片機計時表仿真工程文件和源碼下載:
計時器.zip (80.91 KB, 下載次數(shù): 13)

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表