《微控制器应用系统综合设计》课程设计多路压力参数实时采集与处理系统的设计模板Word文档格式.docx
《《微控制器应用系统综合设计》课程设计多路压力参数实时采集与处理系统的设计模板Word文档格式.docx》由会员分享,可在线阅读,更多相关《《微控制器应用系统综合设计》课程设计多路压力参数实时采集与处理系统的设计模板Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
本次选做的课程设计题目为《多路压力参数实时采集与处理系统设计》,设计要求如下:
显示器上可以设计两个窗口,用来显示两个不同通道的压力值,同时在不同窗口上显示出相应通道号的提示信息。
由此,设计中需要设计一个主程序和一至二个中断服务程序,即时钟中断服务程序或转换结束中断服务程序。
设计相应的A/D、键盘和压力检测、处理与显示电路,可在线键盘参数设置、定时检测、显示和报警。
共有两种设计方案可选,
a.多路ADC0809采样,LCD显示,喇叭报警。
b.多路ADC0809采样,LED显示,喇叭报警或灯光报警
2.2课程设计的要求
课程设计的基本要求如下:
1.掌握单片微控制器硬件结构和工作原理、中断与定时系统、嵌入式应用、现场总线等基本概念和原理;
2.熟悉8/16位单片微控制器的主要功能单元和指令系统;
3.熟悉测控网络中嵌入式微控制器的应用和现场总线应用技术。
4.利用微控制器的接口技术进行简单的测控及自动化应用系统设计;
5.每人提交系统设计报告一份,现场演示验收设计系统。
第三章硬件设计
3.1设计思想
硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入输入设备、输出接口电路和输出设备等组成。
单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。
本设计选用以AT89S51单片机为主控单元。
显示部分:
采用7段LED动态显示。
按键部分,采用8279扩展键盘。
数据采集部分,采用ADC0809芯片。
多路压力参数实时采集与处理的系统设计采用双通道,将压力参数的模拟参数采集进来,再经A/D芯片转换成数字信号,再将信号经过处理后在LED上显示。
双通道采集数据,对通道0每隔1s采样一次,共采集20次;
功能模块,当EXEC键按下后,开始定时器T0与T1的初始化,等待中断。
压力参数采集部分,设计了两个A/D采样子程序,分别为通道0和通道1的采样,通过键盘设置报警值,并判断当前采样值是否超过报警值,超过则报警;
未超过则采样继续,程序继续往下执行,将采样值分别在8279键盘上的LED上显示,前三个数码管显示0通道以及该通道的采样值,采样值经A/D转换后以16进制的电压值显示,之后三个数码管则显示1通道的采样值,同样也是A/D转换后的16进制电压值形式显示,最后两个数码管则显示当前的报警值。
图3.1系统硬件结构框图
3.2硬件电路设计系统原理图及其说明
图3.2多路压力参数实时采集与处理系统硬件原理图
3.2.1CUP主控单元电路
AT89C51片内配置有4KBFlash闪速程序存储器,可经受1000次以上的写入/擦出周期,并有程序存储器加密逻辑,给单片机产品的开发和生产带来了极大地方便89C51单片机有两种封装形式,40引脚双列直插(PDIP)封装形式和44引脚的方形(PLCC)封装方式。
89C51采用地址总线(AB)、数据总线(DB)、和控制总线(CB)三种总线结构。
并集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O口等基本功能部件。
图3.3CPU主控单元硬件原理图
3.2.28279扩展键盘电路
图3.48279扩展键盘硬件接线图
如图3.4所示为8279键盘显示接口的硬件连线图,利用8279可以实现对键盘/显示器的自动扫描,以减轻对CPU负担,具有显示稳定,程序简单,不会出现误动作等特点。
在外接键盘的键盘功能板上,按下相应的数字键或是功能键,数码管上显示相应数据。
具体接线方式如下:
1.将KEY区D0-D7用8芯排线连到BUS2区XD0-XD7上。
2.将KEY区WR、RD、ALE分别连到BUS3区的XWR、XRD、ALE上。
3.KEY区A0连到BUS1区得XA0上。
4.KEY区RST连到AT89C51的RST上。
5.KEY区CS连到BUS3的Y3上。
3.2.3ADC0809数据采集与处理电路
该部分电路主要完成双通道数据的采集和转换功能,CLOCK端外接分频输出T4,参考电压为5V,74LS02的2、6接Y1,3接XWR,5接XRD,数据采集通道0输入接IN0端口,数据采集通道1输入接IN1端口。
图3.5A/D0809数据采集原理图
3.3所用到的芯片及其各自功能说明
3.3.1芯片列表
1.AT89C51芯片
2.ADC0809芯片
3.8279芯片
4.74LS138芯片
5.74LS393芯片
6.74LS02芯片
3.3.2AT89C51的功能简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3.6所示。
图3.6AT89C51芯片管脚图
1.主要特性
·
与MCS-51兼容
·
4K字节可编程FLASH存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24MHz
三级程序存储器锁定
128×
8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
2.管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.3.3ADC0809的功能简介
ADC0809是采用逐次逼近法的8位A/D转换芯片,28引脚双列直插式封装,片内除A/D转换部分外还有8路模拟开关部件。
最多允许8路模拟量分时输入,共用一个A/D转换器。
图3.7ADC0809内部逻辑结构与引脚图
1.主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
3.ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。
首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
3.3.48279的功能简介
8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279内部有键盘FIFO/传感器,双重功能的8x8=64BRAM,键盘控制部分可控制8x8=64个按键或8x8阵列方式的传感器。
该芯片能自动消抖并具有双键锁定保护功能。
显示RAM容量为16x8,即显示器最大配置可达16位LED数码显示。
图3.88279芯片引脚
1.管脚、引线与功能
8279采用40引脚封装,其管脚、引线功能如图3.8所示。
其引脚功能如下:
D0~D7(数据总线):
双向、三态总线,和系统数据总线相连;
用于CPU和8279间的数据/命令传递。
CLK(系统时钟):
输入线,为8279提供内部时钟的输入端。
RESET(复位):
输入线,当RESET=1时,8279复位,其复位状态为:
16个字符显示;
编码扫描键盘--双键锁定;
程序时钟编码为31。
CS(片选):
输入线,当CS=0时8279被选中,允许CPU对其读、写,否则被禁止。
A0(数据选择):
输入线。
当A0=1时CPU写入数据为命令字,读出数据为状态字;
A0=0时CPU读、写的字节均为数据。
RD、WR(读、写信号):
低电平有效,来自CPU的控制信号,控制8279的读、写操作。
IRQ(中断请求):
输出线。
高电平有效。
在键盘工作方式中,当FIFO/传感器RAM存有数据时,IRQ为高电平。
CPU每次从RAM中读出数据时,IRQ变为低电平。
若RAM中仍有数据,则IRQ再次恢复高电平。
在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平。
SL0~SL3(扫描线):
用来扫描键盘和显示器。
它们可以编程设定为编码(4中取1)或译码输出(16取1)。
RL0~RL7(回复线):
它们是键盘矩阵或传感矩阵的列(或行)信号输入线。
SHIFT(移位信号):
输入线、高电平有效。
该输入信号是键盘数据的最高位(D7),通常用来扩充键开关的功能,作为控制功能键用。
在选通输入方式时,该信号的上升沿可将来自RL0~RL7的数据存入FIFORAM中。
在传感器输入下,该信号无效。
OUTA0~OUTA3(A组显示信号):
OUTB0~OUTB3(B组显示信号):
这两组引线都是显示数据输出线,与多位数字显示的扫描线SL0~SL3同步,两组可以独立使用,也可以合并使用。
BD(显示消隐):
低电平有效。
该信号在数字切换显示或使用消隐命令时,将显示消隐。
3.3.574LS138的功能简介
74LS138
为3线-8线译码器,共有54/74S138和54/74LS138
两种线路结构型式,其工作原理如下:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
利用G1、/(G2A)和/(G2B)可级联扩展成24线译码器;
若外接一个反相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器,用与非门组成的3线-8线译码器74LS138。
管脚如图3.9所示。
图3.974LS138芯片引脚
3.3.674LS393的功能简介
1.特点:
独立时钟的双4位二进制计数器
每个计数器都有直接清除
有效提高系统密度
缓冲输出减小集电极转换的可能性
2.说明:
这种双单片电路有八个主从触发器和附加门,以构成两个独立的4位二进制计数器,可以构成N位二进制计数器。
每个计数器又有一个清除输入和一个时钟输入。
由于每个计数级都有并行输出,所以系统定时信号可以获得输入计数频率的任何因子。
图3.1074LS194管脚图
第四章软件设计
4.1汇编语言设计特点
单片机能执行的程序,可以用多种语言来编写,单从语言结构及其与单片机的关系来看,可分为三大类型:
机器语言,汇编语言和高级语言。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言,本系统采用汇编语言来编写程序,汇编语言具有直观、易懂、易用且易于记忆等优点。
用汇编语言编写的程序占用内存少,执行速度快,尤其适用于实时应用场合的程序设计。
因此,在单片机应用系统中主要应用汇编语言来编写程序。
4.2总体设计流程图
图4.1多路压力参数采集系统主程序流程图图4.2定时中断服务程序流程图
4.3流程图及其说明
键盘管理子程序模块,在程序运行过程中,可通过键盘在线设置报警值,并将其显示在LED数码管上。
在采样程序运行过程中可以通过LAST键来设置报警值,程序运行时按下LAST键可以进入报警值的设置,当输入两位16进制的报警值后系统自动保存新的报警值,使得程序下次运行到报警子程序时将采样值与设置的报警值比较来判断是否报警。
双通道采样子程序,两个通道分别采用不同的采样方式,并在不同区域显示采样值,采样将模拟量转换成数字量并显示。
进入中断服务程序时,判断秒计数器是否达到20和秒计数器是否等于2来决定是否调用采样子程序。
双通道的采样子程序流程图分别如图4.4和图4.5所示。
报警子程序部分采用LED灯光报警,当采样值与报警值是比较后高于报警值时便会产生报警,LED灯闪烁报警,当采样值低于报警值时LED灯熄灭,不报警。
报警子程序流程图如图4.6所示。
第五章系统调试及使用说明
5.1系统调试
调试过程中主要遇到的是软件方面的问题,硬件方面的问题较少,仅有一次我所用的设备有个LED灯显示出了问题,换了一个新的后便可以了。
软件方面,刚开始着手设计该系统时,在LED的显示程序花了点时间,首先通过A/D0809将采集的数据存储在寄存器中,接着便是要把采集到的数据显示在8279扩展键盘上指定的LED数码管上,8279扩展键盘共有8个数码管,一开始采集的数据总是不能实时的显示在数码管上,最后分析改正程序,调试了5、6次终于能在指定的数码管上实时的显示采集进来的数据。
单通道的采样显示设计成功了,双通道也就很容易的出来了。
接下来设计键盘功能设置模块是设计整个系统过程中花的时间最长的。
首先,在采样过程中可以随时进行键盘的设置,主要设置报警值,并且设置报警之后,以新的报警值为标准,系统自动判断是否超过报警值从而决定是否报警。
为了满足要求我一一调试程序,一步一步满足,记得当时我的程序能够设置报警值并在相应LED数码管上显示,但是系统不能以新设置的报警值报警,于是再改程序,改正后调试发现设置功能不起作用,系统在采样过程中不响应键盘设置子程序,如此反复改了好多次,最后一个礼拜的设计终于是调试成功,最后要做的就是将报警子程序加进去就行了,这部分是比较简单的,调试了一两次就成功了。
最后运行程序时,没有错误,各部分功能都能很好的实现。
5.2使用说明
按照系统硬件原理图3.2接线,接通电源,此时8279扩展键盘上8个数码管从左至右分别显示:
000100,第7和第8个数码管初始不显示。
左边3个数码管为0通道显示,第1个0表示通道0,第2和第3个0表示0通道的初始值为零,第4个数码管到第6个数码管为1通道显示,1表示1通道,00为初始值。
按下8279扩展键盘上的EXEC功能键,系统便开始运行,此时可以看到第2和第3个数码管上显示0通道的采样值,第5和第6个数码管上显示1通道的采样值。
运行时可以随时按下LAST功能键来设置新报警值,设置过程中会在第7和第8个数码管上显示当前设