微机原理及其应用 微型计算机温度控制系统设计课程设计报告

合集下载

微型计算机控制技术课程设计

微型计算机控制技术课程设计

微型计算机温度控制系统设计1总体方案设计温度控制是工业生产中经常碰到的过程控制问题之一。

对温度准确的测量和有效的控制是一些设备优质高产、低耗和安全生产的重要指标。

当今计算机控制技术在这方面的应用,已使温度控制系统达到自动化、智能化,比过去单纯采用电子线路进行PID 调节的效果要好得多,可控性方面也有了很大提高[1]。

1.1设计要求该系统为基于数字PID 的电加热炉温度控制系统。

电加热炉用于合金钢产品热力特性实验,迪娜加热炉用电炉丝提供功率,使其在在预定时间内江路内温度稳定到给定的温度值。

在本控制对象加热炉功率为8KW ,有220V 交流电源供电,采用双向可控硅进行控制。

本设计针对一个温区进行温度控制,要求控制温度范围50-350℃,保温阶段温度控制精度为±1℃。

选择合适的传感器,计算机输出信号经转换后通过双向可控硅控制器控制加热电阻两端的电压。

其对象温控数学模型为1)(+=-s K s G T e d s d τ (1.1)其中:时间常数T d =350s 秒放大系数K d =50滞后时间τ=10秒 控制算法选用改进的PID 控制。

1.2方案设计要想达到设计要求的内容,少不了以下几种器件:单片机、温度传感器、LCD显示屏、直流电动机等。

其中单片机用做主控制器,控制其它器件的工作和处理数据;温度传感器用来检测环境中的实时温度,并将检测值送到单片机中惊醒数值比较;LCD 显示屏用来显示温度数字值;直流电动机用来表示电加热炉的工作情况,转动表示迪娜加热炉通电加热,停止转动表示电加热炉断电停止加热。

整体思路如下:首先我们通过按键设定所需要的温度,然后利用温度传感器检测电加热炉的实时加热温度,并传送至单片机与设定值进行比较。

若检测值小于设定值,则无任何动作,电加热炉继续导通加热;若检测值大于设定值,则单片机控制光电耦合器导通,继电器动作,电加热炉断电停止加热。

一旦炉温低于设定值,单片机又控制光电耦合器断开,继电器开关分离,电加热炉开始导通加热。

微机原理课程设计温度控制

微机原理课程设计温度控制

摘要:本设计采用直接数字控制(DDC )对加热炉进行控制,使其温度稳定在在某一个值上。

并且具有键盘输入温度给定值,LED 数码管显示温度值和温度达到极限时提醒操作人员注意的功能。

1 概述温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。

对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。

例如冶金、机械、食品、化工等各类工业生产中广泛使用的各种加热炉、热处理炉、反应炉等;燃料有煤气、天然气、油、电等;控制方案有直接数字控制(DDC ),推断控制,预测控制,模糊控制(Fuzzy ),专家控制(Expert Control),鲁棒控制(Robust Control ),推理控制等。

本设计的控制对象为一电加热炉,输入为加在电阻丝两断的电压,输出为电加热炉内的温度。

输入和输出的传递函数为:G (s)=2/(s(s+1))。

控温范围为100~500℃,所采用的控制方案为直接数字控制(DDC )中的最少拍控制。

2 温度控制系统的组成框图采用典型的反馈式温度控制系统,组成部分见下图。

其中数字控制器的功能由微型机算机实现。

3 控制系统结构图及总述图中由4~20mA 变送器,I/V ,A/D 转换器构成输入通道,用于采集炉内的温度信号。

其中,变送器选用XTR101,它将热电偶信号(温度信号)变为4~20mA 电流输出,再由高精密电流/电压变换器RCV420将4~20mA 电流信号变为0~5V 标准电压信号,以供A/D 转换用。

转换后的数字量与与炉温的给定值数字化后进行比较,即可得到实际炉温和给定炉温的偏差。

炉温的设定值由键盘输入。

由微型计算机构成的数字控制器按最小拍进行运算,计算出所需要的控制量。

数字控制器的输出经标度变换后送给8253,由8253定时计数器转变8086 CPU定时计数器SCR 触发回路SCR 主回路电 加 热 炉4~20mA 变送器I/V A/D 数字滤波为高低电平的不同持续时间,送至SCR触发电路,触发晶闸管并改变其导通角大小,从而控制电加热炉的加热电压,起到调温的作用。

《温度控制系统设计》报告

《温度控制系统设计》报告

计算机硬件技术课程设计实践报告学院:自动化工程学院班级: 2012153姓名:徐建红学号: 201026002015年1月21日一、设计题目温度控制系统的设计二、开发目的利用8086微处理器设计出符合下面要求的系统:1)采用温度传感器AD590采集温度数据,CPU 控制温度值稳定在预设温度。

