欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4049|回復: 1
收起左側

我的基于單片機內部定時器中斷計數器設計,含源碼,仿真原理圖

[復制鏈接]
ID:819243 發表于 2020-9-15 13:22 | 顯示全部樓層 |閱讀模式
電源電路就是單片機的供電電路,一般是3.3V或者5V,具體多少要參考各種型號的單片機的工作電壓,通常情況下是5V,這里是指通常情況下。
整體設計思路:
單片機中斷初始化程序應完成du如下工作:
1、對TMOD賦值,以確定T0和T1的工作方式。
2、計算初值,并將其寫入TH0、TL0或TH1、TL1。
3、中斷方式時,則對IE賦值,開放中斷。
4、使TR0或TR1置位,啟動定時/計數器定時或計數。
整體設計思路
單片機的中斷為向量中斷,即一響應中斷就轉入固定入口地址執行中斷服務程序。各中斷源服務程序的入口地址

兩個中斷入口間只相隔8字節,難以安放一個完整的中斷服務程序。因此,通常在中斷入口地址處放置一條無條件轉移指令,使程序執行轉向中斷服務程序入口。
定時器中斷是由單片機中的定時器溢出而申請的中斷。51單片機中有兩個定時器T0和T1

有電路仿真原理圖(10分);圖中元件參數標注詳細正確(10分);有操作過程說明(10分);有工作原理的文字描述(5分);對電路原理的描述全面(5分)。
1.電路仿真原理圖:
OIZT1LJ8[5{3{FL{]$PSW[7.png

電路原理描述:
共陽型數碼管字模:
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F }; //{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e};
//0,1,2,3,4,5,6,7,8,9
中斷裝置和中斷處理程序統稱為中斷系統。
中斷系統是計算機的重要組成部分。實時控制、故障自動處理、計算機與外圍設備間的數據傳送往往采用中斷系統。中斷系統的應用大大提高了計算機效率。
3.工作原理:
定時器/計數器初始化的一般步驟 51 單片機內部定時器/計數器是可編程序的,通過程序設置寄存器對它進行設定和控制,因此需要進行初始化操作。
(1)確定定時器/計數器的工作方式:   
   通過對 TMOD 中的方式選擇位 M1 和 M0 賦值實現。
(2)預置定時或計數初值:  
根據定時時間或計數次數,將計算的定時或計數初值寫入 TH0、TL0 或 TH1、TL1。如預置 T0 初值指令。
(3)開放定時器/計數器的中斷,設定中斷優先級:
通過給 IE 寄存器中的相關位賦值來實現。
(4)啟動定時器/計數器:      
通過給 TCON 中的 TR1 或 TR0 置 1 實現。
5電路原理:
定時器/計數器的為自動恢復初值(初值自動裝入)的 8 位定時器/計 數器。TLx(x = 0,1)作為常數緩沖器,當 TLx 計數溢出時,在溢出標志 TFx 置 “1”的同時,還自動將 THx 中的初值送至 TLx,使 TLx 從初值開始重新計數。 定時器/計數器的方式 2 工作過程如下圖所示。該方式可省去用戶軟件中重裝初
值的指令執行時間,簡化定時初值的計算方法,可以相當精確地確定定時時間。

單片機源程序如下:
  1. #include <at89x51.h>
  2. #define LEDCHAR P1                        //LED 字符I/O 口,P1.0~7對應A~DP
  3. #define LEDSELECT P0                //LED 選擇I/O口.   P0.0~5對應LED的1~6

  4. unsigned  char code uca_LEDCode[]=
  5.                         {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  6.                                         //0,1,2,3,4,5,6,7,8,9


  7. unsigned char code uca_LEDSelect[]={0x01,0x02,0x04,0x08,0x10,0x20};        
  8.                                         //分別點亮第6,5,4,3,2,1號燈.

  9. unsigned char uca_LedNum[6];                        
  10.                                         //存放數字的各個位

  11. //*                        函數實現

  12. unsigned char * pucLedNum(unsigned long ulNumber)
  13. {
  14.         if(ulNumber>999999)
  15.                 ulNumber=999999;
  16.         if(ulNumber<0)
  17.                 ulNumber=0;
  18.         uca_LedNum[0] = ulNumber/100000;                                                                   //最高位

  19.         uca_LedNum[1] = (ulNumber-100000*(long)uca_LedNum[0])/10000;

  20.         uca_LedNum[2] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1])/1000;

  21.         uca_LedNum[3] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  22.                                         -1000*(long)uca_LedNum[2])/100;

  23.         uca_LedNum[4] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  24.                                         -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3])/10;

  25.         uca_LedNum[5] = (ulNumber-100000*(long)uca_LedNum[0]-10000*(long)uca_LedNum[1]
  26.                                         -1000*(long)uca_LedNum[2]-100*(long)uca_LedNum[3]-10*(long)uca_LedNum[4]);

  27.         return uca_LedNum;
  28. }



  29. void vShowOneNum(unsigned char ucOneNum,unsigned char ucOrder)
  30. {
  31.         LEDSELECT=0;
  32.         LEDCHAR=uca_LEDCode[ucOneNum];
  33.         LEDSELECT=uca_LEDSelect[ucOrder];                 //ucOrder:0~5(代表從左到右1~6)
  34. }
復制代碼

上個月做的設計。附件有單片機源碼,原理圖等。
用AD畫的原理圖,和proteus仿真工程文件以及設計的文檔。

都是自己原創,分享一下。
@3Q0O2U[QFKA3@ZMF158IFL.png
全部資料51hei下載地址:
定時器控制單只數碼管循環顯示0_F.rar (72.48 KB, 下載次數: 25)
基于單片機內部定時器中斷計數器設計.docx (455.46 KB, 下載次數: 23)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:637608 發表于 2022-6-28 09:21 | 顯示全部樓層
NT發的什么吊文件,牛頭不對馬嘴
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表