




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄 摘 要3關(guān)鍵詞3一、設(shè)計(jì)任務(wù)與要求4二、方案設(shè)計(jì)與論證4方案一4方案二5三、硬件單元電路設(shè)計(jì)與參數(shù)計(jì)算51. 電源電路52. 按鍵電路53. 時(shí)鐘電路54. 驅(qū)動(dòng)電路55. LED顯示電路5 6. 單片機(jī)電路6四、軟件設(shè)計(jì)與流程圖10五、總原電路及元器件清單10 1總原理圖10 2PCB制板圖11 3整體電路仿真圖12 4元件清單12 六、安裝與調(diào)試13 1. 電路安裝13 2. 電路調(diào)試13 3. 軟件調(diào)試13 七、性能測(cè)試與分析14 八、結(jié)論與心得14 九、參考文獻(xiàn)15 十、致謝15 十一、程序清單15摘要:本論文基于單片機(jī)原理技術(shù)介紹了一款于AT89C5
2、2芯片作為核心控制器的單片機(jī)數(shù)字電子鐘的設(shè)計(jì)與制作,包括硬件電路原理的實(shí)現(xiàn)方案設(shè)計(jì)、軟件程序編輯的實(shí)現(xiàn)、數(shù)字電子鐘正常工作的流程、原理圖仿真實(shí)現(xiàn)、硬件實(shí)物的安裝制作與硬件實(shí)物的調(diào)試過程。該單片機(jī)數(shù)字電子鐘采用LED 數(shù)碼管能夠準(zhǔn)確顯示時(shí)間(顯示格式為:時(shí)時(shí),分分,秒秒),可隨時(shí)進(jìn)行時(shí)間調(diào)整,時(shí)間可采用12 小時(shí)制顯示或24 小時(shí)制顯示,采用12 小時(shí)顯示時(shí)可在標(biāo)志位數(shù)碼管上顯示A(表示上午)或B(表示下午),可暫停時(shí)間的變動(dòng),暫停時(shí)一位數(shù)碼管上顯示字母H,可按自己的要求設(shè)置擴(kuò)展的小鍵盤個(gè)數(shù)。關(guān)鍵詞:?jiǎn)纹瑱C(jī) ;數(shù)字電子鐘 ;數(shù)碼管 ;AT89C52一、 設(shè)計(jì)任務(wù)與要
3、求1、設(shè)計(jì)任務(wù) 用單片機(jī)設(shè)計(jì)一個(gè)數(shù)字電子鐘,采用LED 數(shù)碼管來顯示時(shí)間。2、設(shè)計(jì)要求 (1)顯示格式為:XX:XX:XX, 即:時(shí):分:秒。 (2)時(shí)間可采用12 小時(shí)制顯示或24 小時(shí)制顯示,采用12 小時(shí)顯示時(shí)必須在另外一個(gè)數(shù)碼管上顯示A(表示上午)或B(表示下午)。(3)設(shè)置一個(gè)按鍵用于時(shí)間顯示方式的切換。(4)系統(tǒng)上電后從上電時(shí)初始化顯示: 12-00-00開始計(jì)時(shí)。(5)能進(jìn)行時(shí)間的調(diào)整,可暫停時(shí)間的變動(dòng),暫停時(shí)一位數(shù)碼管上顯示字母H可按自己的要求設(shè)置擴(kuò)展的小鍵盤個(gè)數(shù)。二、 方案設(shè)計(jì)與論證 單片機(jī)模塊驅(qū)動(dòng)模塊按鍵模塊LED顯示模塊時(shí)鐘模塊電源模塊 圖1 系統(tǒng)整體框圖整個(gè)系統(tǒng)用單片機(jī)
4、作為中央控制器,由單片機(jī)執(zhí)行采集芯片內(nèi)部時(shí)鐘信號(hào),時(shí)鐘信號(hào)通過單片機(jī)I/O口傳給單片機(jī),單片機(jī)模塊控制驅(qū)動(dòng)模塊驅(qū)動(dòng)顯示模塊,通過顯示模塊來實(shí)現(xiàn)信號(hào)的輸出、LED的顯示及相關(guān)的控制功能。系統(tǒng)設(shè)有按鍵模塊用于對(duì)時(shí)間進(jìn)行調(diào)整及擴(kuò)展多個(gè)小鍵盤,系統(tǒng)整體框圖如圖1所示。1、 單片機(jī)芯片選擇方案方案一:AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器。主要性能有:與MCS-51單片機(jī)產(chǎn)品兼容、全靜態(tài)操作:0Hz33Hz、 三級(jí)加密程序存儲(chǔ)器、32個(gè)可編程I/O口線、三個(gè)16
5、位定時(shí)器/計(jì)數(shù)器、八個(gè)中斷源、全雙工UART串行通道、掉電后中斷可喚醒、看門狗定時(shí)器、雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符、易編程。方案二:AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)。主要性能有:兼容MCS51指令系統(tǒng)、32個(gè)雙向I/O口、256x8bit內(nèi)部RAM、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷、時(shí)鐘頻率0-24MHz、2個(gè)串行中斷、可編程UART串行通道、2個(gè)外部中斷源、6個(gè)中斷源、2個(gè)讀寫中斷口線、3級(jí)加密位、低功耗空閑和掉電模式、軟件設(shè)置睡眠和喚醒功能。從單片機(jī)芯片主要性能角
6、度出發(fā),本數(shù)字電子鐘單片機(jī)芯片選擇設(shè)計(jì)采用方案一。2、數(shù)碼管顯示選擇方案方案一:靜態(tài)顯示。靜態(tài)顯示,即當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或截止。該方式每一位都需要一個(gè)8 位輸出口控制。靜態(tài)顯示時(shí)較小電流能獲得較高的亮度,且字符不閃爍。但因當(dāng)所需顯示的位數(shù)較多時(shí),靜態(tài)顯示所需的I/O口數(shù)較大,造成資源的浪費(fèi)。方案二:動(dòng)態(tài)顯示。動(dòng)態(tài)顯示,即各位數(shù)碼管輪流點(diǎn)亮,對(duì)于顯示器各位數(shù)碼管,每隔一段延時(shí)時(shí)間循環(huán)點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個(gè)顯示,但須保證掃描速度足夠快,人的視覺暫留功能才可察覺不到字符閃爍。顯示器的亮度與導(dǎo)通電流、點(diǎn)亮?xí)r間及間隔時(shí)間的比例有關(guān)。調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)
7、定度的顯示。動(dòng)態(tài)顯示節(jié)省了I/O口,降低了能耗。從節(jié)省單片機(jī)芯片I/O口和降低能耗角度出發(fā),本數(shù)字電子鐘數(shù)碼管顯示選擇設(shè)計(jì)采用方案二。3、 數(shù)碼管驅(qū)動(dòng)選擇方案方案一:上拉電阻驅(qū)動(dòng)方式。數(shù)碼管段碼與接有上拉電阻的單片機(jī)芯片I/O口相連,通過編程,單片機(jī)芯片即控制段碼電平的高低。該方式經(jīng)費(fèi)低,但實(shí)物制作較復(fù)雜。方案二:74LS245芯片驅(qū)動(dòng)方式。數(shù)碼管段碼與74LS245芯片B口相連,74LS245芯片A口與單片機(jī)芯片I/O口,通過編程,單片機(jī)芯片即可控制段碼電平的高低。該方式實(shí)物制作簡(jiǎn)單,增強(qiáng)驅(qū)動(dòng)數(shù)碼管段碼能力。 從實(shí)物制作簡(jiǎn)易程度與驅(qū)動(dòng)數(shù)碼管段碼能力角度出發(fā),本數(shù)字電子鐘數(shù)碼管驅(qū)動(dòng)選擇設(shè)計(jì)采用
8、方案二。三、 硬件單元電路設(shè)計(jì)與參數(shù)計(jì)算1、電源電路 本數(shù)字電子鐘設(shè)計(jì)所需電源電壓為直流、電壓值大小5V的電壓源 。從硬件實(shí)物設(shè)計(jì)簡(jiǎn)易程度與經(jīng)費(fèi)方面考慮,用兩節(jié)電壓值大小2.5V干電池與電路電壓源引腳相連接即可達(dá)到硬件設(shè)計(jì)要求。即本數(shù)字電子鐘設(shè)計(jì)用兩節(jié)電壓值大小2.5V干電池做硬件電路電壓源。2、按鍵電路 本數(shù)字電子鐘設(shè)計(jì)所需按鍵用于進(jìn)行顯示時(shí)間的調(diào)整與設(shè)置擴(kuò)展的小鍵盤。單片機(jī)芯片4個(gè)I/O口可與按鍵直接相連,通過編程,單片機(jī)芯片即可控制按鍵接口電平的高低,即按鍵的開與關(guān),以達(dá)到用按鍵進(jìn)行顯示時(shí)間的調(diào)整與設(shè)置擴(kuò)展的小鍵盤的設(shè)計(jì)要求。3、時(shí)鐘電路單片機(jī)芯片可使用內(nèi)部時(shí)鐘電路和外部時(shí)鐘電路兩種方式
9、產(chǎn)生電路所需的時(shí)鐘脈沖,內(nèi)部時(shí)鐘電路實(shí)現(xiàn)可用石英晶體和微調(diào)電容外接即可達(dá)到,外部時(shí)鐘電路實(shí)現(xiàn)需要一個(gè)外部脈沖源引入脈沖信號(hào)以保證個(gè)單片機(jī)之間時(shí)鐘信號(hào)的同步。從硬件實(shí)現(xiàn)難易角度考慮,內(nèi)部時(shí)鐘電路的實(shí)現(xiàn)比外部時(shí)鐘電路的實(shí)現(xiàn)更簡(jiǎn)易。既本數(shù)字電子鐘設(shè)計(jì)所需的時(shí)鐘源采用內(nèi)部時(shí)鐘電路實(shí)現(xiàn)。所用定時(shí)方式為工作方式1,石英晶振為12M,即最小定時(shí)時(shí)間為1us,最大定時(shí)時(shí)間約為65.5ms,其電路圖如下圖2所示。 圖2 時(shí)鐘電路圖4、 驅(qū)動(dòng)電路 從實(shí)物制作簡(jiǎn)易程度與驅(qū)動(dòng)數(shù)碼管段碼能力角度出發(fā),本數(shù)字電子鐘設(shè)計(jì)采用數(shù)碼管段碼與74LS245芯片B口相連,74LS245芯片A口與單片機(jī)芯片I/O口,通過編程,單片機(jī)
10、芯片即可控制段碼電平的高低的方式實(shí)現(xiàn)數(shù)碼管段碼控制,74LS245芯片圖如下圖3所示。 圖3 74LS245芯片圖5、 LED顯示電路 數(shù)字電子鐘設(shè)計(jì)的顯示模塊用8個(gè)一位數(shù)碼管實(shí)現(xiàn),也可用兩個(gè)四位一體數(shù)碼管實(shí)現(xiàn)。兩種實(shí)現(xiàn)方式實(shí)現(xiàn)效果一樣。從實(shí)物制作的難易程度出,本數(shù)字電子鐘設(shè)計(jì)采用兩個(gè)四位一體數(shù)碼管實(shí)現(xiàn)。即數(shù)碼管引腳與單片機(jī)芯片和74LS245對(duì)應(yīng)引腳相連接。 單片機(jī)電路 本數(shù)字電子鐘設(shè)計(jì)采用AT89S52單片機(jī)芯片作為中央控制器,實(shí)現(xiàn)信號(hào)的輸出、LED的顯示及相關(guān)的控制功能。四、 軟件設(shè)計(jì)與流程圖1、數(shù)字電子時(shí)鐘主程序流程圖 主程序流程圖如下圖圖4所示。MAIN定義堆棧區(qū)顯示緩沖單元清0調(diào)用
11、顯示子程序定時(shí)器0工作方式1裝載計(jì)數(shù)初值定時(shí)開始開中斷設(shè)置循環(huán)次數(shù)等待定時(shí)中斷請(qǐng)求開始 圖4 數(shù)字電子時(shí)鐘主程序流程圖2、中斷服務(wù)程序流程圖 中斷服務(wù)程序流程圖如下圖圖5所示。 Y是否滿24h?顯示緩沖單元清0返回NY是否滿60m?小時(shí)加1分值加1N計(jì)數(shù)器重新加載循環(huán)次數(shù)加1是否滿1s?是否滿60s?秒值加1N開始 圖5 中斷服務(wù)程序流程圖3、顯示子程序流程圖 顯示子程序流程圖如下圖圖6所示。 DISPLAY秒數(shù)加1秒值按鍵按下?分值按鍵按下?小時(shí)按鍵按下?切換鍵是否按下?YN小時(shí)>=12?NY標(biāo)志位顯示B標(biāo)志位顯示A分離秒值個(gè)位、十位顯示分十位、個(gè)位分離小時(shí)個(gè)位、十位顯示秒十位、個(gè)位分
12、離分值個(gè)位、十位顯示小時(shí)十位、個(gè)位分?jǐn)?shù)加1時(shí)數(shù)加1暫停鍵按下?顯示HYYYY開始 圖6 顯示子程序流程圖五、總原電路及元器件清單 1總原理圖 最小系統(tǒng)控制原理圖如下圖圖7所示, 數(shù)碼管原理圖如下圖圖8所示。 圖7 最小系統(tǒng)控制原理圖圖8 數(shù)碼管原理圖 2PCB制板圖 數(shù)碼管PCB圖如下圖圖9所示,最小系統(tǒng)控制PCB圖如下圖圖10所示。 圖9 數(shù)碼管PCB圖 圖10 最小系統(tǒng)PCB圖3整體電路仿真圖整體電路仿真圖如下圖圖11所示。 圖11 整體電路仿真圖4元件清單名稱數(shù)量型號(hào)芯片1片AT89S52四位一體數(shù)碼管2個(gè)共陰極按鍵5個(gè)晶振1個(gè)12M電容2個(gè)30p74LS2451片電阻2個(gè)220歐電阻1
13、個(gè)1.5k發(fā)光二極管1個(gè)LED六、安裝與調(diào)試 1. 電路安裝 安照電路原理圖把元器件安裝到已打好的銅板對(duì)應(yīng)的位置,把個(gè)元器件固定在銅板后,用導(dǎo)線把對(duì)應(yīng)的元器件的引腳相連接,再用焊錫焊接好即可。注意事項(xiàng):(1)元器件的布局應(yīng)盡量集中,且各個(gè)元器件間引腳的連線應(yīng)盡量短、不彎曲,跳線盡量少。(2)各個(gè)元器件引腳的焊接不要虛焊。2. 電路調(diào)試 把相應(yīng)編譯好的目標(biāo)程序代碼加載到單片機(jī)芯片AT89S52,可接上5V電壓源即開始進(jìn)行硬件電路的調(diào)試工作。如果顯示結(jié)果不符合設(shè)計(jì)要求,即檢查電路各連接點(diǎn)是否正確連接,再次進(jìn)行硬件電路的調(diào)試工作,或是檢查代碼程序是否符合硬件電路的設(shè)計(jì),若有錯(cuò)即進(jìn)行相應(yīng)的修改,編譯后
14、,再進(jìn)行硬件電路的調(diào)試工作。如此反復(fù)操作,直到調(diào)試出正確結(jié)果。3. 軟件調(diào)試 (1) 在計(jì)算機(jī)上運(yùn)行程序調(diào)試軟件Keil,進(jìn)行程序調(diào)試,若顯示0錯(cuò)誤(S),0警告(S)即證明程序代碼正確。(2)在Proteus軟件畫好的電路原理圖中加載程序代碼到單片機(jī)芯片AT89S52中,進(jìn)行模擬仿真。若出現(xiàn)錯(cuò)誤,查看錯(cuò)誤后進(jìn)行相應(yīng)修改再進(jìn)行調(diào)試與模擬仿真,直到調(diào)試出正確結(jié)果。七、性能測(cè)試與分析1、系統(tǒng)上電后進(jìn)行功能的測(cè)試,通過測(cè)試觀察到,系統(tǒng)上電后數(shù)碼管上顯示時(shí)間:12-00-00, 圖12 實(shí)物圖一接著按下K1按鍵調(diào)整時(shí)間小時(shí)數(shù)的顯示,即小時(shí)加1,按下K2按鍵調(diào)整時(shí)間分鐘數(shù)的顯示,即分鐘加1,按下K3按鍵
15、調(diào)整時(shí)間秒數(shù)的顯示,即秒數(shù)加1,實(shí)物圖二如下圖圖13所示。 圖13 實(shí)物圖二然后按下K5按鍵調(diào)整時(shí)間12 小時(shí)制的顯示或24 小時(shí)制的顯示。在24小時(shí)制的顯示的情況下,顯示時(shí)間制的數(shù)碼管上不顯示,只顯示時(shí),分,秒;在12 小時(shí)制的顯示的情況下,如果小時(shí)數(shù)大于12小時(shí)的情況,一個(gè)數(shù)碼管上顯示B(表示下午);反之如果小時(shí)數(shù)小于12小時(shí)的情況,一個(gè)數(shù)碼管上顯示A(表示上午);,實(shí)物圖三如圖14所示。 圖13 實(shí)物圖三通過測(cè)試,本作品設(shè)計(jì)實(shí)現(xiàn)了數(shù)字電子鐘的基本功能,還增加了時(shí)間制轉(zhuǎn)換的功能,且系統(tǒng)工作穩(wěn)定。八、結(jié)論與心得1、結(jié)論 本單片機(jī)數(shù)字電子鐘系統(tǒng)的功能基本符合顯示格式為:XX:XX:XX, 即時(shí)
16、:分:秒。時(shí)間可采用12 小時(shí)制顯示或24 小時(shí)制顯示,采用12 小時(shí)顯示時(shí)必須在另外一個(gè)數(shù)碼管上顯示A(表示上午)或B(表示下午)。設(shè)置一個(gè)按鍵用于時(shí)間顯示方式的切換。系統(tǒng)上電后從上電時(shí)初始化顯示: 12-00-00開始計(jì)時(shí),能進(jìn)行時(shí)間的調(diào)整,可暫停時(shí)間的變動(dòng),暫停時(shí)一位數(shù)碼管上顯示字母H,可按自己的要求設(shè)置擴(kuò)展的小鍵盤個(gè)數(shù)設(shè)計(jì)任務(wù)的要求,經(jīng)過測(cè)試數(shù)據(jù)顯示, 系統(tǒng)的可靠性已經(jīng)基本能夠達(dá)到實(shí)際電子鐘的設(shè)計(jì)要求,同時(shí)本單片機(jī)數(shù)字電子鐘系統(tǒng)具有擴(kuò)展性。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)實(shí)際問題、提出實(shí)際問題、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際學(xué)習(xí)能力、動(dòng)手能力的具體訓(xùn)練
17、和考察過程。在此次數(shù)字鐘設(shè)計(jì)過程中, 在學(xué)習(xí)新知識(shí)的同時(shí),把在課程中學(xué)到的理論知識(shí)運(yùn)用到實(shí)際作品設(shè)計(jì)、操作中,更進(jìn)一步地熟悉了單片機(jī)芯片的結(jié)構(gòu)及掌握了其工作原理和具體的使用方法與相關(guān)元器件的參數(shù)計(jì)算方法、使用方法,了解了電路的開發(fā)和制作及課程設(shè)計(jì)報(bào)告的編寫。加深了對(duì)相關(guān)理論知識(shí)及專業(yè)知識(shí)的掌握度,增強(qiáng)自身的動(dòng)手能力,鍛煉及提高了理解問題、分析問題、解決問題的能力,更深刻的體會(huì)到了理論聯(lián)系實(shí)際的重要性,進(jìn)一步掌握畫圖軟件的使用和提高相應(yīng)的畫圖操作水平及技巧。九、參考文獻(xiàn)1 沈精虎.Protel 99SE基礎(chǔ)教程J. 2 李廣弟,朱月秀,冷祖祁. 單片機(jī)的硬件結(jié)構(gòu)J . 頁(yè)碼148。3 譚丙煜.怎
18、樣撰寫科學(xué)論文M.2版.沈陽(yáng):遼寧人民出版社,1982:5-6.(本條為中文圖書著錄格式)3 陳正義. 單片機(jī)控制實(shí)習(xí)D.頁(yè)碼148。 十、致謝 從課題的開始到最終的完成,本課程設(shè)計(jì)及報(bào)告論文是在指導(dǎo)老師的精心指導(dǎo)和同學(xué)的熱心幫助下順利完成的。本課程設(shè)計(jì)能順利地完成,與父母多年來一如既往的支持和關(guān)懷是分不開的,在此,向任勞任怨、含辛茹苦的父母致以衷心的感謝! 此外衷心感謝在本次課程設(shè)計(jì)中指點(diǎn)和幫助我的指導(dǎo)老師與同學(xué)!感謝學(xué)院為我們提供了良好課程設(shè)計(jì)儀器設(shè)備及學(xué)習(xí)環(huán)境。十一、程序清單/* 描述* * 電子時(shí)鐘,LED數(shù)碼管顯示,晶振使用12MHz * K1-時(shí)調(diào)整 * K2-分調(diào)整 * K3-秒
19、調(diào)整 K4-時(shí)間暫停 K5-12小時(shí)制和24小時(shí)制切換* 上電時(shí)初始化顯示:12-00-00 *#include <reg51.h>#include <intrins.h>unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code11=0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;/0,1,2,3 4, 5, 6, 7, 8, 9, off /共陰數(shù)碼管unsigned char data dis_
20、buf8;unsigned char data dis_index;unsigned char hour,min,sec;unsigned char sec100; unsigned char flag,flag1,flag2; /falg用于時(shí)間停止和啟動(dòng)標(biāo)志,falg1為12小時(shí)和24小時(shí)的切換標(biāo)志,falg2為12小時(shí)的上午和下午的切換標(biāo)志sbit K1 = P10;/用于時(shí)的調(diào)整sbit K2 = P11;/用于分的調(diào)整sbit K3 = P12;/用于秒的調(diào)整sbit K4 = P13;/用于時(shí)間調(diào)整的開關(guān),按下一次暫停時(shí)間,再按一次時(shí)則開始計(jì)時(shí)sbit K5 = P14;/用于24
21、小時(shí)制和12小時(shí)制的切換bit scan_key();void proc_key();void inc_sec();void inc_min();void inc_hour();void inc_hour1();void delayms(unsigned char ms);void main(void) P0 = 0xff; P2 = 0xff; TMOD = 0x11; / 定時(shí)器0, 1工作模式1, 16位定時(shí)方式 TH1 = 0xd8;/使用12MHz的晶振,定時(shí)時(shí)間為:10ms TL1 = 0xf0; TH0 = 0xf8; /定時(shí)時(shí)間為2ms,用于數(shù)碼管的動(dòng)態(tài)掃描 TL0 = 0x3
22、0; hour = 12; min = 00; sec = 00; sec100 = 0; flag = 0; flag1 = 0; dis_buf0 = dis_codehour / 10; / 時(shí)十位 dis_buf1 = dis_codehour % 10; / 時(shí)個(gè)位 dis_buf2 = dis_codemin / 10; / 分十位 dis_buf3 = dis_codemin % 10; / 分個(gè)位 dis_buf4 = dis_codesec / 10; / 秒十位 dis_buf5 = dis_codesec % 10; / 秒個(gè)位 dis_buf6 = 0x00; / 關(guān)閉
23、該位數(shù)碼管 dis_buf7 = 0x7f; / 顯示 B 表示下午 dis_digit = 0xfe; dis_index = 0; TCON = 0x01;/T1:TF1 TR1 T0:TF0 TR0 定時(shí)中斷:IE1 IT1 IE0 IT0 /外部中斷0的觸發(fā)方式為下降沿觸發(fā) IE = 0x8a; / 使能timer0,1 中斷,控制IE寄存器的格式:EA - - ES ET1 EX1 ET0 EX0 / 1 0 0 0 1 0 10 TR0 = 1; /開定時(shí)器0 TR1 = 1; /開定時(shí)器1 key_v = 0x1f;/定義為K1,K2,K3,K4,K5相應(yīng)的按鍵,當(dāng)沒有按下時(shí)則為
24、,K1,K2,K3,K4,K5,都為高電平,0x1f while(1) if(scan_key()/先掃描一次是否有按鍵按下 delayms(10); /延時(shí) if(scan_key() /再次掃描一次是否有按鍵 按下 key_v = key_s;/將key_s的值傳給key_v proc_key(); bit scan_key() key_s = 0x00; /設(shè)置key_s先為0 key_s |=K5; key_s <<= 1; key_s |= K4; key_s <<= 1; key_s |= K3; key_s <<= 1; key_s |= K2
25、; /K2 -> P1.1,若K2按下則為0,當(dāng)K2按下時(shí)key_s與K2或的結(jié)果會(huì)使得key_s為0x00,未按下時(shí)K2則為1,key_s與K2或的結(jié)果會(huì)使得key_s為0x01 key_s <<= 1; /將key_s左移一位, key_s |= K1;/K1 -> P1.0,若K1按下則為0,當(dāng)K1按下時(shí)key_s與K1或的結(jié)果會(huì)使得key_s為0x00或是0x02,沒有按下時(shí)則得到的結(jié)果為0x01或是0x03 return(key_s key_v); /進(jìn)行邏輯異或運(yùn)算,相同為0,不同為1. 已經(jīng)定義了變量:key_v = 0x1f; 如果兩個(gè)按鍵都沒有按下則是
26、得到0x03,異或的結(jié)果是為0void proc_key() if(K4=0) /K4是否按下 flag+; /關(guān)閉定時(shí)器 TR1=0; /關(guān)閉定時(shí)器1 dis_buf6 = 0x76; / 顯示 H,用于表示設(shè)定時(shí)間的標(biāo)志 if(K5=0) flag1+; /flag1的初始值是0,falg1為12小時(shí)和24小時(shí)的切換標(biāo)志 if(flag1=1) /24小時(shí)制 if(dis_buf7=0x7f) /判斷是不是下午 hour=hour+12;dis_buf7=0x00; dis_buf7 = 0x00; / 關(guān)閉顯示 if(hour >23) hour = 0; if(hour >
27、 9) dis_buf0 = dis_codehour / 10; / 時(shí)十位 else dis_buf0 = 0x00; / 當(dāng)小時(shí)的十位為0時(shí)不顯示 dis_buf1 = dis_codehour % 10; / 時(shí)個(gè)位if(flag1=2) /12小時(shí)制flag1=0;if(hour>12|hour=0) /判斷是不是下午,并用于處理24小時(shí)制的大于13和等于0的處理 if(hour>12) hour=hour-12;if(hour=0)hour=12;dis_buf7=0x7f; /顯示下午 B elsedis_buf7 = 0x77; / 顯示 A 表示上午if(hour
28、 > 9) dis_buf0 = dis_codehour / 10; / 時(shí)十位 else dis_buf0 = 0x00; / 當(dāng)小時(shí)的十位為0時(shí)不顯示 dis_buf1 = dis_codehour % 10; / 時(shí)個(gè)位 if(key_v & 0x01) = 0) / K1,當(dāng)只有K1按下時(shí),則key_s為0x02,沒有按下時(shí)key_s則為0x03 if(flag1=0) inc_hour(); if(flag1=1) inc_hour1(); else if(key_v & 0x02) = 0) / K2, 當(dāng)只有K2按下時(shí),則key_s為0x01,沒有按下時(shí)k
29、ey_s則為0x03 min+; if(min > 59) min = 0; dis_buf2 = dis_codemin / 10; / 分十位 dis_buf3 = dis_codemin % 10; / 分個(gè)位 else if(key_v & 0x04) = 0) / K3是否按下 sec+; if(sec > 59) sec = 0; dis_buf4 = dis_codesec / 10; / 秒十位 dis_buf5 = dis_codesec % 10; / 秒個(gè)位 if(flag=2) flag=0;TR1=1;dis_buf6 = 0x00;if(flag
30、1=0)if(flag2) dis_buf7 = 0x77; / 顯示 A 表示上午 else dis_buf7 = 0x7f; / 顯示 B 表示下午 void timer0() interrupt 1/ 定時(shí)器0中斷服務(wù)程序, 用于數(shù)碼管的動(dòng)態(tài)掃描/ dis_index - 顯示索引, 用于標(biāo)識(shí)當(dāng)前顯示的數(shù)碼管和緩沖區(qū)的偏移量/ dis_digit - 位選通值, 傳送到P0口用于選通當(dāng)前數(shù)碼管的數(shù)值, 如等于0xfe時(shí),/ 選通P2.0口數(shù)碼管/ dis_buf - 顯于緩沖區(qū)基地址 TH0 = 0xf8; /定時(shí)時(shí)間為2ms TL0 = 0x30; P2 = 0xff; / 先關(guān)閉所有數(shù)碼管 P0 = dis_bufdis_index; / 顯示代碼傳送到P0口 P2 = dis_digit; / dis_digit = _crol_(dis_digit,1); / 位選通值左移, 下次中斷時(shí)選通下一位數(shù)碼管 dis_index+; / dis_index &= 0x07; / 8個(gè)數(shù)碼管全部掃描完一遍之后,再回到第一個(gè)開始下一次掃描 ,限定了只掃描8位,當(dāng)為超過8
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 分紅比例合同范本
- 公路規(guī)劃合同范本
- 協(xié)議合同范本寫法
- 兼職還款合同范本
- pos機(jī)推廣合同范本
- 入股店鋪協(xié)議合同范本
- 醫(yī)院整體轉(zhuǎn)讓合同范本
- 制作廣告門頭合同范本
- 企業(yè)整體托管經(jīng)營(yíng)合同范本
- 公司簽訂業(yè)務(wù)合作合同范本
- 間質(zhì)性腎炎課件
- 院感基礎(chǔ)知識(shí)培訓(xùn)
- 安全生產(chǎn)責(zé)任制考核制度和考核表(完整版)
- 19J102-1 19G613混凝土小型空心砌塊墻體建筑與結(jié)構(gòu)構(gòu)造
- 2024年常州信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 《中國(guó)陶瓷史》課件-1-中國(guó)陶瓷史概述
- 英語教師課堂提問省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- 經(jīng)皮式氣管切開術(shù)
- 2024嘉興市城南街道招聘筆試參考題庫(kù)附帶答案詳解
- 個(gè)人維修收款收據(jù)
- 代辦電瓶車車牌照委托書
評(píng)論
0/150
提交評(píng)論