當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]   用C語言編寫的單片機(jī)流水燈程序的軟件和硬件,可以讓八個(gè)LED輪流點(diǎn)亮,每個(gè)燈點(diǎn)亮和熄滅時(shí)間均為1秒。是利用單片機(jī)I/O口控制外部設(shè)備的簡單例子。當(dāng)然,在你掌握了本程序后,完全可以充分發(fā)揮你的想

  用C語言編寫的單片機(jī)流水燈程序的軟件和硬件,可以讓八個(gè)LED輪流點(diǎn)亮,每個(gè)燈點(diǎn)亮和熄滅時(shí)間均為1秒。是利用單片機(jī)I/O口控制外部設(shè)備的簡單例子。當(dāng)然,在你掌握了本程序后,完全可以充分發(fā)揮你的想象,改變一下程序內(nèi)容和燈的接法(比如用光耦驅(qū)動(dòng)繼電器來控制霓虹燈),做出各種變化非凡的大型燈光廣告牌。
  
  一、硬件電路
  
  因?yàn)殡娐酚脝纹瑱C(jī)控制,所以電路非常簡潔。其電路原理圖見下圖,印制板圖如下圖所示。


  

  

   電路的核心部分是AT89C2051單片機(jī),前面提到它有Pl和P3兩組I/O口,我們這里只用到Pl口,共8個(gè)引腳。圖中Cl、R9組成典型的上電復(fù)位(即在加電時(shí)單片機(jī)復(fù)位)電路,XTAL、C2、C3與AT89C2051片內(nèi)振蕩電路組成時(shí)鐘振蕩器。值得注意的是,C2、C3的容量不能與圖中數(shù)值偏差太大,否則可能引起不起振或振蕩不穩(wěn)定。XTAL的頻率可以在4-20MHz之間,不過,頻率的變化會(huì)導(dǎo)致程序運(yùn)行速度的變化,這樣就需要調(diào)整延時(shí)子函數(shù)的參數(shù)。事實(shí)上,不調(diào)整參數(shù)亦可,只是此時(shí)延遲時(shí)間不再是1秒,其延遲時(shí)間會(huì)隨著XTAL頻率的降低而增加。
  
  二、軟件部分
  
  本程序包含兩個(gè)函數(shù),一個(gè)是主函數(shù),另一個(gè)是延時(shí)子函數(shù)。源程序如下(為了便于講解,我們?yōu)槊啃谐绦蚣由狭司幪?hào)):

  程序各行作用如下:
  
  00行:把AT89C2051的頭文件“AT89x051.H”包含進(jìn)來。
  
  01行:聲明Delay()延時(shí)子函數(shù),該函數(shù)有一個(gè)無符號(hào)整型參數(shù)k,同時(shí)函數(shù)前面的void表明函數(shù)不返回函數(shù)值。
  
  02行:延時(shí)子函數(shù)的開始,同時(shí)聲明兩個(gè)無符號(hào)整型變量i和j。
  
  不過請注意,這里沒有象上期的程序一樣,把表示函數(shù)開始的“{”單獨(dú)成行,而是把下一行寫在一起了。事實(shí)上,寫C程序的時(shí)候,可以把多行寫作一行,C編譯器只要遇到分號(hào)就認(rèn)為是一行語句的結(jié)束。
  
  當(dāng)然,我們不能因?yàn)镃程序有這個(gè)特點(diǎn),就隨意把多行合作一行書寫,實(shí)際書寫C程序的時(shí)候,還是要養(yǎng)成良好的程序書寫習(xí)慣,按照約定俗成的原則來書寫。
  
  03行:聲明for()循環(huán)。這個(gè)循環(huán)的初始條件是i=0,終止條件是i<k,循環(huán)計(jì)數(shù)是每循環(huán)一次,用手計(jì)數(shù)的變量i加1。因此,這個(gè)循環(huán)的循環(huán)次數(shù)就是k次。這樣,只要改變k的值(即改變Delay()延時(shí)子函數(shù)的參數(shù)k的值),就可以很容易地控制循環(huán)次數(shù),從而獲得不同的延時(shí)時(shí)間。
  
  04行:聲明嵌套在03循環(huán)中的一個(gè)新的for()循環(huán),這個(gè)循環(huán)與上一個(gè)循環(huán)相似,其循環(huán)次數(shù)是120次。本循環(huán)與上一個(gè)循環(huán)嵌套后,使得總的循環(huán)次數(shù)達(dá)120×k次。
  
  05行:第一個(gè)分號(hào),表示L條空語句,占用一個(gè)機(jī)器時(shí)間,以實(shí)現(xiàn)延時(shí)的目的。后面的兩個(gè)“}”中,第一個(gè)“}”是04行for()循環(huán)的結(jié)束標(biāo)志,程序遇到它時(shí),將自動(dòng)返回04行,使用于循環(huán)計(jì)數(shù)的變量j加1,同時(shí)判斷j是否小于120,如果否,則轉(zhuǎn)入05行;第二個(gè)是03行for()循環(huán)的結(jié)束標(biāo)志,程序遇到它則會(huì)返回03行。
  
  06行:Delay()延時(shí)子函數(shù)的結(jié)束標(biāo)志。
  
  07行:聲明主函數(shù)main()。這里的主函數(shù)不需要參數(shù),也不返回函數(shù)值。
  
  08行:主函數(shù)的開始標(biāo)志“{”。
  
  與01行的Delay()延時(shí)子函數(shù)一樣,習(xí)慣上也會(huì)把下一行的語句與本行的花括號(hào)寫在一起。
  
  09行:聲明一個(gè)無條件for()循環(huán),“;;”以使單片機(jī)重復(fù)執(zhí)行任務(wù),使流水燈能不停地流動(dòng)。
  
  10行:大括號(hào)表示09行for()循環(huán)的開始,語句“Pl_0=0”是讓單片機(jī)Pl口的O號(hào)引腳(即Pl.0)輸出低電平,根據(jù)電路可知,此時(shí)LED1會(huì)被點(diǎn)亮。
  
  11行:以參數(shù)值1000調(diào)用01行聲明的Delay()延時(shí)子函數(shù),使程序運(yùn)行到此處時(shí),延時(shí)1000毫秒(即1秒)。
  
  12-41行:與10、11行的作用相同。
  
  簡而言之,10-41行的作用就是依次點(diǎn)亮LEDl-LED8這八個(gè)發(fā)光二極管。
  
  42行:09行結(jié)束標(biāo)志,程序運(yùn)行到此處時(shí),自動(dòng)返回09行,因?yàn)?9行的for()循環(huán)是無條件循環(huán),所以程序馬上會(huì)轉(zhuǎn)到10行繼續(xù)運(yùn)行。
  
  三、軟件仿
  
  真首先按照前面的方法建立一個(gè)新的工程,并把上面的程序按照前面的方法輸入并存盤。然后按照下面的方法進(jìn)行仿真調(diào)試。
  
  1.把建立好的C程序加入工程
  
  雙擊左邊工程窗口中的“Target1”,展開“Target1”夾,然后右擊“SourceGroupl”,選擇“增加文件到組‘SourceGroup1’(AddFilestoSourceGroup1)”,并把剛才輸入的C程序加入到工程中。
  
  2.連編目標(biāo)程序
  
  連編之前要設(shè)置目標(biāo)的輸出屬性,否則連編出來的目標(biāo)程序中不含有用于固化到單片機(jī)中的十六進(jìn)制文件。
  
  設(shè)置目標(biāo)輸出屬性的方法是:
  
  先單擊工程窗口中的“Target1”以選中它,然后選擇“工程”菜單中的“目標(biāo)‘Targetl’屬性(OptionsfortargetTargetl)”,系統(tǒng)彈出對話框,在對話框中選擇“輸出(Output)”選項(xiàng)卡,并選中“生成HEX文件(CreateHEXFile)”選項(xiàng)(生成十六進(jìn)制文件),當(dāng)然,如果你的單片機(jī)編程器不支持十六進(jìn)制文件的話,就要用轉(zhuǎn)換軟件把生成的十六進(jìn)制文件轉(zhuǎn)換成二進(jìn)制了。
  
  設(shè)置好目標(biāo)屬性后,按“F7”開始連編目標(biāo)程序。連編的結(jié)果信息會(huì)在輸出窗口中顯示出來,若顯示“0錯(cuò)誤(s),0警告(s)(0Error(s),0Warning(s))”表示連編成功,否則說明連編不成功。若連編不成功,在輸出窗口中會(huì)顯示錯(cuò)誤所在行及錯(cuò)誤原因,然后根據(jù)具體的錯(cuò)誤進(jìn)行修改,修改完成后,再次連編,直到連編成功。
  
  3.仿真調(diào)試
  
  連編好目標(biāo)程序后就可以開始仿真調(diào)試了,其步驟是:  
  
  1)選擇“調(diào)試(Debug)”菜單中的“開始/停止調(diào)試(Start/StopDebugSession)”,進(jìn)入仿真調(diào)試狀態(tài)。
  
  2)選擇“外圍設(shè)備(Peripherals)”菜單中的“I/OPorts“選項(xiàng)中的“Port1”,打開I/O口狀態(tài)模擬器。狀態(tài)模擬器中的“&raDIC;”表示相應(yīng)的I/O口引腳狀態(tài)為“1”電平狀態(tài)。
  
  如:圖中表示Pl口(Portl)的8個(gè)引腳全為“1”電平狀態(tài)。
  
  3)按“Fll”進(jìn)行單步跟蹤調(diào)試。每按一次“Fll”,程序會(huì)執(zhí)行一步(即一條語句),若程序的執(zhí)行影響了I/O口的狀態(tài),在I/O口狀態(tài)模擬器上會(huì)有相應(yīng)的顯示。因?yàn)槊堪碏ll一次,程序只執(zhí)行一步,所以在調(diào)試循環(huán)程序時(shí),可能會(huì)有很多的步數(shù),如本例中每調(diào)試一次Delay()子函數(shù)中的兩個(gè)循環(huán),其步數(shù)高達(dá)六萬步,因此要設(shè)法減少步數(shù),本例中可先將Delay()子函數(shù)的參數(shù)值由1000改為1,等調(diào)試成功后再改回1000,這樣就可以大大減少循環(huán)步數(shù)。
  
  4)再次選擇“調(diào)試(Debug)”菜單中的“開始/停止調(diào)試(Start/StopDebugSession)”,退出仿真調(diào)試狀態(tài)。
  
  四、程序固化
  
  當(dāng)程序通過了仿真調(diào)試,就可以利用編程器把它固化到單片機(jī),并插入做好的線路板上,欣賞你的勞動(dòng)成果了。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