您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
應(yīng)用程序設(shè)計(jì)入門再高級(jí)的單片機(jī)也是解決問(wèn)題的一個(gè)工具,如何靈活運(yùn)用已掌握的外設(shè)模塊來(lái)滿足功能需求以解決實(shí)際問(wèn)題,是我們學(xué)習(xí)單片機(jī)開(kāi)發(fā)的目標(biāo)。你的程序?qū)懙煤芸,每個(gè)外設(shè)用得很溜,并不能代表你解決問(wèn)題的能力就很好。這需要通過(guò)實(shí)際開(kāi)發(fā)的磨練與經(jīng)驗(yàn)的積累。
實(shí)際上每個(gè)工程師在不斷的開(kāi)發(fā)過(guò)程中,多多少少都會(huì)形成自己的思維模式和開(kāi)發(fā)習(xí)慣。因此,在這一節(jié)我們所闡述的也只是本人的思維模式與設(shè)計(jì)習(xí)慣,可以拋磚引玉,作為參考。
1、題目需求
2、基本思路
我的設(shè)計(jì)模式是自上而下,從整體到局部。所以,在編寫代碼之前,我的腦子里面基本上已經(jīng)有了比較完整的輪廓,包括應(yīng)該定義那些變量,應(yīng)該安排那些函數(shù),程序框架大致如何。
從本題的需求分析中,我們可以獲得以下的信息:
秒閃功能,需要使用定時(shí)器0,得安排一個(gè)初始化函數(shù)Init_Timer0()和一個(gè)中斷服務(wù)函數(shù)SeviceTimer0()。
定時(shí)器0使用16位模式,在12MHz晶振情況下,最大的定時(shí)值也只有65.535ms,因此要定時(shí)500ms不能夠直接實(shí)現(xiàn),那么就需要多次定時(shí)進(jìn)行累加。把定時(shí)器0的間隔定時(shí)確定為50ms比較方便,累計(jì)10次就是500ms了,那么就需要一個(gè)定時(shí)累計(jì)變量t_count。
按鍵功能,首先要定義一個(gè)按鍵掃描函數(shù)ScanKeys(),在掃描過(guò)程中需要做去抖動(dòng)處理,那么就要安排一個(gè)簡(jiǎn)易的延時(shí)函數(shù)Delay()。
再檢查思考一下,還有什么嗎?沒(méi)有了。
3、程序框架
嚴(yán)格來(lái)說(shuō),在開(kāi)始編寫代碼之前,應(yīng)該將程序的流程圖和數(shù)據(jù)定義表做出來(lái)。
不過(guò),對(duì)于簡(jiǎn)單的功能,可以通過(guò)編寫代碼搭建整體框架的方式來(lái)體現(xiàn)。這就跟建設(shè)框架結(jié)構(gòu)的房子一樣,先把毛坯建好,再去做個(gè)單元進(jìn)行裝修。我比較喜歡這做。
本題在基本思路分析指導(dǎo)下,可以搭建出程序框架結(jié)構(gòu)。
4、逐個(gè)填充
定時(shí)器初始化函數(shù):這個(gè)代碼是可以重用的,直接拷貝過(guò)來(lái)就行了。
定時(shí)器中斷服務(wù)函數(shù)。
按鍵掃描函數(shù)。
就這樣,一個(gè)簡(jiǎn)單的51單片機(jī)應(yīng)用程序開(kāi)發(fā)就完成了。
5、小結(jié)
作為入門學(xué)習(xí),本系列教材到這里就結(jié)束了。實(shí)際上51單片機(jī)的內(nèi)容也差不多就這么多了。至于那些上千頁(yè)的書在講述51單片機(jī)開(kāi)發(fā)的,里面很多內(nèi)容都是各種功能外設(shè),與51內(nèi)核無(wú)關(guān),只是用51單片機(jī)操作那些外設(shè)而已。對(duì)于這部分的內(nèi)容,你學(xué)習(xí)的不是51單片機(jī)了,而是那么功能外設(shè)。在實(shí)際的應(yīng)用中,更多的是要應(yīng)用各種外設(shè)來(lái)解決各種問(wèn)題。所以,一個(gè)單片機(jī)的高手并不是把51單片機(jī)本身玩得有多溜,而是他心中掌握了多少功能模塊的應(yīng)用,設(shè)計(jì)了多少應(yīng)用的代碼,積累了多少項(xiàng)目的經(jīng)驗(yàn)。
入門教程結(jié)束了,而你們的征途才剛剛開(kāi)始,加油!!
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08