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

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于Keil的實(shí)驗(yàn)仿真板的使用

前面介紹了Keil 軟件的使用,從中我們可以看到Keil 的強(qiáng)大功能,不過(guò),對(duì)于初學(xué)者
來(lái)說(shuō),還有些不直觀(guān),調(diào)試過(guò)程中看到的是一些數(shù)值,并沒(méi)有看到這些數(shù)值所引起的外圍電
路的變化,例如數(shù)碼管點(diǎn)亮、發(fā)光管發(fā)光等。為了讓初學(xué)者更好地入門(mén),筆者利用Keil 提
供的AGSI 接口開(kāi)發(fā)了兩塊仿真實(shí)驗(yàn)板。
這兩塊仿真板將枯燥無(wú)味的數(shù)字用形象的圖形表達(dá)出來(lái),可以使初學(xué)者在沒(méi)有硬件時(shí)就能感受到真實(shí)的學(xué)習(xí)環(huán)境,降低單片機(jī)的入門(mén)門(mén)檻。圖1 是鍵盤(pán)、LED 顯示實(shí)驗(yàn)仿真板的圖,從圖中可以看出,該板比較簡(jiǎn)單,有在P1 口接有8 個(gè)發(fā)光二管,在P3 口接有4 個(gè)按鈕,圖的右邊給出了原理圖。

圖2 是另一個(gè)較為復(fù)雜的實(shí)驗(yàn)仿真板。在該板上有8 個(gè)數(shù)碼管,16 個(gè)按鍵(接成4*4 的矩陣式),另外還有P1 口接的8個(gè)發(fā)光管,兩個(gè)外部中斷按鈕,一個(gè)帶有計(jì)數(shù)器的脈沖發(fā)生器等資源,顯然,這塊板可以完成更多的實(shí)驗(yàn)。
一、實(shí)驗(yàn)仿真板的安裝
這兩塊仿真實(shí)驗(yàn)板實(shí)際上是兩個(gè)dll 文件,名稱(chēng)分別是ledkey.dll 和simboard.dll,安裝時(shí)只要根據(jù)需要將這兩個(gè)或某一個(gè)文件拷貝到keil 軟件的c51bin 文件夾中即可。
二、實(shí)驗(yàn)仿真板的使用
要使用仿真板,必須對(duì)工程進(jìn)行設(shè)置,設(shè)置的方法是點(diǎn)擊Project->Option for Target‘Target1’打開(kāi)對(duì)話(huà)框,然后選中Debug 標(biāo)簽頁(yè),在Dialog :Parameter:后的編緝框中輸入-d 文件名。例如要用ledkey.dll(即第一塊仿真板)進(jìn)行調(diào)試,就輸入-dledkey,如圖3所示,輸入完畢后點(diǎn)擊確定退出。編譯、連接完成后按CTRL+F5 進(jìn)入調(diào)試,此時(shí),點(diǎn)擊菜
單Peripherals,即會(huì)多出一項(xiàng)“鍵盤(pán)LED 仿真板(K)”,選中該項(xiàng),即會(huì)出現(xiàn)如圖1 的界面,

鍵盤(pán)、LED 顯示實(shí)驗(yàn)仿真板


圖2 單片機(jī)實(shí)驗(yàn)仿真板

