欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C51單片機(jī)自學(xué)第一課

      時(shí)間:2019-05-14 18:43:46下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《C51單片機(jī)自學(xué)第一課》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《C51單片機(jī)自學(xué)第一課》。

      第一篇:C51單片機(jī)自學(xué)第一課

      第一課 了解單片機(jī)及單片機(jī)的控制原理,控制一個(gè)LED 燈的亮和滅

      本章學(xué)習(xí)內(nèi)容:

      單片機(jī)基本原理,如何仿真器,如何編程點(diǎn)亮和滅掉一個(gè)LED 燈,如何進(jìn)入KEILC51uV調(diào)試環(huán)境,如何使用單步,斷點(diǎn),全速,停止的調(diào)試方法

      單片機(jī)現(xiàn)在是越來(lái)越普及了,學(xué)習(xí)單片機(jī)的熱潮也一陣陣趕來(lái),許多人因?yàn)楣ぷ餍枰蛘邆€(gè)人興趣需要學(xué)習(xí)單片機(jī)??梢哉f(shuō),掌握了單片機(jī)開(kāi)發(fā),就多了一個(gè)飯碗。

      單片機(jī)已經(jīng)有30 多年的歷史了,在中國(guó),高校的單片機(jī)課程大多數(shù)都是51,而51 經(jīng)過(guò)這么多年的發(fā)展,也增長(zhǎng)了許多的系列,功能上有了許多改進(jìn),也擴(kuò)展出了不少分支。而國(guó)內(nèi)書(shū)店的單片機(jī)專架上,也大多數(shù)都是51 系列??梢灶A(yù)見(jiàn),51 單片機(jī)在市場(chǎng)上只會(huì)越來(lái)越多,功能只會(huì)越來(lái)越豐富,在可以預(yù)見(jiàn)的數(shù)十年內(nèi)是不可能會(huì)消失的。

      下面以51 為例來(lái)了解一下單片機(jī)是什么東西,控制原理又是什么?

      在數(shù)字電路中,電壓信號(hào)只有兩種情況,高電平和低電平,用數(shù)字來(lái)記錄就是1 和0。單片機(jī)內(nèi)部的CPU,寄存器,總線等等結(jié)構(gòu)都是通過(guò)1 和0 兩種信號(hào)來(lái)運(yùn)作的,數(shù)據(jù)也是以1 或者0 來(lái)保存的。單片機(jī)的輸入輸出管腳,也就是IO 口,也是只輸出或識(shí)別1 和0 兩種信號(hào),也就是高電平和低電平。當(dāng)單片機(jī)輸出一個(gè)或一組電平信號(hào)到IO 口后,外部的設(shè)備就可以讀到這些信號(hào),并進(jìn)行相應(yīng)操作,這就是單片機(jī)對(duì)外部的控制。當(dāng)外部一個(gè)或一組電平信號(hào)送到單片機(jī)的IO 口時(shí),單片機(jī)也可以讀到這些信號(hào),并進(jìn)行分析操作,這就是單片機(jī)對(duì)外部設(shè)備信號(hào)的讀取。當(dāng)然實(shí)際的操作中,這些信號(hào)可能十分復(fù)雜,必須嚴(yán)格地按照規(guī)定的時(shí)間順序(時(shí)序)輸入輸出。每種設(shè)備也都規(guī)定了自己的時(shí)序,只要都嚴(yán)格遵守,就可以控制任何設(shè)備,做出只要你想象得出的任何事情。

      您可能會(huì)再問(wèn),我如何讓單片機(jī)去控制和分析外部設(shè)備呢?答案是程序,您可以編寫(xiě)相關(guān)的程序,并且把他們燒寫(xiě)到單片機(jī)內(nèi)部的程序空間,單片機(jī)在上電時(shí),就會(huì)一步一步按照您寫(xiě)的程序去執(zhí)行指令,做您想做的事情。

      在51 標(biāo)準(zhǔn)芯片中,有32 個(gè)輸入輸出IO,分為4 組,每組8 個(gè),分別為P0 口,P1 口,P2 口,P3 口。P1 口的8 條腳就用P1.0 至P1.7 表示,其余類似。51 就是用這32 個(gè)口來(lái)完成所有外部操作的。對(duì)于51 的內(nèi)部結(jié)構(gòu),如果您已經(jīng)了解,那是最好;如果不懂,也可以先放下,在完成了本教程開(kāi)始的幾個(gè)章節(jié)之后,您就會(huì)大有興趣,自己去尋找資料閱讀了。當(dāng)然,如果您希望成為一個(gè)優(yōu)秀的單片機(jī)開(kāi)發(fā)程序員,還是必須熟悉單片機(jī)的內(nèi)部結(jié)構(gòu)及工作原理,切不可偷懶!

      在這一章,您將用程序去控制一個(gè)LED 發(fā)光管的亮和滅。你應(yīng)該知道,LED 發(fā)光管在通過(guò)一定電流時(shí)亮,不通電就滅。為了不讓LED 通過(guò)太大的電流把它燒壞,我們還要串上限流電阻。51 的IO 是弱上拉的方式,在輸出高電平時(shí),只能輸出幾十微安的電流到地,而在輸出低電平時(shí),VCC 電源可以輸入幾十毫安的電流到IO。一般LED 需要10 毫安左右電流點(diǎn)亮,我們就將LED 接在電源VCC 和IO 口之間,中間串上電阻,當(dāng)IO 輸出低電平時(shí),燈就亮了,反之,燈就滅了。我們?cè)谶@個(gè)程序里要控制的是P1.0。請(qǐng)參考一下我們將要使用的試驗(yàn)板的電路圖。

      現(xiàn)在可以開(kāi)始做試驗(yàn)了,我們打開(kāi)已經(jīng)建立好的工程和編寫(xiě)好的程序試驗(yàn)。順便還會(huì)學(xué)習(xí)一下程序調(diào)試的技巧。至于如何建立一個(gè)新工程,請(qǐng)參考C51 的幫助文件。請(qǐng)雙擊lessoncode01 目錄下的lesson1.uv2,打開(kāi)后界面如下:

      點(diǎn)一下上圖第三排第2 或者第3 個(gè)按鈕(您的編譯器按鈕位置不一定在那個(gè)位置,自己找找),就可以看到編譯結(jié)果了。上面顯示是0errrs,0warnings,這是最佳的編譯結(jié)果,如果有error,則無(wú)法進(jìn)行下一步仿真,如果有warning,一定要盡量消除,確實(shí)無(wú)法消除的,也要確認(rèn)不會(huì)對(duì)程序造成影響,才進(jìn)行下一步的仿真。在編譯結(jié)果中,我們還可以看到有data,xdata,code 等用了多少字節(jié)的報(bào)告,要注意您的單片機(jī)中是否有這么多的資源,如果不夠,將來(lái)燒片運(yùn)行時(shí)就可能出現(xiàn)問(wèn)題。比如AT89C51 的程序空間是4K,xdata 如果沒(méi)有外擴(kuò)就是0 個(gè),data 是128 個(gè)。超出這些范圍,程序就不能在AT89c51 中運(yùn)行。不同的芯片有不同的容量,如SST89E516RD 就有64K 程序,內(nèi)部768 字節(jié)XDATA,還有256 個(gè)字節(jié)的data。我們的例程中肯定都考慮了這些了,肯定不會(huì)超出,將來(lái)自己開(kāi)發(fā)時(shí)就要注意了。

      下面我們故意把第9 行的P10 寫(xiě)成P11,點(diǎn)編譯,因?yàn)闆](méi)有預(yù)先定義P11,所以就報(bào)告錯(cuò)誤了,如下圖:

      雙擊一下錯(cuò)誤報(bào)告的那一行,窗口就也會(huì)跳到這一行,方便您進(jìn)行修改。好了,現(xiàn)在請(qǐng)把錯(cuò)誤改回去,再編譯一次,出現(xiàn)報(bào)告正確了以后,下面開(kāi)始仿真了。點(diǎn)一下第二行第5 個(gè)一個(gè)放大鏡里面一個(gè)d 字母的按鈕,就可以進(jìn)入仿真了,仿真器要事先連接好喲。進(jìn)入仿真后要退出仿真環(huán)境也是點(diǎn)這個(gè)按鈕。注意,等會(huì)如果程序在正在全速運(yùn)行時(shí),仿真環(huán)境是不能直接退出的,得先點(diǎn)停止運(yùn)行后,再點(diǎn)仿真按鈕才可以退出。點(diǎn)進(jìn)入仿真按鈕,程序開(kāi)始裝載,PC 自動(dòng)運(yùn)行到了main()停下,并指向了main()函數(shù)的第一行。

      進(jìn)入仿真窗口后,如果出現(xiàn)的不是前面的源代碼窗口,而是夾有反匯編代碼的窗口,直接關(guān)掉這個(gè)窗口就會(huì)恢復(fù)到代碼窗口。下次進(jìn)入也會(huì)直接進(jìn)入到源代碼窗口。

      現(xiàn)在先試驗(yàn)單步,點(diǎn)單步(兩個(gè)單步都可以,一般點(diǎn)單步跨過(guò))。可以看到燈亮了。PC 指針也指向了下一個(gè)

      程序行。再點(diǎn)一下單步,PC 又走下一步,燈滅了。再點(diǎn)一次,PC 走到掛起的程序行了,繼續(xù)點(diǎn)仍然在這一行。這句指令其實(shí)就是使程序不斷地跳到自己這一行,別的什么也不做。一般稱作程序掛起。

      一般的實(shí)際應(yīng)用中的程序是不會(huì)掛起的,一般是在main 函數(shù)里做一個(gè)大循環(huán),程序如下:

      void main(void)// 主程序 { while(1){ P11=0;//亮燈 P10=1;//滅燈 } } 請(qǐng)將main 函數(shù)程序改為上面的代碼,我們下一步將試驗(yàn)斷點(diǎn)的操作。

      在第15 行雙擊一下,可以看到程序行左邊出現(xiàn)了一個(gè)紅方塊,這就是設(shè)置斷點(diǎn),再雙擊一次,斷點(diǎn)就取消了。如果程序在全速運(yùn)行的過(guò)程中遇到斷點(diǎn),就會(huì)自動(dòng)停下來(lái)給你分析。注意在進(jìn)入仿真后,并且程序是停止?fàn)顟B(tài)時(shí),才可以設(shè)置或者取消斷點(diǎn)。

      現(xiàn)在點(diǎn)全速運(yùn)行,可以看到程序在斷點(diǎn)處停了下來(lái),并且由于前一句指令剛剛執(zhí)行了點(diǎn)燈,所以這時(shí)燈是亮著的。

      現(xiàn)在在第14 行設(shè)置斷點(diǎn),并且取消上一個(gè)斷點(diǎn)。

      現(xiàn)在點(diǎn)全速運(yùn)行,可以看到程序在斷點(diǎn)處停了下來(lái),并且由于剛剛執(zhí)行了滅燈,燈是滅著的。好,現(xiàn)在試驗(yàn)全速運(yùn)行和停止。把斷點(diǎn)取消,再點(diǎn)全速運(yùn)行,可以看到燈是亮著的,但是不是很亮,這是由于程序是循環(huán)的,亮滅交替進(jìn)行,亮的時(shí)間并不是全部的時(shí)間。現(xiàn)在點(diǎn)停止,可以看到程序停止了,重復(fù)幾次進(jìn)行全速和停止,可以發(fā)現(xiàn)每次停止的地方不一定是同一位置。

      演講稿

      尊敬的老師們,同學(xué)們下午好:

      我是來(lái)自10級(jí)經(jīng)濟(jì)學(xué)(2)班的學(xué)習(xí)委,我叫張盼盼,很榮幸有這次機(jī)會(huì)和大家一起交流擔(dān)任學(xué)習(xí)委員這一職務(wù)的經(jīng)驗(yàn)。

      轉(zhuǎn)眼間大學(xué)生活已經(jīng)過(guò)了一年多,在這一年多的時(shí)間里,我一直擔(dān)任著學(xué)習(xí)委員這一職務(wù)?;赝@一年多,自己走過(guò)的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學(xué)到了很多很多,下面將自己的工作經(jīng)驗(yàn)和大家一起分享。

      學(xué)習(xí)委員是班上的一個(gè)重要職位,在我當(dāng)初當(dāng)上它的時(shí)候,我就在想一定不要辜負(fù)老師及同學(xué)們我的信任和支持,一定要把工作做好。要認(rèn)真負(fù)責(zé),態(tài)度踏實(shí),要有一定的組織,領(lǐng)導(dǎo),執(zhí)行能力,并且做事情要公平,公正,公開(kāi),積極落實(shí)學(xué)校學(xué)院的具體工作。作為一名合格的學(xué)習(xí)委員,要收集學(xué)生對(duì)老師的意見(jiàn)和老師的教學(xué)動(dòng)態(tài)。在很多情況下,老師無(wú)法和那么多學(xué)生直接打交道,很多老師也無(wú)暇顧及那么多的學(xué)生,特別是大家剛進(jìn)入大學(xué),很多人一時(shí)還不適應(yīng)老師的教學(xué)模式。學(xué)習(xí)委員是老師與學(xué)生之間溝通的一個(gè)橋梁,學(xué)習(xí)委員要及時(shí)地向老師提出同學(xué)們的建議和疑問(wèn),熟悉老師對(duì)學(xué)生的基本要求。再次,學(xué)習(xí)委員在學(xué)習(xí)上要做好模范帶頭作用,要有優(yōu)異的成績(jī),當(dāng)同學(xué)們向我提出問(wèn)題時(shí),基本上給同學(xué)一個(gè)正確的回復(fù)。

      總之,在一學(xué)年的工作之中,我懂得如何落實(shí)各項(xiàng)工作,如何和班委有效地分工合作,如何和同學(xué)溝通交流并且提高大家的學(xué)習(xí)積極性。當(dāng)然,我的工作還存在著很多不足之處。比日:有的時(shí)候得不到同學(xué)們的響應(yīng),同學(xué)們不積極主動(dòng)支持我的工作;在收集同學(xué)們對(duì)自己工作意見(jiàn)方面做得不夠,有些事情做錯(cuò)了,沒(méi)有周圍同學(xué)的提醒,自己也沒(méi)有發(fā)覺(jué)等等。最嚴(yán)重的一次是,我沒(méi)有把英語(yǔ)四六級(jí)報(bào)名的時(shí)間,地點(diǎn)通知到位,導(dǎo)致我們班有4名同學(xué)錯(cuò)過(guò)報(bào)名的時(shí)間。這次事使我懂得了做事要腳踏實(shí)地,不能馬虎。

      在這次的交流會(huì)中,我希望大家可以從中吸取一些好的經(jīng)驗(yàn),帶動(dòng)本班級(jí)的學(xué)習(xí)風(fēng)氣,同時(shí)也相信大家在大學(xué)畢業(yè)后找到好的工作。謝謝大家!

      第二篇:自學(xué)單片機(jī)心得體會(huì)

      自學(xué)單片機(jī)心得體會(huì)

      無(wú)論是作為一名業(yè)余的電子愛(ài)好者還是一名電子行業(yè)的相關(guān)從業(yè)人員,掌握單片機(jī)技術(shù)無(wú)疑可以使您如虎添翼,為您的電子小制作或者開(kāi)發(fā)設(shè)計(jì)電子產(chǎn)品時(shí)打開(kāi)方便的大門!

      而且現(xiàn)在學(xué)習(xí)單片機(jī)技術(shù)的熱潮正在不斷升溫,電子發(fā)燒友網(wǎng)開(kāi)設(shè)了詳細(xì)的單片機(jī)學(xué)習(xí)專欄和人氣非常旺的論壇討論組,對(duì)于想學(xué)習(xí)單片機(jī)的朋友來(lái)說(shuō)幫助很大,可以說(shuō)現(xiàn)在的單片機(jī)學(xué)習(xí)環(huán)境是最好的,經(jīng)過(guò)一段時(shí)間的努力,采用單片機(jī)來(lái)開(kāi)發(fā)設(shè)計(jì)電子產(chǎn)品已經(jīng)不再是專業(yè)電子工程師的“專利”!作為一個(gè)普通的電子愛(ài)好者完全可以通過(guò)一番努力后熟練掌握!國(guó)外的電子愛(ài)好者采用單片機(jī)來(lái)設(shè)計(jì)小制作非常普及,一些智能機(jī)器人、智能自動(dòng)裝置內(nèi)部都離不開(kāi)單片機(jī)的身影~~~

      學(xué)習(xí)單片機(jī)技術(shù)有一定的難度,不花費(fèi)一番努力是很難學(xué)會(huì)的,但是只要不斷努力就一定能成功,套用一句廣告歌詞:努力總有回報(bào)!

      學(xué)習(xí)單片機(jī)最好從51系列開(kāi)始,第一是書(shū)多、資料多,而且掌握51技術(shù)的人多,碰到問(wèn)題能請(qǐng)教的老師也就多了,51系列的實(shí)驗(yàn)芯片AT89C51價(jià)格低廉而且很容易買到,AT89C51芯片而且可以反復(fù)擦寫(xiě)1000次以上,對(duì)于初學(xué)者來(lái)說(shuō)真是太合適了,就算以后考慮工業(yè)運(yùn)用,也可以先學(xué)透51后再學(xué)其他類型的單片機(jī),畢竟技術(shù)是相通的。

      學(xué)習(xí)單片機(jī)的第一步是看書(shū),單片機(jī)是一個(gè)知識(shí)密集的東東,不看書(shū)是絕對(duì)不行的,北京航空航天大學(xué)出版社出版了大量單片機(jī)方面的好書(shū),你可以直接登錄他們的網(wǎng)站進(jìn)行郵購(gòu)。本人認(rèn)為第一本書(shū)應(yīng)該是8051單片機(jī)的基礎(chǔ)原理書(shū),我看的第一本書(shū)是問(wèn)單位一位大學(xué)生同事借的清華大學(xué)出版社的《單片機(jī)的原理及接口技術(shù)》這本是51的大學(xué)教科書(shū),比較系統(tǒng)地介紹了51芯片的基礎(chǔ)知識(shí),我認(rèn)為這本書(shū)對(duì)我?guī)椭€是很大的,可以很系統(tǒng)地了解51單片機(jī),雖然一開(kāi)始不容易看懂,不過(guò)確實(shí)很有用,很有嚼頭,可以先大致看一遍,不消化的可以以后在試驗(yàn)實(shí)踐中反復(fù)研究。

      這里我推薦初學(xué)者一張學(xué)習(xí)單片機(jī)的多媒體光盤(pán),這張光盤(pán)中有比較詳細(xì)的單片機(jī)基礎(chǔ)知識(shí),因?yàn)槭菆D文并茂,所以學(xué)習(xí)起來(lái)比較容易上手,學(xué)習(xí)容易產(chǎn)生興趣,當(dāng)然最終還是要看書(shū)的,畢竟書(shū)更系統(tǒng)全面。

      《MCS-51單片機(jī)實(shí)用接口技術(shù)》這是一本北京航空航天大學(xué)出版社出版的一本好書(shū),它詳細(xì)描述了單片機(jī)的常見(jiàn)接口技術(shù),對(duì)于想以后開(kāi)發(fā)產(chǎn)品的話,那就人手一本吧!《單片機(jī)實(shí)踐與運(yùn)用》這本書(shū)詳細(xì)介紹了用單片機(jī)作的實(shí)驗(yàn),有很實(shí)用的匯編源程序,可以通過(guò)學(xué)習(xí)模仿上面的程序加以試驗(yàn),快速掌握單片機(jī)技術(shù)。

      學(xué)習(xí)單片機(jī)的第二步是購(gòu)買工具,單片機(jī)芯片必須借助編程器才能寫(xiě)入程序,站長(zhǎng)用的編程器是一種性能較好的Genius NSP 通用編程器,通用編程器的特點(diǎn)是專為開(kāi)發(fā)單片機(jī)和燒寫(xiě)各類存儲(chǔ)器而設(shè)計(jì)的通用機(jī)型,它的編程可靠性高,支持的器件品種很多。

      Genius NSP 通用編程器:

      4Opins萬(wàn)用鎖緊插座。適應(yīng)絕大多數(shù)器件編程之所需。使用適配器能夠支持非DIP封裝器件的編程。

      RS232竄口通訊。通訊波特率:57600bit/s

      9V/500mA電源轉(zhuǎn)換器。

      主要功能:EPROM、EEPROM、FLASH、MPU/CPU、PLD。Serial EEPROM六大類器件的編程;RAM器件及CMOS/TTL器件的測(cè)試等等。

      可選擇的器件插入自動(dòng)探測(cè)啟動(dòng)功能,即當(dāng)您選擇該功能并啟動(dòng)后,不再需要每次點(diǎn)擊鼠標(biāo)啟動(dòng)操作,每次當(dāng)您更換芯片并鎖緊萬(wàn)用插座后操作自動(dòng)啟動(dòng)。

      Genius NSP 可以在 WINDOS95、98、me、2000、XP上運(yùn)行。

      從長(zhǎng)遠(yuǎn)的方面考慮,購(gòu)置一臺(tái)通用編程器是很有必要的。

      學(xué)習(xí)單片機(jī)的第三步是反復(fù)編程實(shí)踐,這里需要一塊AT89C51的試驗(yàn)板。

      仿真器對(duì)單片機(jī)初學(xué)者來(lái)說(shuō)既是那么耳熟,同時(shí)又有些陌生,這主要是因?yàn)槭袌?chǎng)上傳統(tǒng)的仿真器價(jià)格都在千元以上,對(duì)經(jīng)濟(jì)不是非常寬裕的人來(lái)說(shuō)是不小的開(kāi)支。同時(shí)仿真器是用來(lái)提高調(diào)試程序效率的,也不是非需不可的,所以站長(zhǎng)在自學(xué)單片機(jī)開(kāi)始的時(shí)候也沒(méi)有用過(guò)仿真器,碰到程序出錯(cuò)的時(shí)候,只好苦思冥想,或者在程序中插入一些驅(qū)動(dòng)端口的指令,然后再接上一些發(fā)光二極管做簡(jiǎn)單指示,一般調(diào)試一個(gè)程序,反復(fù)燒寫(xiě)幾十次芯片是很經(jīng)常的。

      現(xiàn)在我們介紹一種新型的廉價(jià)在線仿真器:它使用一片宏晶公司 【SST公司】的STC89C516RD 的單片機(jī),仿真機(jī)通過(guò)串口與 PC 連接,該型號(hào)單片機(jī)是51系列單片機(jī)中的一種,具有ISP(在系統(tǒng)可編程)功能,程序可串行下載,可仿真63K用戶程序空間,具有450個(gè)外部RAM字節(jié)。

      具備了必要的工具以后就可以開(kāi)始學(xué)習(xí)單片機(jī)了,對(duì)單片機(jī)進(jìn)行編程可以采用匯編語(yǔ)言或者C語(yǔ)言,匯編語(yǔ)言的特點(diǎn)是代碼緊湊,對(duì)初學(xué)者的電腦水平要求低、上手快,但是程序編寫(xiě)工作量大,站長(zhǎng)網(wǎng)站的程序范例就是采用匯編語(yǔ)言編寫(xiě)的,這里說(shuō)的C語(yǔ)言是專用于51單片機(jī)的C語(yǔ)言,它的特點(diǎn)是編寫(xiě)效率高,但是對(duì)使用者的電腦水平要求高,最好是已經(jīng)會(huì)C語(yǔ)言了,電子發(fā)燒友網(wǎng)網(wǎng)站上也有單片機(jī)C語(yǔ)言教程。我認(rèn)為初學(xué)單片機(jī)的人最好懂一些匯編語(yǔ)言,匯編語(yǔ)言可以直接控制單片機(jī)的資源,比如具體的單片機(jī)引腳、內(nèi)存地址,掌握這些也是很有必要的,學(xué)會(huì)匯編語(yǔ)言可以打下比較好的基礎(chǔ),很多參考書(shū)也是這么說(shuō)的,如果你是專業(yè)單片機(jī)開(kāi)發(fā)人員,那么C語(yǔ)言效率高,更適合你。

      自學(xué)匯編語(yǔ)言,首先要學(xué)會(huì)看懂別人的匯編語(yǔ)言程序,可以將匯編語(yǔ)言的指令翻譯成自己容易理解的功能描述性文字,詳細(xì)注釋在程序后面,這樣便于自己以后引用或者別人容易看懂。站長(zhǎng)看到別人寫(xiě)的一些匯編程序的注釋都非常少,這非常不利于初學(xué)者學(xué)習(xí)和互相交流,所以只要是站長(zhǎng)寫(xiě)的程序都做了非常詳細(xì)的注釋。

      學(xué)習(xí)匯編語(yǔ)言可以參考相關(guān)的書(shū),匯編語(yǔ)言有100多條指令,但是常用的指令也就二三十條,可以先記住常用的匯編指令,如果一時(shí)記不住可以打印在紙上慢慢熟悉,然后對(duì)別人的匯編程序再加以試驗(yàn)驗(yàn)證,最后還可以在自己理解的基礎(chǔ)上對(duì)匯編程序的相關(guān)參數(shù)修改再反復(fù)試驗(yàn),這是快速掌握單片機(jī)的捷徑!

      一、八路LED跑馬燈實(shí)驗(yàn)

      現(xiàn)在讓我們開(kāi)始做第一個(gè)實(shí)驗(yàn):八路發(fā)光二極管輪流點(diǎn)亮的實(shí)驗(yàn),也就是通常所說(shuō)的跑馬燈實(shí)驗(yàn),首先讓我們來(lái)完成必須的硬件部分,我們需要焊接上8個(gè)發(fā)光二極管和8個(gè)限流電阻,可以參考下面的原理圖和實(shí)物圖像進(jìn)行操作,需要注意的是LED是有極性的,引腳長(zhǎng)的為正極,引腳短的為負(fù)極,負(fù)極和電阻一側(cè)連接,如果接錯(cuò)那么相應(yīng)的那一路可能在實(shí)驗(yàn)中不會(huì)點(diǎn)亮了,在焊接前要看仔細(xì)哦~~~

      下面我們來(lái)完成軟件編程設(shè)計(jì),這里我們沒(méi)有采用高深的編程技巧,而是用了最笨、最直接的向端口送數(shù)的辦法來(lái)實(shí)現(xiàn),一來(lái)程序比較簡(jiǎn)單,沒(méi)必要玩深沉,而且初學(xué)者看起來(lái)直觀易懂。

      ORG 0000H

      START:MOV P1,#01111111B;最下面的LED點(diǎn)亮

      LCALL DELAY;延時(shí)1秒

      MOV P1,#10111111B;最下面第二個(gè)的LED點(diǎn)亮

      LCALL DELAY;延時(shí)1秒

      MOV P1,#11011111B;最下面第三個(gè)的LED點(diǎn)亮(以下省略)

      LCALL DELAY

      MOV P1,#11101111B

      LCALL DELAY

      MOV P1,#11110111B

      LCALL DELAY

      MOV P1,#11111011B

      LCALL DELAY

      MOV P1,#11111101B

      LCALL DELAY

      MOV P1,#11111110B

      LCALL DELAY

      MOV P1,#11111111B;完成第一次循環(huán)點(diǎn)亮,延時(shí)約0.25秒

      AJMP START;反復(fù)循環(huán)

      ;延時(shí)子程序,12M晶振延時(shí)約250毫秒

      DELAY:

      MOV R4,#2

      L3: MOV R2,#250

      L1: MOV R3,#250

      L2: DJNZ R3,L2

      DJNZ R2,L1

      DJNZ R4,L3

      RET

      END

      如何精確計(jì)算延時(shí)子程序的執(zhí)行時(shí)間?

      匯編語(yǔ)言的一大優(yōu)勢(shì)就是能夠精確控制程序的執(zhí)行時(shí)間,這在編寫(xiě)一些對(duì)時(shí)序要求嚴(yán)格的外圍器件驅(qū)動(dòng)時(shí)由為重要!

      二、兩位數(shù)碼管循環(huán)顯示00~99的實(shí)驗(yàn)

      現(xiàn)在讓我們用實(shí)驗(yàn)板上的兩個(gè)數(shù)碼管來(lái)做一個(gè)循環(huán)顯示00~99數(shù)字的實(shí)驗(yàn),先來(lái)完成必要的硬件部分,數(shù)碼管有共陰和共陽(yáng)的區(qū)分,單片機(jī)都可以進(jìn)行驅(qū)動(dòng),但是驅(qū)動(dòng)的方法卻不同,并且相應(yīng)的0~9的顯示代碼也正好相反。

      首先我們來(lái)介紹兩位共陽(yáng)數(shù)碼管的單片機(jī)驅(qū)動(dòng)方法,電路如下圖:

      網(wǎng)友可以看到:P2.6和P2.7端口分別控制數(shù)碼管的十位和個(gè)位的供電,當(dāng)相應(yīng)的端口變成低電平時(shí),驅(qū)動(dòng)相應(yīng)的三極管會(huì)導(dǎo)通,+5V通過(guò)IN4148二極管和驅(qū)動(dòng)三極管給數(shù)碼管相應(yīng)的位供電,這時(shí)只要P0口送出數(shù)字的顯示代碼,數(shù)碼管就能正常顯示數(shù)字。

      因?yàn)橐@示兩位不同的數(shù)字,所以必須用動(dòng)態(tài)掃描的方法來(lái)實(shí)現(xiàn),就是先個(gè)位顯示1毫秒,再十位顯示1毫秒,不斷循環(huán),這樣只要掃描時(shí)間小于1/50秒,就會(huì)因?yàn)槿搜鄣囊曈X(jué)殘留效應(yīng),看到兩位不同的數(shù)字穩(wěn)定顯示。

      下面我們?cè)俳榻B一種共陰數(shù)碼管的單片機(jī)驅(qū)動(dòng)方法,電路如下圖:

      網(wǎng)友可以看到:+5V通過(guò)1K的排阻直接給數(shù)碼管的8個(gè)段位供電,P2.6和P2.7端口分別控制數(shù)碼管的十位和個(gè)位的供電,當(dāng)相應(yīng)的端口變成低電平時(shí),相應(yīng)的位可以吸入電流。單片機(jī)的P0口輸出的數(shù)據(jù)相當(dāng)于將數(shù)碼管不要顯示的數(shù)字段對(duì)地短路,這樣數(shù)碼管就會(huì)顯示需要的數(shù)字。

      網(wǎng)友可以看到,共陰數(shù)碼管的硬件更簡(jiǎn)單,所以在批量生產(chǎn)時(shí),硬件開(kāi)銷小,節(jié)省PCB面積,減少焊接工作量,降低綜合成本,所以采用共陰數(shù)碼管更有利于批量生產(chǎn),現(xiàn)在銷售的試驗(yàn)板都是采用共陰數(shù)碼管了。

      以下是用AT89C51實(shí)驗(yàn)板的兩位數(shù)碼管顯示00~99依次循環(huán)的匯編語(yǔ)言程序

      a_bit equ 20h;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置

      b_bit equ 21h;數(shù)碼管十位數(shù)存放內(nèi)存位置

      temp equ 22h;計(jì)數(shù)器數(shù)值存放內(nèi)存位置

      star: mov temp,#0;初始化計(jì)數(shù)器,從0開(kāi)始

      stlop: acall display;調(diào)用顯示子程序

      inc temp;對(duì)計(jì)數(shù)器加1

      mov a,temp

      cjne a,#100,next;判斷計(jì)數(shù)器是否滿100?

      mov temp,#0;滿100就清零重新開(kāi)始

      next: ljmp stlop;不滿就循環(huán)執(zhí)行

      ;顯示子程序

      display: mov a,temp;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制

      mov b,#10;10進(jìn)制/10=10進(jìn)制

      div ab

      mov b_bit,a;十位在a

      mov a_bit,b;個(gè)位在b

      mov dptr,#numtab;指定查表啟始地址

      mov r0,#4

      dpl1: mov r1,#250;

      dplop: mov a,a_bit;取個(gè)位數(shù)

      MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼

      mov p0,a;送出個(gè)位的7段代碼

      clr p2.7;開(kāi)個(gè)位顯示

      acall d1ms;顯示162微秒

      setb p2.7;關(guān)閉個(gè)位顯示,防止鬼影

      mov a,b_bit;取十位數(shù)

      MOVC A,@A+DPTR;查十位數(shù)的7段代碼

      mov p0,a;送出十位的7段代碼

      clr p2.6;開(kāi)十位顯示

      acall d1ms;顯示162微秒

      setb p2.6;關(guān)閉十位顯示,防止鬼影

      djnz r1,dplop;循環(huán)執(zhí)行250次

      djnz r0,dpl1;循環(huán)執(zhí)行250X4=1000次

      ret

      ;2+2X80=162微秒,延時(shí)按12MHZ計(jì)算

      D1MS: MOV R7,#80

      DJNZ R7,$

      RET

      ;實(shí)驗(yàn)板上的7段數(shù)碼管0~9數(shù)字的共陰顯示代碼

      numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH

      end

      ;如果是共陽(yáng)數(shù)碼管的顯示代碼

      numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H

      三、單片機(jī)演奏音樂(lè)實(shí)驗(yàn)

      利用單片機(jī)演奏音樂(lè)大概是單片機(jī)愛(ài)好者感興趣的問(wèn)題之一。這里我們用網(wǎng)站提供的實(shí)驗(yàn)板來(lái)做這個(gè)實(shí)驗(yàn),并且了解單片機(jī)演奏音樂(lè)的基本原理,和相關(guān)的源程序。

      首先來(lái)完成必要的硬件部分,硬件部分比較簡(jiǎn)單,如下圖:

      AT89C51單片機(jī)的P2.5口控制一個(gè)8550的三極管,三極管控制電磁蜂鳴器的電源通斷。

      我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單處機(jī)某個(gè)口線的高電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。

      例如,要產(chǎn)生200HZ的音頻信號(hào),200HZ音頻的變化周期為1/200秒,即5ms。這樣,當(dāng)P2.5的高電平或低電平的持續(xù)時(shí)間為2.5ms時(shí)就能發(fā)出200HZ的音調(diào)。

      樂(lè)曲中,每一音符對(duì)應(yīng)著確定的頻率,我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)?lè)曲中的所有常數(shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。

      此外,結(jié)束符和體止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。

      為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。

      程序框圖如圖2所示。

      下面給出程序序請(qǐng)單,可直接在51實(shí)驗(yàn)板上進(jìn)行演奏。本程序演奏的是民歌“八月桂花遍地開(kāi)”,C調(diào),節(jié)奏為94拍/分。網(wǎng)友也可以自行找出一首歌,將樂(lè)曲翻譯成碼表輸入機(jī)器,而程序不變。本實(shí)驗(yàn)方法簡(jiǎn)便,即使不懂音樂(lè)的人,將一首陌生的曲子翻譯成代碼也是易事,和著機(jī)器的演奏學(xué)唱一首歌曲,其趣味無(wú)窮。

      ;標(biāo)題 ‘八月桂花香’發(fā)聲程序

      ORG 0000H

      LJMP START

      ORG 000BH

      INC 20H;中斷服務(wù),中斷計(jì)數(shù)器加1

      MOV TH0,#0D8H

      MOV TL0,#0EFH;12M晶振,形成10毫秒中斷

      RETI

      START:

      MOV SP,#50H

      MOV TH0,#0D8H

      MOV TL0,#0EFH

      MOV TMOD,#01H

      MOV IE,#82H

      MUSIC0:

      NOP

      MOV DPTR,#DAT;表頭地址送DPTR

      MOV 20H,#00H;中斷計(jì)數(shù)器清0

      MUSIC1:

      NOP

      CLR A ;A清零

      MOVC A,@A+DPTR;查表取代碼

      JZ END0;是00H,則結(jié)束

      CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下執(zhí)行

      LJMP MUSIC3

      MUSIC5:

      NOP

      MOV R6,A ;R6=18H音符的頻率

      INC DPTR DPTR加一

      MOV A,#0

      MOVC A,@A+DPTR;取節(jié)拍代碼送R7

      MOV R7,A ;R7=30H音符發(fā)音的時(shí)間

      SETB TR0;啟動(dòng)計(jì)數(shù)

      MUSIC2:

      NOP

      CPL P2.5 ;P2.5是音樂(lè)輸出引腳

      MOV A,R6

      MOV R3,A ;R3=R6=18H

      LCALL DEL

      MOV A,R7

      CJNE A,20H,MUSIC2;中斷計(jì)數(shù)器(20H)=R7否?

      ;不等,則繼續(xù)循環(huán)

      MOV 20H,#00H;等于,則取下一代碼

      INC DPTR

      LJMP MUSIC1

      MUSIC3:

      NOP;休止100毫秒

      CLR TR0

      MOV R2,#0DH;R2=13

      MUSIC4:

      NOP

      MOV R3,#0FFH;R3=255

      LCALL DEL

      DJNZ R2,MUSIC4

      INC DPTR

      LJMP MUSIC1

      END0:

      NOP

      MOV R2,#0FFH;歌曲結(jié)束,延時(shí)1秒后繼續(xù)

      MUSIC6:

      MOV R3,#00H

      LCALL DEL

      DJNZ R2,MUSIC6

      LJMP MUSIC0

      DEL:

      NOP

      DEL3:

      MOV R4,#02H

      DEL4:

      NOP

      DJNZ R4,DEL4

      NOP

      DJNZ R3,DEL3

      RET

      NOP

      DAT:

      DB 18H,DB 20H,DB 18H,DB 1CH,DB 1CH,DB 1CH,DB 20H,DB 30H,DB 20H,DB 20H,DB 40H,DB 20H,DB 20H,DB 20H,DB 18H,DB 26H,1CH,10H,1CH,10H,20H,10H,18H,40H,20H,20H,18H,20H,0FFH,20H,10H,18H,20H,1CH,20H,26H,20H,2BH,20H,20H,80H,0FFH,1CH,10H,20H,20H,2BH,20H 30H 40H 10H 10H 20H 20H 80H 1CH 15H 20H 20H 26H 30H 20H 10H 20H

      DB 30H,20H,2BH,40H

      DB 20H,20H,1CH,10H

      DB 18H,10H,20H,20H

      DB 26H,20H,2BH,20H

      DB 30H,20H,2BH,40H

      DB 20H,DB 18H,DB 1CH,DB 26H,DB 2BH,DB 20H,DB 20H,DB 20H,DB 20H,DB 2BH,DB 2BH,DB 1FH,DB 1CH,DB 26H,DB 30H,DB 20H,DB 18H,1CH,10H,15H,20H,20H,20H,20H,20H,26H,20H,30H,80H,1CH,10H,1CH,10H,26H,20H,30H,20H,20H,15H,20H,10H,20H,20H,2BH,20H,2BH,40H,1CH,10H,15H,20H 30H 20H 20H 40H 20H 20H 30H 10H 20H 20H 40H 05H 10H 20H 20H 30H 20H

      DB 1CH,20H,20H,20H

      DB 26H,40H,20H,20H

      DB 2BH,20H,26H,20H

      DB 20H,20H,30H,30H

      DB 20H,30H,1CH,10H

      DB 18H,40H,1CH,20H

      DB 20H,20H,26H,40H

      DB 13H,60H,18H,20H

      DB 15H,40H,13H,40H

      DB 18H,80H,00H

      end

      四、單片機(jī)倒計(jì)時(shí)定時(shí)器

      這里我們先要安裝好51試驗(yàn)板上的兩個(gè)輕觸按鈕開(kāi)關(guān),我們采用的是獨(dú)立式按鈕開(kāi)關(guān),也就是說(shuō)將開(kāi)關(guān)直接連接到電源的地和單片機(jī)的對(duì)應(yīng)引腳之間,這里K1接到單片機(jī)的P3.6引腳,K2接到P3.7。正常情況下單片機(jī)的P3.6、P3.7都被程序初始化時(shí)置“1” 當(dāng)有按鍵按下時(shí)對(duì)應(yīng)的單片機(jī)引腳被按鈕開(kāi)關(guān)下拉為“0”,這種方法比較直觀,而且比較簡(jiǎn)單,在按鍵數(shù)量不多的場(chǎng)合下使用很廣泛。

      因?yàn)闄C(jī)械開(kāi)關(guān)開(kāi)關(guān)時(shí)有抖動(dòng),所以需要在程序中加一個(gè)軟件去抖動(dòng)程序,它的工作原理如下:當(dāng)單片機(jī)檢測(cè)到有按鍵被按下后立即執(zhí)行一個(gè)10毫秒的延時(shí)程序,然后再在檢測(cè)該引腳是否仍然為閉合狀態(tài)?如果仍然為閉合說(shuō)明確認(rèn)該鍵被按下立即執(zhí)行相應(yīng)的處理程序,否則可能是干擾,丟棄這次檢測(cè)結(jié)果。

      接下來(lái)我們?cè)侔惭b一個(gè)四位的撥碼開(kāi)關(guān),就是圖中紅色的開(kāi)關(guān),它相當(dāng)于四個(gè)裝在一起的撥動(dòng)開(kāi)關(guān),當(dāng)開(kāi)關(guān)撥到“ON”一側(cè)時(shí),對(duì)應(yīng)的那路就會(huì)接通,反之?dāng)嚅_(kāi)。它在單片機(jī)中一般用于設(shè)置初始參數(shù),而且不經(jīng)常改變的場(chǎng)合。這里因?yàn)閱纹瑱C(jī)引腳資源不夠,所以我們只使用了撥碼開(kāi)關(guān)的第2、3、4位,第1位閑置。三個(gè)開(kāi)關(guān)可以邏輯組合出8種狀態(tài),所以我們能夠方便靈活地預(yù)置多達(dá)7種的倒計(jì)時(shí)時(shí)間。

      最后我們來(lái)安裝兩個(gè)繼電器和相關(guān)電路,有了繼電器我們的實(shí)驗(yàn)板不再僅僅是做做實(shí)驗(yàn)而已,可以用于控制一些負(fù)載,比如說(shuō):充電器,洗衣機(jī),電風(fēng)扇等,使我們的實(shí)驗(yàn)板的實(shí)用功能大大增強(qiáng),這也是電子制作實(shí)驗(yàn)室網(wǎng)站的單片機(jī)實(shí)驗(yàn)板和其他公司的產(chǎn)品不同的地方。

      這里繼電器由相應(yīng)的S8050三極管來(lái)驅(qū)動(dòng),開(kāi)機(jī)時(shí),單片機(jī)初始化后的P2.3/P2.4為高電平,+5伏電源通過(guò)電阻使三極管導(dǎo)通,所以開(kāi)機(jī)后繼電器始終處于吸合狀態(tài),如果我們?cè)诔绦蛑薪o單片機(jī)一條:CLR P2.3或者CLR P2.4的指令的話,相應(yīng)三極管的基極就會(huì)被拉低到零伏左右,使相應(yīng)的三極管截至,繼電器就會(huì)斷電釋放,每個(gè)繼電器都有一個(gè)常開(kāi)轉(zhuǎn)常閉的接點(diǎn),便于在其他電路中使用,繼電器線圈兩端反相并聯(lián)的二極管是起到吸收反向電動(dòng)勢(shì)的功能,保護(hù)相應(yīng)的驅(qū)動(dòng)三極管,這種繼電器驅(qū)動(dòng)方式硬件結(jié)構(gòu)比較簡(jiǎn)單。

      ;電子制作實(shí)驗(yàn)室http://004km.cn/

      ;可設(shè)定時(shí)間的倒計(jì)時(shí)定時(shí)器,可選擇5/15/20/30/35/45/50分鐘倒計(jì)時(shí)

      ;倒計(jì)時(shí)時(shí)間由四位撥碼開(kāi)關(guān)的2/3/4位來(lái)控制,;第2位表示5分鐘,第3位表示15分鐘,第4位表示30分鐘,;通過(guò)不同的組合可以產(chǎn)生5/15/20/30/35/45/50分鐘倒計(jì)時(shí)

      ;P1.0口的外接的發(fā)光二極管為狀態(tài)LED,定時(shí)未開(kāi)始時(shí)LED常亮,定時(shí)過(guò)程中LED閃爍

      ;K1為開(kāi)始按鈕,K2為停止按鈕

      a_bit equ 20h;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置

      b_bit equ 21h;數(shù)碼管十位數(shù)存放內(nèi)存位置

      temp equ 22h;計(jì)數(shù)器數(shù)值存放內(nèi)存位置

      ;開(kāi)機(jī)初始化

      MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入

      MOV P0,#0FFH;使顯示時(shí)間數(shù)碼管熄滅

      CLR P1.0;點(diǎn)亮LED指示燈

      ;等待鍵盤(pán)輸入

      START:JB P3.6,$;循環(huán)判斷開(kāi)始按鈕K1是否按下?

      ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖

      JB P3.6,START;如果是干擾就返回

      JNB P3.6,$;等待按鍵松開(kāi)

      ;讀撥碼開(kāi)關(guān)的狀態(tài),獲得倒計(jì)時(shí)時(shí)間

      SET:MOV A,#0;首先對(duì)A清零

      JB P2.0,A1;判斷撥碼開(kāi)關(guān)的第2位是否接通,接通就對(duì)A加5

      ADD A,#5

      A1:JB P2.1,A2;判斷撥碼開(kāi)關(guān)的第3位是否接通,接通就對(duì)A加15

      ADD A,#15

      A2:JB P2.2,A3;判斷撥碼開(kāi)關(guān)的第4位是否接通,接通就對(duì)A加30

      ADD A,#30

      A3:MOV TEMP,A

      ;這時(shí)TEMP中的值就是倒計(jì)時(shí)時(shí)間

      ;數(shù)碼管顯示定時(shí)時(shí)間的程序

      display:CLR P2.4;使繼電器1釋放,開(kāi)始定時(shí)(開(kāi)機(jī)時(shí)繼電器處于吸合狀態(tài))

      CLR P2.3;使繼電器2釋放,開(kāi)始定時(shí)(開(kāi)機(jī)時(shí)繼電器處于吸合狀態(tài))

      MOV R2,#120

      AB:MOV R3,#250

      TIME1:mov a,temp;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制

      mov b,#10;10進(jìn)制/10=10進(jìn)制

      div ab

      mov b_bit,a;十位在a

      mov a_bit,b;個(gè)位在b

      mov dptr,#numtab;指定查表啟始地址

      mov r0,#4

      dpl1: mov r1,#250;

      dplop: mov a,a_bit;取個(gè)位數(shù)

      MOVC A,@A+DPTR;查個(gè)位數(shù)的7段代碼

      mov p0,a;送出個(gè)位的7段代碼

      clr p2.7;開(kāi)個(gè)位顯示

      ACALL DELY1;顯示1毫秒

      setb p2.7;關(guān)閉個(gè)位顯示,防止鬼影

      mov a,b_bit;取十位數(shù)

      MOVC A,@A+DPTR;查十位數(shù)的7段代碼

      mov p0,a;送出十位的7段代碼

      clr p2.6;開(kāi)十位顯示

      ACALL DELY1;顯示1毫秒

      setb p2.6;關(guān)閉十位顯示,防止鬼影

      ;插入一段判斷定時(shí)過(guò)程中是否有按鍵輸入的程序段

      C1:JB P3.6,B1

      ACALL DELAY10;延時(shí)10毫秒消抖

      JB P3.6,C1

      JNB P3.6,$;等待按鍵松開(kāi)

      AJMP SET

      B1:JB P3.7,M33

      ACALL DELAY10;延時(shí)10毫秒消抖

      JB P3.7,B1

      JNB P3.7,$;等待按鍵松開(kāi)

      AJMP OVER

      M33:djnz r3,TIME1;2毫秒循環(huán)執(zhí)行250次,時(shí)間約0.5秒

      CPL P1.0;使LED每1秒閃爍一次

      djnz r2,AB;循環(huán)執(zhí)行120次,時(shí)間為1分鐘

      DEC TEMP;滿一分鐘對(duì)定時(shí)時(shí)間減1

      MOV A,TEMP

      JNZ DISPLAY;判斷TEMP的數(shù)值是否為0?不為0循環(huán)

      ;結(jié)束定時(shí)

      OVER:CLR P1.0;LED指示燈常亮

      SETB P2.4;繼電器1吸合,定時(shí)結(jié)束,退回到開(kāi)機(jī)時(shí)的狀態(tài)

      SETB P2.3;繼電器2吸合,定時(shí)結(jié)束,退回到開(kāi)機(jī)時(shí)的狀態(tài)

      AJMP START;退到開(kāi)機(jī)初始化狀態(tài)

      ;1毫秒延時(shí)子程序

      DELY1:MOV R4,#2

      D1:MOV R5,#248

      DJNZ R5,$

      DJNZ R4,D1

      RET

      ;10毫秒延時(shí)子程序

      DELAY10:MOV R4,#20

      D2:MOV R5,#248

      DJNZ R5,$

      DJNZ R4,D2

      RET

      ;實(shí)驗(yàn)板上的7段數(shù)碼管0~9數(shù)字的共陰顯示代碼

      numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH

      end

      五、單片機(jī)和PC機(jī)串口通訊試驗(yàn)

      51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡(jiǎn)單可靠。我們采用了三線制連接串口,也就是說(shuō)和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)我們來(lái)說(shuō)已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。電子制作實(shí)驗(yàn)室網(wǎng)站的提供的帶擴(kuò)展元件的51單片機(jī)實(shí)驗(yàn)板上已經(jīng)裝配好了全部硬件。

      串口通訊的硬件電路如上圖所示,我們可以采用以下方法來(lái)判斷串口是否存在硬件問(wèn)題,將MAX232的第9腳接地,測(cè)量一下串口的第3腳和第5腳之間是否輸出10V左右的直流電壓?將MAX232的第9腳接正5V,測(cè)量一下串口的第3腳和第5腳之間是否輸出-10V左右的直流電壓?這樣可以判斷MAX232是否完好和串口線的排線壓接處是否有接觸不良。

      為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)WINDOWS軟件進(jìn)行觀察,這里我們利用一個(gè)免費(fèi)的電腦串口調(diào)試軟件。

      點(diǎn)擊這里可以下載并運(yùn)行這個(gè)串口調(diào)試軟件,這是一個(gè)綠色的軟件,無(wú)需安裝,可以直接在當(dāng)前位置運(yùn)行這個(gè)軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗(yàn)板的串口也要和電腦的COM1連接,將燒寫(xiě)有以下程序的單片機(jī)插入單片機(jī)實(shí)驗(yàn)板的萬(wàn)能插座中,并接通51單片機(jī)實(shí)驗(yàn)板的電源,這時(shí)只要按下K1一次,在串口調(diào)試助手軟件的接收區(qū)界面中就會(huì)增加一個(gè)“AF”字符,表示單片機(jī)向電腦發(fā)送“AF”字符成功。串口實(shí)驗(yàn)的源程序如下所示:

      ;這是一個(gè)AT89C51單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序

      ;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換。

      ;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)

      ;就發(fā)送一個(gè)16進(jìn)制的AF字符

      ORG 0000H

      MOV SCON,#50H;設(shè)置成串口1方式

      MOV TMOD,#20H;波特率發(fā)生器T1工作在模式2上

      MOV PCON,#80H;波特率翻倍為2400x2=4800BPS

      MOV TH1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)

      MOV TL1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)

      SETB TR1;啟動(dòng)定時(shí)器T1

      ;以上完成通訊初始化設(shè)置

      WRIT:JB P3.6,$;判斷K1是否按下,如果沒(méi)有按下就等待

      ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)

      JB P3.6,WRIT;去除干擾信號(hào)

      JNB P3.6,$;等待按鍵松開(kāi)

      MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去

      MOV SBUF,A;將AF通過(guò)串口發(fā)送出去

      AJMP WRIT

      ;10毫秒延時(shí)子程序

      DELAY10:MOV R4,#20

      D2:MOV R5,#248

      DJNZ R5,$

      DJNZ R4,D2

      RET

      END

      六、紅外線遙控器聲光測(cè)試器

      這里我們要用單片機(jī)實(shí)驗(yàn)板制作一個(gè)紅外線遙控器聲光測(cè)試器,紅外線遙控器廣泛用于電視機(jī)、VCD、音響等家用電器中,經(jīng)過(guò)長(zhǎng)時(shí)間使用可能會(huì)出現(xiàn)一些小故障,用我們制作的測(cè)試器可以方便地判斷遙控器是否能發(fā)射紅外信號(hào)?各個(gè)按鍵工作是否可靠?這個(gè)測(cè)試器非常簡(jiǎn)單,制作也很容易,但是也有一定的實(shí)用價(jià)值,站長(zhǎng)就是用這個(gè)小東東幫鄰居修了不少遙控器哦~~

      首先讓我們來(lái)完成試驗(yàn)板上的硬件部分,需要再焊接一個(gè)一體化紅外接收器,一體化紅外線接收器是一種集紅外線接收和放大于一體,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,而體積又很小巧,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。再焊上兩個(gè)濾波電容,可以使接收器工作更可靠

      ORG 0000H

      START:MOV P0,#0FFH;開(kāi)機(jī)初始化

      MOV P1,#0FFH

      MOV P2,#11100111B

      MOV P3,#0FFH

      JB P3.2,$;等待遙控信號(hào)出現(xiàn)

      MOV P1,#0

      MOV p2,#0

      JNB P3.2,$;如果是低電平就原地等待,如果出現(xiàn)高電平就退出

      AJMP START

      END

      七、紅外線遙控器解碼程序

      這里我們以紅外線遙控編碼芯片為L(zhǎng)C7461等芯片為例來(lái)說(shuō)明用單片機(jī)實(shí)現(xiàn)紅外遙控解碼的詳細(xì)過(guò)程,站長(zhǎng)琢磨這個(gè)解碼程序花了相當(dāng)多的精力,期間幾經(jīng)修改逐步完善,后來(lái)還用它開(kāi)發(fā)了幾個(gè)小產(chǎn)品,希望能對(duì)網(wǎng)友學(xué)習(xí)單片機(jī)有所幫助。

      紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強(qiáng)、成本低等特點(diǎn),因而,繼彩電、錄像機(jī)之后,在錄音機(jī)、音響設(shè)備、空凋機(jī)以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。

      紅外遙控系統(tǒng)

      通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專用集成電路芯片來(lái)進(jìn)行控制操作,如圖1所示。發(fā)射部分包括鍵盤(pán)矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。遙控發(fā)射器及其編碼

      遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成脈沖寬度調(diào)制和脈沖相位調(diào)制兩大類,這里我們以運(yùn)用比較廣泛,解碼比較容易的脈沖寬度調(diào)制來(lái)加以說(shuō)明,現(xiàn)以LC7461組成發(fā)射電路為例說(shuō)明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:

      采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”

      上述“0”和“1”組成的42位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,7461產(chǎn)生的遙控編碼是連續(xù)的42位二進(jìn)制碼組,其中前26位為用戶識(shí)別碼,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。

      當(dāng)遙控器上任意一個(gè)按鍵按下超過(guò)36ms時(shí),LC7461芯片的振蕩器使芯片激活,將發(fā)射一個(gè)特定的同步碼頭,對(duì)于接收端而言就是一個(gè)9ms的低電平,和一個(gè)4.5ms的高電平,這個(gè)同步碼頭可以使程序知道從這個(gè)同步碼頭以后可以開(kāi)始接收數(shù)據(jù)。

      解碼的關(guān)鍵是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開(kāi)始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過(guò)后,開(kāi)始延時(shí),0.56ms以后,若讀到的電平為低,說(shuō)明該位為“0”,反之則為“1”,為了可靠起見(jiàn),延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過(guò)1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右即可。

      根據(jù)紅外編碼的格式,程序應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。

      如果郵購(gòu)我們開(kāi)發(fā)的51單片機(jī)試驗(yàn)板和擴(kuò)展元件的網(wǎng)友,可以獲得如上圖所示的紅外遙控手柄,這種遙控器的編碼格式符合上面的描述規(guī)律,而且價(jià)格低廉,有32個(gè)按鍵,按鍵外形比較統(tǒng)一,如果用于批量開(kāi)發(fā),可以把遙控器上貼膜換成你需要的字符,這為開(kāi)發(fā)產(chǎn)品提供了便利。

      接收器及解碼

      LT0038是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形于一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,沒(méi)有紅外遙控信號(hào)時(shí)為高電平,收到紅外信號(hào)時(shí)為低電平,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。

      下面是一個(gè)對(duì)51實(shí)驗(yàn)板配套的紅外線遙控器的解碼程序,它可以把上圖32鍵的紅外遙控器每一個(gè)按鍵的鍵值讀出來(lái),并且通過(guò)實(shí)驗(yàn)板上P1口的8個(gè)LED顯示出來(lái),在解碼成功的同時(shí)并且能發(fā)出“嘀嘀嘀”的提示音。

      ORG 0000H

      AJMP MAIN;轉(zhuǎn)入主程序

      ORG 0003H;外部中斷P3.2腳INT0入口地址

      AJMP INT;轉(zhuǎn)入外部中斷服務(wù)子程序(解碼程序)

      ;以下為主程序進(jìn)行CPU中斷方式設(shè)置

      MAIN:SETB EA;打開(kāi)CPU總中斷請(qǐng)求

      SETB IT0;設(shè)定INT0的觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)

      SETB EX0;打開(kāi)INT0中斷請(qǐng)求

      ;以下對(duì)單片機(jī)的所有引腳進(jìn)行初始化,全部設(shè)置成高電平

      MOV P2,#11100111B

      AJMP $

      ;以下為進(jìn)入P3.2腳外部中斷子程序,也就是解碼程序

      INT: CLR EA;暫時(shí)關(guān)閉CPU的所有中斷請(qǐng)求

      MOV R6,#10

      SB: ACALL YS1;調(diào)用882微秒延時(shí)子程序

      JB P3.2,EXIT;延時(shí)882微秒后判斷P3.2腳是否出現(xiàn)高電平如果有就退出解碼程序

      DJNZ R6,SB;重復(fù)10次,目的是檢測(cè)在8820微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序

      ;以上完成對(duì)遙控信號(hào)的9000微秒的初始低電平信號(hào)的識(shí)別。

      JNB P3.2,$;等待高電平避開(kāi)9毫秒低電平引導(dǎo)脈沖

      ACALL YS2;延時(shí)4.74毫秒避開(kāi)4.5毫秒的結(jié)果碼

      MOV R7,#26;忽略前26位系統(tǒng)識(shí)別碼

      JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號(hào)

      LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)

      MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中

      JNC UUUA;如果為0就跳轉(zhuǎn)到UUUA

      LCALL YS3;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束

      UUUA: DJNZ R7,JJJJA

      MOV R1,#1AH;設(shè)定1AH為起始RAM區(qū)

      MOV R2,#2;接收從1AH到1BH的2個(gè)內(nèi)存,用于存放操作碼和操作反碼

      PP: MOV R3,#8;每組數(shù)據(jù)為8位

      JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號(hào)

      LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)

      MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中

      JNC UUU;如果為0就跳轉(zhuǎn)到UUU

      LCALL YS3;檢測(cè)到高電平1的話延時(shí)1毫秒等待脈沖高電平結(jié)束

      UUU: MOV A,@R1;將R1中地址的給A

      RRC A;將C中的值0或1移入A中的最低位

      MOV @R1,A;將A中的數(shù)暫時(shí)存放在R1數(shù)值的內(nèi)存中

      DJNZ R3,JJJJ;接收滿8位換一個(gè)內(nèi)存

      INC R1;對(duì)R1中的值加1,換下一個(gè)RAM

      DJNZ R2,PP;接收完8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH中

      MOV A,1AH

      CPL A;對(duì)1AH取反后和1BH比較

      CJNE A,1BH,EXIT;如果不等表示接收數(shù)據(jù)發(fā)生錯(cuò)誤,放棄

      MOV P1,1AH;將按鍵的鍵值通過(guò)P1口的8個(gè)LED顯示出來(lái)!

      CLR P2.5;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功

      LCALL YS2

      LCALL YS2

      LCALL YS2

      SETB P2.5;蜂鳴器停止

      EXIT: SETB EA;允許中斷

      RETI;退出解碼子程序

      YS1: MOV R4,#20;延時(shí)子程序1,精確延時(shí)882微秒

      D1: MOV R5,#20

      DJNZ R5,$

      DJNZ R4,D1

      RET

      YS2: MOV R4,#10;延時(shí)子程序2,精確延時(shí)4740微秒

      D2: MOV R5,#235

      DJNZ R5,$

      DJNZ R4,D2

      RET

      YS3: MOV R4,#2;延時(shí)程序3,精確延時(shí)1000微秒

      D3:MOV R5,#248

      DJNZ R5,$

      DJNZ R4,D3

      RET

      END

      這是按照紅外遙控器按鍵的實(shí)際位置給出的32個(gè)按鍵的鍵值(16進(jìn)制)

      八、紅外線電腦遙控器

      將燒寫(xiě)文件燒錄到AT89C51單片機(jī)內(nèi)部后,再將電腦串口連接好帶有擴(kuò)展元件的51實(shí)驗(yàn)板,打開(kāi)51實(shí)驗(yàn)板電源后,P1.0端口上的LED就會(huì)閃爍,這說(shuō)明單片機(jī)程序已經(jīng)正常運(yùn)行了,再把紅色的撥碼開(kāi)關(guān)的第2、第3位開(kāi)關(guān)打開(kāi)。

      如上圖所示就可以接收紅外遙控編碼了。這時(shí)實(shí)驗(yàn)板就變成了一個(gè)超級(jí)的PC遙控器了。當(dāng)然我們還要借助Grider軟件來(lái)實(shí)現(xiàn)。

      1.安裝軟件

      Grider是國(guó)外一款很優(yōu)秀的免費(fèi)紅外遙控軟件,支持多種的硬件,如紅外鍵盤(pán)鼠標(biāo),紅外接收器等,軟件的功能強(qiáng)大有OSD屏顯,名種常用的相關(guān)系統(tǒng)操作如開(kāi)關(guān)顯示器等等。這里就簡(jiǎn)單介紹一些簡(jiǎn)單的用法。首先要安裝軟件,點(diǎn)擊這里下載Grider3.2,也可到004km.cnments是注釋命令有的,圖中2是設(shè)定重復(fù)按鍵的等待時(shí)間,就是說(shuō)按下一個(gè)鍵執(zhí)行命令后,要等多久才能再次響應(yīng)該鍵。這樣就定義了一個(gè)鍵的命令。軟件功能很強(qiáng)大這里也無(wú)法一一說(shuō)明。自已多使用摸索幾次就可以輕松上手了。

      V

      第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)

      單片機(jī)課程設(shè)計(jì)

      課題: 簡(jiǎn)易電子琴設(shè)計(jì)

      學(xué)

      院:

      電氣與信息工程學(xué)院 專

      業(yè):

      電子信息工程 姓

      名:

      李琳琳 學(xué)

      號(hào):

      093411106

      指導(dǎo)老師:

      田巍

      河南城建學(xué)院

      2014年

      01 月

      01 日

      第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)

      課 程 設(shè) 計(jì)

      設(shè)計(jì)題目: 基于單片機(jī)的8*8點(diǎn)陣顯示數(shù)字設(shè)計(jì)

      學(xué)生姓名: 指導(dǎo)教師: 二級(jí)學(xué)院: 專

      業(yè): 班

      級(jí): 學(xué)

      號(hào):

      目 錄

      摘要??????????????????????????Ⅱ 1 方案選擇及總體設(shè)計(jì)???????????????????1 1.1方案確定?????????????????????1 1.1.1功能要求????????????????????1 1.1.2方案確定????????????????????1 1.2器件選擇?????????????????????1 2 控制系統(tǒng)設(shè)計(jì)??????????????????????2 2.1 控制系統(tǒng)硬件設(shè)計(jì)?????????????????2 2.1.1整體模塊設(shè)計(jì)??????????????????2 2.1.2單片機(jī)AT89C51?????????????????2 2.1.3單片機(jī)最小系統(tǒng)設(shè)計(jì)???????????????5 2.1.3.1晶振電路設(shè)計(jì)?????????????????5 2.1.3.2復(fù)位電路設(shè)計(jì)?????????????????5 2.1.4驅(qū)動(dòng)電路設(shè)計(jì)??????????????????6 2.1.5LED點(diǎn)陣顯示設(shè)計(jì)????????????????9 2.2控制系統(tǒng)軟件設(shè)計(jì)?????????????????11 2.2.1軟件設(shè)計(jì)思想??????????????????11 2.2.2主程序流程圖??????????????????11 2.2.3子程序流程圖??????????????????13 3 系統(tǒng)仿真及調(diào)試????????????????????14 3.1系統(tǒng)調(diào)試?????????????????????14 3.2系統(tǒng)仿真?????????????????????14 3.2.1protrus軟件仿真????????????????14 3.2.2程序??????????????????????14 總結(jié)?????????????????????????^?17 參考文獻(xiàn)????????????????????????18

      I

      摘 要

      現(xiàn)在市場(chǎng)上各類基于LED的顯示屏較多,但大部分產(chǎn)品為單一模式的LED顯示屏,其在顯示內(nèi)容的更換及顯示屏的重組等方面都存在不便之處。但隨著信息化社會(huì)的迅速發(fā)展,LED顯示屏正在向顯示內(nèi)容豐富、信息更改方便等方面發(fā)展。因此制作一款多功能的LED廣告顯示屏是非常有意義地。

      LED驅(qū)動(dòng)顯示采用動(dòng)態(tài)掃描方法,動(dòng)態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行的同名列共用一套列驅(qū)動(dòng)器。以8×8點(diǎn)陣為例,把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;第8行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。

      本次課程設(shè)計(jì)的題目為8×8點(diǎn)陣數(shù)字顯示,設(shè)計(jì)的任務(wù)為使用單片機(jī)控制8×8的點(diǎn)陣顯示0到9的數(shù)字,不僅顯示清晰,并且每經(jīng)過(guò)一定時(shí)間,顯示的數(shù)字加一,從0 到 9 循環(huán)。以AT89C51單片機(jī)為核心,采用串行傳輸、動(dòng)態(tài)掃描技術(shù),制作一款模塊化LED多功能顯示屏。

      在資料收集方面,主要是參考了《51單片機(jī)原理及應(yīng)用—基于Keil C與Proteus》一書(shū),結(jié)合了一些網(wǎng)絡(luò)資料,以及一些集成塊的使用說(shuō)明書(shū)。

      在整個(gè)工作過(guò)程中,根據(jù)收集來(lái)的資料繪制出大概的原理圖,然后通過(guò)Proteus仿真,與此同時(shí)運(yùn)用Keil 編程,用Keil 與Proteus進(jìn)行聯(lián)調(diào),調(diào)試成功后確定了原理圖和控制程序。

      II

      第一章 方案選擇及總體設(shè)計(jì)

      1.1 方案確定

      1.1.1 功能要求

      1、采用STC-51單片機(jī)作為微處理器。

      2、設(shè)計(jì)一個(gè)8×8點(diǎn)陣LED數(shù)碼字符顯示器。

      3、在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足、穩(wěn)定、清晰無(wú)串?dāng)_。

      4、動(dòng)態(tài)顯示“0——9”幾個(gè)字符。

      1.1.2 方案確定

      采用ST89C51單片機(jī)作為微處理器,將共陽(yáng)極二極管用共陰型接法連接成8×8點(diǎn)陣LED數(shù)碼字符陣列,通過(guò)程序控制,采用動(dòng)態(tài)顯示,建立字符庫(kù)“0——9”。

      1.2 器件選擇

      微處理器采用ST89C51系列單片機(jī),ST89C51單片機(jī)是這幾年在我國(guó)非常流行的單片機(jī),是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)高性能單片機(jī),可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次,具有低功耗、高性能的特點(diǎn)。

      AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。

      第二章 控制系統(tǒng)設(shè)計(jì)

      2.1控制系統(tǒng)硬件設(shè)計(jì)

      2.1.1整體模塊設(shè)計(jì)

      本設(shè)計(jì)行、列驅(qū)動(dòng)電路,顯示器電路,運(yùn)用單片機(jī)的智能化,系統(tǒng)的將每個(gè)功能電路模塊連接在一起,總體結(jié)構(gòu)設(shè)計(jì)如圖2-1所示。

      點(diǎn)陣顯示器行驅(qū)動(dòng)電路PC上位機(jī)單片機(jī)8×8點(diǎn)陣LED顯示器電路點(diǎn)陣顯示器列驅(qū)動(dòng)電路

      圖2-1 硬件系統(tǒng)框圖

      此次需要實(shí)現(xiàn)的功能是利用一個(gè)ST89C51,一個(gè)8×8LED點(diǎn)陣,動(dòng)態(tài)顯示“0——9”10個(gè)字,采用PC上位機(jī)驅(qū)動(dòng)顯示電路。

      2.1.2 單片機(jī)AT89C51 AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)能提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。

      AT89C51單片機(jī)引腳圖如圖2-2所示。

      圖2-2 AT89C51引腳圖

      AT89C51管腳說(shuō)明: VCC:供電電壓。GND:接地。

      P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。

      P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。

      P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行

      存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。

      P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。

      P3口也可作為AT89C51的一些特殊功能口,如下所示: P3口管腳

      備選功能: P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)

      P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

      RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。

      ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。

      /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。

      /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

      XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:

      來(lái)自反向振蕩器的輸出。

      2.1.3 單片機(jī)最小系統(tǒng)設(shè)計(jì)

      單片機(jī)的最小系統(tǒng)是能夠讓單片機(jī)工作的最小硬件電路。除了單片機(jī)外,最小系統(tǒng)還包括復(fù)位電路和時(shí)鐘電路。

      復(fù)位電路:?jiǎn)纹瑱C(jī)的復(fù)位電路接在復(fù)位信號(hào)RST上,復(fù)位電路用于將單片機(jī)內(nèi)部電路的狀態(tài)恢復(fù)到初始值。需要復(fù)位時(shí)按下按鈕即可。

      時(shí)鐘電路:時(shí)鐘電路為單片機(jī)工作提供基本時(shí)鐘。時(shí)鐘電路中包含一個(gè)晶體振蕩器,簡(jiǎn)稱晶振,頻率范圍是1.2~12MHz。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快

      ST89C51單片機(jī)最小系統(tǒng)電路由復(fù)位電路、晶振電路兩部分組成。2.1.3.1 晶振電路設(shè)計(jì)

      ST89C52單片機(jī)芯片內(nèi)部設(shè)有一個(gè)由反向放大器構(gòu)成的振蕩器,XTAL1和XTAL2分別為振蕩電路的的輸入端和輸出端,時(shí)鐘可有內(nèi)部或外部生成,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就會(huì)產(chǎn)生自激振蕩。系統(tǒng)采用的定時(shí)元件為石英晶體和電容組成的并聯(lián)諧振回路。晶振頻率采用12MHZ,C1、C2的電容值取30pF,電容的大小起頻率微調(diào)的作用。晶振電路圖如圖2-3所示。

      C1XTAL130pFC2XTAL230pF圖2-3 晶振電路圖

      X112MHZ

      2.1.3.2 復(fù)位電路設(shè)計(jì)

      ST89C51單片機(jī)在啟動(dòng)運(yùn)行時(shí)或者出現(xiàn)死機(jī)時(shí)需要復(fù)位,使CPU以及其他功能部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。單片機(jī)有多種復(fù)位方式,常用的復(fù)位操作有上電復(fù)位和手動(dòng)復(fù)位方式。本設(shè)計(jì)采用最簡(jiǎn)單的上電復(fù)位方式,電路如圖2-4所示。上電復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的,復(fù)位電路產(chǎn)生的復(fù)位信號(hào)(高電平有效)由RST引腳送入到內(nèi)部的復(fù)位電路,對(duì)ST89C51單片機(jī)進(jìn)行復(fù)位,復(fù)位信號(hào)要持續(xù)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)以上,才能使ST89C51單片機(jī)可靠復(fù)位。當(dāng)上電時(shí),C1相當(dāng)于短路,有時(shí)碰到干擾時(shí)會(huì)造成錯(cuò)誤復(fù)位,可在復(fù)位端加個(gè)去耦電容,可以取得很好的效果。

      ST89C51單片機(jī)復(fù)位電路如下圖所示:

      VCCAT89C51VCCC510MF/25VRSTR94.7KVSSR24.7KVSSRSTR1C10MF/25VS5 RSTVCCAT89C51VCC

      圖2-4 上電復(fù)位電路圖

      圖2-5 按鍵電平復(fù)位電路圖

      復(fù)位電路工作原理:

      上電瞬間RST引腳的電位與VCC等電位,RST引腳為高電平,隨著電容C5充電電流的減少,RST引腳的電位不斷下降,可以保持RST引腳在為高電平的時(shí)間內(nèi)完成復(fù)位操作。

      當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵S5后再松開(kāi),也能使RST引腳為一段時(shí)間的高電平,從而實(shí)現(xiàn)ST89C51單片機(jī)復(fù)位。

      2.1.4 驅(qū)動(dòng)電路設(shè)計(jì)

      驅(qū)動(dòng)電路圖如圖2-6所示。

      圖2-6 驅(qū)動(dòng)電路圖

      74LS245引腳圖如圖2-7所示。

      圖2-7 74LS245引腳圖

      引出端符號(hào): A A總線端

      B B總線端

      /G 三態(tài)允許端(低電平有效)DIR 方向控制端

      74LS245是用來(lái)驅(qū)動(dòng)LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。

      如果用89C51的P0口輸出到數(shù)碼管,那就要考慮到數(shù)碼管的亮度以及P0口帶負(fù)載的能力,當(dāng)89C51單片機(jī)的P0口總線負(fù)載達(dá)到或超過(guò)P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。選用74LS245提高驅(qū)動(dòng)能力。P0口的輸出經(jīng)過(guò)74LS245提高驅(qū)動(dòng)后,輸出到數(shù)碼管顯示電路。

      工作原理:

      當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由B向A傳輸;(接收)DIR=“1”,信號(hào)由A向B傳輸;(發(fā)送)當(dāng)CE為高電平時(shí),A、B均為高阻態(tài)。

      正向點(diǎn)亮一顆LED,至少也要10~20mA,若電流不夠大,則LED不夠大。而不管是ST89C51的I/O口,還是TTL、CMOS的輸出端,其高態(tài)輸出電流都不是很高,不過(guò)1~2mA而已。因此很難直接高態(tài)驅(qū)動(dòng)LED,這時(shí)候就需要額外的驅(qū)動(dòng)電路,通常有共陽(yáng)型與共陰型LED陣列驅(qū)動(dòng)電路,本設(shè)計(jì)才用共陰型高態(tài)掃描信號(hào)驅(qū)動(dòng)電路。

      共陰型LED陣列驅(qū)動(dòng)電路采用高態(tài)掃描,也就是任何時(shí)間只有一個(gè)高態(tài)信號(hào),其它則為低態(tài)。一行掃描完成后,再把高態(tài)信號(hào)轉(zhuǎn)化到近鄰的其他行,掃描信號(hào)接用一個(gè)反向驅(qū)動(dòng)器,ST89C51本身內(nèi)置一個(gè)反向驅(qū)動(dòng)器,本設(shè)計(jì)將ST89C51作為點(diǎn)矩陣顯示控制系統(tǒng)的控制核心,通過(guò)點(diǎn)矩陣實(shí)時(shí)顯示并移動(dòng)字符。

      單片機(jī)的串口與行驅(qū)動(dòng)器相連,用來(lái)發(fā)送顯示數(shù)據(jù)信息。P3口與LED陣列的行引腳相連,送出數(shù)據(jù)、地址以及系統(tǒng)控制信號(hào)。輸出低態(tài)時(shí),最大可吸取0.5A,即500mA,若每個(gè)LED取30mA,7個(gè)LED同時(shí)點(diǎn)亮,需要210mA,完全滿足LED點(diǎn)亮的基本條件。

      所要顯示的信號(hào)送入74LS245芯片,然后連接到LED陣列的列陣腳。對(duì)于高態(tài)的顯示信號(hào),將可提供其所連接LED的驅(qū)動(dòng)電流,而這個(gè)驅(qū)動(dòng)電流經(jīng)過(guò)LED到輸出端,形成正向回路,即可點(diǎn)亮該LED。其中每個(gè)晶體管任何時(shí)間只需負(fù)

      責(zé)驅(qū)動(dòng)一個(gè)LED,所以選擇30mA射極電流的晶體管。驅(qū)動(dòng)電路如圖2-6所示。

      2.1.5 LED點(diǎn)陣顯示設(shè)計(jì)

      本設(shè)計(jì)采用ATMEL公司的AT89C51作矩陣顯示控制系統(tǒng)控制核心,12MHZ晶振,8?8點(diǎn)陣共陽(yáng)LED顯示器。其中,P0口作為字符數(shù)據(jù)輸出口,P3口為字符顯示掃描輸出口,第31腳(EA)接電源,改變電阻(270×8)的大小可改變顯示字符的亮度,驅(qū)動(dòng)用74LS245芯片。

      本設(shè)計(jì)LED矩陣顯示器電路選用8×8點(diǎn)陣模塊,系統(tǒng)由單片機(jī)控制。LED顯示屏是將發(fā)光二極管按行按列布置的,在掃描驅(qū)動(dòng)方式下可以按行掃描按列控制,也可以按列掃描按行控制。本文就是使用1塊8×8點(diǎn)陣,采用按列掃描按行控制控制方式,掃描順序自左向右,以滿足數(shù)字顯示的要求。8×8點(diǎn)陣LED結(jié)構(gòu)如圖2-8所示。

      8×8點(diǎn)陣LEDabcdefgh12345678

      圖2-8 LED數(shù)碼顯示管

      8×8 點(diǎn)陣LED的工作原理:LED點(diǎn)陣的顯示方式是按顯示編碼的順序,一行一行地顯示。對(duì)于共陽(yáng)型的點(diǎn)陣來(lái)說(shuō),當(dāng)某一點(diǎn)所在的行對(duì)應(yīng)高電平“1”并且其所在的列對(duì)應(yīng)低電平“0”的時(shí)候,這一點(diǎn)就會(huì)被點(diǎn)亮。將每一行的顯示時(shí)間進(jìn)行一定的延時(shí),由于人的視覺(jué)暫留現(xiàn)象,就會(huì)感覺(jué)到8行LED是在同時(shí)顯示的。若顯示的時(shí)間太短,則亮度不夠,若顯示的時(shí)間太長(zhǎng),將會(huì)感覺(jué)到閃爍。圖2-9為8×8點(diǎn)陣LED外觀及引腳圖,其等效電路如圖2-10所示,只要其對(duì)應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點(diǎn)亮,則Y0=1,X0=0即可。應(yīng)用時(shí)限流電阻可以放在X軸或Y軸。一個(gè)8×8點(diǎn)陣是由64個(gè)發(fā)光二極管按規(guī)律組成的,如圖2-10所示。圖中,行接高電平,列接低電平,發(fā)光二極管導(dǎo)通發(fā)光。

      圖2-9 8×8點(diǎn)陣LED外觀及引腳圖

      圖2-10 8×8點(diǎn)陣LED等效電路

      8×8點(diǎn)陣數(shù)字顯示的編碼原理: 8×8點(diǎn)陣數(shù)字顯示主要應(yīng)用行掃描動(dòng)態(tài)顯示的方法實(shí)現(xiàn),如圖2-11所示,將行線依次置零,一次對(duì)列線編碼,有紅色填充部分為1,無(wú)填充部分為0。

      圖2-11 8×8點(diǎn)陣數(shù)字顯示的編碼原理

      如此可得到“0”的編碼為{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},同理可得到:

      {0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00}

      //1 {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00}

      //2 {0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00}

      //3 {0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00}

      //4 {0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00}

      //5 {0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00}

      //6 {0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00}

      //7 {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00}

      //8 {0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00}

      //9 2.2控制系統(tǒng)軟件設(shè)計(jì)

      2.2.1 軟件設(shè)計(jì)思想

      主程序先進(jìn)行設(shè)置中斷,并啟動(dòng),再進(jìn)行鍵盤(pán)掃描載入“0——9”字型,然后判斷一組字型是否掃描完,按不同情況進(jìn)行循環(huán)調(diào)用子程序。進(jìn)入子程序后,首先設(shè)置相應(yīng)的程序,反復(fù)調(diào)用顯示子程序,并在顯示過(guò)程中反復(fù)調(diào)用鍵盤(pán)掃描子程序進(jìn)行延時(shí),判斷是否退出相應(yīng)的方式顯示子程序。設(shè)計(jì)過(guò)程中,能很好得提高按鍵響應(yīng)速度。

      2.2.2 主程序流程圖

      主程序首先設(shè)置并啟動(dòng)T0中斷,然后調(diào)用初始化程序,為后面程序要用到的數(shù)據(jù)調(diào)入,并清零一些用到的數(shù)據(jù)單元,然后載入“0——9”字型,進(jìn)行掃描。圖2-12為主程序流程圖。

      圖2-12 主程序流程圖

      2.2.3 子程序流程圖(定時(shí)中斷服務(wù)程序)

      圖11 子程序流程圖(定時(shí)中斷服務(wù)程序)

      第三章 系統(tǒng)仿真及調(diào)試

      3.1系統(tǒng)調(diào)試

      根據(jù)硬件電路圖核對(duì)了元器件的型號(hào)、極性,安裝是否正確,檢查硬件電路連線是否與電路原理圖一致,檢查電路元器件是否都已經(jīng)連接好。

      通電后,用示波器檢測(cè)單片機(jī)的復(fù)位和晶振電路是否有復(fù)位信號(hào)和振蕩信號(hào)。

      3.2 系統(tǒng)仿真

      3.2.1 proteus軟件仿真

      使用proteus原理及仿真如圖3-1所示。

      如圖3-1 proteus原理及仿真圖

      3.2.2 程序

      #include #include #define uchar unsigned char #define uint unsigned int uchar code Table_of_Digits[]=

      { 0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00, 0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,//0 //1 0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//2 0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,//3 0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,//4 0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00, 0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00, 0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00

      };uchar i=0,t=0,Num_Index;//主程序 void main(){ P3=0x80;

      Num_Index=0;

      //從0開(kāi)始顯示

      TMOD=0x00;

      //T0方式0 TH0=(8192-2000)/32;//2ms定時(shí)

      TL0=(8192-2000)%32;IE=0x82;

      //允許T0中斷

      TR0=1;

      //啟動(dòng)T0 while(1);}

      //T0中斷函數(shù)

      void LED_Screen_Display()interrupt 1 { TH0=(8192-2000)/32;

      //恢復(fù)初值

      TL0=(8192-2000)%32;P0=0xff;

      //輸出位碼和段碼

      P0=~Table_of_Digits[Num_Index*8+i];P3=_crol_(P3,1);

      //P3循環(huán)向左一位 //5 //6 //7

      //8 //9

      }

      if(++i==8)i=0;if(++t==250){

      } t=0;

      //每屏一個(gè)數(shù)字由8個(gè)字節(jié)構(gòu)成 //每個(gè)數(shù)字刷新顯示一段時(shí)間

      if(++Num_Index==10)Num_Index=0;//顯示下一個(gè)數(shù)字

      總結(jié)

      經(jīng)過(guò)單片機(jī)的課程設(shè)計(jì),我有了很大的收獲。

      首先,就是讓我加深了對(duì)單片機(jī)的掌握和理解與應(yīng)用,知道單片機(jī)到底是怎樣控制點(diǎn)陣,怎樣應(yīng)用在生活中的。并且讓我懂得了要善于思考,追求嚴(yán)謹(jǐn),認(rèn)真解決問(wèn)題,才會(huì)有更多的收獲。

      然后,提高了通過(guò)查閱資料解決問(wèn)題的能力。通過(guò)查閱大量的相關(guān)資料,詳細(xì)了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現(xiàn)狀,清楚地了解了LED顯示屏與其它顯示屏相比較有那些優(yōu)點(diǎn),明確了研究目標(biāo)。并且通過(guò)對(duì)單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對(duì)單片機(jī)知識(shí)的理解和運(yùn)用能力。并證實(shí)了自己的思路:“查資料→思考總結(jié)→運(yùn)用→找出差錯(cuò),再查資料和向別人詢問(wèn)→再次運(yùn)用”的正確性。

      最后,本系統(tǒng)能夠完成設(shè)計(jì)任務(wù),能夠顯示數(shù)字0-9,并且顯示也較為穩(wěn)定清晰。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。在本次課程設(shè)計(jì)中,主要使用了Proteus和Keil等軟件進(jìn)行硬件電路和控制程序的設(shè)計(jì),加深了對(duì)這些軟件的了解。感到Proteus對(duì)電子專業(yè)的同學(xué)來(lái)說(shuō)是一個(gè)很有用的軟件??傮w來(lái)說(shuō)這次的課程設(shè)計(jì)很成功,達(dá)到了預(yù)想的目的:學(xué)到了知識(shí),提高了能力,完成了任務(wù)。

      參考文獻(xiàn)

      [1] 張靖武,周靈彬 《單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真》北京 電子工業(yè)出版社 [2] 吳金戌,沈慶陽(yáng),郭庭吉 《8051單片機(jī)實(shí)踐與應(yīng)用》北京 清華大學(xué)出版社 [3] 李群芳,肖看 《單片機(jī)原理、接口及應(yīng)用》北京 清華大學(xué)出版社

      [4] 張毅剛,彭喜元等 《新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì) 》黑龍江 哈爾濱工業(yè)大學(xué)出版社 [5] 李朝青,劉艷玲編著 《單片機(jī)原理及接口技術(shù)》北京 航空航天大學(xué)出版社

      第五篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)

      基于單片機(jī)的火災(zāi)智能報(bào)警控制系統(tǒng)的設(shè)計(jì)

      前言

      在各種災(zāi)害中,火災(zāi)是最經(jīng)常、最普通地威脅公眾安全和社會(huì)發(fā)展的災(zāi)害之一。人類能夠?qū)疬M(jìn)行利用和控制,是文明進(jìn)步的一個(gè)重要標(biāo)志?;?,給人類帶文明進(jìn)步、光明和溫暖。但是,失去控制的火,就給人類造成災(zāi)害。據(jù)統(tǒng)計(jì),我國(guó) 70 年代火災(zāi)年平均損失不到 2.5 億元,80 年代火災(zāi)年平均損失不到

      3.2 億元。進(jìn)入 90 年代,特別是 1993 年以來(lái),火災(zāi)造成的直接財(cái)產(chǎn)損失上升到年均十幾億元,年均死亡 2000 多人。2010年上海靜安區(qū)高層住宅著火,導(dǎo)致58人死亡,70余人受傷。2014年1月云南香格里拉大火,燒毀房屋100多棟,直接經(jīng)濟(jì)損失1億多元人民幣?;馂?zāi)事件經(jīng)常發(fā)生,防止火災(zāi)事故關(guān)系到人民群眾的生命財(cái)產(chǎn)安全和社會(huì)和諧穩(wěn)定?,F(xiàn)在各種電子產(chǎn)品的普及,再加上人們防火意識(shí)的不強(qiáng),這些都給火災(zāi)的發(fā)生帶來(lái)了巨大的安全隱患。

      對(duì)于火災(zāi)最關(guān)鍵的問(wèn)題在于預(yù)防,目前防火報(bào)警系統(tǒng)趨于智能化、自動(dòng)化,靈敏程度也越來(lái)越高。在這種背景下,基于單片機(jī)的火災(zāi)智能報(bào)警控制系統(tǒng)能突顯出其巨大的優(yōu)越性。目前,國(guó)內(nèi)大多數(shù)偏重于商場(chǎng)、賓館、高級(jí)寫(xiě)字樓、大型倉(cāng)庫(kù)等大型火災(zāi)報(bào)警系統(tǒng)的研發(fā)和設(shè)計(jì)。本系統(tǒng)側(cè)重于小型火災(zāi)智能報(bào)警系統(tǒng)的設(shè)計(jì),可在火災(zāi)發(fā)生初期檢測(cè)到并且報(bào)警,還能夠?qū)崟r(shí)顯示溫度和煙霧濃度。

      下載C51單片機(jī)自學(xué)第一課word格式文檔
      下載C51單片機(jī)自學(xué)第一課.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        單片機(jī)課程設(shè)計(jì)

        《單片機(jī)技術(shù)》課程設(shè)計(jì)說(shuō)明書(shū) 音樂(lè)盒 院、部:電氣與信息工程學(xué)院 學(xué)生姓名:劉亮 指導(dǎo)教師:凌云職稱講師 專業(yè):電子信息工程 班級(jí):電子1302班 學(xué)號(hào):1330340220 完成時(shí)間: 2016年1......

        單片機(jī)實(shí)驗(yàn)報(bào)告[范文模版]

        實(shí) 實(shí) 驗(yàn) 驗(yàn) 報(bào) 報(bào) 告實(shí)驗(yàn)課程: 單片機(jī)原理及應(yīng)用班級(jí): 12 自動(dòng)化 2 班 學(xué)號(hào):姓名:教師:張玲 成績(jī):實(shí) 驗(yàn) 日 期 :年 月 日 實(shí)驗(yàn)名稱: 實(shí)驗(yàn) 1-—計(jì)數(shù)顯示器一、實(shí)驗(yàn)?zāi)康? 學(xué)習(xí)Prot......

        單片機(jī)學(xué)習(xí)心得

        單片機(jī)學(xué)習(xí)心得 一直想寫(xiě)一個(gè)帖子,將自己學(xué)習(xí)單片機(jī)的經(jīng)歷、經(jīng)驗(yàn)和方法總結(jié)一下,今天終于動(dòng)手寫(xiě)了,呵呵,這是我學(xué)習(xí)單片機(jī)的經(jīng)驗(yàn)、心得、方法。希望對(duì)大家學(xué)習(xí)單片機(jī)有所幫助。......

        單片機(jī)學(xué)習(xí)心得

        篇一:?jiǎn)纹瑱C(jī)學(xué)習(xí)心得一直想寫(xiě)一個(gè)帖子,將自己學(xué)習(xí)單片機(jī)的經(jīng)歷、經(jīng)驗(yàn)和方法總結(jié)一下,今天終于動(dòng)手寫(xiě)了,呵呵,這是我學(xué)習(xí)單片機(jī)的經(jīng)驗(yàn)、心得、方法。希望對(duì)大家學(xué)習(xí)單片機(jī)有所幫助......

        單片機(jī)英文翻譯

        微機(jī)發(fā)展簡(jiǎn)史第一臺(tái)存儲(chǔ)程序的計(jì)算開(kāi)始出現(xiàn)于1950前后,它就是1949年夏天在劍橋大學(xué),我們創(chuàng)造的延遲存儲(chǔ)自動(dòng)電子計(jì)算機(jī)(EDSAC)。 最初實(shí)驗(yàn)用的計(jì)算機(jī)是由象我一樣有著廣博知識(shí)的......

        單片機(jī)說(shuō)課稿

        《單片機(jī)》說(shuō)課稿 一、說(shuō)教材 1.選用教材及特點(diǎn) 本課程教材選用由人民郵電出版社出版的《單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航》。該教材以單片機(jī)功能為模塊,以外圍器件、相關(guān)電路設(shè)計(jì)......

        單片機(jī)課程設(shè)計(jì)

        單片機(jī)課程設(shè)計(jì)_報(bào)警器 報(bào)警器 ORG 0010H START:MOV DPTR,#TAB CLR P3.1 SETB P1 MOV A,P1 CPL A ANL A,#0F0H SWAP A MOV R0,A LCALL DISP1 MOV A,P1 CPL A ANL A,#0FH MOV......

        單片機(jī)課程設(shè)計(jì)

        單片機(jī)課程設(shè)計(jì) --------- 機(jī)電汽車工程學(xué)院 同組成員:(機(jī)091-1) 姓名(學(xué)號(hào)):......