版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目2簡易秒表的制作學習情境3-交通燈控制系統(tǒng)制作項目描述:電子秒表是一種常用的測時儀器,具有顯示直觀、讀取方便、功能多等優(yōu)點,在日常生活中應用的較為廣泛。利用單片機的定時器/計數(shù)器實現(xiàn)分、秒定時,結合按鍵和顯示部件,實現(xiàn)電子秒表的設計。項目要求:4位LED數(shù)碼管顯示秒、分值。從右往左顯示秒值的個位、十位,分值的個位、十位,個位能向十位進位。上電后首先顯示00
00
,表示從00
00
秒開始計時,當時間顯示到59時,4位顯示都清零,從零開始。設計3個獨立式按鍵key1,key2,key3,分別實現(xiàn)啟動、暫停、復位功能。。二、項目分析(1)為方便編程,3個獨立按鍵key1,key2,key3可分別接到外部中斷0、外部中斷1和定時器T0引腳上。(2)采用中斷方式,外部中斷0、外部中斷1設為下降沿觸發(fā),T0作為計數(shù)器,計1次溢出。(3)可選工作方式2,此時TH0、TL0初值均為0xff,T1作為1s定時器使用,為了保證延時的精確性,這里T1亦采用工作方式2,但方式2最大定時時間為0.256ms,為實現(xiàn)1s的定時,可設定時器T1的定時時間為0.25ms,定時器溢出4000次則說明定時滿1s。項目分析任務1LED固定時間點亮在AT89S51單片機的P1口上接有8只LED,如圖1所示。下面采用定時器T0的方式1的定時中斷方式,使P1口外接的8只LED每0.5s閃亮一次。啟下定時/計數(shù)器是單片機系統(tǒng)一個重要的部件,其工作方式靈活、編程簡單、使用方便,可用來實現(xiàn)定時控制、延時、頻率測量、脈寬測量、信號發(fā)生、信號檢測等。此外,定時/計數(shù)器還可作為串行通信中波特率發(fā)生器。在工業(yè)檢測與控制中,許多場合要用到計數(shù)或定時功能。例如,對外部脈沖進行計數(shù)或產(chǎn)生精確的定時時間等。片內兩個可編程的定時器/計數(shù)器T1、T0,可滿足這方面的需要。?定時器(模式)可用于測量事件之間的時間間隔,如脈沖寬度。計數(shù)器(模式)可用于測定某個事件發(fā)生的次數(shù),如脈沖個數(shù)。定時器(模式)還可以給串行端口提供波特率時鐘信號。定時器/計數(shù)器的結構MCS-51單片機有兩個16位定時器/計數(shù)器,分別為T0和T1。T0和T1又分為兩個8位定時器/計數(shù)器,名為TH0/TL0和TH1/TL1,結構如圖所示。MCS-51單片機的定時器/計數(shù)器的本質都是計數(shù)器。
對MCS-51單片機來說,當選擇單片機的機器周期作為計數(shù)對象時,它們是定時器;當對通過T0引腳(P3.4)或T1引腳(P3.5)引入的外部脈沖作為計數(shù)對象時,它們是計數(shù)器。根據(jù)圖,請說明定時/計數(shù)器時鐘源的區(qū)別。定時/計數(shù)功能由軟件控制和切換當T0或T1用做定時器時:其計數(shù)脈沖來源于晶振時鐘輸出信號的12分頻,即每個機器周期使計數(shù)器加1;當T0或T1用做計數(shù)器時:只要T0或T1引腳上有一個從1到0的負跳變,相應的計數(shù)器就加1;單片機只在每個機器周期的S5P2狀態(tài)對T0及T1引腳上的電平進行一次采樣,同時單片機需要用兩個機器周期來識別一次負跳變,所以單片機計數(shù)器的最高計數(shù)頻率為晶振頻率的1/24。定時器/計數(shù)器的工作方式定時器/計數(shù)器共有4種工作方式,由TMOD寄存器中的M1M0決定在4種工作方式中,方式0與方式1基本相同,只是計數(shù)器的計數(shù)位數(shù)不同。方式0為13位計數(shù)器,方式1為16位計數(shù)器。由于方式0是為兼容MCS-48而設,且其計數(shù)初值計算復雜,所以在實際應用中,一般不用方式0,而采用方式1。引導問題5:定時器T0的方式1,應如何設置TMOD寄存器?定時/計數(shù)器的初始化過程初始化步驟:(1)確定工作方式——對TMOD賦值。(2)預置定時或計數(shù)的初值——直接將初值寫入TH0、TL0或TH1、TL1。(3)根據(jù)需要開啟定時/計數(shù)器中斷——直接對IE寄存器賦值。(4)啟動定時/計數(shù)器工作——將TR0或TR1置“1”。引導問題7:如何計算T0計數(shù)初值?設定時時間5ms(即5000μs),設定時器T0的計數(shù)初值為X,假設晶振的頻率為11.0592MHz,則定時時間為:定時時間=(216?X)12/晶振頻率,則5000=(216?X)12/11.0592得:X=60928,轉換成16進制后為:0xee00,其中0xee裝入TH0,0x00裝入TL0。引導問題8如何設置IE寄存器?本任務由于采用定時器T0中斷,因此需將IE寄存器中的EA、ET0位置1。引導問題9如何啟動和停止定時器T0?將定時器控制寄存器TCON中的TR0=1,則啟動定時器T0;TR0=0,則停止定時器T0定時。#include<reg52.h>char
i=100;
/*給變量i賦初值*/void
main(){
TMOD=0x01;
/*設置定時器T0為方式1*/
TH0=0xee;
/*向TH0寫入初值的高8位*/
TL0=0x00;
/*向TL0寫入初值的低8位*/
P1=0x00;
/*P1口8只LED點亮*/
EA=1;
/*總中斷允許*/
ET0=1;
/*定時器T0中斷允許*/
TR0=1;
/*啟動定時器T0*/
while(1);
/*無窮循環(huán),等待定時中斷*/}引導問題10void
T0_int(void)interrupt1{
/*給T0裝入16位初值,計4608個數(shù)后T0溢出*/
TH0=0xee;
TL0=0x00;
i--;/*循環(huán)次數(shù)減1*/
if(i<=0)
{
P1=~P1;
/*P1口按位取反*/
i=100;
/*重新設置循環(huán)次數(shù)*/
}}寫寄存器注意事項假設:
T1正在工作中,處于模式1,現(xiàn)在需要設置T0為模式1。任務2外部計數(shù)輸入信號控制LED的閃爍采用定時器T1的方式1的中斷計數(shù)方式計數(shù)輸入引腳T1(P3.5)上外接開關K1,作為計數(shù)信號輸入。按4次K1后,P1口的8只LED閃爍不停連接如下圖所示。引導問題12任務2中,如何設置TMOD寄存器?引導問題13任務2中,如何計算T1計數(shù)初值?引導問題14任務2中,如何設置IE寄存器?引導問題15任務2中,如何啟動和停止定時器T1?引導問題16在劃橫線部分填寫合適的代碼(123),使程序能完成任務2要求的功能。#include<reg51.h>void
Delay(unsigned
int
i){
unsigned
int
j;
for(;i>0;i--)
for(j=0;j<125;j++)
{;}
}void
main()
{
TMOD=___1___;
/*設置定時器T1為方式1計數(shù)*/
TH0=0xff;
/*向TH0寫入初值的高8位*/
TL0=0xfc;
/*向TL0寫入初值低8位*/
EA=___2__;
/*總中斷允許*/
ET1=1;
/*T1中斷允許*/
TR1=__3___;
/*啟動T1*/
while(1);
/*無窮循環(huán),等待定時中斷*/}/*以下為定時器T1的中斷服務程序*/void
T1_int(void)interrupt3{
for(;;)
{
P1=0xff;
/*8位LED全滅*/
Delay(500);/*延時500ms*/
P1=0;
/*8位LED全亮*/
Delay(500);
}
}任務360S計時器的設計任務要求:(1)設計2個按鍵,key1為啟動鍵,key2為清零鍵,直接清零時,數(shù)碼顯示管上顯示“00”。(2)計時器為60s內遞加計時,計時間隔為1s。(3)計時器遞加到60s時,數(shù)碼管顯示“60”,同時蜂鳴器發(fā)聲,直到key2清零鍵按下蜂鳴器停止發(fā)聲。設晶振頻率為12MHz。引導問題19定時器/計數(shù)器的初始值應如何設置?#include<reg51.h>unsigned
char
duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitkey1=P1^0;sbitkey2=P1^1;sbitbeep=P3^7;bitrun;unsigned
char
count,i;void
delay(unsigned
int
z){
unsigned
int
x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);}void
main(){
P0=0;
P2=0;
key1=1;
key2=1;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
while(1)
{
if(key1==0){
run=1;
count=0;
}else
if(key2==0){
run=0;
count=0;
}
if(run){
TR0=1;
}
else{
TR0=0;
P0=duan[0];
P2=duan[0];
}
if(count==60){
beep=1;//蜂鳴器響
delay(1);//調用1ms延時
beep=0;//蜂鳴器不響
delay(1);//調用1ms延時}
}}void
timer0()interrupt1{
i++;
if(i==20)
{
i=0;
count++;
if(count>=60)
{
count=60;
}
P0=duan[count/10];
P2=duan[count%10];
}
TH0=0x3c;
TL0=0xb0;}任務4簡易秒表的制作任務要求:為方便編程,3個獨立按鍵key1,key2,key3可分別接到外部中斷0、外部中斷1和定時器T0引腳上采用中斷方式:外部中斷0、外部中斷1設為下降沿觸發(fā),T0作為計數(shù)器,計1次溢出,可選工作方式2,此時TH0、TL0初值均為0xff,T1作為1s定時器使用為了保證延時的精確性,這里T1亦采用工作方式2,但方式2最大定時時間為0.256ms,為實現(xiàn)1s的定時,可設定時器T1的定時時間為0.25ms,定時器溢出4000次則說明定時滿1s。#include<reg51.h>unsigned
char
duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned
char
wei[]={0xfe,0xfd,0xfb,0xf7};unsigned
char
time[4];sbitkey1=P3^2;sbitkey2=P3^3;sbitkey3=P3^4;unsigned
int
i;unsigned
char
miao,fen,j;void
delay(unsigned
int
z){
unsigned
int
x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);}void
main(){
key1=1;
key2=1;
key3=1;
TMOD=___1___;
TH1=0x06;
TL1=0x06;
TH0=0xff;
TL0=0xff;
IE=0x8f;
IT0=1;
IT1=1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋買賣合同詳細信息
- 個人借款還款合同格式
- 乳膠漆銷售購銷合同
- 提升衛(wèi)生質量承諾保證書
- 監(jiān)理招標文件版速遞
- 精裝房買賣合同模板
- 招標文件中的超值采購項目
- 農(nóng)產(chǎn)品批量購銷合同
- 招標文件中的重要采購項目
- 酒會活動承包合同
- 井岡山斗爭與井岡山精神課件
- esprit教程-車銑復合中心手冊
- 員工考勤表(模板)
- 中國文化符號
- 蘇平師生葫蘆絲專場晚會主持詞
- 個案SOAP表-催眠案例記錄表
- 萬用表校準報告
- 物聯(lián)網(wǎng)項目實施進度計劃表
- Unit 4 Lesson 1 Avatars 教案 高中英語新北師大版必修第二冊(2022-2023學年)
- 日積月累 詳細版課件
- 實驗2溶液中金、銀銅的提取及鑒定
評論
0/150
提交評論