www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

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


  

  

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

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


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

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