第一篇:微機原理及應用 電子琴課程設計
科技學院 微機原理及應用 課 程 設 計
設計名稱: 設計模擬電子琴 模擬 指導老師: 指導老師:-----設計者姓名:-----專業班級:自動化 學 號:----------設計時間: 2012.6
摘 要:本文通過 8255 和 8253 來實現電子琴模擬,主要可以分成兩部分,分別為輸入部分和發音部分。輸入部分:主要是由 8255 和 8 個常開型開關來完成。發音部分:CUP 通過對定時器 8253 的通道 2 進行編程,使其 I/O 寄存器接收一 個控制聲音頻率的 16 位計數值,端口 61H 的最低位控制通道 2 門控的開斷,以 產生特殊的音響。本文用到的是 8253 的方式 3——方波發生器。關鍵詞: 關鍵詞:8253 定時器;8255;電子琴
1.引言
引言 :8253 芯片是常用的可編程計數器,在微機中有著極其重要的作用。常用于事件計數器,單穩態觸發器,分頻器,方波發生器,硬件觸發的單脈沖發生器 等。計數器/定時器 8253 包括 3 個獨立的 16 位計數器通道,而每個計數器都有 6 種工作方式,可以按二進制或十進制(BCD 碼)進行計數。本文用到的是 8253 的方式 3——方波發生器來實現了簡易電子琴的設計。
2.1 8253 簡介
8253 為可編程定時/計數器,一片 8253 上有 3 個獨立的 16 位計數器通道,可以作為定時器或計數器使用,每個計數器都可設定為按照二進制或 BCD 碼進行 計數,計數速率可達 2MHZ,每個計數器有 6 種工作方式,可編程設置和改變。
如下圖為 8253 的內部結構圖。在圖中可以清楚地看到,8253 主要是由數據總線 緩沖存儲器,讀寫控制電路,控制字寄存器和 3 個通道 4 部分所組成。
8253 內部結構【1】(如圖 1 所示)及外部引腳【1】(如圖 2 所示)
圖 1:8253 內部結構圖
圖 2:8253 引腳圖
8253 的控制字和編程【1】 如圖 3 所示
圖 3:8253 控制字 2.8253 的工作方式 3——方波發生器【1】
方式 3 的波形如圖 4 所示,它的特點是:
(1)輸出為周期性的方波。若計數值為 N,則輸出方波的周期是 N 個 CLK 脈沖 的寬度。
(2)寫入控制字后,輸出將變為高電平,當寫入計數初值后,就開始計數,輸 出仍為高電平; 當計數到初值的一半時,輸出變為低電平,直至計數到 0,輸出又變為高電平,重新開始計數。
(3)
若計數值為偶數,則輸出對稱方波;如果計數值為奇數,則前(N+1)/2 個 CLK 脈沖期間輸出為高電平,后(N-1)/2 個 CLK 脈沖期間輸出為低電平。
(4)
GATE 信號能使計數過程重新開始,GATE=1 允許計數,GATE=0 禁止計數。停止后 OUT 將立即變高電平,當 GATE 再次變高以后,計數器將自動裝入 計數初值,重新開始計數。
圖 4:8253 工作方式 3 波形
3.8255 的簡介【2】
8255 是一個 40 引腳的雙列直插式集成電路芯片。按功能可把 8255 分為三 個邏輯電路部分,即:口電路、總線接口電路和控制邏輯電路。8255 共有三個 8 位口,其中 A 口和 B 口是單純的數據口,供數據 I/O 使用。而 C 口則既可以作數 據口,又可以作控制口使用,用于實現 A 口和 B 口的控制功能。總線接口電路用 于實現 8255 和單片微機的信號連接。其中包括:數據總線緩沖器,讀/寫控制邏 輯,控制邏輯電路。
內
部的結
構
如
圖
所
示
圖 5:8255 結構圖
8255A 的方式控制字如圖 6 所示
圖 6:8255A 的方式控制字
4.用 8235 和 8255 設計簡易電子琴
設計任務與要求 以 K1-K8 接 8255 的 A 口做為電子琴的鍵盤分別輸入靜音、do、re、mi、fa、sol、la、si 的音,以 8255 的 B 口作為輸出。用 8253 定時器產生頻率 控制揚聲器發生。1.以 8255 接八個開關 K1-K8,做電子琴按鍵輸入。2.以 8253 控制揚聲器,發出相應的音階。要求: K1—靜音 K2—發 si 的音 493Hz K3—發 la 的音 440Hz K4—發 sol 的音 392Hz K5—發 fa 的音 349Hz K6—發 mi 的音 329Hz K7—發 re 的音 293Hz K8—發 do 的音 261Hz
設計原理【3】:通過 8255 和 8253 來實現電子琴模擬,主要可以分成兩部分,分別為輸入部分和發音部分。
輸入部分:主要是由 8255 和 8 個常開型開關來完成。
發音部分:CUP 通過對定時器的通道 2 進行編程,使其 I/O 寄存器接收一個 控制聲音頻率的 16 位計數值,端口 61H 的最低位控制通道 2 門控的開斷,以產 生特殊的音響。當定時器接收的計數值為 533H 時,能產生 896Hz 的聲音,因此產生其他頻率的計數值就可由下式計算
計數值=533H*896/f=1234DCH/f
當通道 2 用于發聲時,采用的是模式 3,在模式 3 下,輸出線為“1”和為“0” 的時間各占計數時間的一半,因而產生一系列間隔均勻的脈沖。從定時器輸出的方波信號,經功率放大和濾波后驅動揚聲器。送到揚聲器的信號 還受到了從并行接口芯片 8255(端口地址為 61H)來的雙重控制,端口 61H 的最 低位控制通道 2 的門控開斷,以產生特殊的音頻信號,端口 61H 的 PB1 位和定時 器的輸出信號同時作為與門的輸入,PB0 和 PB1 位可由程序決定為 0 還是為 1。顯然只有 PB0 和 PB1 都是 1 時,才能使揚聲器發出聲音。控制音長的時間可以簡 單地通過反復執行指令來得到。執行 2801 次 LOOP 指令約需要 10MS 的時間。因 此用 10MS 的倍數值來控制揚聲器開關的時間間隔,就可控制發聲的音長了。(1)程序流程圖(2)程序流
程
圖
如
圖
所
示
:
圖 7:流程圖
(2)程序清單
發音部分程序源代碼如下
把計數值送 8253 前,必須先把 8253 進行初始化,使其選用通道 2,工作在 方式 3 下。MOV AL,0B6H
OUT 43H,AL
;43H 為 8253 的控制字端口
計算計數初值,計數值送到 8253,用以產生需要的發音頻率利用定時器發 聲。這里是通過硬件即 8253 定時器產生聲音。CUP 通過對定時器的通道 2 進行 編程,使其 I/O 寄存器接收一個控制聲音頻率的 16 位計數值,端口 61H 的最低 位控制通道 2 門控的開斷,以產生特殊的音響。當定時器接收的計數值為 533H 時,能產生 896Hz 的聲音,因此產生其他頻率的計數值就可由下式計算: 計數值=533H*896/f=1234DCH/f MOV DX,12H MOV AX,348CH
DIV DI
;(DI)=頻率
OUT 42H,AL
;42H為8253的通道2端口 MOV AL,AH OUT 42H,AL
送到揚聲器的信號還受到了從并行接口芯片 8255(端口地址為 61H)來的雙 重控制,端口 61H 的最低位控制通道 2 的門控開斷,以產生特殊的音頻信號,端 口 61H 的 PB1 位和定時器的輸出信號同時作為與門的輸入,PB0 和 PB1 位可由程 序決定為 0 還是為 1。顯然只有 PB0 和 PB1 都是 1 時,才能使揚聲器發出聲音。
IN AL,61H MOV AH,AL OR AL,3
OUT 61H,AL ;開揚聲器 ;
控制音長的時間可以簡單地通過反復執行指令來得到。我們知道執行 2801 次
LOOP 指令約需要 10MS 的時間。因此用 10MS 的倍數值來控制揚聲器開關的時間 間隔,就可控制發聲的音長了。LOOP1: MOV CX,2801
;發音時間 10ms JMP LOOP2 LOOP2: PUSH AX LOOP3: IN AL,61H AND AL,10H CMP AL,AH JE LOOP3 MOV AH,AL LOOP LOOP3 POP AX
DELAY: LOOP DELAY
;延時 DEC BX JNZ LOOP1 輸出 61 端口的值
MOV AL,AH OUT 61H,AL
5.結論
結論:
達到題目要求內容,以 K1-K8 接 8255 的 A 口做為電子琴的鍵盤分別輸入靜 音、do、re、mi、fa、sol、la、si 的音,以 8255 的 B 口作為輸出。用 8253 定 時器產生所需音階頻率控制揚聲器發音。
第二篇:微機原理課程設計-電子琴設計
簡單的電子琴設計
前言
本實驗是利用微機原理試驗箱、8255芯片、8254芯片、鍵盤、揚聲器等硬件設備,設計簡易電子琴。
首先利用了編程程序,編輯了8255芯片控制字, 對其進行初始化,使其工作在方式0,即基本輸入輸出狀態,將8255的A端口設置為輸出,C端口進行,經CPU運算后, 輸出到8254芯片的A端口中,由此實現對其的初始化。
將8254芯片設置為工作在方式3,即輸出對稱方波狀態。A端口為輸入,“OUT”指令可將輸出對應一定頻率的方波送到揚聲器中,由此實現發聲。本實驗通過頻率大小控制發出聲音的高低,通過對延時程序的調用控制發出聲音的長短。并通過所編程序實現對鍵盤的重復掃描,重而可以彈奏多個音符的試驗目的。
關鍵字: 編程、工作方式、運算
簡單的電子琴設計
一、設計題目:
簡易電子琴設計
二、設計內容:
實驗電路如圖16-1,8253的CLK0接1MHZ時鐘,GATE0接8255的PA1,OUT0和8255的PA0接到與門的兩個輸入端,K8跳線連接喇叭,編程使計算機的數字鍵1、2、3、4、5、6、7作為電子琴按鍵,按下即發出相應的音階。
三、設計目的:
1、通過8253產生不同的頻率信號,使PC機成為簡易電子琴。
2、了解利用8255和8253產生音樂的基本方法。
3、通過課程設計使學生更進一步掌握微機原理及應用課程的有關知識,提高應用微機解決問題的能力,加深對微機應用的理解。通過查閱資料,結合所學知識進行軟、硬件的設計,使學生初步掌握應用微機解決問題的步驟及方法。為以后學生結合專業從事微機應用設計奠定基礎。
四、設計要求:
1.可以彈出7個音階。2.彈奏簡短音樂。
3.通過改變鍵盤輸入來改變8254輸出頻率,實現揚聲器發音
五、編程提示:
1、利用8255的PA0口來施加控制信號給與門,用來控制揚聲器的開關狀態。再利用設置不同的計數值,使8253產生不同頻率的波形,使揚聲器產生不同頻率的音調,達到類似與音階的高低音變換。對于音樂,每個音階都有確定的頻率。各音階標稱頻率值: 音 階2 3 4 5 6 7 1* 低頻率(單位:Hz)262 294 330 347 392 440 494 524 高頻率(單位:Hz)524 588 660 698 784 880 988 1048
簡單的電子琴設計
六、設計原程序及注解
;*******************************;;* 電子琴實驗 *;;*******************************;
data segment io8255a equ 288h io8255b equ 28bh io8253a equ 280h io8253b equ 283h table dw 524,588,660,698,784,880,988,1048;高音的;table dw 262,294,330,347,392,440,494,524;低音的 msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$' data ends
code segment assume cs:code,ds:data start: mov ax,data mov ds,ax
mov dx,offset msg mov ah,9 int 21h;顯示提示信息 sing: mov ah,7 int 21h;從鍵盤接收字符,不回顯 cmp al,1bh je finish;若為ESC鍵,則轉finish cmp al,'1' jl sing cmp al,'8' jg sing;若不在'1'-'8'之間轉sing
sub al,31h shl al,1;轉為查表偏移量 mov bl,al;保存偏移到bx mov bh,0
mov ax,4240H;計數初值 = 1000000 / 頻率, mov dx,0FH div word ptr[table+bx] mov bx,ax
保存到AX 3
簡單的電子琴設計
mov dx,io8253b;設置8253計時器0方式3, 先讀寫低字節, 再讀寫高字節
mov al,00110110B out dx,al
mov dx,io8253a mov ax,bx out dx,al;寫計數初值低字節
mov al,ah out dx,al;
mov dx,io8255b;mov al,10000000B out dx,al
mov dx,io8255a mov al,03h out dx,al;call delay;mov al,0h out dx,al;
jmp sing finish: mov ax,4c00h int 21h
delay proc near;push cx push ax mov ax,15 x1: mov cx,0ffffh x2: dec cx jnz x2 dec ax jnz x1 pop ax pop cx ret delay endp code ends end start
寫計數初值高字節 設置8255 A口輸出 置PA1PA0 = 11(開揚聲器)延時 置PA1PA0 = 00(關揚聲器)延時子程序 4
簡單的電子琴設計
七、程序流程圖:
八、硬件連線圖
簡單的電子琴設計
九、實驗結果
連接完線路后啟動電路開關,然后運行程序,就會出現提示界面,然后鍵盤輸入數字即可有相應音階音樂從喇叭處播放。
十、實驗中遇到了的問題及解決方法
在實驗中遇到了很多問題其主要是代碼的編譯類錯誤,在通過網上查閱相關資料以及在老師同學幫助下這些困難都迎刃而解了。才使程序完美運行。6
簡單的電子琴設計
總 結
這是一次成功的實訓,也是應值得遠記住的一次實訓,在這次實訓中我充分感受到了集體的力量,在我組組員的共同努力下,我們的電子琴程序從無到有、功能從弱到強,一步步的走向成功,同時也感謝陳老師給我這樣一次鍛煉的機會,讓我的人生經歷有豐富了一些并且這段經歷將成為我生活中一段寶貴的精神財富。
參考文獻:
1、《8088/8086匯編語言程序設計》中央廣播電視大學出版社
2、《微機原理與接口技術》北京航空航天大學出版社
3、《微型計算機原理與匯編語言》電子工業出版社
4、《微機原理與應用》大連理工大學出版社
5、《現代微機原理與接口技術》電子工業出版社
第三篇:微機原理課程設計
匯編程序設計題
題目一 密碼設置模擬
該程序可以進行密碼的設置(第一次)和修改(已設置密碼)。要求輸入的密碼不顯示。題目二 計算器
編輯程序可以實現鍵盤輸入數據與運算符,進行“加減乘除”運算。(提示:先輸入數據與運算符,保存,再按照運算符選擇對應的子程序;輸入的數據是用字符表示的,需要轉換;要有良好的界面(提示信息))
題目三工作周期判斷程序
輸入年、月、日,能夠判斷當日的星期數,并進行輸出。(以校歷為依照,可設某日為起點,根據相差的天數與7的關系進行判斷)。
題目四 PC揚聲器發聲
利用8253驅動PC機內揚聲器發聲,PC結構參考相關文獻資料。題目五 樂曲播放
利用PC機內8253實現樂曲播放。題目六 按鍵選擇樂曲播放
利用按鍵選擇播放不同樂曲。(★)(自制交互界面實現按鍵選擇★★)題目七 實現閃爍文字效果 編程提示:
提示信息于屏幕中央顯示出來,用光標定位子程序將光標定位于80*25顯示方式的第8行第10列,然后輸出一條提示信息,接著調用屏幕上卷子程序上卷一行,接著再定位光標,然后顯示下一條提示信息,直到所有信息顯示完畢,對于閃爍的信息,同樣是定位光標,然后用BIOS功能調用13H來顯示閃爍信息,當BL的高位為1時,字符閃爍。mov ah,00h mov al,03h ;設置顯示方式為80*25,16色文本 int 10h 題目八
數字秒表
設計可以顯示1~60秒的無存儲功能的秒表,最小單位為毫秒。題目九
倒計時牌
設計日期倒計時牌界面,可輸入設定日期,顯示當前日期的統計天數,如奧運計時牌。題目十
數字時鐘
編程實現時鐘功能,按秒刷新,要求定位在屏幕右上角。
硬件設計題
總體要求:根據題意自行設計電路,編寫相關匯編程序。題目一
交通燈控制系統
1.利用8253定時,8259中斷及8255設計電路,實現十字路口交通燈模擬控制。2.實現能自動控制和手動應急控制。
3.實現能隨時可以調整自動模式的綠燈和紅燈時間。題目二 實現特定功能的鍵盤及LED顯示
了解鍵盤及LED顯示接口原理,設計實驗電路圖完成以下功能: 1.按1鍵顯示年; 2.按2鍵顯示月日; 3.按3鍵顯示GOOD ;
4.按4鍵數碼管由左到右字符“0”循環顯示。5.自行設計特效顯示功能。題目三
LED七段數碼管數字鐘
設計并完成LED七段數碼管數字鐘電路,數字鐘顯示格式為:HH:MM:SS。要求:具有通過鍵盤能夠調整時、分、秒的功能。題目四
閃爍燈
利用8253和LED燈相結合實現閃爍燈效果。題目五
電子鐘
利用8253定時器設計一個電子鐘,并定義一個啟動鍵。當按下該鍵時電子時鐘從當前設定值開始走時。
附錄:實驗箱功能模塊電路圖
第四篇:微機原理課程設計
《微機原理》課程設計報告
時
間 學 院 專業班級 姓 名 學 號 合 作 者
指導教師
成 績
2013 年 11 月
摘要
本文針對可燃氣體檢測模塊MQ—K1,綜合運用《微機原理》所學知識,選擇合適的芯片,如微處理器8086、存儲器、可編程并行接口芯片8255、A/D轉換芯片ADC0809,LED顯示芯片8279以及其它輔助芯片等,設計合理的硬件系統,實現可燃氣體濃度的測量與檢測結果的顯示,設定閾值,超過閾值后報警,并對設計出的硬件系統運用匯編語言完成全部軟件系統設計及調試。
關鍵詞:可燃氣體傳感器、LED數碼管顯示、LCD液晶模塊、語音報警
Abstract In this paper, combustible gas detection module MQ-K1, integrated use of “Computer Architecture” the knowledge, choosing the right chip, such as the 8086 microprocessor, memory, programmable parallel interface chip 8255, A / D conversion chip ADC0809, LED display chip 8279 as well as other auxiliary chips, designed hardware system, combustible gas concentration measurement and test results show that the set threshold, exceeds the threshold alarms, and design the hardware system using assembly language software system design and complete all debugging.Keywords: combustible gas sensor, LED digital display, LCD liquid crystal module, voice alarm
目錄
摘要.........................................................................................................................................................1 Abstract............................................................................................................................................................1 1實驗目的......................................................................................................................................................3 2實驗內容......................................................................................................................................................3 3實驗設備......................................................................................................................................................3 4實驗原理......................................................................................................................................................3
4.1系統概述...........................................................................................................................................3 4.2硬件介紹...........................................................................................................................................4 4.3可燃氣體傳感器.............................................................................................................................6 4.4 LCD顯示....................................................................................................錯誤!未定義書簽。4.5語音錄放模塊.................................................................................................................................9 5設計思路....................................................................................................................................................10 5.1數碼管顯示....................................................................................................................................10 5.2 LCD顯示.......................................................................................................................................10 5.3語音報警.........................................................................................................................................10 6實驗測試步驟............................................................................................................................................11 7程序流程....................................................................................................................................................12 8實驗程序....................................................................................................................................................15 8.1數碼管顯示....................................................................................................................................15 8.2 LCD顯示..................................................................................................1錯誤!未定義書簽。8.3數碼管,LCD顯示,語音報警最終程序.................................................................................19 9實驗現象及說明........................................................................................................................................26 10實驗結論..................................................................................................................................................28 11承擔的主要任務......................................................................................................................................28 12結論及設計心得與體會.........................................................................................................................28
1、實驗目的
掌握可燃氣體傳感器的工作原理和測量電路。通過采集氣體的濃度,經過模擬量轉換為數字量,即A/D轉換,AD0809采樣輸出電壓值并在數碼管上顯示,并改進程序,使在液晶屏上顯示可燃氣體傳感器檢測結果轉換的電壓值,并設定閾值,超過閾值后報警。對所設計的硬件系統運用匯編語言完成全部軟件系統設計及調試。
2、實驗內容
用打火機靠近可燃氣體傳感器并噴射少量氣體,AD0809采樣輸出電壓值并顯示。并改進程序,使在液晶屏上顯示可燃氣體傳感器檢測結果轉換的電壓值。設定閾值,超過閾值后報警。對所設計的硬件系統運用匯編語言完成全部軟件系統設計及調試。
3、實驗設備
3.1 EL-MUT-III實驗箱 3.2 8086CPU板
3.3 霍爾、氣體傳感器模塊 3.4 交叉串口線 3.5 E-LAB-AUDIO-ISD1700
4、實驗原理
4.1系統概述
1、微處理器:8086
2、時鐘頻率:6MHz
3、存儲器
6264 系統RAM,地址范圍 0~3FFFH,奇地址有效 6264 系統RAM,地址范圍0~3FFFH,偶地址有效 27C64 系統ROM,地址范圍 FFFFF~FC000H,奇地址有效 27C256 系統ROM,地址范圍 FFFFF~FC000H,偶地址有效
4、系統資源分配
本系統采用可編程邏輯器件(CPLD)EPM7128 做地址的編譯碼工作,可通過芯片的JTAG 接口與PC機相連,對芯片進行編程。此單元也分兩部分:一部分為系統CPLD,完成系統器件,如監控程序存儲器、用戶程序存儲器、數據存儲 器、系統顯示控制器、系統串行通訊控制器等的地址譯碼功能,同時也由部分地址單元經譯碼后輸出(插孔CS0—CS5)給用戶使用,其地址固定,用戶不可改變。另一部分為用戶CPLD,它完全對用戶開放,用戶可在一定的地址范圍內,進行編譯碼,輸出為插孔LCS0—LCS7,注意,用戶的地址不能與系統相沖突,否則將導致錯誤。1)地址分配
CS0 片選信號,地址04A0~04AF 偶地址有效 CS1 片選信號,地址04B0~04BF 偶地址有效 CS2 片選信號,地址04C0~04CF 偶地址有效 CS3 片選信號,地址04D0~04DF 偶地址有效 CS4 片選信號,地址04E0~04EF 偶地址有效 CS5 片選信號,地址04F0~04FF 偶地址有效 CS6 片選信號,地址0000~01FF 偶地址有效 CS7 片選信號,地址0200~03FF 偶地址有效 8250 片選地址:0480~048F,偶地址有效 8279 片選地址:0490~049F,偶地址有效 2)硬件實驗說明
所有實驗程序的起始地址為01100H,CS=0100H,IP=0100H,代碼段、數據段、堆棧段在同一個64K的地址空間中。4.2硬件介紹
4.2.1整機介紹
EL-MUT-III 型微機教學實驗系統由電源、系統板、CPU 板、可擴展的實驗模板、微機串口通訊線、JTAG通訊線及通用連接線組成。
圖1 系統板結構 4.2.3硬件資源
1.可編程并口接口芯片8255 一片。
2.串行接口兩個:8250 芯片一個,系統與主機通訊用,用戶不可用。單片機的串行口,可供用戶使用。
3.鍵盤、LED 顯示芯片8279 一片,其地址已被系統固定為CFE8H、CFE9H。硬件系統要求編碼掃描顯示。
4.六位LED 數碼管顯示。
5.ADC0809 A/D 轉換芯片一片,其地址、通道1—8 輸入對用戶開放。6.DAC0832 D/A 轉換芯片一片,其地址對用戶開放,模擬輸出可調 7.8 位簡單輸入接口74LS244 一個,8 位簡單輸出接口74LS273 一個,其地址對用戶開放。
8.配有8 個邏輯電平開關,8 個發光二極管顯示電路。9.配有一個可手動產生正、負脈沖的單脈沖發生器
10.配有一個可自動產生正、負脈沖的脈沖發生器,按基頻6.0MHz 進行1 分頻(CLK0)、二分頻(CLK1)、四分頻(CLK2)、八分頻(CLK3)、十六分頻(CLK4)輸出方波。
11.配有一路0—5V 連續可調模擬量輸出(AN0)。
12.配有可編程定時器8253 一個,其地址、三個定時器的門控輸入、控制輸出均對用戶開放。
13.配有可編程中斷控制器8259 一個,其中斷IRQ 輸入、控制輸出均對用戶開放。
14.2組總線擴展接口,最多可擴展2 塊應用實驗板。
15.配有兩塊可編程器件EPM7064,一塊被系統占用。另一塊供用戶實驗用。兩塊器件皆可通過JTAG接口在線編程。使用十分方便。
16.靈活的電源接口:配有PC 機電源插座,可與PC 電源直接接駁。另還配有外接開關電源,提供所需的+5V,±12V,其輸入為220V 的交流電。4.3可燃氣體傳感器
MQ—K1可燃氣體傳感器主要用于檢測空氣中CO、CH4、H2等可燃氣體的濃度,其原理為傳感器的內部阻抗隨可燃氣體的濃度而變化。MQ—K1的測量范圍為100—10000PPM(PPM為體積比例,表示百萬分之一),工作環境的溫度:-10℃~45℃,濕度≤95%。其引腳及電學參數如下: 可燃氣體傳感器的工作原理見模塊說明,其測量電路如下圖所示:
圖2 可燃氣體傳感器測量電路 腳、5腳用于加熱,1、3腳和4、6腳接測量電路,RL為負載電阻。
表1-可燃氣體傳感器標準工作條件
傳感器在1000ppm的CH4中的阻抗用R0表示,在各種環境中的動態阻抗用Rs表示。在潔凈的空氣中Rs/ R0=5,在其它環境中如下表所示:
表2-在各種環境中的阻抗用R0與動態阻抗Rs 的關系
可燃氣體傳感器電路如下所示:
圖3 可燃氣體傳感器電路
R2(SEN.)用于改變負載電阻的大小,R6(ZERO)用于零位調節,R12(ALARM)用于設置報警電壓,VOUT為模擬輸出,DOUT為數字輸出。
使用前,應先對MQ—K1通電預熱3—5分鐘,以使輸出穩定。在潔凈的空氣中,通過采樣VOUT電壓,求出R0;在有可燃氣體的環境中,通過采樣VOUT電壓,求出Rs;用Rs/R0的比值確定空氣中可燃氣體的濃度。4.4 LCD顯示
點陣式LCD顯示電路是在系統板上外掛電正式液晶顯示模塊,模塊的數據線、狀態、控制線都通過插孔引出。可直接與系統相連。4.4.1 OCMJ2×8液晶模塊介紹及使用說明
OCMJ中文模塊系列液晶顯示器內含 GB 2312 16*16點陣國標一級簡體漢字和 ASCII8*8(半高)及8*16(全高)點陣英文字庫,用戶輸入區位碼或 ASCII 碼即可實現文本顯示。也可用作一般的點陣圖形顯示器之用。提供位點陣和字節點陣兩種圖形顯示功能,用戶可在指定的屏幕位置上以點為單位或以字節為單位
進行圖形顯示。完全兼容一般的點陣模塊。OCMJ中文模塊系列液晶顯示器可以實現漢字、ASCII 碼、點陣圖形和變化曲線的同屏顯示,并可通過字節點陣圖形方式造字。本系列模塊具有上/下/左/右移動當前顯示屏幕及清除屏幕的命令。OCMJ 中文模塊所有的設置初始化工作都是在上電時自動完成的,實現了“即插即用”。同時保留了一條專用的復位線供用戶選擇使用,可對工作中的模塊進行軟件或硬件強制復位。規劃整齊的10個用戶接口命令代碼,非常容易記憶。標準用戶硬件接口采用REQ/BUSY 握手協議,簡單可靠。4.4.2硬件接口 接口協議為請求/應答(REQ/BUSY)握手方式。應答BUSY 高電平(BUSY =1)表示 OCMJ 忙于內部處理,不能接收用戶命令;BUSY 低電平(BUSY =0)表示 OCMJ 空閑,等待接收用戶命令。發送命令到 OCMJ 可在BUSY =0 后的任意時刻開始,先把用戶命令的當前字節放到數據線上,接著發高電平REQ 信號(REQ =1)通知OCMJ請求處理當前數據線上的命令或數據。OCMJ模塊在收到外部的REQ高電平信號后立即讀取數據線上的命令或數據,同時將應答線BUSY變為高電平,表明模塊已收到數據并正在忙于對此數據的內部處理,此時,用戶對模塊的寫操作已經完成,用戶可以撤消數據線上的信號并可作模塊顯示以外的其它工作,也可不斷地查詢應答線BUSY是否為低(BUSY =0?),如果BUSY =0,表明模塊對用戶的寫操作已經執行完畢。可以再送下一個數據。如向模塊發出一個完整的顯示漢字的命令,包括坐標及漢字代碼在內共需5個字節,模塊在接收到最后一個字節后才開始執行整個命令的內部操作,因此,最后一個字節的應答BUSY 高電平(BUSY =1)持續時間較長,具體的時序圖和時間參數說明查閱相關手冊。
4.2.3用戶命令
用戶通過用戶命令調用OCMJ系列液晶顯示器的各種功能。命令分為操作碼及操作數兩部分,操作數為十六進制。共分為3類10條,分別是:
一)、字符顯示命令:
1、顯示國標漢字;
2、顯示8X8 ASCII字符;
3、顯示8X16ASCII字符;
二)、圖形顯示命令:
4、顯示位點陣;
5、顯示字節點陣;
三)、屏幕控制命令:
6、清屏;
7、上移;
8、下移;
9、左移;
10、右移;(1)顯示國標漢字
命令格式: F0 XX YY QQ WW。該命令為5字節命令(最大執行時間為1.2毫秒,Ts2=1.2mS),其中 XX為以漢字為單位的屏幕行坐標值,取值范圍00到07、02到09、00到09。YY為以漢字為單位的屏幕列坐標值,取值范圍00到01、00到03、00到04。QQ WW為坐標位置上要顯示的GB 2312 漢字區位碼。
(2)顯示8X8 ASCII字符
命令格式:F1 XX YY AS。該命令為4字節命令(最大執行時間為0.8毫秒,Ts2=0.8mS),其中 XX為以ASCII碼為單位的屏幕行坐標值,取值范圍00到0F、04到13、00到13。YY為以ASCII碼為單位的屏幕列坐標值,取值范圍00到1F、00到3F、00到4F。AS坐標位置上要顯示的ASCII 字符碼。(3)顯示8X16 ASCII字符
命令格式:F9 XX YY AS。該命令為4字節命令(最大執行時間為1.0毫秒,Ts2=1.0mS),其中 XX為以ASCII碼為單位的屏幕行坐標值,取值范圍00到0F、04到13、00到13。YY為以ASCII碼為單位的屏幕列坐標值,取值范圍00到1F、00到3F、00到4F。AS坐標位置上要顯示的ASCII 字符碼。
(4)清屏
命令格式:F4。該命令為單字節命令(最大執行時間為11毫秒,Ts2=11mS),其功能為將屏幕清空。4.5語音錄放模塊
語音錄放模塊由單片語音錄放芯片ISD2560 及其外圍電路組成。4.5.1 SD2560 芯片介紹
ISD2560 是美國ISD 公司推出的ISD2500 系列語音芯片的一種。ISD2500 系列芯片按錄放時間60 秒、75 秒、90 秒和120 秒分成ISD2560、2575、2590 和25120 四個品種。ISD2560 芯片具有抗斷電、音質好,使用方便等優點,它使用單一的+5V 供電,錄音部分有自動增益控制電路,錄音的采樣頻率可達8KHz。ISD2560 片內有容量為480K 字節的E2PROM,所以錄放時間長,可重復錄制100000 次且可保持100 年不變。此外ISD2560 芯片支持分段錄音和分段播放,有10 個地址輸入端,尋址能力可達1024 位,最多能分600 段。芯片設有OVF(溢出)端,便于多個器件級聯。4.5.2 模塊電路原理圖
本電路中ISD2560采用按鈕控制操作方式,A9、A8、A6接VCC,A1—A5、A7均接GND,A0由CA0插孔引出,用于控制是否進入檢索模式。ISD2560的音頻輸出端SP+、SP-經過音頻功放LM386驅動喇叭。電位器R8(對應于模塊上VOLUME電位器)用于調節喇叭的增益。4.5.3 模塊的基本測試方法
1、模塊上P/-R、PD、CA0插孔分別接至實驗箱的K1、K2、K3,EOM接實驗箱指示燈L1,CE接單脈沖P-。
2、將K1、K3撥至低電平,K2先高后低。按一下單脈沖P-,L1應熄滅。此時對這麥克風說一段話,然后再按P-,此時L1應被點亮,錄音完成。
3、將K1 撥至高電平,K3 撥至低電平,K2 先高后低。按一下單脈沖P-,L1 應熄滅,此時可以聽到剛才錄的語音片斷。播放完成后,L1 應被點亮。
圖4 語音模塊電路
5、設計思路
5.1數碼管顯示
通過可燃氣體傳感器,在有可燃氣體的環境中,通過采樣VOUT電壓,將測試結果通過AD0809采樣輸出電壓,A D轉換,并通過8279顯示電路使數碼管顯示相應的轉換結果。5.2 LCD顯示
通過可燃氣體傳感器,在有可燃氣體的環境中,通過采樣VOUT電壓,將測試結果通過AD0809采樣輸出電壓,A D轉換,并通過LCD液晶屏顯示相應的轉換結果。5.3 語音報警
通過調節相應的滑阻設置閾值,當電路正常運行時,在可燃氣體模塊電路的Dout輸出端就會有相應的開關量的輸出。語音模塊提前錄好音,當可燃氣體濃度超過閾值時,利用Dout輸出量控制語音模塊輸出,即可實現語音報警。
6、實驗測試步驟
6.1 數碼管顯示
1、實驗連線:VOUT接A/D模塊的ADIN0,CS0809選擇CS3。
2、調節ZERO電位器,將VZERO調為0。將SEN.電位器調到最小,即VOUT輸出最小。調節ALARM電位器,將VALARM調到2V。
3、運行實驗程序,用打火機靠近可燃氣體傳感器并噴射少量氣體,觀察數碼管顯示的變化。6.2 LCD顯示 1、8255 的PA0~PA7接A/D PORT單元的DB0~DB7;2、8255 的PC7接A/D PORT單元的BUSY;3、8255 的PC0接A/D PORT單元的REQ;4、8255CS接CS0;
5、運行實驗程序,觀察液晶的顯示狀態。6.3 語音報警
1、實驗箱上CS244 接到片選CS2。
2、實驗箱上CS273 接到片選CS1。
3、實驗箱上244 的輸入IN0—IN1 接到實驗箱上撥碼開關的輸出k7 和k8。
4、實驗箱上273 的輸出O0—O1 到ISD1700 語音模塊上的REC 和PLAY。
7、程序流程
7.1數碼管顯示
7.2 LCD顯示
圖5 數碼管顯示程序流程圖
圖6 LCD液晶屏顯示程序流程圖
7.3最終程序流程圖
開始LCD初始化BUSY為0?Y數據輸出“檢測結果”REQ置位NNBUSY為1?YREQ復位N數據讀完?Y開始AD轉換延時讀入轉換數據讀入開關量開關量取反輸出至語音模塊所讀數據低八位賦給BX將BX中數據取高四位數碼管顯示將BX中數據取高四位LCD顯示將BX中數據取低四位數碼管顯示將BX中數據取低四位LCD顯示延時
8、實驗程序 8.1數碼管顯示
CON8279 EQU
0492H
;賦值偽指令給8279控制口地址賦予一個名字
DAT8279 EQU
0490H
;賦值偽指令給8279數據口地址賦予一個名字 CS0809 EQU
04D0H ;賦值偽指令給AD0809通道0控制口地址賦予一個名字
ASSUME CS:CODE
;將CS設置為存放CODE的段地址 CODE SEGMENT
PUBLIC
;PUBLIC,組合類型,邏輯段有相同的段名,集中為一個邏輯段裝入內存
ORG
100H
;利用ORG偽指令使程序的起始地址為01100H,CS=0100H,IP=0100H
START: JMP
START1
;JMP無條件轉移指令 START1: MOV DX,CS0809
;將CS0809放入DX寄存器中
MOV AX,34H
;任意給一個控制字,啟動AD轉換
OUT
DX,AX
;AD0809開始轉換
WAIT:
MOV CX,0010H
;延時,等待AD轉換結束 WAIT1: NOP
NOP
LOOP WAIT1
;CX不為0時轉移
MOV
DX,CS0809
IN
AX,DX
;讀入AD轉換結果到CS0809
AND
AX,0FFH
;保留AX寄存器數據的低八位,高八位清零
MOV
BX,AX
;將AX寄存器數據傳送到BX寄存器
NOP
;空操作
DISP:
MOV
DI,OFFSET SEGCOD;取SEGCOD的偏移地址放入變址寄存器DI
MOV
AX,08H
;8279控制字,左端入口,16個字符顯示
MOV
DX,CON8279
OUT
DX, AX
;輸出8279控制字到CON8279
MOV
AX, 90H ;8279控制字,寫顯示RAM 0000B內容,地址自加1
MOV
DX, CON8279
OUT
DX, AX
;輸出8279控制字到CON8279
MOV
PUSH
AND
MOV
SHR
ADD 據相加
MOV AL寄存器
MOV
OUT
NOP
NOP
MOV 器DI
POP
AND
ADD 數據相加
MOV 到AL寄存器
MOV
OUT DX, DAT8279 ;將DAT8279放入DX BX
;將BX寄存器的數據壓入堆棧,保護現場 BX,0F0H
;取BX寄存器數據的高四位
CL,4
;CL寄存器存放移位次數 BX,CL
;邏輯右移4位
DI,BX
;將DI中SEGCOD的偏移地址值與BX中數 AL,CS:[DI]
;將段地址為CS,偏移地址為DI的數據送到 AH,0
;AX寄存器的高八位置零
DX,AX
;將AX寄存器的數據輸出到DAT8279端口
DI,OFFSET SEGCOD;取SEGCOD的偏移地址放入變址寄存
BX
;出棧,恢復現場
BX,0FH
;取BX寄存器數據的低4位
DI,BX
;將DI中SEGCOD的偏移地址值與BX中
AL,CS:[DI]
;將段地址為CS,偏移地址為DI的數據送
AH,0
;將AH寄存器置零
DX,AX
;將AX寄存器的數據輸出到DAT8279端口
DELAY: MOV
CX, 2A00H
;延時
DELAY1: NOP
NOP
LOOP
DELAY1
;循環2A00H次
JMP
START1
;返回重新采集和轉換數據并顯示
SEGCOD DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
;空指令
;七段共陰數碼管顯示編碼,分別對應著0123456789ABCDEF CODE ENDS
;代碼段結束 END
START
;源程序結束
8.2 LCD顯示
;=;液晶顯示
;CS0接CS8255,DB0-DB7接PA0-PA7,BUSY接PC7,REQ接PC0
;CS0片選信號,地址04A0-04AF,偶地址有效
ASSUME
CS:CODE
;將CS設置為存放CODE的段地址 CODE SEGMENT
PUBLIC
;PUBLIC,組合類型,邏輯段有相同的段名,集中成為一個邏輯段裝入內存
ORG
100H
;ORG設置指令存儲起始地址;= START: MOV DX, 04A6H
;將控制端口地址放入DX
MOV AX, 88H
;88H為工作方式選擇控制字,A口方式0輸出,PC7~PC4輸入,B口方式0輸出,PC3~PC0輸出
OUT
DX, AX
MOV AX, 70H
OUT
DX, AX
;向控制端口發送工作方式選擇控制字
;70H為C口按位置位/復位控制字,PC0復位 ;向控制端口發送C口按位置位/復位控制字
MOV AL, 0F4H
;LCD顯示清屏
CALL COMD
;過程調用指令,調用過程COMD CALL DELAY
;過程調用指令,調用過程DELAY START1: MOV SI,OFFSET[TABLE] ;將TABLE的偏移地址送到SI寄存器
MOV CX, 4
;循環次數設定
WR1:
MOV DX, 04A4H
;WR1檢查BUSY信號是否為零,將C數據端口地址放入DX
IN
AX, DX
;讀入數據
AND
AX, 80H
;保留PC7的輸出數據,即busy
JNZ
WR1
;ZF零標志位,ZF非零轉移到WR1
MOV
AL, [SI]
;將地址在SI寄存器的數據送到AL
CALL
COMD
;調用過程COMD
INC
SI
;將TABLE的偏移地址緩沖區指針加1
LOOP
WR1
;CX寄存器的內容不為零,則循環WR1
CALL
DELAY
;調用過程DELAY OK:
JMP
START1
;無條件轉移到START1;= DELAY: MOV
CX,1000H
;將1000H送入CX寄存器 DLYB: LOOP
DLYB
RET
;過程返回指令,回到原來調用過程的地方;= COMD: MOV
DX, 04A0H
;將A數據端口地址放入DX
OUT
DX, AL
;將相應數據輸出
;將控制端口地址放入DX
MOV
DX, 04A6H
MOV
AX, 71H
;71H為C口按位置位/復位控制字,PC0置位
OUT
DX, AX
MON:
MOV
DX, 04A4H
;MON檢查BUSY信號是否為零,將C數據端口地址放入DX
IN
AX, DX
;讀入數據
;向控制端口發送C口按位置位/復位控制字
AND
AX, 80H
;保留PC7的輸出數據,即busy
JZ
MON
;ZF零標志位,ZF非零轉移到MON
MOV
DX, 04A6H
;將控制端口地址放入DX
MOV
AX, 70H
;70H為C口按位置位/復位控制字,PC0復位
OUT
DX ,AX
;向控制端口發送C口按位置位/復位控制字
RET
;過程返回指令,回到原來調用過程的地方;= TABLE: DB
0F9H,00D,00D,31H
;在此處輸入要顯示漢字的命令代碼 CODE ENDS
;代碼段結束 END
START
8.3 數碼管,LCD顯示,語音報警最終程序
CON8279 EQU
0492H
;賦值偽指令給8279控制口地址賦予一個名字 DAT8279 EQU
0490H
;賦值偽指令給8279數據口地址賦予一個名字 CS0809
EQU
04D0H
;賦值偽指令給AD0809通道0控制口地址賦予一個名字
ASSUME
CS:CODE
;將CS設置為存放CODE的段地址
CODE SEGMENT PUBLIC ;PUBLIC,組合類型,邏輯段有相同的段名,集中為一個邏輯段裝入內存
ORG
100H ;利用ORG偽指令使程序的起始地址為01100H,CS=0100H,IP=0100H START: MOV DX, 04A6H
;將控制端口地址放入DX
MOV AX, 88H
;88H為工作方式選擇控制字,A口方式0輸
;源程序結束
出,PC7~PC4輸入,B口方式0輸出,PC3~PC0輸出
OUT
DX, AX
;向控制端口發送工作方式選擇控制字
MOV AX, 70H
;70H為C口按位置位/復位控制字,PC0復位
OUT
DX, AX
;向控制端口發送C口按位置位/復位控制字 MOV AL, 0F4H
;LCD顯示清屏
CALL COMD
;過程調用指令,調用過程COMD
CALL DELAY
;過程調用指令,調用過程DELAY
MOV
CX, 25
;循環次數設定
MOV
SI,OFFSET JCJG ;將JCJG的偏移地址送到SI寄存器
JCJG1: MOV
DX, 04A4H
;JCJG1檢查BUSY信號是否為零,將C數據端口地址放入DX IN
AX, DX
;讀入數據
AND
AX, 80H
;保留PC7的輸出數據,即busy信號
JNZ
JCJG1
MOV
AL, [SI]
CALL
COMD
INC
SI
LOOP
JCJG1
CALL
DELAY
JMP
START1
START1: MOV
DX, CS0809 MOV
AX, 34H
OUT
DX, AX
WAIT:
MOV
CX, 0010H
WAIT1: NOP
NOP
LOOP
WAIT1
MOV
DX, CS0809
IN
AX, DX
AND
AX, 0FFH
MOV
BX, AX
NOP
;ZF零標志位,ZF非零轉移到JCJG1
;將地址在SI寄存器的數據送到AL ;調用過程COMD
;將JCJG的偏移地址緩沖區指針加1
;CX寄存器的內容不為零,則循環JCJG1 ;調用過程DELAY
;無條件轉移到START1
;將CS0809放入DX寄存器中
;任意給一個控制字
;AD0809開始轉換
;延時,等待AD轉換結束
;CX不為0時轉移
;讀入AD轉換結果到CS0809
保留AX寄存器數據的低八位,高八位清零
;將AX寄存器數據傳送到BX寄存器
;空操作
; yy:
MOV
DX,04C0H
;74LS244地址
IN
AL,DX
;讀輸入開關量
NOT
AL
;將AL內容取反
MOV
DX,04B0H
;74LS273地址
OUT
DX,AL
;輸出值語音模塊
DISP:
MOV
DI, OFFSET SEGCOD;取SEGCOD的偏移地址放入變址寄存器DI
MOV
MOV
OUT
MOV
地址自加1
MOV
OUT
MOV
PUSH 場
AND
MOV
SHR
ADD
中數據相加
MOV
據送到AL寄存器
AX, 08H
;8279控制字,左端入口,16個字符顯示 DX, CON8279
DX, AX
; 輸出8279控制字到CON8279 AX, 90H
;8279控制字,寫顯示RAM 0000B內容,DX, CON8279
DX, AX
;輸出8279控制字到CON8279 DX, DAT8279 ;將DAT8279放入DX BX
;將BX寄存器的數據壓入堆棧,保護現 BX,0F0H
;取BX寄存器數據的高四位 CL,4
;CL寄存器存放移位次數
BX,CL
;邏輯右移4位
DI,BX
;將DI中SEGCOD的偏移地址值與BXAL,CS:[DI]
;將段地址為CS,偏移地址為DI的數
MOV
AH,0
;AX寄存器的高八位置零
OUT
DX,AX
;將AX寄存器的數據輸出到DAT8279端口
NOP
NOP WR1:
MOV
DX, 04A4H
;WR1檢查BUSY信號是否為零,將C數據端口地址放入DX
IN
AX, DX
;讀入數據
AND
AX, 80H
;保留PC7的輸出數據,即busy
JNZ
WR1
;ZF零標志位,ZF非零轉移到WR1 MOV
AL, 0F9H
;顯示8X16ASCII字符命令
CALL
COMD
;調用過程COMD
;輸入列信息
MOV
AL, 0AH
CALL
COMD
;調用過程COMD
MOV
AL, 00H
;輸入行信息
MOV
SI,OFFSET SEGCOD2 ;取SEGCOD2的偏移地址放
CALL
COMD
;調用過程COMD 入變址寄存器SI
ADD
SI, BX
;將SI中SEGCOD2的偏移地址值與BX中數據相加
MOV
AL, [SI]
;將地址在SI寄存器的數據送到AL
CALL
COMD
;調用過程COMD
MOV
DX, DAT8279 ;將DAT8279放入DX寄存器中
MOV
DI,OFFSET SEGCOD;取SEGCOD的偏移地址放入變址寄存器DI
POP
BX
;出棧,恢復現場
AND
BX,0FH
;取BX寄存器數據的低4位
ADD
DI,BX
;將DI中SEGCOD的偏移地址值與BX中數據相加
MOV
AL,CS:[DI]
;將段地址為CS,偏移地址為DI的數據送到AL寄存器
MOV
AH,0
;將AH寄存器置零
OUT
DX,AX
;將AX寄存器的數據輸出到DAT8279端口
WR2:
MOV
DX, 04A4H
;WR2檢查BUSY信號是否為零,將C數據端口地址放入DX
IN
AX, DX
;讀入數據
AND
AX, 80H
;保留PC7的輸出數據,即busy
JNZ
WR2
;ZF零標志位,ZF非零轉移到WR2
MOV
AL, 0F9H ;顯示8X16ASCII字符命令
CALL
COMD
;調用過程COMD
MOV
AL, 0BH
;輸入列信息
CALL
COMD
;調用過程COMD
MOV
AL, 00H
;輸入行信息
CALL
COMD
;調用過程COMD
MOV
SI,OFFSET SEGCOD2;將SEGCOD2的偏移地址送到SI寄存器
ADD
SI, BX
;將SI中SEGCOD的偏移地址值與BX中數據相加
器
CALL
COMD
;調用過程COMD CALL
DELAY
;調用過程DELAY
DELAY0:
MOV
CX, 2A00H
;延時 DELAY1:
NOP;空指令
NOP
LOOP
DELAY1
;循環2A00H次
OK:
JMP
START1
;返回重新采集和轉換數據并顯示;= DELAY:
MOV
CX,1000H
;將1000H送入CX寄存器 DLYB:
LOOP
DLYB
RET
;過程返回指令,回到原來調用過程的地方
;= COMD:
MOV
DX, 04A0H ;將A數據端口地址放入DX
OUT
DX, AL
;將相應數據輸出
MOV
AL, [SI]
;將偏移地址為SI的數據送到AL寄存
MOV
DX, 04A6H
;將控制端口地址放入DX
MOV
AX, 71H
;71H為C口按位置位/復位控制字,PC0置位
OUT
DX, AX 制字
;向控制端口發送C口按位置位/復位控
MON:
MOV
DX, 04A4H
;MON檢查BUSY信號是否為零,將C數據端口地址放入DX
IN
AX, DX
;讀入數據
AND
AX, 80H
;保留PC7的輸出數據,即busy
JZ
MON
;ZF零標志位,ZF非零轉移到MON
MOV
DX, 04A6H
;將控制端口地址放入DX
MOV
AX, 70H
;70H為C口按位置位/復位控制字,PC0復 位
OUT
DX ,AX
;向控制端口發送C口按位置位/復位控制字
RET
;過程返回指令,回到原來調用過程的地方
;= SEGCOD
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;七段共陰數碼管顯示編碼,分別對應著0123456789ABCDEF
SEGCOD2 DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H ;0123456789ABCDEF的ASCII碼 JCJG
DB 0F0H,00D,00D,28D,76D,0F0H,01H,00H,18D,66D,0F0H,02H,00H,29D,65D,0F0H,03H,00H,25D,91D,0F9H,08H,00H,3AH;顯示“檢測結果:”
CODE ENDS
;代碼段結束 END
START
;源程序結束
9實驗現象及說明 9.1 運行數碼管顯示程序
實驗現象:
將打火機靠近氣體傳感器,數碼管會顯示相應AD轉換結果
當氣體濃度超過閾值時,LED燈會亮。
9.2 運行LCD顯示程序 實驗現象:
將打火機靠近氣體傳感器,液晶屏會顯示相應AD轉換結果
9.3 運行數碼管,LCD顯示,語音報警程序
實驗現象:
將打火機靠近氣體傳感器,數碼管,LCD會顯示相應AD轉換結果,當氣體濃度超過閾值時,LED燈會亮,語音報警模塊會報警。10實驗結論
在完成對已有程序的解讀,通過可燃氣體傳感器檢測氣體濃度,并在數碼管上顯示氣體濃度轉換為的電壓值后,我們改進了程序,使其在LCD液晶屏上顯示氣體濃度轉換為的電壓值,最后進一步改進,使氣體濃度轉換為的電壓值可以同時在數碼管和LCD液晶屏上顯示,最后我們加入了語音報警模塊,當檢測值超過閾值后,會有相應的報警。
11承擔的主要任務
在氣體傳感器模塊微機原理課程設計中,我主要進行小組內成員的分工,課程設計進度的調整。以及對氣體檢測模塊相關程序的解讀,對已有程序的修改和程序的調試。
12結論及設計心得與體會
通過對氣體傳感器模塊的相應功能的實現,我更深入的了解了微機原理課程的相關知識。通過親身實踐,對匯編語言有了更深入的理解。鞏固了上學期學習的微機原理基本知識,當然還認識到自己還有很多不足,比如對匯編語言的理解還比較淺顯,有些細節還沒有引起自己足夠的重視等。我還認識到在進行設計實驗時,程序的流程圖是十分重要的,在對整個程序的理解方面起著十分關鍵的作用。在分析程序時,先按照功能將程序分為幾個部分,再對每個部分分別在細節上分析是十分有效的方法。
總之,經過微機原理課程設計,我對匯編語言程序與相應硬件外設結合實現相應的功能這整個過程有了一定的了解,對于匯編語言知識的有了更深入的了解。
第五篇:微機原理課程設計
接口技術課程設計
一、設計內容
設計一個投票統計器,完成投票、計票統計和票數顯示等功能。
二、設計原理及方案
在8086最小工作模式下,連接一塊8255A芯片。在 8255A的C端口連接8個開關,開關按下表示支持,燈亮,開關不按便是反對,燈不亮,從8255A的C端口輸入投票結果,經8086運算統計出結果;在 8255A的A端口連接一塊7段LED數碼管,將輸出結果通過數碼管顯示出來。電路圖:
接口技術課程設計
程序代碼: A_PROT B_PROT C_PROT CT_PROT DATA DATA CODE
MOV DX,C_PROT IN AL,DX EQU EQU EQU EQU 200H 202H 204H 206H
;可通過計算獲得,連接的是IO1 SEGMENT ENDS SEGMENT MOV AX,DATA MOV DX,AX MOV AL,10001001B MOV DX,CT_PROT OUT DX,AL
;控制字寫入
;A端口輸出,C端口輸入 TAB1 DB 7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH ASSUME CS:CODE,DS:DATA
START: MOV DX,C_PROT MOV AL,0 OUT DX,AL
;C端口清零
AGAIN: TJ: XOR AH,AH
MOV CX,8 LOOP1: SAL AL,1
ADC AH,0
LOOP LOOP1
MOV AL,AH
PUSH BX
LEA BX,TAB1
XLAT
MOV DX,A_PROT
OUT DX,AL
PUSH CX
MOV CX,2801 WAIT1: LOOP WAIT1
POP CX
JMP AGAIN
MOV AH,4CH INT 21H CODE ENDS END START
接口技術課程設計
;統計1個數
;進位加CF,以統計出C端口中1的個數
;延時10ms
接口技術課程設計
三、運行結果
程序結果圖:
接口技術課程設計
四、設計總結與體會
為期一周的微機原理課程實踐終于結束了,回過頭來,感慨萬千。過了一個多月,書本上的好些知識已然忘卻,剛開始拿到課題時,看到一大堆傳說中的神器,霎時凌亂了,選來選去,從僅剩的課題中挑了“投票統計器”,上網搜索了一下,大體上把設計的方向搞清了,接下來,便是開始設計了。
畫模擬圖對于我們來說,還是比較困難的,特別是8086那一塊兒,大家參考網上的資料,反復討論,著實花了不少時間。接下來的畫圖連線就比較簡單了,為了節省時間,在做模擬圖的同時,其他兩個人便開始編寫程序了。將設計流程圖簡略寫下來,對照流程圖,分塊兒編寫程序,顯得很有條理,簡單輕松些。
就這樣,三次課之后,設計的圖和程序都好了,只剩下調試程序,查看模擬結果了。這是檢錯和糾錯的過程,輕松但也不輕松,因為那么多東西,如果看不仔細了,你就找不到錯誤,也就沒法兒解決問題了,費事費力還一無所獲,這是最傷腦筋的事情。還好,運氣不錯,只是程序出現了小小的問題,改好之后,得到了很滿意的結果。
最后的驗收,是對書本與實踐知識的融匯總結,本以為毫無問題的我們,沒想到被程序中的一個問題給秒殺了,大家四處找資料,和別的組的同學討論,反復演算了半天,終于會了。當然,就算是會了,我們也只是懂得了微機原理中的一點皮毛而已,學的扎實很重要,因為這樣才能把理論知識運用到實踐中去,不斷地提高自己。
五、參考文獻 1.周明德.微型計算機系統原理及應用.北京:清華大學出版社
2.張彌左,王兆月,邢立軍等.微型計算機接口技術.北京:機械工業出版社 3.戴梅萼,史嘉權.微型計算機技術及應用.北京:清華大學出版社 4.沈美明,溫冬嬋.IBM-PC匯編語言程序設計.北京:清華大學出版社