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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6002|回復: 1
打印 上一主題 下一主題
收起左側(cè)

單片機試驗數(shù)碼管上顯示定時器中斷計數(shù)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:180782 發(fā)表于 2018-5-28 19:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
部分程序,內(nèi)含原理,原理圖,接線圖,源程序,需要修改里面的斷碼。網(wǎng)上有。

單片機定時器的應用

1、單片機定時器的工原理

MCS-51 單片機內(nèi)部有兩個16 位可編程的定時器/計數(shù)器T0 和T1。它們即可用作定時器方式,又可用作計數(shù)器方式。其中T0 由TH0 和TL0 計數(shù)器構(gòu)成;T1 由TH1 和TL1 計數(shù)器構(gòu)成。

工作于定時器方式時,通過對機器周期(新型51單片機可以對振蕩周期計數(shù))的計數(shù),即每一個機器周期定時器加1,來實現(xiàn)定時。故系統(tǒng)晶振頻率直接影響定時時間。如果晶振頻率為12MHZ,則定時器每隔(1/12MHZ)×12=1us 加1。

工作于計數(shù)器方式時,對P3.4 或P3.5 管腳的負跳變(1→0)計數(shù)。它在每個機器周期的S5P2 時采樣外部輸入,當采樣值在這個機器周期為高,在下一個機器周期為低時,計數(shù)器加1。因此需要兩個機器周期來識別一個有效跳變,故最高計數(shù)頻率為晶振頻率的1/24。

特殊功能寄存器TMOD 用于定時器/計數(shù)器的方式控制。高4 位用于設(shè)置T1,低4 位用于設(shè)置T0。如圖1所示。



圖1 定時器模式控制字格式


TCON 寄存器用于定時器的計數(shù)控制和中斷標志。如圖4-8所示。





圖2 定時控制寄存器數(shù)據(jù)格式

編寫程序控制這兩個寄存器就可以控制定時器的運行方式。

2、單片機內(nèi)部定時器/計數(shù)器的使用

(1)根據(jù)需要設(shè)置工作方式,即對TMOD設(shè)置;

(2)定時/計數(shù)初值的設(shè)定;

(3)然后啟動計數(shù),即對TR0或TR1置1。

(5)如需用中斷,則將EA和相關(guān)中斷控制位置1;則計數(shù)溢出后硬件會自動轉(zhuǎn)入中斷入口地址;如使用查詢,則必須對溢出中斷標志位TF0或TF1進行判斷。

1、實驗開發(fā)板連接圖

2、實驗源程序