2)当温度低于预设温度值时系统自动启动电加热器,温度高于预设温度值时断开电加热器,数码管上输出的数字就是对应于所测量的实际温度。

3)根据实际需要设置温度并进行重新控制调节,使温度达到设定值并保持稳定,最大值为76.8℃,温度大于76.8℃时,系统会报错并退出系统。

三、设计方案图 1-1 系统原理框图因为温度传感器在仿真中无法使用,故用一滑动变阻器代替。

四、硬件原理图本系统在8086微处理器为核心的基础上,在扩展8255A ,ADC0809,8279,AD590,LED数码管,继电器等器件,从而构成整个硬件系统。

8086CPU的编程结构及引脚8086 CPU包括两大部分:EU和BIUBIU不断地从存储器取指令送入IPQ,EU不断地从IPQ取出指令执行;EU和BIU 构成了一个简单的2工位流水线;指令预取队列IPQ是实现流水线操作的关键(类似于工厂流水线的传送带)。

AD7~AD0:三态,地址/数据复用线。

ALE有效时为地址的低8位。

地址信号有效时为输出,传送数据信号时为双向。

A19~A16:三态,输出。

高4位地址信号,与状态信号S6-S3分时复用。

A15~A8 :三态,输出。

输出8位地址信号。

WR:三态,输出。

写命令信号;RD:三态,输出。

读命令信号;IO/M:三态,输出。

指出当前访问的是存储器还是I/O接口。

高:I/O接口,低:内存DEN:三态,输出。

低电平时,表示DB上的数据有效;RESET:输入,为高时,CPU执行复位;ALE:三态,输出。

高:AB地址有效;DT/ R:三态,输出。

数据传送方向,高:CPU输出,低:CPU输入8255A8255A主要功能:含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存/缓冲能力。

微机原理课程设计报告(温度测控,动态五角星)

微机原理课程设计报告(温度测控,动态五角星)

计算机科学与技术学院微机原理课程设计报告书课题(一)温度测控系统课题(二)动态五角星班级______________________姓名 ____ __ _________ ___ ____ ___________指导教师日期 2010.1.18~ 2010.1.28目录一.温度测控系统(硬件设计) (3)1.设计内容 (3)2.设计原理及方案 (3)电路原理图 (3)3.程序流程图 (4)4.系统功能框图 (5)5.硬件连接示意图 (5)6.汇编源程序代码 (7)7.实施结果 (10)二、动态五角星(软件设计) (12)1 设计目的 (12)2 设计内容 (12)3 设计要求 (12)4 设计原理 (12)5 程序流程图 (13)6 程序代码 (13)7 程序及硬件系统调试情况 (16)三.设计总结与体会 (16)四、参考文献 (17)一.温度测控系统(硬件设计)1.设计内容利用ADC0809采用中断方式设计一个温度测控系统,在七段数码管上显示温度值,并根据测试的温度进行控制。

当检测温度到达温度上限60℃时启动直流电动机,而温度低于下限30℃时停止电动机。

数码管上的显示内容为:XX C (采用十进制显示)(温度值在数码管上显示)。

2.设计原理及方案电路原理图直流电机上图中ADC0809的INO输入端接温度传感的ANZ端,进行温度量的采集,CLOCK接1M;8255A中A、B口与数码管连接如上图,PC0接直流电机的DCIN,其中地址端口接200。

3.程序流程图上图实现了本次实验所要要求的功能:检测温度到达温度上限60℃时启动直流电动机,而温度低于下限30℃时停止直流电动机,并在数码管上显示所采集到的数字量和转换后的模拟量。

开始初始化8255A选0809通道0并启动A/D读A/D转换结果温度>60℃启动直流电机温度≤30℃停止直流电机延时数码管数值显示4.系统功能框图5.硬件连接示意图如下图所示,ADC0809的INO 输入端接温度传感的ANZ 端,CLOCK 接1M ,CS09接地址端口208,8255A 中地址端口接200,A 口接下图中的数码管的LA-LH ,B 口接数码管的Y 0-Y 5;PC 0接直流电机DCIN 。

