在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

電子設計 ? 來源:互聯網 ? 作者:佚名 ? 2017-12-05 10:35 ? 次閱讀

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

一、硬件電路

因為電路用單片機控制,所以電路非常簡潔。其電路原理圖見下圖,印制板圖如下圖所示。

1512218838879601.jpg  

1512218839541578.jpg

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

二、軟件部分

本程序包含兩個函數,一個是主函數,另一個是延時子函數。源程序如下(為了便于講解,我們為每行程序加上了編號):

程序各行作用如下:

00行:把AT89C2051的頭文件“AT89x051.H”包含進來。

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

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

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

當然,我們不能因為C程序有這個特點,就隨意把多行合作一行書寫,實際書寫C程序的時候,還是要養成良好的程序書寫習慣,按照約定俗成的原則來書寫。

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

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

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

06行:Delay()延時子函數的結束標志。

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

08行:主函數的開始標志“{”。

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

09行:聲明一個無條件for()循環,“;;”以使單片機重復執行任務,使流水燈能不停地流動。

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

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

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

簡而言之,10-41行的作用就是依次點亮LEDl-LED8這八個發光二極管

42行:09行結束標志,程序運行到此處時,自動返回09行,因為09行的for()循環是無條件循環,所以程序馬上會轉到10行繼續運行。

三、軟件仿

真首先按照前面的方法建立一個新的工程,并把上面的程序按照前面的方法輸入并存盤。然后按照下面的方法進行仿真調試。

1.把建立好的C程序加入工程

雙擊左邊工程窗口中的“Target1”,展開“Target1”夾,然后右擊“SourceGroupl”,選擇“增加文件到組‘SourceGroup1’(AddFilestoSourceGroup1)”,并把剛才輸入的C程序加入到工程中。

2.連編目標程序

連編之前要設置目標的輸出屬性,否則連編出來的目標程序中不含有用于固化到單片機中的十六進制文件。

設置目標輸出屬性的方法是:

先單擊工程窗口中的“Target1”以選中它,然后選擇“工程”菜單中的“目標‘Targetl’屬性(OptionsfortargetTargetl)”,系統彈出對話框,在對話框中選擇“輸出(Output)”選項卡,并選中“生成HEX文件(CreateHEXFile)”選項(生成十六進制文件),當然,如果你的單片機編程器不支持十六進制文件的話,就要用轉換軟件把生成的十六進制文件轉換成二進制了。

設置好目標屬性后,按“F7”開始連編目標程序。連編的結果信息會在輸出窗口中顯示出來,若顯示“0錯誤(s),0警告(s)(0Error(s),0Warning(s))”表示連編成功,否則說明連編不成功。若連編不成功,在輸出窗口中會顯示錯誤所在行及錯誤原因,然后根據具體的錯誤進行修改,修改完成后,再次連編,直到連編成功。

3.仿真調試

連編好目標程序后就可以開始仿真調試了,其步驟是:

1)選擇“調試(Debug)”菜單中的“開始/停止調試(Start/StopDebugSession)”,進入仿真調試狀態。

2)選擇“外圍設備(Peripherals)”菜單中的“I/OPorts“選項中的“Port1”,打開I/O口狀態模擬器。狀態模擬器中的“&raDIC;”表示相應的I/O口引腳狀態為“1”電平狀態。

如:圖中表示Pl口(Portl)的8個引腳全為“1”電平狀態。

3)按“Fll”進行單步跟蹤調試。每按一次“Fll”,程序會執行一步(即一條語句),若程序的執行影響了I/O口的狀態,在I/O口狀態模擬器上會有相應的顯示。因為每按Fll一次,程序只執行一步,所以在調試循環程序時,可能會有很多的步數,如本例中每調試一次Delay()子函數中的兩個循環,其步數高達六萬步,因此要設法減少步數,本例中可先將Delay()子函數的參數值由1000改為1,等調試成功后再改回1000,這樣就可以大大減少循環步數。

4)再次選擇“調試(Debug)”菜單中的“開始/停止調試(Start/StopDebugSession)”,退出仿真調試狀態。

四、程序固化

當程序通過了仿真調試,就可以利用編程器把它固化到單片機,并插入做好的線路板上,欣賞你的勞動成果了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6046

    文章

    44674

    瀏覽量

    640782
  • C語言
    +關注

    關注

    180

    文章

    7618

    瀏覽量

    138519
