日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

了解单片机及单片机的控制原理和 DX516 的用法,控制一个 LED 灯的亮

發(fā)布時(shí)間:2024/5/6 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解单片机及单片机的控制原理和 DX516 的用法,控制一个 LED 灯的亮 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

單片機(jī)基本原理,

如何使用 DX516 仿真器,

如何編程點(diǎn)亮和滅掉一個(gè) LED 燈,

如何進(jìn)入 KEILC51uV,

調(diào)試環(huán)境,

如何使用單步,斷點(diǎn),全速,停止的調(diào)試方法。

——————————————————————————————————————————

單片機(jī)現(xiàn)在是越來越普及了,學(xué)習(xí)單片機(jī)的熱潮也一陣陣趕來,許多人因?yàn)楣ぷ餍枰蛘邆€(gè)人興趣需要學(xué)習(xí)單片機(jī)。

可以說,掌握了單片機(jī)開發(fā),就多了一個(gè)飯碗。

51 單片機(jī)已經(jīng)有 30 多年的歷史了,在中國,高校的單片機(jī)課程大多數(shù)都是 51,而 51 經(jīng)過這么多年的發(fā)展,也增長了許多的系列,功能上有了許多改進(jìn),也擴(kuò)展出了不少分支。

而國內(nèi)書店的單片機(jī)專架上,也大多數(shù)都是 51 系列。

可以預(yù)見,51 單片機(jī)在市場(chǎng)上只會(huì)越來越多,功能只會(huì)越來越豐富,在可以預(yù)見的數(shù)十年內(nèi)是不可能會(huì)消失的。

作為一個(gè)初學(xué)者,如何單片機(jī)入門?需要那些知識(shí)和設(shè)備呢?知識(shí)上,其實(shí)不需要多少東西,會(huì)簡單的 C 語言,知道 51 單片機(jī)的基本結(jié)構(gòu)就可以了。

一般的大學(xué)畢業(yè)生都可以快速入門,自學(xué)過這 2 門課程的高中生也夠條件。

就算你沒有學(xué)過單片機(jī)課程,只掌握了 C 語言的皮毛,通過本系列的教程,您也會(huì)逐漸的進(jìn)入單片機(jī)的大門。

當(dāng)然在學(xué)習(xí)的過程中,您還是必須多去研讀單片機(jī)書籍,了解他們的基本結(jié)構(gòu)及工作方式。

——————————————————————————————————————————

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

在數(shù)字電路中,電壓信號(hào)只有兩種情況,高電平和低電平,用數(shù)字來記錄就是 1 和 0。

單片機(jī)內(nèi)部的CPU,寄存器,總線等等結(jié)構(gòu)都是通過 1 和 0 兩種信號(hào)來運(yùn)作的,數(shù)據(jù)也是以 1 或者 0 來保存的。

單片機(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ì)再問,我如何讓單片機(jī)去控制和分析外部設(shè)備呢?

答案是程序,您可以編寫相關(guān)的程序,并且把他們燒寫到單片機(jī)內(nèi)部的程序空間,單片機(jī)在上電時(shí),就會(huì)一步一步按照您寫的程序去執(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è)口來完成所有外部操作的。

對(duì)于 51 的內(nèi)部結(jié)構(gòu),如果您已經(jīng)了解,那是最好;如果不懂,也可以先放下,在完成了本教程開始的幾個(gè)章節(jié)之后,您就會(huì)大有興趣,自己去尋找資料閱讀了。

當(dāng)然,如果您希望成為一個(gè)優(yōu)秀的單片機(jī)開發(fā)程序員,還是必須熟悉單片機(jī)的內(nèi)部結(jié)構(gòu)及工作原理,切不可偷懶!

在這一章,您將用程序去控制一個(gè) LED 發(fā)光管的亮和滅。

你應(yīng)該知道,LED 發(fā)光管在通過一定電流時(shí)亮,不通電就滅。

為了不讓 LED 通過太大的電流把它燒壞,我們還要串上限流電阻。

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)板的電路圖,這個(gè)試驗(yàn)板是在購買 dx516 仿真器是贈(zèng)送的。

圖 1,試驗(yàn)電路圖

圖 2:試驗(yàn)板外觀圖

————————————————————————————————————————

下面介紹一下仿真器和仿真環(huán)境。

在實(shí)際的單片機(jī)學(xué)習(xí)和開發(fā)中,你可以用仿真器模擬一個(gè) CPU 芯片,讓它按照您編寫的程序工作,并且進(jìn)行調(diào)試,一步步排除程序的 bug,使程序正常工作。