同樣,在設(shè)置時(shí)如果輸入-dsimboard 則能夠調(diào)出如
圖2 的界面。
第一塊仿真板的硬件電路很簡(jiǎn)單,電路圖已在板上,第二塊板實(shí)現(xiàn)的功能稍復(fù)雜,其鍵盤(pán)和數(shù)碼
顯示管部份的電路原理圖如圖4 所示。下表給出了常用字形碼,讀者也可以根據(jù)圖中的接線(xiàn)自行寫(xiě)出
其它如A、B、C、D、E、F 等的字形碼。 除了鍵盤(pán)和數(shù)碼管以外,P1 口同樣也接有8 個(gè)發(fā)光二極管,連接方式與圖1 相同;脈沖發(fā)生器是接入T0 即P3.4 引腳。
0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h 90h 0FFH
0 1 2 3 4 5 6 7 8 9 消隱
三、實(shí)例調(diào)試
以下以一個(gè)稍復(fù)雜的程序?yàn)槔?,說(shuō)明鍵盤(pán)、LED 顯示實(shí)驗(yàn)仿真板的使用。該程序?qū)崿F(xiàn)
的是可控流水燈,接P3.2 的鍵為開(kāi)始鍵,按此鍵則燈開(kāi)始流動(dòng)(由上而下),接P3.3 的鍵
為停止鍵,按此鍵則停止流動(dòng),所有燈暗,接P3.4 的鍵為向上鍵,按此鍵則燈由上向下流
動(dòng),接P3.5 的鍵為向下鍵,按此鍵則燈由下向上流動(dòng)。
例8:
UpDown BIT 00H ;上下行標(biāo)志
StartEnd BIT 01H ;起動(dòng)及停止標(biāo)志
LAMPCODE EQU 21H ;存放流動(dòng)的數(shù)據(jù)代碼
ORG 0000H
AJMP MAIN
ORG 30H
MAIN:
MOV SP,#5FH
MOV P1,#0FFH
CLR UpDown ;啟動(dòng)時(shí)處于向上的狀態(tài)
h g f e
P0.7
P0.0
P0.5
P0.4
P0.7
P0.6
d c b a
P0.3
P0.2
P0.0
P0.1 P2.7
P2.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0 驅(qū)
動(dòng)
P3.0
P3.1
P3.2
P3.5
P3.3
P3.4
P3.6
P3.7
2 3
6 7
A B
E F
0 1
4 5
8 9
VCC C D 89C51

