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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管頻率計proteus仿真和源程序及ppt教程等

[復制鏈接]
跳轉到指定樓層
樓主



頻率計的ppt教程:


頻率計的ppt 仿真 程序等所有資料下載:
6位數顯頻率計數器.rar (248.34 KB, 下載次數: 60)


一、MCS-51單片機定時器/計數器組成:
定時器/計數器0(T0):16位的加計數器
定時器/計數器1(T1):16位的加計數器
二、定時器/計數器的功能
對外部輸入信號的計數功能。定時器/計數器0(T0)的外來脈沖輸入端為P3.4;定時器/計數器1(T1)的外來脈沖輸入端為P3.5。
定時功能。定時器/計數器的定時功能也是通過計數實現的,它的計數脈沖是由單片機的片內振蕩器輸出經12分頻后產生的信號,即為對機器周期計數。


在計數工作方式下,計數器的計數值范圍是:
          1~8192(2的13方)

當為定時工作方式時,定時時間的計算公式為:
         ( 8192 -計數初值)×晶振周期×12
或     ( 8192 -計數初值)×機器周期
其時間單位與晶振周期或機器周期相同。

如果單片機的晶振選為6.000MHz,則最小定時時間為:
     [8192—(8192—1)]×1/6×10-6×12=2×10-6(s)=2(us)
最長定時時間為:
     (8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us)。


在工作方式1下,計數器的計數值范圍是:
          1~65536(2的16方)

當為定時工作方式1時,定時時間的計算公式為:
         (65536—計數初值)× 晶振周期×12
或     (65536—計數初值)× 機器周期
其時間單位與晶振周期或機器周期相同。

如果單片機的晶振選為6.000MHz,則最小定時時間為:
      [65536—(65536—1)]×1/6×10-6×12=2×10-6(s)=2(us)
最長定時時間為:
      (65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)


方式2與方式0、1的區別:
    工作方式0和工作方式1的最大特點就是計數溢出后,計數器為全0,因而循環定時或循環計數應用時就存在反復設置初值的問題,這給程序設計帶來許多不便,同時也會影響計時精度。
    工作方式2就具有自動重裝載功能,即自動加載計數初值,所以也有的文獻稱之為自動重加載工作方式。在這種工作方式中,16位計數器分為兩部分,即以TL0為計數器,以TH0作為預置寄存器,初始化時把計數初值分別加載至TL0和TH0中,當計數溢出時,不再象方式0和方式1那樣需要“人工干預”,由軟件重新賦值,而是由預置寄存器TH以硬件方法自動給計數器TL0重新加載。
      方式2在串口通訊時,常用作波特率發生器。


2.怎樣編制計數程序?

  首先必須對定時計數器進行初始化,然后再開啟定時或計數。簡單的總結一下,定時計數器的初始化包括以下內容。

(1)確定工作方式——對TMOD賦值;
如:任務中的MOV        TMOD,#06H指令,設定T0為計數器工作方式。
(2)預置定時計數器中計數的初值——直接寫入TH和TL;
如:任務中的MOV   TH0,#00H  兩條指令,設定計數初值。
            MOV          TL0,#00H

(3)根據需要開放定時器/計數器的中斷——對IE位賦值;
(4)啟動定時器/計數器;
如:任務中的SETB  TR0  指令
初值的計算方法
X=M-計數值
M是定時器的最大計數值。視工作方式不同而不同。

工作方式0: 13位定時/計數方式,因此,最多可以計到2的13次方,也就是8192次。

工作方式1: 16位定時/計數方式,因此,最多可以計到2的16次方,也就是65536次。

工作方式2和工作方式3:都是8位的定時/計數方式,因此,最多可以計到2的8次方,也說是256次。

預置值計算:  用最大計數量減去需要的計數次數即可。
通過上面的任務,我們掌握了計數程序的編制方法,下面我們再看看定時程序怎樣編制。
首先我們看一下下面的程序段。
           MOV     TMOD,#01H
        MOV           TL0,#00H  
        MOV     TH0,#4CH  
           SETB          TR0      
以上程序是任務一中的定時程序段,它的初始化過程和計數方式類似。


實例二:利用方式1定時
題目:用定時器T1,使用工作方式1,在單片機的P1.0輸出一個周期為2分鐘、占空比為1:1的方波信號。
解:周期為2分鐘,占空比為1:1的方波信號,只需要利用T1產生定時,每隔1分將P1.0取反即可。
由于定時器定時時間有限,設定T1的定時為50ms,軟件計數1200次,可以實現1分鐘定時。
編程步驟:
1、計算TMOD的值
       由于:GATE=0;M1、M0=0、1;C/T=0;
       所以:(TMOD)=10H
2、計算初值(單片機的振蕩頻率為12MHZ)
 所需要的機器周期數:
                   n=(50000us/1us)=50000
  計數器的初始值:X=65536-50000=15536
            所以:(TH0)=3CH;(TL0)=0B0H