程序工作正常后,您就可以用燒寫器將您編寫的程序燒入購買來的單片機(jī)芯片中,讓它自己去運(yùn)行了。

要使用仿真器,還得有一個(gè)編譯調(diào)試的環(huán)境,這個(gè)環(huán)境是在計(jì)算機(jī)上運(yùn)行的,我們就在計(jì)算機(jī)上編寫和調(diào)試程序,計(jì)算機(jī)和仿真器有連接,仿真器中的各種數(shù)據(jù)和程序,都可以從計(jì)算機(jī)上觀察到,并可以觀察變量,寫入變量的值,單步調(diào)試程序,在程序中設(shè)置斷點(diǎn)調(diào)試,全速運(yùn)行,停止程序運(yùn)行,等等操作。

我們使用世界上目前最先進(jìn)的 keil C51 編譯調(diào)試環(huán)境,仿真器使用大蝦電子網(wǎng)(http://www.daxia.com )設(shè)計(jì)的 DX516 專業(yè)版仿真器,這個(gè)仿真器功能齊全,性價(jià)比最佳,是學(xué)習(xí)開發(fā)的好工具!

您可以在此頁 http://www.daxia.com/product/dx58/ 的資料下載欄目里下載到 keilc51 相關(guān)的中文說明資料,這些資料詳細(xì)地說明了如何使用 C51 編程和如何使用 keil uV2 環(huán)境調(diào)試,請(qǐng)?jiān)诒菊略囼?yàn)完成或者試驗(yàn)過程中,如果遇到不懂的地方,一定要抽時(shí)間閱讀!

您應(yīng)該也可以在上面的網(wǎng)頁中找到下載破解版本的 keilc51 的辦法。

中國法律規(guī)定,在學(xué)習(xí)和研究工作中使用有版權(quán)的軟件是可以的,但是,如果您開發(fā)產(chǎn)品時(shí),建議您還是去購買一個(gè)正版的軟件。

——————————————————————————————————————————

下面是 DX516 仿真器的使用介紹:

1、安裝

將仿真器和試驗(yàn)板按圖 3 組裝好,串口線按照正確方向插入仿真器,另一端和電腦串口連接,請(qǐng)盡量使用計(jì)算機(jī)的硬串口。

仿真器底座左邊的跳線,請(qǐng)放在 EMB 這邊,以進(jìn)入仿真狀態(tài)。

如果放在 RUN 這邊,將會(huì)進(jìn)入脫機(jī)運(yùn)行狀態(tài)。

晶振選擇跳線請(qǐng)放在 IN 這邊,以使用仿真器內(nèi)部晶振,內(nèi)部晶振更加可靠。

如果放在 OUT 這邊,則會(huì)使用外部的用戶板晶振。

圖 3 仿真器插在試驗(yàn)板上

2、電源

因?yàn)橛脩舭迨褂秒娏鞑淮?#xff0c;可以使用 usb 取電,usb 最大電流可以提供 500mA,將 usb 取電板插入電腦的 usb 口中。(實(shí)際應(yīng)用中,如果用戶板使用電流超過 100mA,我們就建議使用外部電源)

3、啟動(dòng)

在仿真器上電,或者按一下仿真器上面的按鈕時(shí),仿真器會(huì)發(fā)出“嘀-”,表示仿真器正常啟動(dòng)。

同時(shí)仿真器上面的燈閃爍一次,表示進(jìn)入正常仿真狀態(tài)。

4、仿真設(shè)置

第一個(gè)設(shè)置:

C51 用戶請(qǐng)?jiān)谀拇a的 main()函數(shù)前面,加上一句:

char code dx516[3] _at_ 0x003b;

如果以上設(shè)置你沒有做,在裝載過程中,仿真器會(huì)發(fā)出“嘀嘀嘀” 的三聲短聲報(bào)警,這時(shí)的仿真結(jié)果將可能不正確。

在我們的例程中,這句話已經(jīng)加入了。

這句話并不會(huì)影響程序的工作,可以一直保留。

第二個(gè)設(shè)置:

請(qǐng)?jiān)谟布抡嬖O(shè)置選項(xiàng)中,選擇 serial interrupt,在前面打勾如果以上設(shè)置你沒有做,在裝載過程中,仿真器會(huì)發(fā)出“嘀-” 的一聲長聲報(bào)警,這時(shí)的仿真結(jié)果將可能不正確。

其余設(shè)置:

請(qǐng)選擇 use keil Monitor-51 Driver ,這樣才會(huì)使用硬件仿真

請(qǐng)選擇 load Application at start ,在啟動(dòng)時(shí)直接裝載程序

請(qǐng)選擇 Go till main ,裝載后直接運(yùn)行到 main 函數(shù)

