一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用c語言編寫單片機(jī)流水燈程序詳解

電子設(shè)計(jì) ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-12-05 10:35 ? 次閱讀

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

一、硬件電路

因?yàn)殡娐酚脝纹瑱C(jī)控制,所以電路非常簡潔。其電路原理圖見下圖,印制板圖如下圖所示。

1512218838879601.jpg  

1512218839541578.jpg

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

二、軟件部分

本程序包含兩個函數(shù),一個是主函數(shù),另一個是延時子函數(shù)。源程序如下(為了便于講解,我們?yōu)槊啃谐绦蚣由狭司幪枺?/p>

程序各行作用如下:

00行:把AT89C2051的頭文件“AT89x051.H”包含進(jìn)來。

01行:聲明Delay()延時子函數(shù),該函數(shù)有一個無符號整型參數(shù)k,同時函數(shù)前面的void表明函數(shù)不返回函數(shù)值。

02行:延時子函數(shù)的開始,同時聲明兩個無符號整型變量i和j。

不過請注意,這里沒有象上期的程序一樣,把表示函數(shù)開始的“{”單獨(dú)成行,而是把下一行寫在一起了。事實(shí)上,寫C程序的時候,可以把多行寫作一行,C編譯器只要遇到分號就認(rèn)為是一行語句的結(jié)束。

當(dāng)然,我們不能因?yàn)镃程序有這個特點(diǎn),就隨意把多行合作一行書寫,實(shí)際書寫C程序的時候,還是要養(yǎng)成良好的程序書寫習(xí)慣,按照約定俗成的原則來書寫。

03行:聲明for()循環(huán)。這個循環(huán)的初始條件是i=0,終止條件是i<k,循環(huán)計(jì)數(shù)是每循環(huán)一次,用手計(jì)數(shù)的變量i加1。因此,這個循環(huán)的循環(huán)次數(shù)就是k次。這樣,只要改變k的值(即改變Delay()延時子函數(shù)的參數(shù)k的值),就可以很容易地控制循環(huán)次數(shù),從而獲得不同的延時時間。

04行:聲明嵌套在03循環(huán)中的一個新的for()循環(huán),這個循環(huán)與上一個循環(huán)相似,其循環(huán)次數(shù)是120次。本循環(huán)與上一個循環(huán)嵌套后,使得總的循環(huán)次數(shù)達(dá)120×k次。

05行:第一個分號,表示L條空語句,占用一個機(jī)器時間,以實(shí)現(xiàn)延時的目的。后面的兩個“}”中,第一個“}”是04行for()循環(huán)的結(jié)束標(biāo)志,程序遇到它時,將自動返回04行,使用于循環(huán)計(jì)數(shù)的變量j加1,同時判斷j是否小于120,如果否,則轉(zhuǎn)入05行;第二個是03行for()循環(huán)的結(jié)束標(biāo)志,程序遇到它則會返回03行。

06行:Delay()延時子函數(shù)的結(jié)束標(biāo)志。

07行:聲明主函數(shù)main()。這里的主函數(shù)不需要參數(shù),也不返回函數(shù)值。

08行:主函數(shù)的開始標(biāo)志“{”。

與01行的Delay()延時子函數(shù)一樣,習(xí)慣上也會把下一行的語句與本行的花括號寫在一起。

09行:聲明一個無條件for()循環(huán),“;;”以使單片機(jī)重復(fù)執(zhí)行任務(wù),使流水燈能不停地流動。

10行:大括號表示09行for()循環(huán)的開始,語句“Pl_0=0”是讓單片機(jī)Pl口的O號引腳(即Pl.0)輸出低電平,根據(jù)電路可知,此時LED1會被點(diǎn)亮。

11行:以參數(shù)值1000調(diào)用01行聲明的Delay()延時子函數(shù),使程序運(yùn)行到此處時,延時1000毫秒(即1秒)。

12-41行:與10、11行的作用相同。

簡而言之,10-41行的作用就是依次點(diǎn)亮LEDl-LED8這八個發(fā)光二極管。

42行:09行結(jié)束標(biāo)志,程序運(yùn)行到此處時,自動返回09行,因?yàn)?9行的for()循環(huán)是無條件循環(huán),所以程序馬上會轉(zhuǎn)到10行繼續(xù)運(yùn)行。

三、軟件仿

真首先按照前面的方法建立一個新的工程,并把上面的程序按照前面的方法輸入并存盤。然后按照下面的方法進(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é)果信息會在輸出窗口中顯示出來,若顯示“0錯誤(s),0警告(s)(0Error(s),0Warning(s))”表示連編成功,否則說明連編不成功。若連編不成功,在輸出窗口中會顯示錯誤所在行及錯誤原因,然后根據(jù)具體的錯誤進(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個引腳全為“1”電平狀態(tài)。

3)按“Fll”進(jìn)行單步跟蹤調(diào)試。每按一次“Fll”,程序會執(zhí)行一步(即一條語句),若程序的執(zhí)行影響了I/O口的狀態(tài),在I/O口狀態(tài)模擬器上會有相應(yīng)的顯示。因?yàn)槊堪碏ll一次,程序只執(zhí)行一步,所以在調(diào)試循環(huán)程序時,可能會有很多的步數(shù),如本例中每調(diào)試一次Delay()子函數(shù)中的兩個循環(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ī),并插入做好的線路板上,欣賞你的勞動成果了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6058

    文章

    44822

    瀏覽量

    644855
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7628

    瀏覽量

    139758