頻率計工作原理:
實現的方法:利用T0計數器對從T0輸入的脈沖進行計數,利用T1工作于定時。每定時達到1秒鐘,取出計數器的值進行顯示。由于每秒鐘按鍵的按下次數不超過255次,所以只需要顯示TL0的內容即可。
步驟:
由于定時器的最大定時時間不能夠達到1秒鐘,我們設定T1定時100mS,每10次取一次計數值。
設定TMOD,TH1,TL1的內容,(fosc)=6MHz
      所以:(TMOD)=51H
                  (TH1)=3CH
                  (TL1)=0B0H

本章要求:
了解中斷源、中斷的功能、中斷系統的組成與功能、中斷優先權管理、中斷響應條件、中斷響應過程、中斷嵌套等基本概念;
掌握MCS-51單片機的5個中斷源;掌握外部中斷的觸發方式,與的觸發方式有邊沿方式與電平方式兩種;
掌握定時器/計數器的計數脈沖來源,計數脈沖來自內部振蕩頻率的12分頻后的脈沖則稱為定時器方式,計數脈沖來自外部引腳則稱為計數器方式;
掌握中斷請求標志的清除方式,邊沿方式下的與、T0、T1的中斷請求標志是自動被清除的,而串行口的中斷是用戶通過軟件清除的,電平觸發的與還需要硬件的支持才能被清除;
掌握T0與T1的工作方式,以及各種方式的應用;
掌握TCON、SCON、IE、IP、TMOD等特殊功能寄存器的功能與應用;
掌握MCS-51單片機對各中斷源的響應條件與過程。


源程序:
  1. #include <AT89X52.H>
  2. unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  3. unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
  4.                                0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
  5. unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};
  6. unsigned char temp[8];
  7. unsigned char dispcount;
  8. unsigned char T0count;
  9. unsigned char timecount;
  10. bit flag;
  11. unsigned long x;
  12.   
  13. void main(void)
  14. {
  15.   unsigned char i;
  16.   
  17.   TMOD=0x15;
  18.   TH0=0;
  19.   TL0=0;
  20.   TH1=(65536-5000)/256;
  21.   TL1=(65536-5000)%256;
  22.   TR1=1;
  23.   TR0=1;
  24.   ET0=1;
  25.   ET1=1;
  26.   EA=1;
  27.   
  28.   while(1)
  29.    {
  30.      if(flag==1)
  31.        {
  32.          flag=0;
  33.          x=T0count*65536+TH0*256+TL0;
  34.          for(i=0;i<8;i++)
  35.            {
  36.              temp[i]=0;
  37.            }
  38.          i=0;
  39.          while(x/10)
  40.            {
  41.              temp[i]=x%10;
  42.              x=x/10;
  43.              i++;
  44.            }
  45.          temp[i]=x;
  46.          for(i=0;i<6;i++)
  47.            {
  48.              dispbuf[i]=temp[i];
  49.            }
  50.          timecount=0;
  51.          T0count=0;
  52.          TH0=0;
  53.          TL0=0;
  54.          TR0=1;
  55.        }
  56.    }
  57. }
  58.   
  59. void t0(void) interrupt 1 using 0
  60. {
  61.   T0count++;
  62. }
  63.   
  64. void t1(void) interrupt 3 using 0
  65. {
  66.   TH1=(65536-5000)/256;
  67.   TL1=(65536-5000)%256;
  68.   timecount++;
  69.   if(timecount==200)
  70.     {
  71.       TR0=0;
  72.       timecount=0;
  73.       flag=1;
  74.     }
  75.   P2=0xff;
  76.   P0=dispcode[dispbuf[dispcount]];
  77.   P2=dispbit[dispcount];
  78.   dispcount++;
  79.   if(dispcount==8)
  80.     {
  81.       dispcount=0;
  82.     }
  83. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av一二三四 | 妖精视频一区二区三区 | 综合久久综合久久 | 亚洲成人自拍 | 玖玖视频 | 91精品国产综合久久国产大片 | 一区在线播放 | 精品一区二区在线观看 | 九九九视频 | 欧美一区二区久久 | 免费视频99 | 国产精久久久久久久 | 98久久| 天天夜碰日日摸日日澡 | 婷婷国产一区二区三区 | 色视频在线免费观看 | 日本激情视频网 | 成人在线欧美 | a久久| 午夜精品一区二区三区在线视频 | 中文在线视频观看 | 国产激情一区二区三区 | 色欧美片视频在线观看 | 在线观看亚洲精品 | 在线观看国产视频 | 久久av一区| 三级在线免费 | 中文字幕在线播放第一页 | 日韩欧美在线观看 | 久久精品国产一区二区三区不卡 | 91免费在线播放 | 亚洲成人久久久 | 精精国产视频 | 国产精品一区二区久久精品爱微奶 | 成年免费大片黄在线观看一级 | 日操操夜操操 | 国产精品久久久久久 | 亚洲精品99999 | 网址黄 | www网站在线观看 | 免费在线精品视频 |