收藏 25人收藏
  • 小故人1
  • 兔子喻1
  • 努力让此生无憾1
  • 一秋_2f01
  • 砂砂响1
  • 曾123451
  • 王艺豪1
  • 小嘛小二郎1
  • 淡定先生1

評論

相關推薦

單片機80C51控制流水燈

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

51單片機流水燈程序

51單片機流水燈程序 51單片機流水燈程序 51
發表于 12-21 15:52 ?170次下載

LED流水燈程序C語言版】

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

C8051F340單片機流水燈

基于C8051F340單片機的一個流水燈實驗程序,是C語言開發的
發表于 06-17 16:48 ?31次下載

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

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

使用51單片機控制的LED的流水燈C語言程序免費下載

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

使用單片機實現流水燈C語言程序免費下載

本文檔的主要內容詳細介紹的是使用單片機實現流水燈C語言程序免費下載。
發表于 08-15 17:32 ?1次下載
使用<b class='flag-5'>單片機</b>實現<b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費下載

使用51單片機實現流水燈C語言程序實例免費下載

本文檔的主要內容詳細介紹的是使用51單片機實現流水燈C語言程序實例免費下載。
發表于 07-19 17:38 ?9次下載
使用51<b class='flag-5'>單片機</b>實現<b class='flag-5'>流水燈</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>程序</b>實例免費下載

使用51單片機實現流水燈C語言程序免費下載

本文檔的主要內容詳細介紹的是使用51單片機實現流水燈C語言程序免費下載。
發表于 05-27 08:00 ?2次下載
使用51<b class='flag-5'>單片機</b>實現<b class='flag-5'>流水燈</b>的<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>免費下載

單片機C語言程序設計實例之雙向來回的流水燈

本文檔的主要內容詳細介紹的是單片機C語言程序設計實例之雙向來回的流水燈免費下載。
發表于 02-01 16:45 ?14次下載
<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>

基于AT89C51的單片機簡易流水燈設計(C語言

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

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

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

單片機流水燈

單片機c51流水燈實驗實驗一 跑馬燈實驗一、實驗目的1、熟悉HNIST-2型單片機系統相關硬件電路,程序下載方法;2、掌握采用匯編
發表于 11-17 09:36 ?8次下載
<b class='flag-5'>單片機</b><b class='flag-5'>流水燈</b>

51單片機流水燈實驗

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

單片機流水燈

單片機c51流水燈實驗實驗一 跑馬燈實驗一、實驗目的1、熟悉HNIST-2型單片機系統相關硬件電路,程序下載方法;2、掌握采用匯編
發表于 11-29 12:51 ?11次下載
<b class='flag-5'>單片機</b><b class='flag-5'>流水燈</b>

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品
主站蜘蛛池模板: 午夜影院a | 永井玛丽亚中文在线观看视频 | 四虎影视在线影院4hu | 乱h亲女小说 | 色偷偷91综合久久噜噜噜男男 | 99自拍视频 | 精品一区二区三区自拍图片区 | 成人欧美一区二区三区 | 天天操夜夜操夜夜操 | 男女交性拍拍拍高清视频 | h视频免费高清在线观看 | 四虎影院在线视频 | 91大神在线观看视频 | h在线免费观看 | 欧美zoozzooz在线观看 | 色在线网| 在线免费看黄 | 一区二区三区四区欧美 | 欧美高清一区二区三 | 在线观看免费视频国产 | 日本肥妇| 色偷偷91综合久久噜噜噜男男 | 人妖另类亚洲xxxx | 日本videosgratis教师69 | 久久综合成人网 | 亚洲理论在线 | 天堂网www在线 | 在线欧美激情 | 五月天丁香婷 | 全国男人的天堂天堂网 | heyzo在线播放4k岛国 | 成人国产精品一级毛片视频 | 国模吧新入口 | 日本xxxx色视频在线观看免 | 五月开心六月伊人色婷婷 | 国产精品一一在线观看 | 在线观看中文字幕一区 | 色老头成人免费综合视频 | 国产乱码精品一区二区 | 午夜毛片视频 | 日本大片免费一级 |