温度控制系统方案报告

温度控制系统方案报告

方案报告实验名称温度控制系统课程名称微机与接口课程设计姓名:学号:日期:教师:一、实验要求在从机(实验装置)上进行温度/压力的采样、变换、控制、显示、传输等,在DOS环境下用x86汇编完成面向芯片的低层开发采样:系统实时采样温度和压力值,根据压力大小确定设定温度,对应 t= p/20 + 40(t为设定温度,p为压力值).如p=500克,则 t 为65度, 通过温度传感器采集实时温度。

控制:用加温和冷却使实时温度与设定温度拟合.显示:在PC机上显示相应操作和状况提示,在装置的段码显示器动态显示设定及实时温度。

通讯:接受来自主机的运行和退出命令进行相应操作,运行期间,不间断地向主机送出即刻的设定和实时温度。

在主机(PC系统机)上进行界面设计、图形输出、对从机的实时控制等,在WINDOWS环境下用高级语言完成编程.设定串行通讯的端口,帧格式,日期和时间等,有打开串行端口,运行,退出等按钮,后两个用于本身及对从机的运行控制,有定时接受从机全体数据的memo框和显示有效数据的edit框,将有效数据以曲线图形方式动态实时显示,主机和从机通过异步串行方式进行通讯串行通讯: RS232C标准,三线连接相同的帧格式波特率全双工方式主机发送命令:启动命令: 0DH(回车) 退出命令: 1BH (ESC键)从机发送数据数据表达为ASCII码,设定温度以‘A’为数据前缀,实时温度以‘B’为数据前缀每次采样后均向主机发送设定温度和实时温度如‘A45.6B37.8’表示当前设定温度为45.6度,实时温度为37.8度主机定时(如:1000MS)读取接收数据,并以这批数据的第一个‘AXX.XBXX.X’为有效的设定温度和实时温度值通信要注意的事项:随时监听,保证不丢失(处理上收用中断,发可以用中断或查询)保证通信数据正确:通信上增加差错控制,数据包提供握手信号主机设计要求:串行端口和帧格式的选择,所有接收数据的显示,如采用MEMO框,及从数据中截取的有效数据显示,如采用EDIT框应有打开端口,启动,退出三个基本命令按钮能将接收有效数据以曲线图形动态显示二、设计方案涉及的硬件芯片:8255并行接口:用于加温冷却控制,端口号:218-21BH8255管理显示键盘:用于装置上的设定温度实时温度的动态显示,端口号:210-212H8250UART(PC内):用于与主机的全双工串行通讯,端口号:3F8H-3FFH(COM1), 2F8H-2FFH(COM2)0809 A/D转换器:作为压力(IN0通道)和温度(IN1通道)的A/D采样输入,端口号:208H(压力),209H(温度) 从机流程和主机流程:。

微机控制原理课程设计报告

微机控制原理课程设计报告

微机控制原理课程设计报告一、课程目标知识目标:1. 让学生掌握微机控制原理的基本概念,包括微处理器、接口技术、中断处理等;2. 使学生了解微机控制系统的结构组成、工作原理及设计方法;3. 帮助学生理解并运用微机控制技术进行简单的控制系统设计。

技能目标:1. 培养学生运用微机控制原理解决实际问题的能力;2. 提高学生进行微机控制系统分析与设计的实际操作技能;3. 培养学生团队协作、沟通交流的能力,以适应实际工作中的项目开发需求。

情感态度价值观目标:1. 激发学生对微机控制技术的兴趣,培养其探索精神和创新意识;2. 培养学生严谨的科学态度和良好的工程伦理观念;3. 增强学生的国家意识,使其认识到微机控制技术在我国经济社会发展中的重要作用。

课程性质:本课程为专业选修课,旨在帮助学生掌握微机控制原理的基础知识,提高学生的实际操作能力和创新能力。

学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望。

教学要求:结合课本内容,注重理论与实践相结合,以项目为导向,培养学生解决实际问题的能力。

通过课程学习,使学生能够达到预定的知识、技能和情感态度价值观目标。

在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 微机控制系统概述:介绍微机控制系统的基本概念、发展历程、应用领域,使学生了解微机控制技术的背景及重要性。

