




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目4電子鐘的實現——項目任務介紹和硬件設計項目介紹項目:電子鐘的實現
任務1:電子秒表的實現
任務2:簡易電子鐘
任務3:帶鬧鐘、調時功能
的電子鐘電子鐘項目:綜合應用了顯示、按鍵、蜂鳴器、定時器、中斷等模塊。項目介紹單片機內部定時器/計數器模塊的使用數碼管的動態顯示綜合性程序的編寫和調試任務1電子秒表的實現任務2簡易電子鐘任務3帶鬧鐘、調時功能的電子鐘項目整體設計單片機模塊數碼管模塊按鍵模塊蜂鳴器模塊任務4.1電子秒表的實現電子秒表的實現任務介紹
秒表的走時范圍是0-59秒;
在兩位數碼管上顯示走時效果;
P3.2引腳上的按鍵控制秒表狀態:程序運行時,秒表開始走時;按鍵按下一次,秒表停止走時;按鍵按下兩次,秒表清零。按鍵按下三次,恢復走時。①②③電子秒表整體設計單片機模塊2位數碼管模塊按鍵模塊任務硬件設計圖電子秒表硬件電路圖序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED數碼管7seg-com-anode
23排阻RX847024按鍵button1任務4.1
電子秒表的實現——定時器/計數器模塊的使用1任務軟件設計任務3-1:DS18B20電路設計任務3-1:DS18B20電路設計任務介紹秒表的走時范圍是0-59秒;在兩位數碼管上顯示走時效果;P3.2引腳上的按鍵控制秒表狀態:程序運行時,秒表開始走時;按鍵按下一次,秒表停止走時;按鍵按下兩次,秒表清零。1s鐘精確定時秒的走時數碼管的顯示按鍵的識別和處理任務軟件設計voidmain()
//主函數{while(1)//無限循環
{ LED=0;
//點亮LED
delay_ms(1000); //軟件延時 LED=1;
//熄滅LED
delay_ms(10000); //軟件延時
}}實現電子秒表首先要解決的問題:實現1s的精確定時。voiddelay_ms(unsignedintms){unsignedinti; do{ i=MAIN_Fosc/13000; while(--i) ;//14Tperloop}while(--ms);}1.定時過程中不能做其他事情2.定時精確度不高電子鐘的定時100%軟件定時特點:無需硬件電路,但定時期間CPU被占用,增加了CPU的開銷,因此定時時間不宜過長,而且定時期間如果發生中斷,定時時間就會出現誤差。硬件定時特點:不占CPU資源,但定時時間的調節不夠靈活方便且增加了硬件成本。可編程定時器定時特點:不影響CPU的效率,且定時時間精確1秒鐘的精確定時單片機應用系統中常見的定時方式123定時器實現1ms定時STC15系列單片機內部有5個16位的可編程定時器/計數器T0、T1、T2、T3和T4示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。使用單片機的定時器/計數器模塊實現定時功能定時計數定時器/計數器T0模塊及其內部結構
單片機內部的定時器/計數器模塊通過設置工作方式寄存器TMOD、控制寄存器TCON和輔助寄存器AUXR來控制定時器的工作。定時器T1TH1(8DH)TL1(8BH)高8位低8位計數器外部輸入端T1(P3.5)定時器T0TH0(8CH)TL0(8AH)高8位低8位計數器外部輸入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定時器內部時鐘定時器內部時鐘TF1TR1TF0TR0TCON(控制寄存器)外部中斷相關位T0x12T1x12AUXR(輔助寄存器)工作原理K1K2T0加1計數器可選擇16或8位溢出信號TF0=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值定時器/計數器T0模塊工作流程初始值設置設定分頻系數定時功能設置工作方式設置啟動工作設定分頻系數工作方式設置定時器/計數器T0模塊設定流程工作原理編程控制啟動控制功能選擇(TMOD)TR0(TCON)GATE(TMOD)M1M0(TMOD)TF0(TCON)初始值設置設定分頻系數定時功能設置工作方式設置啟動工作K1K2T0加1計數器可選擇13、16或8位溢出信號TF0=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制計數初值THx=初值高8位TLx=初值低8位設定分頻系數T0x12(AUXR)定時器/計數器模塊相關寄存器的設置T1門控位:GATE=0:使用TR1啟動工作GATE=1:由TR1和INT1共同啟動工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能選擇位:=0:定時功能=1:計數功能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:定時功能=1:計數功能T0門控位:GATE=0:使用TR0啟動工作GATE=0:由TR0和INT0共同啟動工作T0T1字節尋址初始值設置設定分頻系數定時功能設置工作方式設置啟動工作啟動工作工作方式設置定時功能設置定時器/計數器模塊相關寄存器的設置工作方式寄存器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自動重裝初始值的16位計數器(推薦)01方式116位計數器10方式2自動重裝初值的8位計數器11方式3T0:分成兩個8位的計數器,T1:停止計數用定時器T0,定時功能,工作方式0:TMOD=00000000;TMOD=0X00;初始值設置設定分頻系數定時功能設置工作方式設置啟動工作啟動工作工作方式設置定時功能設置輔助寄存器AUXRT0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2D0D7D6D5D4D3D2D1T0定時功能下的分頻系數設定:T0x12=0:12分頻T0x12=1:不分頻T1定時功能下分頻系數設定T1x12=0:12分頻T1x12=1:不分頻定時器/計數器模塊相關寄存器的設置使用定時器T0定時,不分頻:AUXR=AUXR|0X80;字節尋址初始值設置設定分頻系數定時功能設置工作方式設置啟動工作設定分頻系數定時器/計數器模塊相關寄存器的設置T1溢出中斷請求標志控制寄存TCON(88h)TF1TR1TF0TR0------------D0D7D6D5D4D3D2D1T1啟動位,TR1=1/0,啟動/停止外部中斷控制位與定時/計數器無關T0溢出中斷請求標志T0啟動位,TR0=1/0,啟動/停止啟動定時器T0開始工作TR0=1;位尋址初始值設置設定分頻系數定時功能設置工作方式設置啟動工作啟動工作定時器/計數器模塊相關寄存器的設置工作原理K1K2TX加1計數器可選擇16或8位溢出信號TFx=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數初始值設置設定分頻系數定時功能設置工作方式設置啟動工作初始值設置定時器/計數器模塊相關寄存器的設置16位加1計數器THxTLx00000000高8位TH低8位TL1~216
1~6553600000000111111111111111100TFx00000000000000001初始值設置設定分頻系數定時功能設置工作方式設置啟動工作初始值設置定時器/計數器(T0/T1)模塊及其內部結構T初值0M+1計數啟動計數計數溢出(TFx=1)完成一次計數定時時間=(65536-計數初始值)×系統時鐘周期×定時器初始值不分頻時定時1ms時定時器T0的初始值:用定時器T0方式0實現1ms定時。TH0=(65536-MAIN_Fosc/1000)/256;TL0=(65536-MAIN_Fosc/1000)%256;初始值設置設定分頻系數定時功能設置工作方式設置啟動工作注:MAIN_Fosc是系統時鐘頻率不分頻時,定時范圍是1/12us——5461us12分頻時,定時范圍是1us——65536us#include<stc15.h>#defineMAIN_Fosc11059200//定義系統時鐘頻率sbitLED=P1^0;voidmain(){ TMOD=0X00;//設置定時器工作方式,定時器T0工作在方式0,定時功能
AUXR=AUXR|0X80;//對震蕩信號計數實現定時,不分頻
TH0=(65536-MAIN_Fosc/1000)/256;//設置1ms定時初始值 TL0=(65536-MAIN_Fosc/1000)%256;//設置1ms定時初始值 TR0=1;//啟動定時器開始工作}軟件設計——定時器的初始化設定AUXR寄存器(設置分頻系數)設定TH0/1、TL0/1(設定定時/計數初始值)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定TCON寄存器(啟動定時器開始工作)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定AUXR寄存器(設置分頻系數)設定TH0/1、TL0/1(設定定時/計數初始值)設定TCON寄存器(啟動定時器開始工作)示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。任務4.1
電子秒表的實現——定時器/計數器模塊的應用2#include<stc15.h>#defineMAIN_Fosc11059200//定義系統時鐘頻率sbitLED=P1^0;voidmain(){ TMOD=0X00;//設置定時器工作方式,定時器T0工作在方式0,定時功能
AUXR=AUXR|0X80;//對震蕩信號計數實現定時,不分頻
TH0=(65536-MAIN_Fosc/1000)/256;//設置1ms定時初始值 TL0=(65536-MAIN_Fosc/1000)%256;//設置1ms定時初始值 TR0=1;//啟動定時器開始工作}軟件設計——定時器的初始化設定AUXR寄存器(設置分頻系數)設定TH0/1、TL0/1(設定定時/計數初始值)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定TCON寄存器(啟動定時器開始工作)示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。定時器/計數器T0模塊工作流程工作原理K1K2TXTH0溢出信號TF0=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數TL0RL_TH0RL_TL0方式0可自動重裝初始值的16位定時器/計數器查詢方式中斷方式軟件設計——計數溢出處理#include<stc15.h>#defineMAIN_Fosc11059200//定義系統時鐘頻率sbit LED=P1^0;voidmain(){ TMOD=0X00;//設置定時器工作方式,定時器T0工作在方式0,定時功能
TH0=(65536-MAIN_Fosc/1000)/256;//設置1ms的定時初始值 TL0=(65536-MAIN_Fosc/1000)%256;
AUXR=AUXR|0X80;//設置定時器不分頻
TR0=1;//啟動定時器開始工作 while(1) { while(!TF0);//
查詢1ms時間是否到
TF0=0;//對TF0清零,為下一次定時做準備
LED=~LED;//led燈的狀態改變 }}查詢方式定時器初始化溢出標志位清零LED狀態取反定時時間到?YN示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。軟件設計——計數溢出處理#include<stc15.h>#defineMAIN_Fosc11059200//定義系統時鐘頻率voiddelay_1ms();//對1ms延時子函數進行聲明sbit LED=P1^0;voidmain(){ TMOD=0X00;//設置定時器T0工作在方式0,定時功能
AUXR=AUXR|0X80;//設置定時器不分頻 while(1) {
delay_1ms();//調用1ms延時子函數
LED=!LED;//led燈的狀態改變
}}查詢方式定時器初始化溢出標志位清零LED狀態取反定時時間到?YN示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。程序優化軟件設計——計數溢出處理voiddelay_1ms(){
TH0=(65536-MAIN_Fosc/1000)/256;//設置1ms的定時初始值 TL0=(65536-MAIN_Fosc/1000)%256;
TR0=1;//啟動定時器開始工作
while(!TF0);//查詢1ms時間是否到
TF0=0;//對TF0清零,為下一次定時做準備}查詢方式程序優化軟件設計——計數溢出處理中斷方式軟件設計——計數溢出處理#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;//允許定時器T0中斷發生 EA=1;//允許總中斷發生 TR0=1; while(1);//原地踏步指令}delay_1ms()interrupt1using1//定時器0中斷服務函數{ LED=!LED;//led燈的狀態改變}中斷方式定時器、中斷初始化溢出標志位清零LED狀態取反定時時間到?YN示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1ms定時,每1ms時間,P1.0引腳上LED的狀態取反一次。中斷源名稱中斷號外部中斷00定時器/計數器0中斷1外部中斷12定時器/計數器1中斷3表3.3中斷標號v
實踐中認真學習其中的工作原理,養成認真投入,追求極致、精益求精的工匠精神。堅持自信自愛,堅韌樂觀,能積極進行情緒的自我調節,克服自己的畏難情緒,我們可以很好得掌握定時器模塊的使用。
電子鐘的定時T0、T1的工作方式
單片機芯片STC15W4K32S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)。工作原理K1K2TXTH0溢出信號TF0=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數TL0RL_TH0RL_TL0方式0可自動重裝初始值的16位定時器/計數器T0、T1的工作方式工作原理K1K2TXTH0溢出信號TFx=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數TL0方式1
單片機芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)不可自動重裝初始值的16位定時器/計數器T0、T1的工作方式工作原理K1K2TXTH0溢出信號TFx=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數TL0方式2
單片機芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)可自動重裝初始值的8位定時器/計數器T0、T1的工作方式工作原理K1K2TXTH0溢出信號TFx=1中斷請求CPU內部機器周期脈沖(定時)外部引腳輸入脈沖(計數)計數脈沖啟動控制功能選擇計數初值設定分頻系數TL0RL_TH0RL_TL0不可屏蔽中斷的16位自動重裝載模式方式3
單片機芯片STC15W4K61S4,T0有4種工作方式(方式0、方式1、方式2、方式3),T1有3種工作方式(方式0、方式1、方式2)定時功能的使用——示例講解示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1s鐘定時,每1s鐘P1.0引腳上LED的狀態取反一次。查詢方式中斷方式1ms定時1000次?不分頻時,定時范圍是1/12us——5461usYN示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1s鐘定時,每1s鐘P1.0引腳上LED的狀態取反一次。#include<stc15.h>voiddelay_1ms(unsignedintn);//對延時子函數進行聲明#defineMAIN_Fosc11059200sbit LED=P1^0;voidmain(){ TMOD=0X00; AUXR=AUXR|0X80; while(1) { delay_1ms(1000); LED=!LED;//led燈的狀態改變 }}定時功能的使用——示例講解查詢方式示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1s鐘定時,每1s鐘P1.0引腳上LED的狀態取反一次。voiddelay_1ms(unsignedintn)//延時子函數的定義{ 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;//對TF0清零,為下一次定時做準備 }}定時功能的使用——示例講解查詢方式示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1s鐘定時,每1s鐘P1.0引腳上LED的狀態取反一次。#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;//允許定時器中斷0發生 EA=1;//允許總中斷發生 TR0=1; while(1);//原地踏步指令}中斷方式定時功能的使用——示例講解示例:設時鐘頻率fosc=11.0592MHz,用定時器T0方式0實現1s鐘定時,每1s鐘P1.0引腳上LED的狀態取反一次。delay_1s()interrupt1using1//定時器0中斷服務函數{ unsignedinti;//定義變量i,用于統計進入中斷的次數 n++;//每進入一次中斷,變量n加1。 if(n==1000) { LED=!LED;//led燈的狀態改變 n=0;//變量n清零,為下一次1s定時做準備 }}中斷方式定時功能的使用——示例講解
我們在實現復雜任務的時候可以考慮獨立分解任務,遵循從易到難的原則,逐步實現任務功能。不走捷徑,一步一個腳印,腳踏實地,我們就一直走在通往成功的路上。
電子鐘的定時任務4.1電子秒表的實現——計數功能的應用計數功能的使用示例:使用定時器/計數器T1的計數功能,實現每計三個數,P1.0引腳連接LED燈的狀態取反一次。定時器T1TH1(8DH)TL1(8BH)高8位低8位計數器外部輸入端T1(P3.5)定時器T0TH0(8CH)TL0(8AH)高8位低8位計數器外部輸入端T0(P3.4)CPUGATEC/TM1M0GATEC/TM1M0TMOD(工作方式寄存器)定時器內部時鐘定時器內部時鐘TF1TR1TF0TR0TCON(控制寄存器)外部中斷相關位T0x12T1x12AUXR(輔助寄存器)計數功能的使用示例:使用定時器/計數器T1的計數功能,實現每計三個數,P1.0引腳連接LED燈的狀態取反一次。示例硬件設計序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED發光二極管LED-BIGY13電阻RES1k14按鍵BUTTON1計數功能的使用示例3:使用定時器/計數器T1的計數功能,實現每計三個數,P1.0引腳連接LED燈的狀態取反一次。初始值設置設定分頻系數工作方式設置啟動工作計數功能設置設定TH1、TL1(設定定時/計數初始值)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定TCON寄存器(啟動定時器開始工作)計數功能的使用——相關寄存器的設置設定TH0/1、TL0/1(設定定時/計數初始值)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定TCON寄存器(啟動定時器開始工作)T1門控位:GATE=1:由TR1和INT1共同啟動工作GATE=0:使用TR1啟動工作TMOD(89h)工作方式寄存器GATEC/TM1M0GATEC/TM1M0D0D7D6D5D4D3D2D1T1功能選擇位:=1:計數功能=0:定時功能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:計數功能=0:定時功能T0門控位:GATE=1:由TR0和INT0共同啟動工作GATE=0:使用TR0啟動工作T0T1用定時器T1方式0實現計數功能TMOD=01000000;TMOD=0X40;設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)計數功能的使用——相關寄存器的設置設定TH0/1、TL0/1(設定定時/計數初始值)設置TMOD寄存器(設定定時功能、選擇工作方式、GATE)設定TCON寄存器(啟動定時器開始工作)設定TH0/1、TL0/1(設定定時/計數初始值)T初值0M+1計數啟動計數計數溢出(TFx=1)完成一次計數方式0計3個數:TH1=(65536-3)/256;
TL1=(65536-3)%256;計數器初始值=65536-需要計的脈沖個數=65536-3計數功能的使用——示例講解示例:使用定時器/計數器T1的計數功能,實現每計三個數,P1.0引腳連接LED燈的狀態取反一次。示例程序編寫#include<stc15.h>sbit LED=P1^0;voidmain(){ TMOD=0X40;//使用定時器1,計數方式,方式0 TH1=(65536-3)/256;//設置計3個數的計數初始值 TL1=(65536-3)%256; ET1=1;//允許定時器中斷0發生 EA=1;//允許總中斷發生 TR1=1; while(1);//原地踏步指令}jishu()interrupt3using1//定時器/計數器T1中斷服務函數{ LED=!LED;//led燈的狀態改變
}中斷源名稱中斷號外部中斷00定時器/計數器0中斷1外部中斷12定時器/計數器1中斷3定時器計數器的綜合應用示例4:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例硬件設計序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED發光二極管LED-RED83電阻RES1kΩ84按鍵BUTTON1定時器計數器的綜合應用示例4:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例分析500ms定時功能的實現——定時器定時功能;P3.5按鍵次數統計——定時器計數功能定時器計數器的綜合應用示例:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例程序編寫#include<stc15.h>#defineMAIN_Fosc11059200#include<intrins.h>//添加循環左移右移庫函數所在頭文件bitdir=0;//定義全局變量dir進行方向控制voidmain(){
P1=0x7f;//設置P1端口初始值,led燈的初始狀態 TMOD=0x40;//T0為定時功能,方式0;T1為計數功能,方式0 TH0=(65536-MAIN_Fosc/1000)/256;//定時器T0定時1ms初始值設定 TL0=(65536-MAIN_Fosc/1000)%256; AUXR=AUXR|0X80;//T0不分頻 TH1=0xff; //T1的初值為0xff,計1個數 TL1=0xff;定時器計數器的綜合應用示例:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例程序編寫
ET0=1;//允許T0中斷 ET1=1;
//允許T1中斷 TR0=1;//啟動T0定時 TR1=1;
//啟動T1計數 EA=1;//CPU開中斷 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按鈕產生T1的溢出中斷,將dir求反}定時器計數器的綜合應用示例:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例程序編寫voidtime0()interrupt1
using1{
unsignedinti;//統計定時器T0定時1ms次數
i++;//每中斷一次,計數器加1
if(i==500)//中斷500次實現500ms秒定時
{
i=0;//為下一次500ms定時做準備 if(dir==0)//根據dir變量的值設定led燈的移動方向
P1=_crol_(P1,1); else
P1=_cror_(P1,1); }}定時器計數器的綜合應用示例:定時器計數器的綜合應用。如圖所示,P1口控制8只LED燈輪流點亮,每只LED燈點亮時間為500ms,P3.5引腳上的按鍵控制LED燈移動的方向,初始狀態時LED燈循環左移,按鍵每按下一次,LED燈移動的方向改變一次。示例程序編寫
ET0=1;//允許T0中斷 ET1=1;
//允許T1中斷 TR0=1;//啟動T0定時 TR1=1;
//啟動T1計數 EA=1;//CPU開中斷 while(1);}voidtime1()interrupt3using2{ dir=~dir; //每次按下按鈕產生T1的溢出中斷,將dir求反}任務4.1電子鐘的實現——軟件設計任務
電子秒表軟件設計任務3-1:DS18B20電路設計任務3-1:DS18B20電路設計任務介紹秒表的走時范圍是0-59秒;在兩位數碼管上顯示走時效果;P3.2引腳上的按鍵控制秒表狀態:程序運行時,秒表開始走時;按鍵按下一次,秒表停止走時;按鍵按下兩次,秒表清零。任務
電子秒表軟件設計任務3-1:DS18B20電路設計任務3-1:DS18B20電路設計任務介紹秒表的走時范圍是0-59秒;在兩位數碼管上顯示走時效果;P3.2引腳上的按鍵控制秒表狀態:程序運行時,秒表開始走時;按鍵按下一次,秒表停止走時;按鍵按下兩次,秒表清零。1s鐘定時秒的走時數碼管的顯示按鍵的識別和處理任務
電子秒表軟件設計任務分析主函數
main():
初始化
數碼管顯示定時器T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 某年度電熱圈產業分析報告
- 抗鹽型聚乙烯醇海綿界面太陽能蒸發器的設計及其海水淡化性能研究
- 修正健康集團內部控制改進研究
- 新生代唱作人裘德演唱技巧和創作手法分析-以《莫比烏斯號的船醫》《濃縮藍鯨》《黑烏鴉與少女》為例
- 外源性rGDF11抗慢性應激性認知障礙-涉及抑制海馬內源性甲醛堆積和突觸可塑性損傷
- 基于一致稀疏模式的穩健主成分分析研究
- 特別聲明僅用于工作背景證明的證明書(6篇)
- 院落買賣合同協議書
- 法律服務行業律師資格證明(8篇)
- 桃寧和桃琳姐妹花600字10篇
- 純化水設備培訓
- 新能源汽車電池研發合同
- 自愿援疆申請書
- 智慧照明系統施工方案
- 醫療機構重點環節廉政風險防控措施
- 滬教版(五四學制)(2024)六年級下冊單詞表+默寫單
- (云南卷)2025年中考地理第一次模擬考試(A4考試版)
- 高致病性美人魚發光桿菌美人魚亞種PCR檢測方法
- 培智學校義務教育生活語文課程標準
- 【MOOC期末】《模擬電子線路A》(南京郵電大學)期末中國大學慕課答案
- 2025年中國融通農發社會招聘筆試參考題庫含答案解析
評論
0/150
提交評論