/*******************************************************************************

*  標題:試驗數(shù)碼管上顯示定時器中斷計數(shù)                       *

*  連接方法:參照接線圖                               *

******************************************************************************/


  1. #include < reg51.h >
  2. #include <intrins.h>

  3. sbit LS138A=P2^2;  //定義 138管腳
  4. sbit LS138B=P2^3;
  5. sbit LS138C=P2^4;



  6. unsigned int LedNumVal,LedOut[8];



  7. // 此表為 LED 的字模  //

  8. unsigned char code Disp_Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,

  9. 0xbf,0xc7,0x8c,0xc1,0xff,0xf7 };



  10. /***********************************************************

  11. purpose: 系統(tǒng)初始化

  12. /**********************************************************/

  13. void system_Ini()

  14. {

  15.      TMOD = 0x00; //選擇模式0  13位計數(shù) 最大計數(shù)8192

  16.     TH0 = (8192 - 1000)/32; // TH0=0x1C;  12.000M  預裝初值

  17. TL0 = (8192 - 1000)%32              ; //TL0=0x18;            

  18.      IE = 0x8A;   //中斷            

  19.      TR0  = 1;    //開啟T0定時器

  20. }



  21. void delay(unsigned int i)

  22. {

  23.     char j;

  24.     for(i; i > 0; i--)

  25.         for(j = 200; j > 0; j--);

  26. }



  27. /********主函數(shù)****/

  28. main()

  29. {

  30.    system_Ini()              ;

  31.    while(1)

  32.    {

  33.     unsigned char i;

  34.      LedOut[0]=Disp_Tab[LedNumVal%10000/1000];

  35.      LedOut[1]=Disp_Tab[LedNumVal%1000/100];

  36.      LedOut[2]=Disp_Tab[LedNumVal%100/10];

  37.      LedOut[3]=Disp_Tab[LedNumVal%10];

  38.                 for( i=0; i<8; i++)

  39.                  { P0 = LedOut[i];

  40.                                          

  41.                 switch(i)                                                                       

  42.                    {                 

  43.                                           case 0:LS138A=0; LS138B=0; LS138C=0; break;        

  44.                       case 1:LS138A=1; LS138B=0; LS138C=0; break;                          

  45.                       case 2:LS138A=0; LS138B=1; LS138C=0; break;

  46.                       case 3:LS138A=1; LS138B=1; LS138C=0; break;

  47.                                           case 4:LS138A=0; LS138B=0; LS138C=1; break;

  48.                                           case 5:LS138A=1; LS138B=0; LS138C=1; break;

  49.                                           case 6:LS138A=0; LS138B=1; LS138C=1; break;

  50.                                           case 7:LS138A=1; LS138B=1; LS138C=1; break;            

  51.                    }

  52.                             delay(150);

  53.               }



  54.   }



  55. }



  56. /*************************************

  57. [ T0 (1ms)中斷] 中斷

  58. *************************************/

  59. void T0zd(void) interrupt 1   //3定時器1的中斷號 ;1定時器0的中斷號,

  60. // 0外部中斷1; 2外部中斷2 ; 4串口中斷

  61. {

  62.               TH0 = (8192 - 1000)/32              ; //TH0 = 0xFc,12.000

  63.               TL0 = (8192 - 1000)%32; //TL0 = 0x18;

  64.               LedNumVal++;

  65. }
復制代碼


思考題:

1、標注程序,畫出流程圖
2、給出定時器定時一秒的計算過程。


完整的Word格式文檔51黑下載地址:

3單片機定時器的應用.docx (192.92 KB, 下載次數(shù): 14)


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

相關(guān)帖子

回復

使用道具 舉報

沙發(fā)
ID:370231 發(fā)表于 2018-7-26 14:52 | 只看該作者
為什么我把程序輸?shù)桨遄由希@示亂碼的,沒有數(shù)字出來的??
是要把哪個短接片拔掉嗎????
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.国产一区| 欧美日韩国产精品一区 | 国产精品久久久久无码av | 国产福利免费视频 | h视频免费观看 | 欧美精品一区二区三区四区 | 在线观看成人免费视频 | 久久亚洲一区二区 | 精品久久精品 | 伊人久久免费 | 久久高清精品 | 天天综合网7799精品 | 日本高清中文字幕 | 二区在线视频 | 在线观看你懂的网站 | 国产视频一视频二 | 国产精品一区二区三区久久 | 日日草夜夜草 | 五月天综合影院 | 国产一级毛片精品完整视频版 | 国产不卡视频在线 | 精品国产一区二区三区久久久蜜月 | 91传媒在线观看 | 日本成人午夜影院 | chinese中国真实乱对白 | 精久久久 | 国产91久久久久久久免费 | 国产精品久久国产精品99 gif | 亚洲精品性视频 | 蜜桃视频一区二区三区 | 精品国产不卡一区二区三区 | 亚洲一区国产精品 | 国产真实乱对白精彩久久小说 | 久久国产美女视频 | 亚洲一区二区三区观看 | 精品无码久久久久久国产 | 天天操天天射天天 | 日韩成人在线观看 | 国产精品中文字幕在线 | 自拍偷拍亚洲欧美 | 欧美区日韩区 |