教材章节:第一章2. 微处理器及其接口技术:讲解微处理器的结构、工作原理,以及常用的接口技术。

教材章节:第二章、第三章3. 中断处理与定时器/计数器:分析中断处理的过程,介绍定时器/计数器的工作原理及应用。

教材章节:第四章、第五章4. 微机控制系统设计方法:阐述微机控制系统的设计步骤、方法以及注意事项。

教材章节:第六章5. 微机控制系统实例分析:分析典型的微机控制系统案例,使学生了解实际应用中的设计方法和技巧。

教材章节:第七章6. 实践教学环节:组织学生进行微机控制系统的设计与实践,提高学生的实际操作能力。

微电脑温度控制课程设计

微电脑温度控制课程设计

微电脑温度控制课程设计一、课程目标知识目标:1. 学生能理解微电脑温度控制的基本原理,掌握温度传感器的工作机制及其在温度控制中的应用。

2. 学生能够描述微电脑温度控制系统中的关键部件,如微控制器、温度传感器、加热器和冷却器等,并阐述它们之间的相互关系。

3. 学生能够解释温度控制算法的基本概念,包括PID控制原理及其在温度控制中的应用。

技能目标:1. 学生能够设计并搭建简单的微电脑温度控制系统,运用编程实现温度的实时监控与调节。

2. 学生通过实践操作,掌握使用温度传感器收集数据,微控制器处理数据,以及执行器调节温度的技能。

3. 学生能够运用问题解决策略,分析并调试温度控制系统的故障,提高系统稳定性和精确性。

情感态度价值观目标:1. 学生培养对工程技术的兴趣和好奇心,激发对电子技术领域的探索热情。

2. 学生通过团队合作完成温度控制项目,增强沟通协调能力和集体荣誉感。

3. 学生在课程学习中能够认识到科技在生活和社会发展中的应用,培养科技创新和社会责任感。

二、教学内容本课程教学内容主要包括以下三个方面:1. 微电脑温度控制原理:- 温度传感器原理与种类(对应教材第3章)- 微控制器原理及应用(对应教材第4章)- 温度控制系统的基本组成与工作原理(对应教材第5章)2. 温度控制系统的设计与实现:- 温度传感器与微控制器的接口技术(对应教材第6章)- PID控制算法原理及其在温度控制中的应用(对应教材第7章)- 温度控制系统的编程与调试(对应教材第8章)3. 实践操作与问题解决:- 搭建简单的微电脑温度控制系统(对应教材第9章)- 温度控制系统的故障分析与调试(对应教材第10章)- 温度控制系统的优化与改进(对应教材第11章)教学内容安排和进度如下:第1-2周:学习温度传感器原理与种类,了解微控制器原理及应用;第3-4周:学习温度控制系统的基本组成与工作原理,探讨PID控制算法;第5-6周:掌握温度传感器与微控制器的接口技术,进行编程与调试;第7-8周:实践搭建微电脑温度控制系统,分析并解决故障;第9-10周:对温度控制系统进行优化与改进,总结课程学习成果。

微机原理与应用温度显示课程设计报告

微机原理与应用温度显示课程设计报告

1 设计思路1.1设计原理本次课程设计的容为模拟热水器温度控制系统设计与实现。

利用AD0809芯片将模拟量的温度转换为数字量,然后将AD采样到的结果进行制式的转换并将结果显示在数码管上。

采样的结果与设定的温度限值进行比较,若超温了则让超温指示灯亮。

根据需要,需选择的芯片有AD0809 A/D变换芯片,8255可编程并行接口。

通过应用模数转换器ADC0809将从模拟电阻上采集的数据通过端口IN0输入,在A/D 的转换下,获得8位二进制的数字量(D7—D0),然后输入到8088系统总线上,进而输入到可编程并行接口8255上,选择工作方式0方式,把数据输入到七段数码管上,然后显示出数字信息。

同时应用比较程序,设定温度值。

如果在小于30值时则使8255C输出00FH值信号让显示灯始终,显示绿色,表示温度过低。

如果温度超过100值则使8255C口输出0F0H值信号让显示灯提示,显示红色灯,表示温度过高。

如果温度在30至100以则使8255C口无输出信号让显示灯熄灭,表示温度在正常围。

1.2 设计环境及设备PC机一台、windows 98系统、实验箱,导线若干。

