




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目4電子鐘的實(shí)現(xiàn)——項(xiàng)目任務(wù)介紹和硬件設(shè)計(jì)項(xiàng)目介紹項(xiàng)目:電子鐘的實(shí)現(xiàn)
任務(wù)1:電子秒表的實(shí)現(xiàn)
任務(wù)2:簡(jiǎn)易電子鐘
任務(wù)3:帶鬧鐘、調(diào)時(shí)功能
的電子鐘電子鐘項(xiàng)目:綜合應(yīng)用了顯示、按鍵、蜂鳴器、定時(shí)器、中斷等模塊。項(xiàng)目介紹單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器模塊的使用數(shù)碼管的動(dòng)態(tài)顯示綜合性程序的編寫和調(diào)試任務(wù)1電子秒表的實(shí)現(xiàn)任務(wù)2簡(jiǎn)易電子鐘任務(wù)3帶鬧鐘、調(diào)時(shí)功能的電子鐘項(xiàng)目整體設(shè)計(jì)單片機(jī)模塊數(shù)碼管模塊按鍵模塊蜂鳴器模塊任務(wù)4.1電子秒表的實(shí)現(xiàn)電子秒表的實(shí)現(xiàn)任務(wù)介紹
秒表的走時(shí)范圍是0-59秒;
在兩位數(shù)碼管上顯示走時(shí)效果;
P3.2引腳上的按鍵控制秒表狀態(tài):程序運(yùn)行時(shí),秒表開始走時(shí);按鍵按下一次,秒表停止走時(shí);按鍵按下兩次,秒表清零。按鍵按下三次,恢復(fù)走時(shí)。①②③電子秒表整體設(shè)計(jì)單片機(jī)模塊2位數(shù)碼管模塊按鍵模塊任務(wù)硬件設(shè)計(jì)圖電子秒表硬件電路圖序號(hào)名稱Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED數(shù)碼管7seg-com-anode
23排阻RX847024按鍵button1任務(wù)4.1
電子秒表的實(shí)現(xiàn)——定時(shí)器/計(jì)數(shù)器模塊的使用1任務(wù)軟件設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)介紹秒表的走時(shí)范圍是0-59秒;在兩位數(shù)碼管上顯示走時(shí)效果;P3.2引腳上的按鍵控制秒表狀態(tài):程序運(yùn)行時(shí),秒表開始走時(shí);按鍵按下一次,秒表停止走時(shí);按鍵按下兩次,秒表清零。1s鐘精確定時(shí)秒的走時(shí)數(shù)碼管的顯示按鍵的識(shí)別和處理任務(wù)軟件設(shè)計(jì)voidmain()
//主函數(shù){while(1)//無(wú)限循環(huán)
{ LED=0;
//點(diǎn)亮LED
delay_ms(1000); //軟件延時(shí) LED=1;
//熄滅LED
delay_ms(10000); //軟件延時(shí)
}}實(shí)現(xiàn)電子秒表首先要解決的問(wèn)題:實(shí)現(xiàn)1s的精確定時(shí)。voiddelay_ms(unsignedintms){unsignedinti; do{ i=MAIN_Fosc/13000; while(--i) ;//14Tperloop}while(--ms);}1.定時(shí)過(guò)程中不能做其他事情2.定時(shí)精確度不高電子鐘的定時(shí)100%軟件定時(shí)特點(diǎn):無(wú)需硬件電路,但定時(shí)期間CPU被占用,增加了CPU的開銷,因此定時(shí)時(shí)間不宜過(guò)長(zhǎng),而且定時(shí)期間如果發(fā)生中斷,定時(shí)時(shí)間就會(huì)出現(xiàn)誤差。硬件定時(shí)特點(diǎn):不占CPU資源,但定時(shí)時(shí)間的調(diào)節(jié)不夠靈活方便且增加了硬件成本??删幊潭〞r(shí)器定時(shí)特點(diǎn):不影響CPU的效率,且定時(shí)時(shí)間精確1秒鐘的精確定時(shí)單片機(jī)應(yīng)用系統(tǒng)中常見的定時(shí)方式123定時(shí)器實(shí)現(xiàn)1ms定時(shí)STC15系列單片機(jī)內(nèi)部有5個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器T0、T1、T2、T3和T4示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。使用單片機(jī)的定時(shí)器/計(jì)數(shù)器模塊實(shí)現(xiàn)定時(shí)功能定時(shí)計(jì)數(shù)定時(shí)器/計(jì)數(shù)器T0模塊及其內(nèi)部結(jié)構(gòu)
單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器模塊通過(guò)設(shè)置工作方式寄存器TMOD、控制寄存器TCON和輔助寄存器AUXR來(lái)控制定時(shí)器的工作。定時(shí)器T1TH1(8DH)TL1(8BH)高8位低8位計(jì)數(shù)器外部輸入端T1(P3.5)定時(shí)器T0TH0(8CH)TL0(8AH)高8位低8位計(jì)數(shù)器外部輸入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定時(shí)器內(nèi)部時(shí)鐘定時(shí)器內(nèi)部時(shí)鐘TF1TR1TF0TR0TCON(控制寄存器)外部中斷相關(guān)位T0x12T1x12AUXR(輔助寄存器)工作原理K1K2T0加1計(jì)數(shù)器可選擇16或8位溢出信號(hào)TF0=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值定時(shí)器/計(jì)數(shù)器T0模塊工作流程初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作設(shè)定分頻系數(shù)工作方式設(shè)置定時(shí)器/計(jì)數(shù)器T0模塊設(shè)定流程工作原理編程控制啟動(dòng)控制功能選擇(TMOD)TR0(TCON)GATE(TMOD)M1M0(TMOD)TF0(TCON)初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作K1K2T0加1計(jì)數(shù)器可選擇13、16或8位溢出信號(hào)TF0=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制計(jì)數(shù)初值THx=初值高8位TLx=初值低8位設(shè)定分頻系數(shù)T0x12(AUXR)定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置T1門控位:GATE=0:使用TR1啟動(dòng)工作GATE=1:由TR1和INT1共同啟動(dòng)工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能選擇位:=0:定時(shí)功能=1:計(jì)數(shù)功能T1工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2T0工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0功能選擇位:=0:定時(shí)功能=1:計(jì)數(shù)功能T0門控位:GATE=0:使用TR0啟動(dòng)工作GATE=0:由TR0和INT0共同啟動(dòng)工作T0T1字節(jié)尋址初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作啟動(dòng)工作工作方式設(shè)置定時(shí)功能設(shè)置定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置工作方式寄存器TMOD(89h)GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2T0工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3M1M0工作方式功能描述00方式0自動(dòng)重裝初始值的16位計(jì)數(shù)器(推薦)01方式116位計(jì)數(shù)器10方式2自動(dòng)重裝初值的8位計(jì)數(shù)器11方式3T0:分成兩個(gè)8位的計(jì)數(shù)器,T1:停止計(jì)數(shù)用定時(shí)器T0,定時(shí)功能,工作方式0:TMOD=00000000;TMOD=0X00;初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作啟動(dòng)工作工作方式設(shè)置定時(shí)功能設(shè)置輔助寄存器AUXRT0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2D0D7D6D5D4D3D2D1T0定時(shí)功能下的分頻系數(shù)設(shè)定:T0x12=0:12分頻T0x12=1:不分頻T1定時(shí)功能下分頻系數(shù)設(shè)定T1x12=0:12分頻T1x12=1:不分頻定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置使用定時(shí)器T0定時(shí),不分頻:AUXR=AUXR|0X80;字節(jié)尋址初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作設(shè)定分頻系數(shù)定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置T1溢出中斷請(qǐng)求標(biāo)志控制寄存TCON(88h)TF1TR1TF0TR0------------D0D7D6D5D4D3D2D1T1啟動(dòng)位,TR1=1/0,啟動(dòng)/停止外部中斷控制位與定時(shí)/計(jì)數(shù)器無(wú)關(guān)T0溢出中斷請(qǐng)求標(biāo)志T0啟動(dòng)位,TR0=1/0,啟動(dòng)/停止啟動(dòng)定時(shí)器T0開始工作TR0=1;位尋址初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作啟動(dòng)工作定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置工作原理K1K2TX加1計(jì)數(shù)器可選擇16或8位溢出信號(hào)TFx=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作初始值設(shè)置定時(shí)器/計(jì)數(shù)器模塊相關(guān)寄存器的設(shè)置16位加1計(jì)數(shù)器THxTLx00000000高8位TH低8位TL1~216
1~6553600000000111111111111111100TFx00000000000000001初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作初始值設(shè)置定時(shí)器/計(jì)數(shù)器(T0/T1)模塊及其內(nèi)部結(jié)構(gòu)T初值0M+1計(jì)數(shù)啟動(dòng)計(jì)數(shù)計(jì)數(shù)溢出(TFx=1)完成一次計(jì)數(shù)定時(shí)時(shí)間=(65536-計(jì)數(shù)初始值)×系統(tǒng)時(shí)鐘周期×定時(shí)器初始值不分頻時(shí)定時(shí)1ms時(shí)定時(shí)器T0的初始值:用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí)。TH0=(65536-MAIN_Fosc/1000)/256;TL0=(65536-MAIN_Fosc/1000)%256;初始值設(shè)置設(shè)定分頻系數(shù)定時(shí)功能設(shè)置工作方式設(shè)置啟動(dòng)工作注:MAIN_Fosc是系統(tǒng)時(shí)鐘頻率不分頻時(shí),定時(shí)范圍是1/12us——5461us12分頻時(shí),定時(shí)范圍是1us——65536us#include<stc15.h>#defineMAIN_Fosc11059200//定義系統(tǒng)時(shí)鐘頻率sbitLED=P1^0;voidmain(){ TMOD=0X00;//設(shè)置定時(shí)器工作方式,定時(shí)器T0工作在方式0,定時(shí)功能
AUXR=AUXR|0X80;//對(duì)震蕩信號(hào)計(jì)數(shù)實(shí)現(xiàn)定時(shí),不分頻
TH0=(65536-MAIN_Fosc/1000)/256;//設(shè)置1ms定時(shí)初始值 TL0=(65536-MAIN_Fosc/1000)%256;//設(shè)置1ms定時(shí)初始值 TR0=1;//啟動(dòng)定時(shí)器開始工作}軟件設(shè)計(jì)——定時(shí)器的初始化設(shè)定AUXR寄存器(設(shè)置分頻系數(shù))設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定AUXR寄存器(設(shè)置分頻系數(shù))設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。任務(wù)4.1
電子秒表的實(shí)現(xiàn)——定時(shí)器/計(jì)數(shù)器模塊的應(yīng)用2#include<stc15.h>#defineMAIN_Fosc11059200//定義系統(tǒng)時(shí)鐘頻率sbitLED=P1^0;voidmain(){ TMOD=0X00;//設(shè)置定時(shí)器工作方式,定時(shí)器T0工作在方式0,定時(shí)功能
AUXR=AUXR|0X80;//對(duì)震蕩信號(hào)計(jì)數(shù)實(shí)現(xiàn)定時(shí),不分頻
TH0=(65536-MAIN_Fosc/1000)/256;//設(shè)置1ms定時(shí)初始值 TL0=(65536-MAIN_Fosc/1000)%256;//設(shè)置1ms定時(shí)初始值 TR0=1;//啟動(dòng)定時(shí)器開始工作}軟件設(shè)計(jì)——定時(shí)器的初始化設(shè)定AUXR寄存器(設(shè)置分頻系數(shù))設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。定時(shí)器/計(jì)數(shù)器T0模塊工作流程工作原理K1K2TXTH0溢出信號(hào)TF0=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)TL0RL_TH0RL_TL0方式0可自動(dòng)重裝初始值的16位定時(shí)器/計(jì)數(shù)器查詢方式中斷方式軟件設(shè)計(jì)——計(jì)數(shù)溢出處理#include<stc15.h>#defineMAIN_Fosc11059200//定義系統(tǒng)時(shí)鐘頻率sbit LED=P1^0;voidmain(){ TMOD=0X00;//設(shè)置定時(shí)器工作方式,定時(shí)器T0工作在方式0,定時(shí)功能
TH0=(65536-MAIN_Fosc/1000)/256;//設(shè)置1ms的定時(shí)初始值 TL0=(65536-MAIN_Fosc/1000)%256;
AUXR=AUXR|0X80;//設(shè)置定時(shí)器不分頻
TR0=1;//啟動(dòng)定時(shí)器開始工作 while(1) { while(!TF0);//
查詢1ms時(shí)間是否到
TF0=0;//對(duì)TF0清零,為下一次定時(shí)做準(zhǔn)備
LED=~LED;//led燈的狀態(tài)改變 }}查詢方式定時(shí)器初始化溢出標(biāo)志位清零LED狀態(tài)取反定時(shí)時(shí)間到?YN示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。軟件設(shè)計(jì)——計(jì)數(shù)溢出處理#include<stc15.h>#defineMAIN_Fosc11059200//定義系統(tǒng)時(shí)鐘頻率voiddelay_1ms();//對(duì)1ms延時(shí)子函數(shù)進(jìn)行聲明sbit LED=P1^0;voidmain(){ TMOD=0X00;//設(shè)置定時(shí)器T0工作在方式0,定時(shí)功能
AUXR=AUXR|0X80;//設(shè)置定時(shí)器不分頻 while(1) {
delay_1ms();//調(diào)用1ms延時(shí)子函數(shù)
LED=!LED;//led燈的狀態(tài)改變
}}查詢方式定時(shí)器初始化溢出標(biāo)志位清零LED狀態(tài)取反定時(shí)時(shí)間到?YN示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。程序優(yōu)化軟件設(shè)計(jì)——計(jì)數(shù)溢出處理voiddelay_1ms(){
TH0=(65536-MAIN_Fosc/1000)/256;//設(shè)置1ms的定時(shí)初始值 TL0=(65536-MAIN_Fosc/1000)%256;
TR0=1;//啟動(dòng)定時(shí)器開始工作
while(!TF0);//查詢1ms時(shí)間是否到
TF0=0;//對(duì)TF0清零,為下一次定時(shí)做準(zhǔn)備}查詢方式程序優(yōu)化軟件設(shè)計(jì)——計(jì)數(shù)溢出處理中斷方式軟件設(shè)計(jì)——計(jì)數(shù)溢出處理#include<stc15.h>#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; TH0=(65536-MAIN_Fosc/1000)/256; TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80; ET0=1;//允許定時(shí)器T0中斷發(fā)生 EA=1;//允許總中斷發(fā)生 TR0=1; while(1);//原地踏步指令}delay_1ms()interrupt1using1//定時(shí)器0中斷服務(wù)函數(shù){ LED=!LED;//led燈的狀態(tài)改變}中斷方式定時(shí)器、中斷初始化溢出標(biāo)志位清零LED狀態(tài)取反定時(shí)時(shí)間到?YN示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1ms定時(shí),每1ms時(shí)間,P1.0引腳上LED的狀態(tài)取反一次。中斷源名稱中斷號(hào)外部中斷00定時(shí)器/計(jì)數(shù)器0中斷1外部中斷12定時(shí)器/計(jì)數(shù)器1中斷3表3.3中斷標(biāo)號(hào)v
實(shí)踐中認(rèn)真學(xué)習(xí)其中的工作原理,養(yǎng)成認(rèn)真投入,追求極致、精益求精的工匠精神。堅(jiān)持自信自愛(ài),堅(jiān)韌樂(lè)觀,能積極進(jìn)行情緒的自我調(diào)節(jié),克服自己的畏難情緒,我們可以很好得掌握定時(shí)器模塊的使用。
電子鐘的定時(shí)T0、T1的工作方式
單片機(jī)芯片STC15W4K32S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)。工作原理K1K2TXTH0溢出信號(hào)TF0=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)TL0RL_TH0RL_TL0方式0可自動(dòng)重裝初始值的16位定時(shí)器/計(jì)數(shù)器T0、T1的工作方式工作原理K1K2TXTH0溢出信號(hào)TFx=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)TL0方式1
單片機(jī)芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)不可自動(dòng)重裝初始值的16位定時(shí)器/計(jì)數(shù)器T0、T1的工作方式工作原理K1K2TXTH0溢出信號(hào)TFx=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)TL0方式2
單片機(jī)芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)可自動(dòng)重裝初始值的8位定時(shí)器/計(jì)數(shù)器T0、T1的工作方式工作原理K1K2TXTH0溢出信號(hào)TFx=1中斷請(qǐng)求CPU內(nèi)部機(jī)器周期脈沖(定時(shí))外部引腳輸入脈沖(計(jì)數(shù))計(jì)數(shù)脈沖啟動(dòng)控制功能選擇計(jì)數(shù)初值設(shè)定分頻系數(shù)TL0RL_TH0RL_TL0不可屏蔽中斷的16位自動(dòng)重裝載模式方式3
單片機(jī)芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)定時(shí)功能的使用——示例講解示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1s鐘定時(shí),每1s鐘P1.0引腳上LED的狀態(tài)取反一次。查詢方式中斷方式1ms定時(shí)1000次?不分頻時(shí),定時(shí)范圍是1/12us——5461usYN示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1s鐘定時(shí),每1s鐘P1.0引腳上LED的狀態(tài)取反一次。#include<stc15.h>voiddelay_1ms(unsignedintn);//對(duì)延時(shí)子函數(shù)進(jìn)行聲明#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; AUXR=AUXR|0X80; while(1) { delay_1ms(1000); LED=!LED;//led燈的狀態(tài)改變 }}定時(shí)功能的使用——示例講解查詢方式示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1s鐘定時(shí),每1s鐘P1.0引腳上LED的狀態(tài)取反一次。voiddelay_1ms(unsignedintn)//延時(shí)子函數(shù)的定義{ unsignedinti; for(i=0;i<n;i++) { TH0=(65536-MAIN_Fosc*/1000)/256; TL0=(65536-MAIN_Fosc*/1000)%256; TR0=1; while(!TF0);// 查詢指令 TF0=0;//對(duì)TF0清零,為下一次定時(shí)做準(zhǔn)備 }}定時(shí)功能的使用——示例講解查詢方式示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1s鐘定時(shí),每1s鐘P1.0引腳上LED的狀態(tài)取反一次。#include<stc15.h>#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; TH0=(65536-MAIN_Fosc/1000)/256; TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80; ET0=1;//允許定時(shí)器中斷0發(fā)生 EA=1;//允許總中斷發(fā)生 TR0=1; while(1);//原地踏步指令}中斷方式定時(shí)功能的使用——示例講解示例:設(shè)時(shí)鐘頻率fosc=11.0592MHz,用定時(shí)器T0方式0實(shí)現(xiàn)1s鐘定時(shí),每1s鐘P1.0引腳上LED的狀態(tài)取反一次。delay_1s()interrupt1using1//定時(shí)器0中斷服務(wù)函數(shù){ unsignedinti;//定義變量i,用于統(tǒng)計(jì)進(jìn)入中斷的次數(shù) n++;//每進(jìn)入一次中斷,變量n加1。 if(n==1000) { LED=!LED;//led燈的狀態(tài)改變 n=0;//變量n清零,為下一次1s定時(shí)做準(zhǔn)備 }}中斷方式定時(shí)功能的使用——示例講解
我們?cè)趯?shí)現(xiàn)復(fù)雜任務(wù)的時(shí)候可以考慮獨(dú)立分解任務(wù),遵循從易到難的原則,逐步實(shí)現(xiàn)任務(wù)功能。不走捷徑,一步一個(gè)腳印,腳踏實(shí)地,我們就一直走在通往成功的路上。
電子鐘的定時(shí)任務(wù)4.1電子秒表的實(shí)現(xiàn)——計(jì)數(shù)功能的應(yīng)用計(jì)數(shù)功能的使用示例:使用定時(shí)器/計(jì)數(shù)器T1的計(jì)數(shù)功能,實(shí)現(xiàn)每計(jì)三個(gè)數(shù),P1.0引腳連接LED燈的狀態(tài)取反一次。定時(shí)器T1TH1(8DH)TL1(8BH)高8位低8位計(jì)數(shù)器外部輸入端T1(P3.5)定時(shí)器T0TH0(8CH)TL0(8AH)高8位低8位計(jì)數(shù)器外部輸入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定時(shí)器內(nèi)部時(shí)鐘定時(shí)器內(nèi)部時(shí)鐘TF1TR1TF0TR0TCON(控制寄存器)外部中斷相關(guān)位T0x12T1x12AUXR(輔助寄存器)計(jì)數(shù)功能的使用示例:使用定時(shí)器/計(jì)數(shù)器T1的計(jì)數(shù)功能,實(shí)現(xiàn)每計(jì)三個(gè)數(shù),P1.0引腳連接LED燈的狀態(tài)取反一次。示例硬件設(shè)計(jì)序號(hào)名稱Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED發(fā)光二極管LED-BIGY13電阻RES1k14按鍵BUTTON1計(jì)數(shù)功能的使用示例3:使用定時(shí)器/計(jì)數(shù)器T1的計(jì)數(shù)功能,實(shí)現(xiàn)每計(jì)三個(gè)數(shù),P1.0引腳連接LED燈的狀態(tài)取反一次。初始值設(shè)置設(shè)定分頻系數(shù)工作方式設(shè)置啟動(dòng)工作計(jì)數(shù)功能設(shè)置設(shè)定TH1、TL1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)計(jì)數(shù)功能的使用——相關(guān)寄存器的設(shè)置設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)T1門控位:GATE=1:由TR1和INT1共同啟動(dòng)工作GATE=0:使用TR1啟動(dòng)工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能選擇位:=1:計(jì)數(shù)功能=0:定時(shí)功能T1工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0工作方式選擇位:M1/M0=00:工作方式0M1/M0=01:工作方式1M1/M0=10:工作方式2M1/M0=11:工作方式3T0功能選擇位:=1:計(jì)數(shù)功能=0:定時(shí)功能T0門控位:GATE=1:由TR0和INT0共同啟動(dòng)工作GATE=0:使用TR0啟動(dòng)工作T0T1用定時(shí)器T1方式0實(shí)現(xiàn)計(jì)數(shù)功能TMOD=01000000;TMOD=0X40;設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)計(jì)數(shù)功能的使用——相關(guān)寄存器的設(shè)置設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)設(shè)置TMOD寄存器(設(shè)定定時(shí)功能、選擇工作方式、GATE)設(shè)定TCON寄存器(啟動(dòng)定時(shí)器開始工作)設(shè)定TH0/1、TL0/1(設(shè)定定時(shí)/計(jì)數(shù)初始值)T初值0M+1計(jì)數(shù)啟動(dòng)計(jì)數(shù)計(jì)數(shù)溢出(TFx=1)完成一次計(jì)數(shù)方式0計(jì)3個(gè)數(shù):TH1=(65536-3)/256;
TL1=(65536-3)%256;計(jì)數(shù)器初始值=65536-需要計(jì)的脈沖個(gè)數(shù)=65536-3計(jì)數(shù)功能的使用——示例講解示例:使用定時(shí)器/計(jì)數(shù)器T1的計(jì)數(shù)功能,實(shí)現(xiàn)每計(jì)三個(gè)數(shù),P1.0引腳連接LED燈的狀態(tài)取反一次。示例程序編寫#include<stc15.h>sbit LED=P1^0;voidmain(){ TMOD=0X40;//使用定時(shí)器1,計(jì)數(shù)方式,方式0 TH1=(65536-3)/256;//設(shè)置計(jì)3個(gè)數(shù)的計(jì)數(shù)初始值 TL1=(65536-3)%256; ET1=1;//允許定時(shí)器中斷0發(fā)生 EA=1;//允許總中斷發(fā)生 TR1=1; while(1);//原地踏步指令}jishu()interrupt3using1//定時(shí)器/計(jì)數(shù)器T1中斷服務(wù)函數(shù){ LED=!LED;//led燈的狀態(tài)改變
}中斷源名稱中斷號(hào)外部中斷00定時(shí)器/計(jì)數(shù)器0中斷1外部中斷12定時(shí)器/計(jì)數(shù)器1中斷3定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例4:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例硬件設(shè)計(jì)序號(hào)名稱Proteus中元件名參數(shù)數(shù)量1單片機(jī)STC15W4K32S412LED發(fā)光二極管LED-RED83電阻RES1kΩ84按鍵BUTTON1定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例4:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例分析500ms定時(shí)功能的實(shí)現(xiàn)——定時(shí)器定時(shí)功能;P3.5按鍵次數(shù)統(tǒng)計(jì)——定時(shí)器計(jì)數(shù)功能定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例程序編寫#include<stc15.h>#defineMAIN_Fosc11059200#include<intrins.h>//添加循環(huán)左移右移庫(kù)函數(shù)所在頭文件bitdir=0;//定義全局變量dir進(jìn)行方向控制voidmain(){
P1=0x7f;//設(shè)置P1端口初始值,led燈的初始狀態(tài) TMOD=0x40;//T0為定時(shí)功能,方式0;T1為計(jì)數(shù)功能,方式0 TH0=(65536-MAIN_Fosc/1000)/256;//定時(shí)器T0定時(shí)1ms初始值設(shè)定 TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80;//T0不分頻 TH1=0xff; //T1的初值為0xff,計(jì)1個(gè)數(shù) TL1=0xff;定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例程序編寫
ET0=1;//允許T0中斷 ET1=1;
//允許T1中斷 TR0=1;//啟動(dòng)T0定時(shí) TR1=1;
//啟動(dòng)T1計(jì)數(shù) EA=1;//CPU開中斷 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按鈕產(chǎn)生T1的溢出中斷,將dir求反}定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例程序編寫voidtime0()interrupt1
using1{
unsignedinti;//統(tǒng)計(jì)定時(shí)器T0定時(shí)1ms次數(shù)
i++;//每中斷一次,計(jì)數(shù)器加1
if(i==500)//中斷500次實(shí)現(xiàn)500ms秒定時(shí)
{
i=0;//為下一次500ms定時(shí)做準(zhǔn)備 if(dir==0)//根據(jù)dir變量的值設(shè)定led燈的移動(dòng)方向
P1=_crol_(P1,1); else
P1=_cror_(P1,1); }}定時(shí)器計(jì)數(shù)器的綜合應(yīng)用示例:定時(shí)器計(jì)數(shù)器的綜合應(yīng)用。如圖所示,P1口控制8只LED燈輪流點(diǎn)亮,每只LED燈點(diǎn)亮?xí)r間為500ms,P3.5引腳上的按鍵控制LED燈移動(dòng)的方向,初始狀態(tài)時(shí)LED燈循環(huán)左移,按鍵每按下一次,LED燈移動(dòng)的方向改變一次。示例程序編寫
ET0=1;//允許T0中斷 ET1=1;
//允許T1中斷 TR0=1;//啟動(dòng)T0定時(shí) TR1=1;
//啟動(dòng)T1計(jì)數(shù) EA=1;//CPU開中斷 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按鈕產(chǎn)生T1的溢出中斷,將dir求反}任務(wù)4.1電子鐘的實(shí)現(xiàn)——軟件設(shè)計(jì)任務(wù)
電子秒表軟件設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)介紹秒表的走時(shí)范圍是0-59秒;在兩位數(shù)碼管上顯示走時(shí)效果;P3.2引腳上的按鍵控制秒表狀態(tài):程序運(yùn)行時(shí),秒表開始走時(shí);按鍵按下一次,秒表停止走時(shí);按鍵按下兩次,秒表清零。任務(wù)
電子秒表軟件設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)3-1:DS18B20電路設(shè)計(jì)任務(wù)介紹秒表的走時(shí)范圍是0-59秒;在兩位數(shù)碼管上顯示走時(shí)效果;P3.2引腳上的按鍵控制秒表狀態(tài):程序運(yùn)行時(shí),秒表開始走時(shí);按鍵按下一次,秒表停止走時(shí);按鍵按下兩次,秒表清零。1s鐘定時(shí)秒的走時(shí)數(shù)碼管的顯示按鍵的識(shí)別和處理任務(wù)
電子秒表軟件設(shè)計(jì)任務(wù)分析主函數(shù)
main():
初始化
數(shù)碼管顯示定時(shí)器T
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省沈文新高考研究聯(lián)盟2024-2025學(xué)年高二下學(xué)期開學(xué)檢測(cè)語(yǔ)文試題(解析版)
- 教師考核考勤提案會(huì)發(fā)言稿
- 2024年特許金融分析師考試團(tuán)隊(duì)合作試題及答案
- 高中語(yǔ)文知識(shí)
- 廣西欽州市第四中學(xué)2024-2025學(xué)年高一下學(xué)期2月考試地理試卷(解析版)
- 預(yù)防軍人自殺
- 2024年特許金融分析師考試重點(diǎn)突破試題及答案
- 2024年特許金融分析師考試焦慮應(yīng)對(duì)策略試題及答案
- 2024年特許金融分析師考試全站試題及答案
- 特許金融分析師考試準(zhǔn)備試題及答案
- 《無(wú)人機(jī)概論》第1章 無(wú)人機(jī)概述
- 村醫(yī)基藥培訓(xùn)課件
- 食品新產(chǎn)品開發(fā) 課件 第三章 食品新產(chǎn)品開發(fā)配方設(shè)計(jì)
- 診所消防安全培訓(xùn)課件
- 小學(xué)語(yǔ)法專項(xiàng)-be動(dòng)詞練習(xí)(含答案)
- 油橄欖主要病蟲害及防治
- 霞浦縣沙江水閘除險(xiǎn)加固工程環(huán)境影響報(bào)告
- 賣油翁說(shuō)課稿
- 智慧酒店數(shù)字智能化整體解決方案
- 技術(shù)通知單(新模版-0516)
- 移動(dòng)網(wǎng)絡(luò)維護(hù)人員技能認(rèn)證-安全-L1備考試題庫(kù)大全-上(單選題匯總)
評(píng)論
0/150
提交評(píng)論