摘 要:本論文采用protus仿真軟件和keil編程軟件,設計了以AT89C51單片機為核心控制單元,以8位發(fā)光二極管設計輸出電路,以按鈕電路組成輸入電路,實現(xiàn)按鈕按下時,流水燈的在2種狀態(tài)之間任意切換的效果,通過軟硬件仿真驗證設計的合理性和正確性。
關(guān)鍵詞:單片機;protus;流水燈;狀態(tài)切換
1 緒論
單片機技術(shù)是計算機技術(shù)的一個重要分支,其應用領(lǐng)域極其廣泛,已逐漸滲透至各個領(lǐng)域,流水燈技術(shù)的應用使我們所生活的環(huán)境得到進一步的美化,例如城市亮化工程上燈光控制;色彩斑斕的霓虹燈廣告牌里的燈光控制、流水控制;舞臺設計的燈光和音響控制;廣告設計的文字顯示以及燈光顯示等等。本文以AT89C51單片機P0、P1口應用為核心,構(gòu)造流水燈的硬件設計和軟件編程,從而實現(xiàn)8位流水燈在兩種狀態(tài)之間任意切換的效果。
2 系統(tǒng)設計
2.1 任務目標
流水燈是指一組在控制系統(tǒng)的控制下按照設定的順序和時間來發(fā)亮和熄滅的燈。本文以AT89C51單片機的P1.0口的按鈕S1控制P0口的發(fā)光二極管的狀態(tài),若按動按鈕的次數(shù)是偶數(shù)時,進入流水燈第一種狀態(tài):依次點亮D1至D8,若再次按下按鈕,按按鈕的次數(shù)由偶數(shù)變?yōu)槠鏀?shù),則進入第二種狀態(tài):D1、D3、D5、D7亮,D2、D4、D6、D8滅,延時一段時間,D2、D4、D6、D8亮,D1、D3、D5、D7滅,如此循環(huán),并用keil編程軟件和protus仿真軟件對以上進行仿真。
2.2 硬件設計
流水燈的硬件電路由3部分組成,第一部分是單片機模塊—-單片機AT89C51,第二部分是輸出模塊—8個發(fā)光二極管組成的負載電路,第三部分是輸入模塊—按鈕組成的電路。在該項目中,共用到下表所列的元器件。
輸出部分電路:發(fā)光二極管采用共陽極接法,陰極通過限流電阻R與+5v電源連接,陰極連接到單片機的P0口的引腳上。要實現(xiàn)發(fā)光二極管的點亮,考慮到二極管的單向?qū)щ娦?,若P0口輸出低電平,二極管點亮,若P0口輸出高電平,則二極管熄滅。
輸入電路部分:在P1.0接控制電路,按下S1鍵時,P1.0引腳接地,所以P1.0引腳電平被降為低電平,因此,可以通過檢測P1.0引腳的電平判斷按鍵S1是否按下。
2.3 軟件設計
其中k的值通過按鍵S1控制,每按下S1時,k就自增1;當k%2=0時,說明k為偶數(shù),執(zhí)行流水燈依次點亮的程序,當k%2=1時,說明k為奇數(shù),執(zhí)行流水燈4亮4滅閃爍的程序。若需要在3種狀態(tài)之間切換,則對3求余即可,以此類推。
按下按鍵時,通常都會有抖動,表面上看來是按按鍵一次,但是因為按鍵的抖動,單片機會判斷出按按鍵很多次,從而輸入不可控。此問題可以用“軟件消抖”來解決。當?shù)谝淮螜z測到按鍵按下時,不采取動作,延時一段時間后,按鍵按下信號依然存在,則認為按鍵被按下,再執(zhí)行相應的動作。
3 總結(jié)
本論文以AT89C51單片機為主控芯片,以8個發(fā)光二極管為載體,設計流水燈的硬件電路和軟件程序,通過keil和Protus軟件仿真對結(jié)果進行驗證,達到了預期的效果。
參考文獻:
[1]王東鋒,王會良,董冠強.單片機C語言應用100例.電子工業(yè)出版社,2009,07.
[2]吳文兵,脫建智.基于51單片機的流水燈的設計與實現(xiàn)[J].電子技術(shù)與軟件工程,2016(08):258.
作者簡介:范昭君(1987-),女,碩士,講師,研究方向為智能機器人。