【文章內(nèi)容簡介】
錄 該 時(shí) 刻 M I N響 鈴 停返 回響 鈴 繼 續(xù)m i n = ( M I N + 5 分 鐘 ) 否 ?響 鈴 繼 續(xù)響 鈴 繼 續(xù)B e e p r = f a l s eYNYYYYYYNNNNNN 圖 鬧鈴子程序流程圖 4 系統(tǒng)調(diào)試 調(diào)試工作分硬件調(diào)試和軟件調(diào)試兩部分,調(diào)試方法介紹如下: 首先,硬件調(diào)試主要是先搭建硬件平臺(tái),然后利用萬用表等工具對(duì)電路檢查,最后應(yīng)用程序進(jìn)行功能調(diào)試 。硬件調(diào)試比較費(fèi)時(shí),需要細(xì)心和耐心,也需要熟練掌握電路原理。 然后,軟件調(diào)試可以直接應(yīng)用一些編輯或仿真軟件進(jìn)行,比如單片機(jī) C51編輯軟件 Keil。該軟件提供了一個(gè)集成開發(fā)環(huán)境 uVision,它包括 C編輯器、宏編輯器、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器。通過編譯、運(yùn)行,可以檢查程序錯(cuò)誤。但應(yīng)用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。在軟件調(diào)基于單片機(jī)的電子鬧鐘的設(shè)計(jì) 第 13 頁 共 24 頁 試過程中要仔細(xì)耐心,即便是多寫或少些一兩個(gè)字符,都無法編譯成功。還有一種方式,即應(yīng)用仿真軟件搭建電路的軟件平臺(tái),再導(dǎo)入程序進(jìn)行仿真調(diào)試。如果電路出 錯(cuò),可以在計(jì)算機(jī)上方便的修改電路,程序出錯(cuò)可以重新編輯程序,這種方法節(jié)時(shí)、省力,經(jīng)濟(jì)、方便。 總之,調(diào)試過程是一個(gè)軟硬件相結(jié)合調(diào)試的過程,硬件電路是基礎(chǔ),軟件是檢測硬件電路和實(shí)現(xiàn)其功能的關(guān)鍵。 硬件調(diào)試 計(jì) 單片機(jī)基礎(chǔ)電路調(diào)試 單片機(jī)基礎(chǔ)電路包括電源、單片機(jī)、外部時(shí)鐘震蕩電路、復(fù)位電路和外部接口電路。調(diào)試過程需要注意以下幾點(diǎn): 1. 檢查電源是否完好。 2. 單片機(jī)電源要連接正確,并且保證 AT89C51 的 31 號(hào)引腳接高電平。 AT89C51的 31 號(hào)引腳是外部程序存儲(chǔ)器選擇信號(hào)端,當(dāng)該引腳為高 電平時(shí),單片機(jī)會(huì)一直從片內(nèi)程序存儲(chǔ)器內(nèi)取指令。 3. 如果使用 P0口做 I/O 口,要接上拉電阻。 4. 使用萬用表排查電路中是否存在斷路或者短路情況。筆者在制作外部接口電路時(shí)使用的是排針,焊接時(shí)容易出現(xiàn)管腳之間短路,所以在上電以前必須先排查電路。 5. 對(duì) LCD1602 顯示屏的調(diào)試,旋動(dòng)與芯片第三管腳相連的變阻器到顯示屏出現(xiàn)欲顯示的內(nèi)容,并將其調(diào)清晰即可。 DS1302 電路調(diào)試 該電路包含 DS1302 芯片、主電源、備用電源、晶振等部分。在與單片機(jī)連接的過程中需要注意以下幾點(diǎn): 清楚 DS1302 與單 片機(jī)連接的管腳。本設(shè)計(jì)定義為: DS1302 的 SCLK 連接 ,I/O 連接 , RST 連接 。 注意電源正負(fù)極連接。 DS1302 接 的晶振。該晶振體型比較小,在焊接時(shí)要小心,注意不要將晶振引腳弄斷。同時(shí)也要盡量使晶振離 DS1302 的 X X2引腳近距離焊接。 編寫 DS1302 的時(shí)鐘 /日歷程序,只要求能夠正確顯示時(shí)間。燒錄進(jìn)單片機(jī),檢查電路電源正負(fù)極連接是否正確,檢查 和 引腳接線是否正確。檢查無誤后可以上電檢查。 基于單片機(jī)的電子鬧鐘的設(shè)計(jì) 第 14 頁 共 24 頁 軟件調(diào)試 在硬件調(diào)試完畢的基礎(chǔ)上,需要進(jìn)一 步完善程序,也就是進(jìn)入軟件調(diào)試階段。在本設(shè)計(jì)中,軟件調(diào)試主要分兩大部分:實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試、按鍵子程序調(diào)試。將這兩部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。關(guān)于這兩部分的調(diào)試只需要在主程序中分別調(diào)用這兩部分程序即可,此處不再贅述。 結(jié)論 基于單片機(jī)實(shí)現(xiàn)電子鬧鐘,僅僅是眾多方法之一。并且市場上的實(shí)時(shí)時(shí)鐘日歷芯片品類繁多, IC化的傳感器各種各樣,顯示方式也愈趨于人性化。所以多功能電子鬧鐘有多種實(shí)現(xiàn)方案,能夠?qū)崿F(xiàn)的功能也很多,筆者已經(jīng)通過仿真和調(diào)試,實(shí)現(xiàn)了時(shí)間日歷顯示和校對(duì)、鬧鈴等功能。本文采用 51 單片機(jī) C 語言進(jìn)行編程,當(dāng)然也可以應(yīng)用匯編語言編程。由于筆者能力有限,提供的程序還可以進(jìn)一步優(yōu)化,并且還可以根據(jù)需求為電子鬧鐘增設(shè)新功能。 致謝 本課題在選題及研究過程 是在孫磊 老師的親切關(guān)懷和悉心指導(dǎo)下完成的。 他 嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。從課題的選擇到項(xiàng)目的最終完成, 孫 老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。 孫 老師不僅在學(xué)業(yè)上給我以精心指導(dǎo),同時(shí)還在思想、生活上給我以無微不至的關(guān)懷,在此謹(jǐn)向 孫 老師致以誠摯的謝意和崇高的敬意。 還要感謝幫助過我的同學(xué)們,他們 的陪伴讓這將近半載的時(shí)光充滿色彩! 參考文獻(xiàn) 1. 王東峰等 .單片機(jī) C語言應(yīng)用 100 例 [M].電子工業(yè)出版社, 2020。 2. 周仲 . 國產(chǎn)集成電路應(yīng)用 500例 [M]. 北京:電子工業(yè)出版社 , 。 3. 夏繼強(qiáng) . 單片機(jī)實(shí)驗(yàn)與實(shí)踐教程 [M]. 北京:北京航空航天大學(xué)出版社 ,。 4. Daniel J Pack and Steven F Barrett Microcontroller Theory and Applications: HC12 and S12[M] Prentice Hall 2020. 5. Dogan Ibrahim Microcontroller Based Apllied digital control[M] John Wiley and Sons Australia 2020. 基于單片機(jī)的電子鬧鐘的設(shè)計(jì) 第 15 頁 共 24 頁 6. Steven F. Barrett, Daniel Pack Atmel AVR Microcontroller Primer[M] Man amp。 Claypool Publishers 20201215. Title The design of the electric clock based on single chip Abstract This design is mainly for realizing a electronic clock with regular alarm function that can display properly clock/calendar. The current digital electronic clock with a greater amount of discrete ponents, not only occupied large space and low utilization ratio. Microcontroller is a CPU, RAM, ROM, timer / counter and a variety of interfaces in one of the microcontroller. Its small size, low cost, powerful, widely used in smart products and industrial automation. This design apply STC12C5A16AD chip microcontroller as the core,use LCD1602 to display,employ DS1302 chip to achieve clock/calendar function. The advantages of this method is simple, reliable performance, circuit good realtime performance, high precision time, the operation is simple, programming easier. Keywords electronic clock, microcontroller, C programming language 基于單片機(jī)的電子鬧鐘的設(shè)計(jì) 第 16 頁 共 24 頁 部分重要程序 函 數(shù) 申 明 void delay_us(uchar x)。 //延時(shí) 2 * x + 5 us void delay_ms(uint z)。 //延時(shí)任意 Ms void DS1302_writebyte(uchar writebyte)。 //往 DS1302寫一個(gè)字節(jié) uchar DS1302_readbyte()。 //往 DS1302讀一個(gè)字節(jié) uchar DS1302_read(uchar DS1302_add)。 //往 DS1302指定地址讀數(shù)據(jù) void DS1302_write(uchar DS1302_add,uchar DS1302_data)。 //往 DS1302指定地址寫數(shù)據(jù) void DS1302_init()。 //DS1302初始化函數(shù) void DS1302_set_time()。 //設(shè)置時(shí)間 void DS1302_read_time()。 //讀取時(shí)間 void LCD1602_send_byte(uchar LCD1602