收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)80C51控制流水燈

    80C51單片機(jī)控制流水燈 1使用匯編語言編寫程序,8個LED燈接在P0口,顯示出流水燈效果 2
    發(fā)表于 09-14 10:28 ?281次下載
    <b class='flag-5'>用</b><b class='flag-5'>單片機(jī)</b>80<b class='flag-5'>C</b>51控制<b class='flag-5'>流水燈</b>

    51單片機(jī)流水燈程序

    51單片機(jī)流水燈程序 51單片機(jī)流水燈程序 51
    發(fā)表于 12-21 15:52 ?172次下載

    LED流水燈程序C語言版】

    LED流水燈程序C語言版】LED流水燈程序C
    發(fā)表于 12-29 11:05 ?0次下載

    C8051F340單片機(jī)流水燈

    基于C8051F340單片機(jī)的一個流水燈實(shí)驗(yàn)程序,是C語言開發(fā)的
    發(fā)表于 06-17 16:48 ?31次下載

    單片機(jī)控制花樣流水燈原理圖及程序

    本文詳細(xì)介紹了AT89C51單片機(jī)流水燈編寫方法以及介紹了單片機(jī)32位LED花樣流水燈
    發(fā)表于 04-26 16:15 ?5.6w次閱讀
    <b class='flag-5'>單片機(jī)</b>控制花樣<b class='flag-5'>流水燈</b>原理圖及<b class='flag-5'>程序</b>

    使用51單片機(jī)控制的LED的流水燈C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)控制的LED的流水燈C語言程序免費(fèi)下載。
    發(fā)表于 03-25 18:19 ?17次下載
    使用51<b class='flag-5'>單片機(jī)</b>控制的LED的<b class='flag-5'>流水燈</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)流水燈C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)流水燈C語言程序免費(fèi)下載。
    發(fā)表于 08-15 17:32 ?1次下載
    使用<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)流水燈C語言程序實(shí)例免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)流水燈C語言程序實(shí)例免費(fèi)下載。
    發(fā)表于 07-19 17:38 ?9次下載
    使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>流水燈</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>程序</b>實(shí)例免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)流水燈C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)流水燈C語言程序免費(fèi)下載。
    發(fā)表于 05-27 08:00 ?2次下載
    使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費(fèi)下載

    單片機(jī)C語言程序設(shè)計(jì)實(shí)例之雙向來回的流水燈

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)C語言程序設(shè)計(jì)實(shí)例之雙向來回的流水燈免費(fèi)下載。
    發(fā)表于 02-01 16:45 ?14次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>設(shè)計(jì)實(shí)例之雙向來回的<b class='flag-5'>流水燈</b>

    基于AT89C51的單片機(jī)簡易流水燈設(shè)計(jì)(C語言

    基于AT89C51的單片機(jī)簡易流水燈設(shè)計(jì)(C語言)文章目錄一、功能介紹二、代碼展示三、仿真四、總結(jié)(一)思考題(二)注意的問題文章目錄一、功
    發(fā)表于 11-05 11:06 ?19次下載
    基于AT89<b class='flag-5'>C</b>51的<b class='flag-5'>單片機(jī)</b>簡易<b class='flag-5'>流水燈</b>設(shè)計(jì)(<b class='flag-5'>C</b><b class='flag-5'>語言</b>)

    AT89C51單片機(jī)流水燈c語言程序詳解(掃盲教程)

    #include “REG51.h”AT89C51單片機(jī)流水燈c語言程序
    發(fā)表于 11-05 11:20 ?53次下載
    AT89<b class='flag-5'>C</b>51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>流水燈</b><b class='flag-5'>c</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>及<b class='flag-5'>詳解</b>(掃盲教程)

    單片機(jī)流水燈

    單片機(jī)c51流水燈實(shí)驗(yàn)實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、熟悉HNIST-2型單片機(jī)系統(tǒng)相關(guān)硬件電路,程序下載方法;2、掌握采用匯編
    發(fā)表于 11-17 09:36 ?8次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>流水燈</b>

    51單片機(jī)流水燈實(shí)驗(yàn)

    基于51單片機(jī)流水燈實(shí)驗(yàn) 我們知道通過編寫程序對51單片機(jī)進(jìn)行控制,完成流水燈實(shí)驗(yàn)的方式有許多種。今天我們試通過51
    發(fā)表于 11-20 17:51 ?66次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>流水燈</b>實(shí)驗(yàn)

    單片機(jī)流水燈

    單片機(jī)c51流水燈實(shí)驗(yàn)實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、熟悉HNIST-2型單片機(jī)系統(tǒng)相關(guān)硬件電路,程序下載方法;2、掌握采用匯編
    發(fā)表于 11-29 12:51 ?11次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>流水燈</b>