請(qǐng)?jiān)谟布抡嬖O(shè)置選項(xiàng)中,選擇 115200bps 波特率,所有 cache 都可以不選,或者只選 cache code。

同時(shí)請(qǐng)選擇正確的串口號(hào)。

圖 4 仿真設(shè)置


好了,現(xiàn)在可以開始做試驗(yàn)了,我們打開已經(jīng)建立好的工程和編寫好的程序試驗(yàn)。

順便還會(huì)學(xué)習(xí)一下程序調(diào)試的技巧。

至于如何建立一個(gè)新工程,請(qǐng)參考 C51 的幫助文件,或者自己摸索一下,WWW.DAXIA.COM 的 DX516專欄里也有“一步步教你如何第一次做…”的文章可以學(xué)習(xí)。

請(qǐng)雙擊 lessoncode01 目錄下的 lesson1.uv2,打開后界面如下:

圖 6:程序界面
這個(gè)界面是 uV3 的,和 uV2 是一樣用的。

點(diǎn)一下上圖第三排第 2 或者第 3 個(gè)按鈕(您的編譯器按鈕位置不一定在那個(gè)位置,自己找找),就可以看到編譯結(jié)果了。

上面顯示是 0errrs,0warnings,這是最佳的編譯結(jié)果,如果有 error,則無法進(jìn)行下一步仿真,如果有 warning,一定要盡量消除,確實(shí)無法消除的,也要確認(rèn)不會(huì)對(duì)程序造成影響,才進(jìn)行下一步的仿真。

在編譯結(jié)果中,我們還可以看到有 data,xdata,code 等用了多少字節(jié)的報(bào)告,要注意您的單片機(jī)中是否有這么多的資源,如果不夠,將來燒片運(yùn)行時(shí)就可能出現(xiàn)問題。

比如 AT89C51 的程序空間是 4K,xdata 如果沒有外擴(kuò)就是 0 個(gè),data 是 128 個(gè)。

超出這些范圍,程序就不能在 AT89c51 中運(yùn)行。

不同的芯片有不同的容量,如SST89E516RD 就有 64K 程序,內(nèi)部 768 字節(jié) XDATA,還有 256 個(gè)字節(jié)的 data。

我們的例程中肯定都考慮了這些了,肯定不會(huì)超出,因?yàn)?DX516 仿真器是和 SST89E516RD 有同樣的容量的,將來自己開發(fā)時(shí)就要注意了。

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

雙擊一下錯(cuò)誤報(bào)告的那一行,窗口就也會(huì)跳到這一行,方便您進(jìn)行修改。

好了,現(xiàn)在請(qǐng)把錯(cuò)誤改回去,再編譯一次,出現(xiàn)報(bào)告正確了以后,下面開始仿真了。

點(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)入仿真按鈕,程序開始裝載,PC 自動(dòng)運(yùn)行到了 main()停下,并指向了 main()函數(shù)的第一行。

下面是進(jìn)入了仿真環(huán)境的截圖:

再順便把調(diào)試界面上的按鈕介紹一下:

圖 5:按鈕說明

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

下次進(jìn)入也會(huì)直接進(jìn)入到源代碼窗口。

現(xiàn)在先試驗(yàn)單步,點(diǎn)單步(兩個(gè)單步都可以,一般點(diǎn)單步跨過)。

可以看到燈亮了。

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)的操作。

編譯后結(jié)果如下:

進(jìn)入仿真后:

可以看到下面的提示窗口中顯示:“connected to Monitor-51 V.DX”,后面的 V.DX 就是已經(jīng)連接到大蝦仿真器的提示了。

V.DX 是大蝦仿真器特有的標(biāo)識(shí)。

在第 15 行雙擊一下,可以看到程序行左邊出現(xiàn)了一個(gè)紅方塊,這就是設(shè)置斷點(diǎn),再雙擊一次,斷點(diǎn)就取消了。

如果程序在全速運(yùn)行的過程中遇到斷點(diǎn),就會(huì)自動(dòng)停下來給你分析。

注意在進(jìn)入仿真后,并且程序是停止?fàn)顟B(tài)時(shí),才可以設(shè)置或者取消斷點(diǎn)。

圖:設(shè)置了斷點(diǎn)

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

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

圖:設(shè)置了另一個(gè)斷點(diǎn)

現(xiàn)在點(diǎn)全速運(yùn)行,可以看到程序在斷點(diǎn)處停了下來,并且由于剛剛執(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)每次停止的地方不一定是同一位置。

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的了解单片机及单片机的控制原理和 DX516 的用法,控制一个 LED 灯的亮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。