8255并口:用做接口芯片,与数码管相连。

ADC0809:用于将模拟量转化为数字量。

数码管:三个LED用于分别显示百十个位的温度值。

LED:用作警报灯,大体表示是否当前值在安全围。

1.3 设计框图2 设计流程图2.1 主程序流程图2.2 主要程序流程图3 设计所用芯片3.1 8086简介由于此系统最终要在唐都科教仪器出品的32位微机教学实验系统TD-PITE/PITC上进行实验,故设计硬件配置时采用Intel8086,整个实验的硬件配置都以此为原则进行设计选用。

Intel8086是16位的微处理器(理论学习中为8088,其部总线为16位,外部总线为8位,故称为准16位微处理器),它采用HMOS工艺40条引脚封装。

8086工作时使用5V电源,时钟频率5MHz(8086-1为10MHz,8086-2为8MHz)它有20根地址线,故可寻址的存空间为1MB。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《微机原理及其应用》课程设计报告2011年3月2日一、课程设计题目及系统功能介绍微型计算机温度控制系统设计,假设工业现场温度范围为0~75℃,温度值经传感器检测后,经变送器变成0~5V范围内的电压信号。

电压信号送A/D转换器ADC0809转换成对应的数字量。

数字量经数字滤波后送入CPU作为本次采样值。

在LED数码显示器上显示温度值(采用十进制显示),并对温度进行测试和控制,当检测温度到达温度上限60℃时红灯亮,蜂鸣器报警,低于下限30℃时黄灯亮,蜂鸣器报警,以达到监控温度的目的。

本设计采用程序控制方式。

系统功能:每隔0.1秒钟对现场温度连续采集三次取平均值作为本次采样的有效值;判断温度是否高于上限值60℃或低于下限值30℃,如超出该范围则分别用红、黄发光二极管和报警;把采集来的电压值转化成温度值在LED显示器上显示;若键盘输入“R”则返回DOS,结束程序。

二、硬件设计系统的硬件工作原理: CPU通过8255查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED 灯和蜂鸣器的过程,循环以上。

系统框图如下:地址分配: 8255 288h8253 280hADC0809 298h-29fhDAC0832 290h重要芯片功能介绍:1、可编程并行接口8255采取工作方式0,输入控制字88h,即A口输出,C口高四位输入,C口低四位输出PA0—PA6对应接七段数码管a b c d e f g接口,PC0 PC1对应七段数码管的位码接口PC2 PC3对应黄红LED灯,PC4接8253计数器2的OUT2端口2、可编程定时器/计数器(8253)分别对8253的计数器1和计数器2初始化采用方式3和方式0,使计数器2产生每隔0 .1秒的高电平3、ADC0809模/数转换器如图虚线接线即可3、DAC0832数/模转换器DAC0832是用于蜂鸣器报警的三、软件设计先对硬件8255 8253进行初始化且用ADC0809第一次采样,通过8255的PC4端口查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED灯和蜂鸣器的过程,最后若有键按下则返回DOS,否则返回继续查询PC4端口、循环。

主程序流程图:七段数码管流程图红黄灯及蜂鸣器程序如下:mov cl,[shuju]cmp cl,60 ;采样得来的数据与30和60进行比较,不在它们之间的红黄灯、蜂鸣器报警jnc licmp cl,30jc xiongjmp exitli: or al,08hcall beepjmp exitxiong: or al,04hcall beepexit: mov dx,io8255a ;通过8255C端口输出到LED灯out dx,al采样子程序mov bx,0mov cx,3xun: mov dx,io0809out dx,alpush cxmov cx,0FFH ;延时delay1: loop delay1pop cxin al,dxmov ah,0mov dl,5 ;将采样数据转化为0-75之间的温度值mul dlmov dl,17div dlmov ah,0add bx,ax ;循环三次取样loop xunmov ax,bxmov cl,3div cl ;取三次数据后平均值mov [shuju],almov ah,0mov cl,10div clmov di,offset buffer1 ;将采样三次得出的均值的个位与十位分别存在buffer与buffer+1中mov [di],ahmov [di+1],al四、讨论和感想首先感受最深的的是汇编的基础一定要扎实,否则很容易出现低级错误,比如说一些死循环之类的东西。

我们这组最开始的时候连硬件检测都没做就直接执行程序,当然做不出什么来的。

后来又入入续续发现了一些低级错误,不过都一步步改正了。

