第一篇:微机原理课程设计——洗衣机控制系统
微机原理与接口技术课程设计
设计题目:设计者:专业 : 班级 : 学号 :
洗衣机控制系统设计
电气工程及其自动化 1
一
课程设计的意义
1.1 洗衣机的发展状况概述
1.洗衣机的发展史
洗衣服是每个家庭都无法逃避的家庭劳动。洗衣机的出现给人们的生活带来了相当大的方便,它的普及大大降低了大多数家庭的体力劳作。
1858年,美国人汉密尔顿·史密斯制成了第一台洗衣机。1874年,美国人比尔·布莱克斯发明了第一台人工搅动式洗衣机,使得“手洗时代”受到了挑战。1910年美国人研制出了第一台电动式洗衣机。1922年美国玛塔依格公司生产出了第一台搅拌式洗衣机。1932年美德克斯航空公司研制成功了第一台前装式滚筒式洗衣机,这台机衣机能够使洗涤、漂洗、脱水三个步骤在同一个滚中操作。与此同时,世界各地也相继出现了洗衣机。洗衣机工业快速迅猛地发展起来。
1937年第一台自动洗衣机问世。1955年日本研制出波轮式洗衣机。60年代日本出现了半自动洗衣机。70年代生产出了波轮式套桶全自动洗衣机。70年代后期以电脑控制的全自动洗衣机在日本问世。80年代“模糊控制”开始应用于洗衣机中,使得洗衣机能够通过模糊控制使洗衣机操作更加简单,实现智能化。近半个多世纪里,在工业发达国家,全自动洗衣机技术得到广范的应用,其年总产量及社会普及率均以达到相当高的水平。
2.我国洗衣机的发展现状
洗衣机在中国起步较晚,1978年才开始正式生产家用洗衣机。随着改革开放的不断深入,经济的持续增长,人民生活水平的普遍提高,人们对于洗衣机的认识也在不断发展,进入80年代后,中国洗衣机行业一直保持着旺盛的发展形势。目前,洗衣机在我国城市甚至广大农村已得到大范围的普及。中国洗衣机市场正处于快速更新换代阶段,市场潜力巨大,随着家用电器的自动化、智能化发展,人们对于洗衣机的期望也越来越高。1983年,中国洗衣机产量由1978年的400台增至365万台。此后全国各处都大规模的引进国外先进洗衣机技术。中国的洗衣机发展突飞猛进,先进技术的引进、吸收和创新,极大地促进了中国洗衣机的生产能力和产业质量。经过三十年的发展,我国的洗衣机年产量已位于世界第一,将近为世界总年产量的四分之一。
1.2课程设计的意义
课程设计进一步锻炼同学们在微机原理应用方面的实际工作能力。计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的问题。《微机原理与接口技术》课程是我们电气工程及其自动化专业本科生必修的一门技术基础课程。通过该课程的学习使学生对微机系统有一个全面的了解、掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法。
二
洗衣机控制系统的设计
2.1 设计内容
系统设计并建立一个由微机控制的洗衣机控制系统,并完成: 1.给水和排水的自动控制。2.用户定时时间的设定。3.电机的正反转。
4.各种定时和故障报警电路。5.定时开、关机的控制。6.三分钟延时启动的保护。
7.设计相应的A/D、D/A、键盘、显示接口和传感器测量水位电路,可在线键盘参数设置、定时检测、显示、报警,其中控制输出部分采用模拟量或开关量进行控制。
8,写出相应工作原理,编写程序及程序流程图。
希望实现的功能:智能检测
待洗衣物的智能检测是智能洗衣机能够实现智能的关键技术之一。智能检测利用了模糊控制原理,根据各类传感器提供的洗涤物状态和洗衣机运行参数进行模糊推理。通过各类传感器对布量、布质、温度、浊度的检测来确定洗涤过程中的洗涤水位,洗涤时间,漂洗次数,排水时间,脱水时间等等。三
总体设计方案
3.1 洗衣机系统原理与设计思想
图 1洗衣机示意图
洗衣机的系统(1).涤脱水系统
它主要有盛水桶,洗涤桶和波轮组成。盛水桶又称为外桶,主要用来盛放洗涤液。盛水桶固定在钢制底板上,通过4根吊杆悬挂在洗衣机箱体上。电动机,离合器,排水阀等部件都装在桶底下面。洗涤桶又称为脱水桶或者离心桶,也称为内桶,它的主要功能是用来盛放衣物,在洗涤或漂洗时配合波轮完成洗涤或漂洗功能,在脱水时便成为离心式的脱水桶。波轮是全自动洗衣机中对衣物产生机械作用的主要部件。按波轮的形状来分,基本上有小波轮(直径在160mm左右)的涡卷式水流和大波轮(直径在300mm左右)新水流两类。
(2).进水系统
波轮式全自动洗衣机的进排水系统都采用了电磁阀控制。为了对桶内的水位进行检测和控制,洗衣机上都安装有水位控制器(水位开关)。波轮式全自动套桶洗衣机使用最多的水位开关是空气压力式开关,主要有气压传感器装置,控制装置及电触点开关3部分组成,用来监视水位的高低。此外电磁阀分进水和排水电磁阀,进水电磁阀是洗衣机上的自动进水开关,它受水位开关动断触点的控制。而排水电磁阀是全自动洗衣机上的自动排水装置,同时还起改变离合器工作状态。进水、排水电磁阀是采用电流流过线圈形成磁场的原理,洗衣机电磁阀在进,排水时使用,220V交流电压与电磁阀线圈接通,形成磁场,电磁线圈吸合。自
动打开香蕉阀门,洗衣机里的水就顺着管道流出去了。断电后,电磁阀线圈失去电流,磁场消失,电磁铁松开,橡胶阀门自动关闭,洗衣机里的水就流不出去了。
(3).动机及传动系统
波轮式全自动套桶洗衣机的电动机及传动系统主要由电动机和离合器组成,离合器又有普通离合器和减速离合器两种。其中普通离合器用在采用小波轮的套桶洗衣机上,这种洗衣机在洗涤或者漂洗时波轮的转速和脱水时离心桶的转速相同,目前各种大波轮新水流套桶洗衣机普遍采用减速离合器,它在洗涤,漂洗时波轮的转速较慢,而脱水时离心桶的转速较快。电动机同时作为洗涤和脱水时的动力源,普遍采用主,副绕组完全对称的电容式电动机。
洗衣机的基本工作原理
洗衣机的洗涤原理是由模拟人工洗涤衣物发展而来的,即通过翻滚、摩擦、水的冲刷等机械作用以及洗涤剂的表面活化作用,将附着在衣物上的污垢除掉,以达到洗净衣物的目的。现今,大多数的全自动洗衣机都使用以单片机为核心的控制电路来控制电动机、数码显示管、进水阀、排水阀及蜂鸣器的电压输出,使洗衣机根据程序运转。而在设计全自动洗衣机的控制系统时,要把握好洗涤、漂洗和脱水的时间:
(1).洗涤时间
有人认为,洗涤时间越长,衣物就洗得越干净。其实不然,如果洗涤时间超过一定的限度,衣物不但不会随洗涤时间的延长而提高洗净度,反而会加速衣物的磨损,还会造成能源的浪费。实验证明,洗衣机(波轮式洗衣机)的最佳洗涤时间为5~10分钟,最长也不应超过15分钟。
(2).漂洗时间
在漂洗刚开始的3分钟时间内,残留在衣物上的表面活性剂脱落最快。此后,活性剂脱落趋缓,漂洗10分钟后活性剂几乎不再脱落。一般采用贮水方式漂洗,每次3分钟,漂洗2~3次就可以了。
(3).脱水时间
电动机高速地转动洗涤桶,水份就会由于离心力而脱离衣物被甩出去。脱水时间一般为2~3分钟,时间太短会造成脱水不够彻底,太长又可能会损坏衣物。
总体设计思想
首先构思系统的总体结构,根据设计要求确定好系统大致的硬件组成及其结构,其次根据系统的各个功能把软件分为几个不同的模块。依次实现各个模块的功能,最后把各个模块组合起来已完成整个系统的功能。3.2 洗衣过程流程图
3.3 设计流程图
弄清系统的需求根据系统的需求设计出相应的硬件电路在确定系统硬件结构的基础上,把软件划分为各个模块调试各个模块,并组成一个完整的系统
四
硬件设计
4.1 硬件设计概要
用Intel的8086作为控制芯片,配合其他接口电路及配套的芯片组成洗衣机的控制电路。主要用到8255串行通行芯片,74LS137三线八线译码器发出片选信号,AD0809以及DA0832模数、数模转换芯片。用一个电位计和AD0809模拟水量信号,DA0832和LM324运放最和来控制直流电机的正反转和停止。此外还用到了4*4扫描键盘作为输入设备,两个共阴数码管作为显示设备。详情见各个芯片的介绍。
4.2 所用到的芯片及其各自功能说明 4.2.1芯片列表
8086,8284,74LS138,8255,AD0809,DA0832,74LS02,LM324 4.2.2 8086的功能简介
Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久,Intel 8088就推出了,拥有一个外部的8位数据总线,允许便宜的芯片用途。它是以8080和8085(它与8080有组合语言上的原始码兼容性)的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus Interface Unit)透过6字节预存(prefecth)的队列(queue)喂指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为0~1048575,用十六进制表示为00000H~FFFFFH。
Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入(或32K 16 位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。
Intel 8086有四个 内存区段(segment)寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有
用),可以完全地控制分段,使在编程中使用指针(如C 编程语言)变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。
在这个系统中,8086作为整个系统的主控芯片,用来控制协调整个系统的工作。
4.2.3
8284的功能简介
向8086CPU提供外部的基准时钟信号,并把时钟信号进行功率放大。
4.2.3 74LS138的功能简介
74LS138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其工作原理如下:
当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电译出。
利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器,在该系统中,74LS138用来产生各芯片的片选信号。
4.2.4 8255的功能简介
8255特性
(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能
RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行
输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择
4.2.5 AD0809的功能简介
1、ADC0809 是8 位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。
2、AD0809 的工作原理
IN0-IN7:8 条模拟量输入通道
ADC0809 对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE 为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B 和C 为地址输入线,用于选通IN0-IN7 上的一路模拟量输入。通道选择表如下表所示。
C B A 选择的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3 0 0 IN4 0 1 IN5 1 0 IN6 1 1 IN7
数字量输出及控制线:11 条
ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0 为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。
4.2.6 DA0832芯片的功能简介
DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
DAC0832的主要特性参数如下:
分辨率为8位;
电流稳定时间1us;
可单缓冲、双缓冲或直接数字输入;
只需在满量程下调整其线性度;
单一电源供电(+5V~+15V);
低功耗,200mW。DAC0832结构:
D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:数据锁存允许控制信号输入线,高电平有效;
CS:片选信号输入线(选通数据锁存器),低电平有效;
WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;
WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。
IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;
IOUT2:电流输出端2,其值与IOUT1值之和为一常数;
Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:电源输入端,Vcc的范围为+5V~+15V;
VREF:基准电压输入线,VREF的范围为-10V~+10V;
AGND:模拟信号地
DGND:数字信号地 DAC0832的工作方式:
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。
4.2.7 LM324芯片功能简介
LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的引脚排列图
LM324的特点: 1.短跑保护输出 2.真差动输入级
3.可单电源工作:3V-32V 4.低偏置电流:最大100nA 5.每封装含四个运算放大器。6.具有内部补偿的功能。7.共模范围扩展到负电源 8.行业标准的引脚排列 9.输入端具有静电保护功能 4.3 硬件电路设计系统原理图及其说明
微机总线扩展键盘DB译码电路并行接口功放电路电机驱动电路排水闸驱动电路进水闸驱动电路AB门开关定时器A/D时钟电路水位传感器启动按钮及电路IRQiDBIRQjIRQk
图4.3-1系统总体框架。图4.3-2系统硬件电路
五
软件设计
5.1 流程图及其说明
正传washytpe秒并刷新数码管开始判断按下启动键FalseTure停转5秒秒并刷新数码管设置洗衣方式其他反转washtype秒秒并刷新数码管FalseWashtype=151从键盘读一个数据2Washtype=10停转5秒秒并刷新数码管修改显示参数更新剩余时间设置洗衣时间设置定时洗衣时间判断到达定时时间TureFalse判断到达洗衣时间TureTure排水并显示当前水量False进水打开并显示当前水量False判断水排干Ture判断水满甩干,电机加速正传2分钟漂洗若干次并甩干,流程同上故障 服务中断程序有故障标志吗?False结束,电机停转,三分钟开机保护14
说明:软件可以分为10大块,分别为主程序、键盘扫描子程序、参数设置子程序、延时子程序、显示子程序、进水子程序、排水子程序、甩干子程序、停止及开机延时保护子程序组成。其中,进水、洗衣、排水为一次洗衣的三个不同状态,由相应的子程序来控制电机的运动和进水排水。它们的关系如图5.1-2.主程序参数设置进水洗衣排水甩干停止及开机保护键盘扫描延时显示 图5.1-2
5.2 源程序及其说明
CODE SEGMENT
ASSUME
CS:CODE
WASHTIME DW
20H
WASHTYPE DW
08H
ONTIME DW
00H
TIME DW
0
ADPORT EQU
0010H
ORG
1000H
IOCONPT EQU
0FF2BH
IOAPT EQU
0FF28H
IOBPT EQU
0FF29H
IOCPT EQU
0FF2AH
ORG
10E0H
DAPORT EQU
0020H
ORG
10A0H
MAIN PROC
;键盘参数设置
MOV
AL,01H
CALL
CONVERS
CALL
DISP
;显示01,提示输入洗衣时间
CALL
KEY
MOV
DL,10
MUL
DL
MOV
WASHTIME,AX
CALL
KEY
CBW
ADD
WASHTIME,AX
K1: MOV
AL,02
;显示02;提示选择洗衣方式
CALL
CONVERS
CALL
DISP
CALL
KEY
CMP
AL,2
JA
K1
CMP
AL,1
JB
K1
CMP
AL,1
JE
RUOXI
CMP
AL,2
JE
QIANGXI
RUOXI: MOV
WASHTYPE,08H
JMP
NEXT
QIANGXI: MOV
WASHTYPE,0FH
NEXT: MOV
AL,03
;显示3,提示输入定时时间
CALL
CONVERS
CALL
DISP
CALL
KEY
MOV
DL,10
MUL
DL
MOV
ONTIME,AX
CALL
KEY
CBW
ADD
ONTIME,AX
MOV
CX,ONTIME
LOOP
K2
K2: CALL
DELAY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD
AX,WASHTIME
ADD
AX,WASHTIME
ADD
AX,WASHTIME
MOV
TIME,AX
CALL
STEP1
;洗衣
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STEP1
;漂洗
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STEP1
;漂洗
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STOP
;洗衣完成,三分钟启动保护
JMP
MAIN
MAIN ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;WASH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WASH PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,DAPORT
DACON1: MOV
AL,0FFH
OUT
DX,AL
MOV
CX,WASHTYPE
LOOP
W1
W1: CALL
DELAY
DACON2: MOV
AL,80H
OUT
DX,AL
MOV
CX,8H
LOOP
W2
W2: CALL
DELAY
DACON3:
MOV
AL,00H
OUT
DX,AL
MOV
CX,WASHTYPE
LOOP
W3
W3: CALL
DELAY
MOV
AL,80H
OUT
DX,AL
MOV
CX,8H
LOOP
W4
W4: CALL
DELAY
DEC
TIME
MOV
AX,TIME
CALL
CONVERS
CALL
DISP
POP
DX
POP
CX
POP
BX
POP
AX
RET
WASH ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STEP1;;;;;;;;;;;;;;;;;;;;;;;;
STEP1 PROC
;判断水位
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
ADCONTORL: CALL
FORMAT
ADCON: MOV
AX,00
MOV
DX,ADPORT
OUT
DX,AL
DELAYS: LOOP
DELAYS
MOV
DX,ADPORT
MOV
DX,ADPORT
IN
AL,DX
PUSH
AX
CALL
CONVERS
CALL
DISP
POP
AX
CMP
AL,0EEH
JAE
LA
CALL
JINSHU
LA: MOV
DX,IOCONPT;水满,关水
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
AND
AL,0FEH
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
STEP1 ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JINSHU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JINSHU
PROC
;控制进水
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,IOCONPT
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
OR
AL,01H
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
JMP
ADCON
JINSHU
ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XIANSHI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONVERS:
;字符转换
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
AH,AL
AND
AL,0FH
DISP:
DISP0:
DISP1:
MOV
BX,077AH MOV
DS:[BX],AL INC
BX MOV
AL,AH AND
AL,0F0H MOV
CL,04H SHR
AL,CL MOV
DS:[BX],AL POP
DX POP
CX POP
BX POP
AX RET
;显示 PUSH
AX PUSH
BX PUSH
CX PUSH
DX MOV
DX,077FH MOV
AH,20H MOV
CX,00FFH MOV
BX,DX MOV
BL,DS:[BX] MOV
BH,0H PUSH
DX MOV
DX,0FF22H MOV
AL,CS:[BX+1060H] OUT
DX,AL MOV
DX,0FF21H MOV
AL,AH OUT
DX,AL LOOP
DISP1 POP
DX
DEC
DX
SHR
AH,01H
JNZ
DISP0
MOV
DX,0FF22H
MOV
AL,0FFH
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
DATA1:
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0AH
DB
86H,8EH,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH
FORMAT:
;显示初始化
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
BX,0
MOV
WORD PTR DS:[BX+077AH],0000H
ADD
BX,2
MOV
WORD PTR DS:[BX+077AH],0009H
ADD
BX,2
MOV
WORD PTR DS:[BX+077AH],0008H
POP
DX
POP
CX
POP
BX
POP
AX
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STEP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STEP3 PROC
;判断水是否排干?
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX ADCON1TORL: CALL
FORMAT
ADCON1: MOV
AX,00
MOV
DX,ADPORT
OUT
DX,AL
MOV
CX,0500H
DB
DELAYSS: LOOP
DELAYSS
MOV
DX,ADPORT
IN
AL,DX
PUSH
AX
CALL
CONVERS
CALL
DISP
POP
AX
CMP
AL,08H
JBE
LAA
CALL
PAISHU
LAA: MOV
DX,IOCONPT;排干,停止排水
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
AND
AL,0FDH
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
STEP3 ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;PAISHU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PAISHU PROC
;控制进水
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,IOCONPT
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
OR
AL,02H
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
JMP
ADCON1
PAISHU ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;SHUAIGAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHUAIGAN PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,DAPORT
MOV
AL,0FFH
OUT
DX,AL
MOV
CX,80H
LOOP
SHUA1
SHUA1: CALL
DELAY
MOV
AL,80H
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
SHUAIGAN ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY:
POP
DX
POP
CX
POP
BX
POP
AX
MOV
CX,0FFFFH
DELAY1: LOOP
DELAY1
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STOP;;;;;;;;;;;;;;;;;;;;;;;;
STOP PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
CX,0FFFFH
LOOP
DE
DE: CALL
DELAY
POP
DX
POP
CX
POP
BX
POP
AX
RET
STOP ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;键盘扫描;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY: PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
AL,0FFH
MOV
DX,0FF22H
OUT
DX,AL
MOV
BL,00H
MOV
AH,0FEH
MOV
CX,08H
KEY1: MOV
AL,AH
MOV
DX,0FF21H
OUT
DX,AL
SHL
AL,01H
MOV
AH,AL
NOP
NOP
NOP
NOP
NOP
NOP
MOV
DX,0FF23H
IN
AL,DX
NOT
AL
NOP
NOP
AND
AL,0FH
JNZ
KEY2
INC
BL
LOOP
KEY1
JMP
KEY
KEY2: TEST
AL,01H
JE
KEY3
MOV
AL,00H
JMP
KEY6
KEY3: TEST
AL,02H
JE
KEY4
MOV
AL,08H
JMP
KEY6
KEY4: TEST
AL,04H
JE
KEY5
MOV
AL,10H
JMP
KEY6
KEY5: TEST
AL,08H
JE
KEY
MOV
AL,18H
KEY6: ADD
AL,BL
CMP
AL,10H
JNC
FKEY
MOV
BL,AL
MOV
BH,0H
MOV
AL,BYTE PTR DS:[BX+DATA2]
POP
DX
POP
CX
POP
BX
POP
AX
FKEY: RET
DATA2: DB
07H,04H,08H,05H,09H,06H,0AH,0BH
DB
01H,00H,02H,0FH,03H,0EH,0CH,0DH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CODE ENDS
END
MAIN 收获、体会
在这次微机的课程设计中进一步熟悉的汇编语言的编程方法,借助现代的网络技术,解决问题,不让问题遗留到下一天,极大地加快的进度,也让我们对汇编有了更深一层的认识,并且还让我们初步领略到计算机控制的魅力,可谓一举多得。
课程设计是我们从书本到实践非常关键的一步,当代大学生动手创新能力是社会所急需的,正因如此我们应该加强对自身动手实践能力的锻炼。当今社会计算机科学在应用上得到飞速发展,因此,学习知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。要着重学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的一切问题,最终到达胜利的彼岸。
课程设计中我们不仅培养了我们的实践能力,也培养了我们发现问题、分析问题、解决问题的能力。在学习设计过程中我查询了相关资料,也学习到了很多东西。感谢老师的谆谆教导和学校给我们提供了这么一次机会。
参考文献
微型计算机技术及应用,戴梅萼,清华大学出版社
第二篇:微机原理课程设计——交通灯控制系统
设计要求:
(1)利用8253定时,8259中断及8255输出实现交通灯模拟控制。
(2)实现能自动控制和手动控制。(3)实现能随时可以调整自动模式的绿灯和红灯时间
设计目的
电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。交通灯能保证行人过马路的安全,控制交通状况等优点受到人们的欢迎,在很多场合得到了广泛的应用。
交通灯是采用计算机通过编写汇编语言程序控制的。红灯停,绿灯行的交通规则。广泛用于十字路口,车站, 码头等公共场所,成为人们出行生活中不可少的必需品,由于
计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯, 交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。或者给红绿色盲声音警示的人性化设计。现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。
要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。因此,研究交通灯及扩大其应用,有着非常现实的意义。设计内容
交通灯控制系统
利用8253定时器、8255等接口,设计一电路,模拟十字路口交通灯控制。要求能实现自动控制和手动应急控制。
具体要求如下:
1)在一个十字路口的一条主干道和一条支干道分别装上一套红、绿、黄三种信号灯。
2)在一般情况下,主干道上的绿灯常亮,而支干道总是红灯。
3)当检测到支干道上来车时,主干道的绿灯转为黄灯,持续4S后,又变为 红灯,同时支干道由红灯变为绿灯。
4)支干道绿灯亮后,或者检测到主干道上来了三辆车,或者虽未来三辆车,但绿灯已经持续了25秒,则支干道立即变为黄灯,同时主干道由红灯变为绿灯。设计要求
在Proteus环境下,结合课程设计题目,设计硬件原理图,搭建硬件电路
软件设计
1、采用模块化程序结构设计软件,可将整个软件分成若干功能模块。
2、画出程序流程图。
3、根据流程图,编写源程序。
4、在Proteus环境下,仿真调试程序 设计原理与硬件电路
要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1(绿)、L2(黄)、L3(红)做为南北方向的指示灯,将L4(绿)、L5(黄)、L6(红)做为东西方向的指示灯。而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管的阳极通过保护电阻接到+5V的电
源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。在以上的叙述基础上,本实验添加了东西方向S2、南北方向S3紧急切换按钮各一个,当紧急按钮按下时,相应方向紧急切换为绿灯,以便特种车辆通行。另外,本实验以低电平触发中断申请,表示有特种车通过。
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是
R5、R6、R7,中断延时用的是R3、R4和新的R5。第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:
MOV A,#0F0H(0)MOVX @R1,A(1)MOV SAVE,A(2)
程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOV A,SAVE指令,由于主程序中没有执行(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将(1)、(2)两句顺序颠倒一下则没有问题。发生中断时确定方向的绿灯亮10秒,然后返回中断前的状态。
程序及硬件系统调试情况
程序运行结果: 东西路右拐和南北路左拐绿灯点亮5秒,直通到均为红灯 5秒后,黄灯亮3秒钟。此时南北方向仍维持红灯点亮。东西方向直通,为绿灯,南北 方向红灯 黄灯再亮三秒之后,东西路左拐和南北路右拐绿灯点亮 南北方向的黄灯亮3秒钟后,南北方向直通,延时5秒 闭合A口开关,四个路口全红灯,表明紧急状态。
设计总结与体会
经过这两周的课程设计, 做关于交通灯系统设计,我认真查阅资料,学习关于这方面的知识,比如说要了解8086芯片中各个引脚的功能,怎么样去使用8255这个可编程并行接口芯片,怎么样使用8253来定时及输出一定频率的脉冲以及交通有哪些规则.在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,特别是在初始化方面是我最大的困难,或许是我的汇编语言学得不够好,我只
能借助参考资料,查每一条指令的作用与功能,这样一来又巩固了我的对汇编语言的了解.而且在设计中,把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。
第三篇:微机原理课程设计
汇编程序设计题
题目一 密码设置模拟
该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。题目二 计算器
编辑程序可以实现键盘输入数据与运算符,进行“加减乘除”运算。(提示:先输入数据与运算符,保存,再按照运算符选择对应的子程序;输入的数据是用字符表示的,需要转换;要有良好的界面(提示信息))
题目三工作周期判断程序
输入年、月、日,能够判断当日的星期数,并进行输出。(以校历为依照,可设某日为起点,根据相差的天数与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汇编语言程序设计.北京:清华大学出版社