第一篇:微机原理及应用 电子琴课程设计
科技学院 微机原理及应用 课 程 设 计
设计名称: 设计模拟电子琴 模拟 指导老师: 指导老师:-----设计者姓名:-----专业班级:自动化 学 号:----------设计时间: 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汇编语言程序设计.北京:清华大学出版社