还有就是主程序一定要简洁易读,最好事先画好流程图。

硬件不要频繁初始化,最好是在程序开头就全部初始化完毕,像8255 8253一类。

为保证程序易读、便于添加和修改,必要的注释是很好的,子程序中最好开头和结尾对子程序中用到的寄存器都进行入出栈操作,这能有效的防止一些低级错误。

以上是我碰到的问题及其解决方法、心得体会。

五、源程序的清单:data segmentioport equ 0c400h-0280hio8255a equ ioport+28ah ;8255C口地址io8255b equ ioport+28bh ;8255控制寄存器地址io8255c equ ioport+288h ;8255A口地址io0832a equ ioport+290hio8253a equ ioport+283h ;8253工作方式控制寄存器地址io8253b equ ioport+281h ;计数器1io8253c equ ioport+282h ;计数器2io0809 equ ioport+298h ;蜂鸣器led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 0,0 ;存放要显示的十位和个位bz dw ? ;位码data1 db 80h,0,0,0,0,0,0,0db 0ffh,0,0,0,0,0,0,0db 80h,0,0,0,0,0,0,0db 00h,0,0,0,0,0,0,0 ;红灯正弦波数据data2 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhdb 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb 80h,66h,4eh,38h,25h,15h,09h,04hdb 00h,04h,09h,15h,25h,38h,4eh,66h ;黄灯正弦波数据shuju db 0 ;存放采样三次后的均值data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出 C高4位输入低四位输出mov al,88hout dx,almov al,70h ;设8253通道1工作方式0mov dx,io8253aout dx,almov ax,100 ;写入计数器初值2000mov dx,io8253bout dx,almov al,ahout dx,almov al,0b6h ;设8253通道2工作方式3mov dx,io8253aout dx,almov ax,1000 ;写入计数器初值500mov dx,io8253cout dx,almov al,ahout dx,alcall adcypanduan: mov dx,io8255a ;从8255的c口输入in al,dxand al,10hjz xianshi ;Pc4不为1跳到显示call delaycall adcyxianshi: call qiduanpush ax ;LED灯与蜂鸣器程序段push cxpush dxmov cl,[shuju] cmp cl,60jnc licmp cl,30jc xiongjmp exitli: or al,08hcall beepjmp exit xiong: or al,04hcall beep exit: mov dx,io8255a out dx,alpop dxpop cxpop axmov dx,0ffh mov ah,06int 21hje panduan ;有按键退出否则循环mov ah,4ch ;返回int 21hqiduan proc near ;七段数码管子程序push dipush sipush bxpush cxpush dxmov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02lll: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255a的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255a ;位选变化out dx,almov cx,3000delay2: loop delay2 ;延时mov bh,byte ptr bzshr bh,1jnz lllpop dxpop cxpop bxpop sipop diret ;子程序返回qiduan endpadcy proc near ;AD采样子程序push axpush bxpush cxpush dxpush dimov bx,0mov cx,3xun: mov dx,io0809out dx,alpush cxmov cx,0FFH ;延时delay1: loop delay1pop cxin al,dxmov ah,0mov dl,5mul dlmov dl,17div dlmov ah,0add bx,ax ;循环三次取样loop xunmov ax,bxmov cl,3div cl ;取三次数据后平均值mov [shuju],almov ah,0mov cl,10div clmov di,offset buffer1mov [di],ahmov [di+1],alpop dipop dxpop cxpop bxpop axretadcy endpdelay proc nearpush ax ;8253初始化push dxmov al,70h ;设8253通道0工作方式0mov dx,io8253aout dx,almov ax,500 ;写入计数器初值500mov dx,io8253bout dx,almov al,ahout dx,alpop dxpop axret ;子程序返回delay endpbeep proc near ;蜂鸣器子程序push cxpush dxpush simov cx,60 ;取60次32个正弦波数据dd: mov si,0ooo: mov al,data1[si] ;取正弦波数据mov dx,io0832aout dx,al ;放音push cxmov cx,6000delay6: loop delay6 ;软件延时pop cxinc sicmp si,32 ;是否取完32个数据jl ooo ;若没有,则继续loop dd ;总循环次数60是否完,没有,则继续pop sipop dxpop cxret ;子程序返回beep endpcode endsend start(注:文档可能无法思考全面,请浏览后下载,供参考。

相关文档
最新文档