版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于51單片機(jī)的簡(jiǎn)易電子琴設(shè)計(jì)</p><p><b> 一、設(shè)計(jì)指標(biāo)</b></p><p><b> 1.1 設(shè)計(jì)任務(wù)</b></p><p> 1.設(shè)計(jì)一個(gè)4X4的16個(gè)按鍵矩陣,并且每個(gè)鍵對(duì)應(yīng)一個(gè)音,顯示對(duì)應(yīng)音鍵號(hào)。</p><p> 2.用AT89C51將鍵盤
2、連接設(shè)計(jì)成為電子琴。</p><p> 3.編寫電子琴的程序,要達(dá)到可以隨意彈奏想要表達(dá)的音樂(lè)的目的。</p><p> 4.程序的分析與調(diào)試,顯示波形。</p><p><b> 1.2 設(shè)計(jì)要求</b></p><p> 1.用匯編語(yǔ)言編程實(shí)現(xiàn)程序設(shè)計(jì)。</p><p> 2.利用查
3、表,中斷等方式實(shí)現(xiàn)目的。</p><p> 3.系統(tǒng)的各各功能模塊要清楚,有序。</p><p> 4.程序運(yùn)行時(shí)有友好的用戶界面。</p><p><b> 二、設(shè)計(jì)方框圖</b></p><p> 圖2.1 系統(tǒng)主程序流程圖</p><p><b> 圖2.2</b&
4、gt;</p><p><b> 三、元器件介紹</b></p><p> 該設(shè)計(jì)主要由以下幾個(gè)部件組成:</p><p> 1:?jiǎn)纹瑱C(jī)AT89C51 : </p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失
5、存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效的微控制器。</p><p> 引腳說(shuō)明:P0口:P0口為一個(gè)8位雙向三態(tài)I/O口,每腳可驅(qū)動(dòng)8個(gè)TTL負(fù)載。P0既可作為通用I/O口,又可作為外部擴(kuò)展時(shí)的數(shù)據(jù)總線及低8位地址總線的分時(shí)復(fù)用口。</p><p> P1口:P1口是一
6、個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,每個(gè)引腳可驅(qū)動(dòng)4TTL負(fù)載。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入, P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,驅(qū)動(dòng)4個(gè)TTL門電流。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可驅(qū)動(dòng)4
7、個(gè)TTL負(fù)載。當(dāng)P3口寫入"1"后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能,管腳備選功能:P3.0 RXD(串行數(shù)據(jù)接受口) P3.1 TXD(串行數(shù)據(jù)發(fā)送口) P3.2 /INT0(外部中斷0請(qǐng)求輸入) P3.3 /INT1(外部中斷1請(qǐng)求輸入)
8、P3.4 T0(定時(shí)器/計(jì)數(shù)器0外部輸入口) P3.5 T1(定時(shí)器/計(jì)數(shù)器1外部輸入口) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器RAM寫選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器RAM讀選通) P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖
9、存允許ALE的輸出電平用于鎖存地址的地位字節(jié)。當(dāng)不訪問(wèn)其時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。/PSEN:外部程序存儲(chǔ)器ROM的選通信號(hào)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:反向振蕩放大器的出及內(nèi)部時(shí)鐘工作電
10、路的輸出。</p><p> 2:電源:電源部分有二部分組成。一部分是由220V的市電通過(guò)變壓、整流穩(wěn)壓來(lái)得到+5V電壓,維持系統(tǒng)的正常工作;另一部分是由3V的電池供電,以保證停電時(shí)正常走時(shí)。正常情況下電池是不提供電能的,以保證電池的壽命。</p><p> 3:4*4的16個(gè)按鈕矩陣。</p><p> 4:模擬示波器:模擬產(chǎn)生的波形。</p>
11、<p> 5:LM386音頻功率放大器,LM386是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的音頻功率放大器,主要應(yīng)用于低電壓消費(fèi)類產(chǎn)品。為使外圍元件最少,電壓增益內(nèi)置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調(diào)為任意值,直至 200。輸入端以地位參考,同時(shí)輸出端被自動(dòng)偏置到電源電壓的一半,在6V電源電壓下,它的靜態(tài)功耗僅為24mW,使得LM386特別適用于電池供電的場(chǎng) 合。 </p><p>
12、 6:74LS244鎖存器:74LS244為3態(tài)8位地址鎖存器, 地址鎖存器就是一個(gè)暫存器,它根據(jù)控制信號(hào)的狀態(tài),將總線上地址代碼暫存起來(lái)首先由CPU發(fā)出存儲(chǔ)器地址,同時(shí)發(fā)出允許鎖存信號(hào)ALE給鎖存器,當(dāng)鎖存器接到該信號(hào)后將地址/數(shù)據(jù)總線上的地址鎖存在總線上,隨后才能傳輸數(shù)據(jù)。</p><p><b> 四、設(shè)計(jì)原理</b></p><p><b>
13、4.1 電路原理</b></p><p><b> 主要分為二個(gè)部分:</b></p><p> ?。?)4X4行列式鍵盤識(shí)別;</p><p> ?。?)音樂(lè)產(chǎn)生的方法;</p><p> ?、僖皇滓魳?lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同</p><
14、;p> 的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。現(xiàn)在以單片機(jī)12MHZ晶振為例,列出高中低音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表3.1所示.</p><p> 下面我們要為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù):低音0-19之
15、間,中音在20-39之間,高音在40-59之間</p><p> TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0</p><p> DW 0,63731,63928,0,64185,64331,64463,0,0,0</p><p> DW 0,64580,64684,64777,64820
16、,64898,64968,65030,0,0</p><p> DW 0,64633,64732,0,64860,64934,64994,0,0,0</p><p> DW 0,65058,65110,65157,65178,65217,65252,65283,0,0</p><p> DW 0,65085,65134,0,65198,65235,65268,
17、0,0,0</p><p><b> DW 0</b></p><p> 表3.1 高中低音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值表</p><p> ?、谝魳?lè)的音拍,一個(gè)節(jié)拍為單位(C調(diào))</p><p> 對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。</p><p> 在這
18、個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成的。其中T0用來(lái)產(chǎn)生音符頻率,T1</p><p><b> 用來(lái)產(chǎn)生音拍。</b></p><p> 各功能模塊電路的設(shè)計(jì)(用Proteus仿真)</p><p> 1、 晶體振蕩電路 2、 上電自動(dòng)復(fù)位電路 </p><p
19、><b> 3、按鍵電路</b></p><p> 4、 顯示按鍵建號(hào)</p><p> 5音頻功率放大電路 6、模擬示波</p><p><b> 整體電路圖 </b></p><p> 四、電路安裝與調(diào)試過(guò)程</p&
20、gt;<p> 打開(kāi)并設(shè)置MedWin</p><p> 打開(kāi)MedWin→設(shè)置仿真器→設(shè)置工作目錄→設(shè)置編譯器</p><p><b> 使用MedWin</b></p><p> (1)新建項(xiàng)目 點(diǎn)擊[項(xiàng)目管理]—[新建項(xiàng)目] 命令,輸入項(xiàng)目名稱,點(diǎn)擊[確定]按鈕,出現(xiàn)“添加項(xiàng)目文件”對(duì)話框,輸入源代碼文件名,如DI
21、TISHIYAN.ASM,單擊[打開(kāi)]按鈕,出現(xiàn)代碼窗口,即可開(kāi)始編程。</p><p> (2)打開(kāi)項(xiàng)目 點(diǎn)擊[項(xiàng)目管理]—[打開(kāi)項(xiàng)目] 命令,點(diǎn)擊項(xiàng)目文件名(項(xiàng)目文件后綴為.mpf),點(diǎn)擊[打開(kāi)]按鈕,即可打開(kāi)上次保存的項(xiàng)目。</p><p> (3)編譯 點(diǎn)擊[項(xiàng)目管理]—[編譯/匯編]命令,啟動(dòng)編譯器對(duì)源文件進(jìn)行語(yǔ)法檢查并編譯,在消息窗口中顯示編譯結(jié)果。</p>
22、<p> (3)模擬仿真 當(dāng)源程序編譯無(wú)誤后,可進(jìn)行模擬仿真調(diào)試。點(diǎn)擊[項(xiàng)目管理]—[產(chǎn)生代碼并裝入]命令,生成.hex文件。編譯器對(duì)源程序進(jìn)行重新編譯并裝入。這時(shí),可使用[調(diào)試]菜單中的相關(guān)命令進(jìn)行調(diào)試,如設(shè)置斷點(diǎn)、單步及全速執(zhí)行等。</p><p> (4)生成目標(biāo)代碼 點(diǎn)擊[項(xiàng)目管理]—[輸出Binary文件]命令,生成BIN文件,用下載工具將其下載到實(shí)驗(yàn)板的單片機(jī)中執(zhí)行。</p
23、><p> Proteus的應(yīng)用</p><p> 首先安裝此軟件,然后打開(kāi),打開(kāi)之后在圖形編輯窗口進(jìn)行畫圖。硬件電路圖畫好之后,將剛在MedWin中已經(jīng)編輯好的程序?qū)懭雴纹瑱C(jī)中(AT89C51)中,然后進(jìn)行整體仿真。</p><p> 五、電路測(cè)試與使用說(shuō)明</p><p><b> 硬件部分</b></p&
24、gt;<p> 按照原理圖連接電路,用PROTEUS模擬仿真測(cè)試電路,如果有問(wèn)題就分塊進(jìn)行測(cè)試!</p><p><b> 軟件部分</b></p><p> 如果硬件部分并無(wú)問(wèn)題,那么就有可能是出現(xiàn)在軟件部分。那么就需要一一查看程序是否有誤,如若有誤將其改正并編譯并代碼,而后加載進(jìn)單片機(jī)內(nèi)再次運(yùn)行。 </p><p>&l
25、t;b> 六、訓(xùn)練總結(jié)</b></p><p> 這次我主要的設(shè)計(jì)是一個(gè)簡(jiǎn)易電子琴,采用16個(gè)鍵分別代表16個(gè)音,通過(guò)對(duì)按鍵的隨意按擊從而產(chǎn)生不同的音樂(lè),主要是通過(guò)每個(gè)按鍵所產(chǎn)生的頻率不同來(lái)使得發(fā)出的各個(gè)音不同,從而產(chǎn)生音樂(lè) 。 </p><p> 程序也實(shí)在很長(zhǎng),對(duì)于現(xiàn)在的我來(lái)說(shuō)肯定一個(gè)人肯定很難編出這么長(zhǎng)的程序,幸好有給與我?guī)椭耐瑢W(xué)和老師。雖然這個(gè)程序還不是
26、很簡(jiǎn)潔,但我們可以根據(jù)每個(gè)程序的功能各不相同來(lái)使程序簡(jiǎn)化。不過(guò)我對(duì)目前的程序已經(jīng)很滿意了,但是也存在的問(wèn)題:(1)功能單調(diào) ,我們可以通過(guò)增加元件、模塊,擴(kuò)展鍵盤,增加子程序程序增加其功能。 (2)程序太過(guò)冗長(zhǎng),我們可以用其他的方法如查詢等方法來(lái)精簡(jiǎn)程序,加強(qiáng)它的可讀性。最后,通過(guò)這次的自主完成單片機(jī)的應(yīng)用系統(tǒng)設(shè)計(jì),讓我學(xué)會(huì)了如何去完成一個(gè)設(shè)計(jì)報(bào)告,讓我更進(jìn)一步了解了單片機(jī),也讓我感受到做出一個(gè)設(shè)計(jì)的開(kāi)心,喜悅與擔(dān)心。相信這對(duì)以后的畢業(yè)
27、設(shè)計(jì)也會(huì)有很大的幫助。</p><p><b> 七、附錄</b></p><p><b> 程序</b></p><p> KEYBUF EQU 30H</p><p> STH0 EQU 31H</p><p> STL0 EQU 32H</p>
28、<p> TEMP EQU 33H</p><p> ORG 00H ; 開(kāi)始地址</p><p> LJMP START</p><p> ORG 0BH ; T0中斷矢量地址</p><p> LJMP INT_T0 </p
29、><p> START: MOV TMOD,#01H ; 寫控制字,工作方式1</p><p> SETB ET0 ; 允許T0中斷</p><p> SETB EA ; 開(kāi)放CPU中斷</p><p><b> WAIT:&l
30、t;/b></p><p> MOV P3,#0FFH ; P3口輸出</p><p> CLR P3.4 ; 清零</p><p><b> MOV A,P3</b></p><p> ANL A,#0FH
31、 ; 屏蔽高四位</p><p> XRL A,#0FH ;異或運(yùn)算,高四位保留,低四位取反 </p><p> JZ NOKEY1 ; 判斷</p><p> LCALL DELY10MS</p><p><b> MOV A,P3</b></p&g
32、t;<p> ANL A,#0FH ; 屏蔽高四位</p><p> XRL A,#0FH ; 異或運(yùn)算</p><p><b> JZ NOKEY1</b></p><p><b> MOV A,P3</b></p>&l
33、t;p> ANL A,#0FH ; 屏蔽高四位 </p><p> CJNE A,#0EH,NK1 ; 判斷A與#0eh是否相等,比較跳到鍵1</p><p> MOV KEYBUF,#0 ; 賦初值#0</p><p> LJMP DK1 ; 跳轉(zhuǎn)&l
34、t;/p><p> NK1: CJNE A,#0DH,NK2 ;比較跳到鍵2</p><p> MOV KEYBUF,#1 ;賦值初值#1</p><p> LJMP DK1 ;跳轉(zhuǎn)</p><p> NK2: CJNE A,#0BH,NK3
35、 ;比較跳到鍵3</p><p> MOV KEYBUF,#2 </p><p><b> LJMP DK1</b></p><p> NK3: CJNE A,#07H,NK4 ;比較跳到鍵4</p><p> MOV KEYBUF,
36、#3</p><p> LJMP DK1 ; 調(diào)用DK1</p><p> NK4: NOP ;空指令延時(shí)一個(gè)周期</p><p><b> DK1:</b></p><p> MOV A,KEYBUF</p>
37、;<p> MOV DPTR,#TABLE ; 查表 賦首地址</p><p> MOVC A,@A+DPTR ; 將查表結(jié)果送給A</p><p> MOV P0,A ;將A中數(shù)據(jù)送給P0</p><p> MOV A,KEYBUF</p>&
38、lt;p><b> MOV B,#2</b></p><p> MUL AB ;AB相乘,因?yàn)楸砝锒际亲郑缘贸?查得數(shù)據(jù)</p><p> MOV TEMP,A</p><p> MOV DPTR,#TABLE1 ; 查表一</p><p> MOVC A,@A+DPTR&
39、lt;/p><p> MOV STH0,A ;寫定時(shí)常數(shù),將數(shù)據(jù)高位送THO</p><p> MOV TH0,A ;將高位備份</p><p> INC TEMP ;移動(dòng)TEMP,掃描鍵盤</p><p> MOV A,TEMP</p>
40、<p> MOVC A,@A+DPTR</p><p> MOV STL0,A ;寫定時(shí)常數(shù)</p><p><b> MOV TL0,A</b></p><p> SETB TR0 ;啟動(dòng)TR0</p><p> DK1A:
41、 MOV A,P3</p><p> ANL A,#0FH ; 屏蔽高四位</p><p> XRL A,#0FH ;低四位取反</p><p> JNZ DK1A ;不為零則轉(zhuǎn)移</p><p><b> CLR TR
42、0</b></p><p> NOKEY1: ;鍵1子程序</p><p> MOV P3,#0FFH</p><p> CLR P3.5 ;清零</p><p><b> MOV A,P3</b></p
43、><p> ANL A,#0FH ; 屏蔽高四位 </p><p> XRL A,#0FH ; 異或運(yùn)算</p><p> JZ NOKEY2 ; 判斷跳轉(zhuǎn)鍵2子程序</p><p> LCALL DELY10MS
44、 ;延遲10毫秒</p><p><b> MOV A,P3</b></p><p> ANL A,#0FH</p><p> XRL A,#0FH</p><p> JZ NOKEY2 ;等于零則轉(zhuǎn)移</p><p><b> M
45、OV A,P3</b></p><p> ANL A,#0FH</p><p> CJNE A,#0EH,NK5 ; 比較跳到鍵5</p><p> MOV KEYBUF,#4</p><p><b> LJMP DK2</b></p><p> NK5
46、: CJNE A,#0DH,NK6 ; 鍵5子程序</p><p> MOV KEYBUF,#5</p><p><b> LJMP DK2</b></p><p> NK6: CJNE A,#0BH,NK7</p><p> MOV KEYBUF,#6</p&
47、gt;<p><b> LJMP DK2</b></p><p> NK7: CJNE A,#07H,NK8</p><p> MOV KEYBUF,#7</p><p><b> LJMP DK2</b></p><p> NK8: NOP</p>
48、<p><b> DK2:</b></p><p> MOV A,KEYBUF</p><p> MOV DPTR,#TABLE</p><p> MOVC A,@A+DPTR</p><p><b> MOV P0,A</b></p><p> MO
49、V A,KEYBUF</p><p><b> MOV B,#2</b></p><p><b> MUL AB</b></p><p> MOV TEMP,A</p><p> MOV DPTR,#TABLE1 ; 查表掃描表一</p><
50、p> MOVC A,@A+DPTR</p><p> MOV STH0,A ;寫定時(shí)常數(shù)A</p><p><b> MOV TH0,A</b></p><p> INC TEMP ; 移動(dòng)TEMP,掃描鍵盤</p><p>
51、 MOV A,TEMP</p><p> MOVC A,@A+DPTR</p><p> MOV STL0,A ;寫定時(shí)的低位</p><p><b> MOV TL0,A</b></p><p> SETB TR0 ;啟動(dòng)定時(shí)<
52、;/p><p> DK2A: MOV A,P3</p><p> ANL A,#0FH</p><p> XRL A,#0FH</p><p> JNZ DK2A ;不為零則轉(zhuǎn)移</p><p><b> CLR TR0</b></p>
53、;<p><b> NOKEY2:</b></p><p> MOV P3,#0FFH</p><p><b> CLR P3.6</b></p><p><b> MOV A,P3</b></p><p> ANL A,#0FH</p>
54、<p> XRL A,#0FH</p><p><b> JZ NOKEY3</b></p><p> LCALL DELY10MS</p><p><b> MOV A,P3</b></p><p> ANL A,#0FH</p><p> XRL A
55、,#0FH</p><p> JZ NOKEY3</p><p><b> MOV A,P3</b></p><p> ANL A,#0FH</p><p> CJNE A,#0EH,NK9</p><p> MOV KEYBUF,#8</p><p> LJ
56、MP DK3 ; 調(diào)用DK3</p><p> NK9: CJNE A,#0DH,NK10</p><p> MOV KEYBUF,#9</p><p><b> LJMP DK3</b></p><p> NK10: CJNE A,#0BH,NK11<
57、/p><p> MOV KEYBUF,#10</p><p><b> LJMP DK3</b></p><p> NK11: CJNE A,#07H,NK12</p><p> MOV KEYBUF,#11</p><p><b> LJMP DK3</b>&l
58、t;/p><p> NK12: NOP</p><p><b> DK3:</b></p><p> MOV A,KEYBUF</p><p> MOV DPTR,#TABLE ; 查表</p><p> MOVC A,@A+DPTR</p>
59、<p><b> MOV P0,A</b></p><p> MOV A,KEYBUF</p><p><b> MOV B,#2</b></p><p><b> MUL AB</b></p><p> MOV TEMP,A</p><
60、p> MOV DPTR,#TABLE1 ; 查表1</p><p> MOVC A,@A+DPTR</p><p> MOV STH0,A</p><p><b> MOV TH0,A</b></p><p> INC TEMP ; 移動(dòng)TEMP,
61、掃描鍵盤</p><p> MOV A,TEMP</p><p> MOVC A,@A+DPTR</p><p> MOV STL0,A</p><p><b> MOV TL0,A</b></p><p> SETB TR0 ; 啟動(dòng)TR0
62、 </p><p> DK3A: MOV A,P3</p><p> ANL A,#0FH</p><p> XRL A,#0FH</p><p><b> JNZ DK3A</b></p><p><b> CLR TR0</b></p>&
63、lt;p><b> NOKEY3:</b></p><p> MOV P3,#0FFH ; P3輸出</p><p><b> CLR P3.7</b></p><p><b> MOV A,P3</b></p><p>
64、ANL A,#0FH</p><p> XRL A,#0FH</p><p> JZ NOKEY4 ;判c=0轉(zhuǎn)移,利用標(biāo)志位來(lái)判斷是哪個(gè)鍵按下</p><p> LCALL DELY10MS</p><p><b> MOV A,P3</b></p><p> ANL A,#0F
65、H</p><p> XRL A,#0FH</p><p><b> JZ NOKEY4</b></p><p><b> MOV A,P3</b></p><p> ANL A,#0FH</p><p> CJNE A,#0EH,NK13</p>&
66、lt;p> MOV KEYBUF,#12</p><p> LJMP DK4 ; 調(diào)用DK4</p><p> NK13: CJNE A,#0DH,NK14</p><p> MOV KEYBUF,#13</p><p> LJMP DK4
67、 ; 調(diào)用DK4</p><p> NK14: CJNE A,#0BH,NK15</p><p> MOV KEYBUF,#14</p><p> LJMP DK4 ; 調(diào)用DK4</p><p> NK15: CJNE A,#07H,NK16</p
68、><p> MOV KEYBUF,#15</p><p><b> LJMP DK4</b></p><p> NK16: NOP</p><p><b> DK4:</b></p><p> MOV A,KEYBUF</p><p>
69、; MOV DPTR,#TABLE ; 查表</p><p> MOVC A,@A+DPTR</p><p> MOV P0,A ; P0輸出</p><p> MOV A,KEYBUF</p><p><b> MOV B,#2<
70、/b></p><p><b> MUL AB</b></p><p> MOV TEMP,A</p><p> MOV DPTR,#TABLE1 ; 查表1</p><p> MOVC A,@A+DPTR</p><p> MOV STH0,A<
71、;/p><p><b> MOV TH0,A</b></p><p> INC TEMP ;移動(dòng)TEMP,掃描鍵盤 </p><p> MOV A,TEMP</p><p> MOVC A,@A+DPTR</p><p> MOV STL0
72、,A</p><p> MOV TL0,A ;寫定時(shí)的低位</p><p> SETB TR0 ;啟動(dòng)T0</p><p> DK4A: MOV A,P3</p><p> ANL A,#0FH
73、 ;屏蔽高四位</p><p> XRL A,#0FH</p><p><b> JNZ DK4A</b></p><p><b> CLR TR0</b></p><p><b> NOKEY4:</b></p><p><b&
74、gt; LJMP WAIT</b></p><p> DELY10MS: </p><p> MOV R6,#10 ;設(shè)置外循環(huán)次數(shù) </p><p> D1: MOV R7,#248 ;設(shè)置內(nèi)循環(huán)次數(shù) </p
75、><p><b> DJNZ R7,$</b></p><p> DJNZ R6,D1 </p><p><b> RET</b></p><p> INT_T0: ;重寫定時(shí)常數(shù)</p><p> MOV TH0
76、,STH0</p><p> MOV TL0,STL0</p><p><b> CPL P1.0</b></p><p><b> RETI</b></p><p> TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p&g
77、t; DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p> TABLE1: DW 64021,64103,64260,64400</p><p> DW 64524,64580,64684,64777</p><p> DW 64820,64898,64968,65030</p><p> DW 6
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)報(bào)告--基于51單片機(jī)的簡(jiǎn)易電子琴設(shè)計(jì)
- 基于51單片機(jī)簡(jiǎn)易電子琴的課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的簡(jiǎn)易電子琴
- 基于51單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 單片機(jī)簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)——簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴
- 基于單片機(jī)的簡(jiǎn)易電子琴課程設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易電子琴課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)-- 基于單片機(jī)的電子琴設(shè)計(jì)
- c51單片機(jī)課程設(shè)計(jì)——電子琴
- c51單片機(jī)課程設(shè)計(jì)——電子琴
評(píng)論
0/150
提交評(píng)論