版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、合肥学院计算机科学与技术系微机原理与接口技术课程设计20092010学年第一学期课程设计科目基于AD的流量控制器的设计学生姓名沈宏亮学号0704011018班级 07计本(1)班指导教师 高玲玲2010年1月一、题义分析与解决方案1. 题义需求分析用STAR ES598PCI 单板机开发机设计一个模拟探流器。用电压信号模拟流量信号,采用A/D转换的对模拟点信号进行数字量转换,转换结果通过LED显示,并和预设的阀值相比较,当流量达到预设阀值1后,探测器发出低频率声音报警,当流量达到预设阀值2后,探测流发出高频声音报警。根据题目要求进行以下几点分析:1) 输入的电压值是模拟信号,而检测的值只能为数
2、字信号。因此对05V的模拟电压信号进行检测前,要利用A/D转换器(ADC0809)将模拟量转换为数字量。2) 选用8255A作为微处理器的输入输出接口芯片,最后将3位数字信号量显示到LED显示器上。3) 因为要对信号进行阀值检测,因此自行设定阀值大小:通过开关来设置阈值。4) 当流量达到预设阀值1后,探测器发出低频率声音报警,当流量达到预设阀值2后,探测流发出高频声音报警。声音可用蜂鸣器。2. 解决问题方法及思路1)硬件部分ADC0809模数转换器一片(用于将采集的模拟信号转换成数字信号)可编程并行接口芯片8255一片蜂鸣器一个(用于报警声音提示)七段LED显示器(用于显示电压值以及阀值)80
3、86通过8255同ADC0809相连,由电位器将模拟量送入ADC0809,并由8255采用查询工作方式控制ADC0809工作。8086通过8255向报警系统蜂鸣器以及七段LED显示器发送控制信号。2)软件部分首先对8255进行初始化设置,设置8255的工作方式和端口地址,然后启动ADC0809的程序进行模/数转换,通过ADC0809信道0将输入的05V的模拟电压信号转换成数字信号并将其保存在AH寄存器中,比较AH的值与事先定义的阈值进行比较,若小于则继续采集信号并通过七段LED显示器显示转换后的值,当流量达到预设阀值1后,探测器发出低频率声音报警,当流量达到预设阀值2后,探测流发出高频声音报警
4、,蜂鸣器相连的PC1端口置位(置低电平有效),进行报警,再经过延时后再进行复位重新进行模拟信号的转换。二、硬件设计1 ADC0809模数转换器11 ADC0809的作用众所周知,CPU能应用的只能是数字量。而本设计中的输入电压为模拟信号,因此需要ADC0809进行模数转换,将采样电压转换为数字信号。12 ADC0809的功能分析图1-1 ADC0809原理图模/数转换是指通过一定的电路将模拟量转变为数字量,由于模拟量是连续的,而数字量是离散的,所以,一般在某个范围中的模拟量对应于某一数字量,这就是说,在A/D转换时,模拟量和数字量之间并不是一一对应的关系。即从理论上,有一个转换精度的问题,转换
5、精度反映了A/D 转换器的实际输出接近理想输出的精确程度,A/D转换的精度通常是用数字量的最低有效位(LSB)来表示的,设数字量的最低度有效位于对应于模拟量,这时,我们称为数字量的最低有效位的当量,ADC0809采用的是逐位逼近A/D转换,逐位逼近A/D转换时,也用D/A转换器的输出电压来驱动运算放大器的反相端,不同的是用逐位式进行转换时,要用一个逐位逼近寄存器存放转换好的数字量,转换结束时,将数字量送到缓冲寄存器中,当启动信号由高电平变为低电平时,逐位逼近寄存清零,这时D/A转换器输出电压V0也为0,当启动信号变为高电平时,转换开始。同时,逐位逼近寄存进行计数。逐位逼近寄存器工作是从最高位开
6、始,通过设置试探值来计数,在第一个时钟脉冲时,控制电路板最高位送到逐位逼近寄存器,使它输出为1000 0000,则D/A转换器输出电压V0为满量程值128/255,若V0大于Vi,则作为比较器的运算放大器的输出成为低电平,控制电路据此清除逐位逼近寄存器中的最高位;若V0小于Vi,则比较器输出高电平,控制电路使最高位的1保留下来,如果最高位被保留,则值1000 0000下一个时钟脉冲使次高位D6为1,于是逐位逼近寄存器值为1100 0000,V0为满量程值192/255。此后,若V0大于Vi,则比较器输出低电平,从而使次高位D6复位,如果V0小于Vi,则比较器输出高电平,从而保留高位D6为1,再
7、下一个时钟脉冲D5置1,比较直到D0为1,再与输入电压比较,经N次比较,寄存器中得到的值就是转换后的数据,转换以后,控制电路送出一个低电平作为结束信号,这个信号的下降沿将逐位逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。13 ADC0809的技术参数 1) 分辨率表示转换器对微小输入量变化的敏感程度,通常用转换器输出数字量的位数来表示。例如,对8位A/D转换器,其数字输出量的变化范围0-255,当输入电压满刻度为5V时,转换电路对输入模拟电压的分辨率能力为5V/25519.6mV。目前常用的A/D转换集成芯片的转换位数有8位、10位、12位和14位等。2) 绝对精度是指与数字输出量所
8、对应的模拟输入量的实际值与理论值之间的差值。通常以数字量最低位所代表的模拟输入值VLSB来衡量。3) 转换时间是完成一次转换所需要的时间。目前,常用的A/D转换集成芯片的转换时间约为几个us到200us。在选用A/D转换集成芯片时,应综合考虑分辨率、精度、转换时间、使用环境温度以及经济性等因素。12位A/D转换器常用于高分辨率系统,陶瓷封装A/D转换芯片适用于-25+85或-55+125工作环境,塑料封装芯片适用于070工作环境。4) 温度系数和增益系数都是表示A/D转换器受环境温度影响的程度。一般用每摄氏度变化所产生的相对误差作为指标,以ppm/为单位表示。5)A/D转化器对电源电压变化的抑
9、制比(PSRR),用改变电源电压使数据发生±1LSB变化时所对应的电源电压变化范围来表示。2 选择芯片8255A图2-1 8255的内部结构21 8255A的作用本实验利用8255A将模拟量转换后的数字量传送到 CPU。此外,8255采用查询工作方式控制ADC0809工作。8086通过8255向报警系统(蜂鸣器)以及七段LED显示器发送控制信号。22 8255A的功能分析8255A是可编程并行接口,可以根据外界条件(I/O设备需要的信号线和它能提供的状态线)来使其构成多种接口电路。它是一种通用的可编程的并行I/O接口芯片,可用与连接PCI卡与外设,实现数据的的输入输出功能,可以对输入
10、/输出的数据进行数据锁存和数据缓冲,有中断请求信号,可以向CPU发出中断请求,能进行单向和双向通信。8255A的数据总线缓冲器是一个三态8位双向缓冲器,用作8255A同系统数据总线相连时的缓冲部件,CPU通过执行输入/输出指令来实现对缓冲器发送或接收数据。8255A的控制字或状态字也是通过该缓冲器传送的。PA、PB、PC三口均工作在方式0状态。(1) 方式0的工作特点:这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。(2) 方式0的功能为:a.两个8位通道:通道A、B。两个四位通道:通道C高4位和低四位;b.任何一个通道可以作输入/输出;c.输出是锁存
11、的;d.输入是不锁存的;e.在方式0时各个通道的输入/输出可有16种不同的组合;8255A的操作功能表 A1 A0操 作数 据 传 送 方 式0 0 1 0 0读 A 口A口数据 数据总线0 0 1 0 1读 B 口B口数据 数据总线0 0 1 1 0读 C 口C口数据 数据总线0 1 0 0 0写 A 口数据总线数据 A口0 1 0 0 1写 B 口数据总线数据 B口0 1 0 1 0写 C 口数据总线数据 C口表2-2 8255A的操作功能表23 8255A的技术参数 8255A的引脚信号1)与外设相连的PA7PA0:A口数据信号线。PB7PB0:B口数据信号线。PC7PC0:C口数据信号
12、线。2)与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。只有当有效时,读信号写才对8255进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定:A1、A0为00时,
13、选中A端口;A1、A0为01时,选中B端口;A1、A0为10时,选中C端口;A1、A0为11时,选中控制口;参数名称符号测试条件规范值最大最小输入低电平电压VIL0.8v-0.5v输入高电平电压VIHVcc2.0v输入低电平电压<数据总线>VOLIOL=2.5mA0.45v输入低电平电压<外部端口>VOLIOL=1.7mA0.45v输入高电平电压<数据总线>VOHIOH=-400A2.4v输入高电平电压<外部端口>VOHIOH=-200A2.4v达林顿驱动电流IDARREXT=750VEXT=1.5v-0.4mA1.0mA电源电流ICC120mA
14、输入负载电流IILI=VCC0v+10mA-10mA输出浮动电流IOFLVOUT=VCco0v+10mA-10mA表2-3 8255A基本参数表24 8255A的方式控制字8255A的控制字有两种:一种是方式选择控制字,另一种是C口按位置位/复位控制字 方式选择控制字 C口按位置位/复位控制字3 七段LED显示器31 LED在本设计中的作用 LED为发光二极管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,做为终端显示,主要是作为显示采样电压值以及界限值。32 LED功能分析物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN
15、结,具有单向导电性。工作原理:当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。如果发光二极管共阳极,则输入为0,则发光;当为1时,不发光。反之,如果发光共阴极,则输入1为发光,0时为不发光。数字成像:将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,便可显示某一数码或字符。7段代码的个位(bit0-bit7)用作a-g和DP的输入。LED数码管及其框图如下:图3-1 LED数码管及其框图dpgfedcba显示数码数
16、值101111110.0BFH100001101.86H110110112.0DBH110011113.0CFH111001104.0E6H111011015.0EDH111111016.0FDH100001117.87H111111118.0FFH111011119.0EFH0011111103FH00000110106H0101101125BH01001111347H01100110466H0110110156DH0111110167DH00000111707H0111111187FH0110111196FH表3-2 七段LED显示段码33 LED的技术参数PCWIfVrIrIfP对应型号
17、散射颜色BJ235-2702551.52.5200SEL-10红色BJ14415291004050.52.5565绿色BJ13415291004050.52.5585蓝色表3-3 LED技术参数4 蜂鸣器图4-1 蜂鸣器原理图在本设计中,蜂鸣器用于电压值越界时声音报警。扬声器是将电能转化成声能,并将声能辐射到空气中去的一种电声转换器件。蜂鸣器的技术参数:它一般包括灵敏度、频率响应、额定功率、额定阻抗、指向性、失真、音质听感评价等。本实验电压范围为05V。5 硬件总逻辑图及其说明图5-2 实验硬件原理图 说明:实验硬件原理图由8086CPU、8255A、ADC0809构成,8086CPU的地址线
18、经锁存器后与各个芯片相连,A1、A2分别与8255A、ADC0809的A0、A1相连, CS1、CS2分别接8255A、ADC0809的CS端,ADC0809的IN0为通道输入信号,ADC0809转换后的数据从ADDA、ADDB、ADDC输出到A0、A1、A2口,8255A的A口作为二位七段LED的段选码,B口作为位选码,C口控制蜂鸣器。逻辑开关当作阈值输入,分别对应1V,2V,3V,4V,将其中两个开关置为1,则对应两个对应值则为两个阈值。三、控制程序设计1. 控制程序设计思路说明本设计中,由于采样的电压值为模拟信号,必须通过ADC0809芯片转换成数字信号,并将其保存在AH寄存器中。比较A
19、H中值与预设阈值的大小,并通过8255控制报警系统,实现越界报警。首先初始化8255,令A、B、C口均为输出口。C口清零,防止刚开始实验就报警。启动ADC0809直至转换过程全部结束,把转换后的值存入到AH中,以用之后的比较。通过8255对七段LED显示器位选、段选,将转换值以十进制形式输出。阈值在初始化是进行赋值,将用来与采样电压值进行比较,并通过LED以十进制形式显示。当采样电压值大于或等于阈值1时,系统将产生低频报警,大于等于阈值2时,系统将产生高频报警。反之,则只是在LED显示,不产生报警。在报警设计方面,本设计通过C口的置位和复位,当PC1为0,系统产生报警。让蜂鸣器实现低频和高频声
20、音报警。PC1为0,系统产生报警。2控制程序流程图延时开始初始化8255A,PA、PB、PC输出,阈值1和阈值2C口清零防止刚开始就报警 开始读入数据并保存启动ADC0809开始转换等待ADC0809转换完毕电压采集到al,将十六进制转换为十进制电压值阈值2电压值阈值1启动高频声报警并显示电压启动低频声报警并显示电压否是否是与阈值num1,num2比较显示电压值延时3. 控制程序.MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH
21、;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATA IO_Bit8_BaseAddress DW ? msg0 DB 'BIOS不支持访问PCI $'msg1 DB '找不到Star PCI9052板卡 $'msg2 DB '读8位I/O空间基地址时出错$' COM_ADD DW 00F3H PA_ADD DW 00F0H PB_ADD DW 00F1H PC_ADD DW 00F2H ADDR_0809 DW 00E0H NUM1 DB ?NUM2 DB ?BUFFER DB ' $'
22、;A DB ? ;设置高频报警和低频报警的标志量A,BB DB ?LEDDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;代码段 .CODE;*控制程序开始*;START: mov ax,DATA mov ds,ax nop call InitPCI call ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址mov dx,COM_ADD mov al,88h;初始化8255out dx,almov al,0ffhmov dx,PC_ADD;C口置位,防止刚开始实验就报警out dx
23、,almov bh,0 ;设置阈值1和2的标志量,0是阈值1,1是阈值2in al,dx ;开始读入开关的阈值,扫描第一个开关test al,80hje key2 mov al,1 call save key2:in al,dx ;扫描第二个开关test al,40hje key3 mov al,2 call save key3:in al,dx ;扫描第三个开关test al,20hje key4 mov al,3 call save key4:in al,dx ;扫描第四个开关test al,10hje begin mov al,4 call save BEGIN:mov a,2mov a
24、l,00Hmov dx,ADDR_0809;启动ADC0809开始转换out dx,almov dx,IO_Bit8_BaseAddressmov cx,20DELAY1:in al,dxloop DELAY1 ;等待0809转换完毕mov dx,ADDR_0809 in al,dx;电压采集到alpush axsub ah,ah mov bl,51;255/51 (16进制的1 = 1/51V)div blmov BUFFER,al;整数部分mov al,10mul ahdiv blmov BUFFER+1,al;第一位小数mov al,10mul ahdiv blmov BUFFER+2,
25、al;第二位小数pop bxmov al,NUM2cmp bl,al ;和阈值2比较ja HIGH0moval,NUM1cmp bl,al ;和阈值1比较ja LOW0mov b,0jmp display0HIGH0: ;高频报警mov b,2jmp display0LOW0: ;低频报警mov b,1jmp display0display0:mov cx,12DISPLAY1: ;LED显示电压mov dx,pc_addmov al,aout dx,almov ah,200display2:mov bx,offset LEDmov al,BUFFERxlatmov dx,PA_ADD;A口显
26、示数字段码or al,80h ;显示小数点out dx,almov dx,PB_ADD;B口LED位选mov al,0FBHout dx,alcall DELAY01 ;延时使人眼能分辨,最少20ms(50HZ)mov al,BUFFER+1xlatmov dx,PA_ADDout dx,almov dx,PB_ADDmov al,0FDHout dx,alcall DELAY01mov al,BUFFER+2xlatmov dx,PA_ADDout dx,almov dx,PB_ADDmov al,0FEHout dx,alcall DELAY01dec ahje display2mov a
27、l,badd a,alloop DISPLAY1jmp beginDELAY01 PROC NEARpush cxmov cx,65535;延时loop1:NOPloop loop1pop cxretDELAY01endpsave proc nearmov bl,51mul bl cmp bh,0 jne save1 mov num1,alinc bh retsave1: mov num2,al retsave endp;*控制程序结束*;InitPCIPROCNEAR MOVAH,00H MOVAL,03H INT10H;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0J
28、ZInitPCI2LEADX,msg0InitPCI1:MOVAH,09HINT21HJMPExitInitPCI2:MOVAH,0B1HMOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH;读取该卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:ANDCX,0FFFCHMOVIO_Bit8_Ba
29、seAddress,CXRETInitPCIENDPModifyAddressPROCNEARADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX ADD ADDR_0809,CX RET RETModifyAddressENDPExit: MOV AH,4CH INT 21H END START 四、上机调试过程1. 硬件调试在老师的指导下完成了初步的硬件连接,后来加入了新的功能(阈值输入),用到了新的硬件逻辑开关,总体上没什么问题。首先时考虑到底通过什么硬件来实现阈值输入,通过比较,最终发现还是逻辑开关来输入阈值最为合理。分别用PC7-PC4来表示电压阈值1V,2V,3V,4V,每次启动时将其中两个逻辑开关置1,则相应两个电压值则为两个阈值。程序部分时通过从低位到高位来扫描,将第一个扫描的数字存储为阈值1,将第二个扫描的数字存储为阈值2。2. 软件调试在软件部分要实现模拟量转换为数字量,界限值通过逻辑开关来设定,最后判断输入电压是否超出阈值来实现高频和低频的警报。由于系统可能存在留有的模拟信号造成报警,所以在程序中C入要C口清零,防止一开始就报警。在程序中加入延时子程序防止运行速度过快,人眼
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 售后车间业务管理制度
- 口腔诊所业务管理制度
- 业务案场管理制度
- 委托业务费结算管理制度
- 业务组管理制度
- 业务战略及管理制度
- 业务奖惩管理制度
- 业务岗位管理制度
- 市场部业务管理综合制度
- 怎样对种业务员管理制度
- 劳力短缺应急预案
- 癌痛全程管理中国专家共识(2025版)
- 管道除锈及防腐施工方案
- 计算机网络运维试题及答案
- 士兵考学英语真题及答案
- GB/T 46206-2025野生植物种子库种子采集和信息管理要求
- 航空航天标准(首件检验)AS9102
- 强光手电专业知识培训课件
- (新版)ISO37301-2021合规管理体系全套管理手册及程序文件(可编辑!)
- 市2025年水库大坝安全鉴定服务方案投标文件(技术方案)
- 外部科研院所协作管理制度
评论
0/150
提交评论