[!--empirenews.page--]
圖4 實(shí)驗(yàn)仿真板2 數(shù)碼管和鍵盤(pán)部份的電路圖
圖3 實(shí)驗(yàn)仿真板的設(shè)置
Keil 軟件實(shí)全教程(五)
CLR StartEnd ;啟動(dòng)時(shí)處于停止?fàn)顟B(tài)
MOV LAMPCODE,#01H ;單燈流動(dòng)的代碼
LOOP: ACALL KEY ;調(diào)用鍵盤(pán)程序
JNB F0,LNEXT ;如果無(wú)鍵按下,則繼續(xù)
ACALL KEYPROC ;否則調(diào)用鍵盤(pán)處理程序
LNEXT: ACALL LAMP ;調(diào)用燈顯示程序
AJMP LOOP ;反復(fù)循環(huán),主程序到此結(jié)束
;延時(shí)程序,鍵盤(pán)處理中調(diào)用
DELAY: MOV R7,#100
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
RET
KEYPROC:
MOV A,B ;從B 寄存器中獲取鍵值
JB ACC.2,KeyStart ;分析鍵的代碼,某位被按下,則該位為1
JB ACC.3,KeyOver
JB ACC.4,KeyUp
JB ACC.5,KeyDown
AJMP KEY_RET
KeyStart:
SETB StartEnd ;第一個(gè)鍵按下后的處理
AJMP KEY_RET
KeyOver:
CLR StartEnd ;第二個(gè)鍵按下后的處理
AJMP KEY_RET
KeyUp:
SETB UpDown ;第三個(gè)鍵按下后的處理
AJMP KEY_RET
KeyDown:
CLR UpDown ;第四個(gè)鍵按下后的處理
KEY_RET:
RET
KEY:
CLR F0 ;清F0,表示無(wú)鍵按下。
ORL P3,#00111100B ;將P3 口的接有鍵的四位置1
MOV A,P3 ;取P3 的值
ORL A,#11000011B ;將其余4 位置1
CPL A ;取反
JZ K_RET ;如果為0 則一定無(wú)鍵按下
CALL DELAY ;否則延時(shí)去鍵抖
ORL P3,#00111100B
MOV A,P3
ORL A,#11000011B
Keil 軟件實(shí)全教程(五)
CPL A
JZ K_RET
MOV B,A ;確實(shí)有鍵按下,將鍵值存入B 中
SETB F0 ;設(shè)置有鍵按下的標(biāo)志
;以下的代碼是可以被注釋掉的,如果去掉注釋?zhuān)途哂信袛噫I是否釋放的功能,否則
沒(méi)有
K_RET: ;ORL P3,#00111100B ;此處循環(huán)等待鍵的釋放
;MOV A,P3
;ORL A,#11000011B
;CPL A
;JZ K_RET1 ;讀取的數(shù)據(jù)取反后為0 說(shuō)明鍵釋放了
;AJMP K_RET
;K_RET1:CALL DELAY ;消除后沿抖動(dòng)
RET
D500MS: ;流水燈的延遲時(shí)間
MOV R7,#255
D51: MOV R6,#255
DJNZ R6,$
DJNZ R7,D51
RET
LAMP:
JB StartEnd,LampStart ;如果StartEnd=1,則啟動(dòng)
MOV P1,#0FFH
AJMP LAMPRET ;否則關(guān)閉所有顯示,返回
LampStart:
JB UpDown,LAMPUP ;如果UpDown=1,則向上流動(dòng)
MOV A,LAMPCODE
RL A ;實(shí)際就是左移位而已
MOV LAMPCODE,A
MOV P1,A
LCALL D500MS
LCALL D500MS
AJMP LAMPRET
LAMPUP:
MOV A,LAMPCODE
RR A ;向下流動(dòng)實(shí)際就是右移
MOV LAMPCODE,A
MOV P1,A
LCALL D500MS
LAMPRET:
RET
END
將程序輸入并建立工程文件,設(shè)置工程文件,在Debug 標(biāo)簽頁(yè)中加入“-dledkey”,匯
編、連接文件,按Ctrl+F5 開(kāi)始調(diào)試,打開(kāi)仿真板,使用F5 功能鍵全速運(yùn)行,可以看到所
Keil 軟件實(shí)全教程(五)
有燈均不亮,點(diǎn)擊最上面的按鈕,立即會(huì)看到燈流動(dòng)起來(lái)了,點(diǎn)擊第二個(gè)按鍵,燈將停止流
動(dòng),再次點(diǎn)擊第一個(gè)按鈕,使燈流動(dòng)起來(lái),點(diǎn)擊第三個(gè)按鈕,可以發(fā)現(xiàn)燈流動(dòng)的方向變了,
點(diǎn)擊第四個(gè)按鈕,燈的流動(dòng)方向又變回來(lái)了。如果沒(méi)有出現(xiàn)所描述的現(xiàn)象,可以使用單步、
過(guò)程單步等調(diào)試手段進(jìn)行調(diào)試,在進(jìn)行調(diào)試時(shí)實(shí)驗(yàn)仿真板會(huì)隨時(shí)顯示出當(dāng)前的情況,是不是
非常的直觀(guān)和方便呢?
下面的一個(gè)例子是關(guān)于第二塊實(shí)驗(yàn)仿真板的,演示點(diǎn)亮8 位數(shù)碼管。例9:
ORG 0000h
JMP MAIN
ORG 30H
MAIN:
MOV SP,#5FH
MOV R1,#08H
MOV R0,#58H ;顯示緩沖區(qū)首地址
MOV A,#2
INIT:
MOV @R0,A ;初始化顯示緩沖區(qū)
INC A
INC R0
DJNZ R1,INIT ;將0-7 送顯示緩沖區(qū)
LOOP:
CALL DISPLAY
JMP LOOP
;主程序到此結(jié)束
DISPLAY:
MOV R0,#7FH ;列選擇
MOV R7,#08H ;共有8 個(gè)字符
MOV R1,#58H ;顯示緩沖區(qū)首地址
AGAIN:
MOV A,@R1
MOV DPTR,#DISPTABLE
MOVC A,@A+DPTR
MOV P0,A
MOV P2,R0
MOV A,R0
RR A
MOV R0,A
INC R1
DJNZ R7,AGAIN
RET
DISPTABLE: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0FFH ;字形碼表
END
這一程序內(nèi)部RAM 中58H 到5FH 被當(dāng)成是顯示緩沖區(qū),主程序中用2-9 填充該顯示
區(qū),然后調(diào)用顯示程序顯示2-9。這里是用了最簡(jiǎn)單的逐位顯示的方式編寫(xiě)的顯示程序。
最后介紹一個(gè)小小技巧,將鼠標(biāo)移入按鈕區(qū)域,按下左鍵,按鈕顯示被按下,不要放開(kāi)
Keil 軟件實(shí)全教程(五)
鼠標(biāo)左鍵,將光標(biāo)移出按鈕區(qū)域,松開(kāi)左鍵,可以看到,按鈕仍處于按下?tīng)顟B(tài),利用這一功
能,在需要I/O 口長(zhǎng)期處于低電平時(shí),你就不必一直用手按著鼠標(biāo)的左鍵啦。

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

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

關(guān)鍵字: 驅(qū)動(dòng)電源

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

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

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

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

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

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

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

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

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

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

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

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