【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc

上传人:文库蛋蛋多 文档编号:3774718 上传时间:2023-03-21 格式:DOC 页数:31 大小:1.43MB
返回 下载 相关 举报
【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc_第1页
第1页 / 共31页
【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc_第2页
第2页 / 共31页
【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc_第3页
第3页 / 共31页
【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc_第4页
第4页 / 共31页
【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc》由会员分享,可在线阅读,更多相关《【大学】单片原理与接口技术课程设计压力检测系统设计(WORD档)P34.doc(31页珍藏版)》请在三一办公上搜索。

1、单片机原理与接口技术课 程 设 计 成绩评定表设计课题 压力检测系统设计 学院名称 : 电气工程学院 专业班级 : 自动1002 学生姓名 : 学 号 : 指导教师 : 设计地点 : 设计时间 : 2012-12-172012-12-28 指导教师意见: 成绩: 签名: 年 月 日 单片机原理与接口技术 课程设计任务书学生姓名 专业班级自动1002学号 题 目压力检测系统设计课题性质工程设计课题来源自拟指导教师王黎、臧海河、周刚主要内容(参数) 89C52的压力检测保护系统可以实现以下功能:1.实现开机后自动恢复供电;2压力超过上限值或下限制会自动报警;3采用声光报警,使用者可以及时发现和处理

2、电路事故。任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。主要参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6000系列单片机仿真实验系统使用说明书3阎石数字电路技术基础(第五版)北京:高等教育出版社,20064单片机开发板的原

3、理图及系统。审查意见系(教研室)主任签字: 年 月 日 目 录1 引言52 总体方案设计62.1硬件组成62.2 方案论证62.3 总体方案83 硬件电路设计103.1 时钟电路103.2复位电路113.3 AD转换原理与系统电路113.4 声光报警接口电路133.5 显示及键盘接口电路134 系统软件设计174.1 主程序设计175 系统调试与总结205.1 系统功能测试205.2 技术指标测试206心得体会206.1为何不采用8255了?206.2为何不采用A/D0809?216.3在帮助同学的过程中我学到了什么?21参考文献21附录A 系统原理图22附录B 源程序1附录C 调试结果图 1

4、0引言 压力监测普遍用于工业领域,并对国家的发展产生了深厚的影响,小到体重计,大到工业中反应炉的气压声电报警。甚至航空航天,智能仪表。以及机器人。本设计就是工业中最普遍的气压监测报警系统。所以,这个系统采用自动检测反应炉中的压力大小,通过传感器,并实时进行在液晶1602上进行显示,还有在液晶上进行参考上限电压值的设置和参考下限电压值的的设置。并通过在单片机内部进行比较计算,来实现整个压力监测系统的声光电报警。本系统的设计基于A/D0804芯片和AT89C52单片机,并采用液晶1602作为显示输出,系统虽小却包含了工业要求的各个方面,作为声电报警模块,主要用到蜂鸣器和发光二极管。当监测压力低于下

5、限值和高于上限值就会进行声光报警。此次系统设计就是针对工业的反应炉的压力监测,甚至可做体重计到最小的方面。本设计纯为个人设计。程序也在开发板验证成功,如有任何疑问,都可通过实验调试验证。2 总体方案设计2.1硬件组成1. 控制器。控制器是系统的核心部分,可以用工业计算机PLC、或者单片机。2. A /D转换器,A/D转换器可以把测得的模拟量转换成数字量输出,可以直接读取。3. 声光报警装置,通过蜂鸣器和LED小灯实现报警效果。4. 键盘,通过键盘可以设置限制电流大小。5. 液晶显示,液晶可以显示设置电流以及实时电流值大小。 如图2.0所示: 图2.0 硬件组成图2.2 方案论证1.控制器控制器

6、选择STC 89C52RC 40C单片机来控制压力的测量显示。目前国内外使用较多的微控制器是以51内核扩展出的单片机,51单片机的使用已经发展到很高的一个层次,编程多以C语言为主,操作简单,用途广泛,易于控制。下面通过标号STC 89C51RC 40C的解释来对该单片机进行详细的介绍:STC:前缀,表示芯片为STC公司生产的产品。8:表示该芯片为8051内核芯片9:表示内部含Flash EEPROM存储器。C:表示该器件为CMOS产品,CMOS常指保存计算机基本启动信息的 芯片,可由主板的电池供电,即使系统掉电,信息也不会丢失。5:固定不变1:表示该芯片内部程序存储空间的大小,1为4KB,2为

7、8KB,3为12KB等,程序空间的大小决定了一个芯片所能装入的执行代码的多少。RC:表示STC单片机内部RAM(随机读写存储器)为512KB。40:表示该芯片外部晶振最高可接入40MHz。C:产品级别,表示该芯片使用温度范围,C表示商业级,温度范围为0度-+70度。该单片机的存储器相对设计任务来说,对程序代码的储存足够了,所以无需再加外围的扩展存储器。如图2.1所示: 图2.1 52单片机引脚图2.A/D转换器 图3.5 ADC0804规格及引脚分配图本试验采用的A/D芯片为ADC0804,它是CMOS 8位单通道逐次渐近型的模/数转换器,其规格及引脚图如图3.5所示,根据手册我们可以得到各个

8、引脚的大致功能如上:2.3 总体方案按照上述方案论证的结果,首先通过键盘设定电流值,然后检测电流值,转换成数字量通过数码管显示出来。当电流过大时继电器动作,切断电路,保护用电器。如图2.2,2.3所示。图2.2总体方案框图整个系统流程图如下: 图2.3系统流程图3 硬件电路设计3.1 时钟电路单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2

9、MHz12MHz之间。对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用。时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作。如图3.1所示。 图3.1单片机时钟电路3.2复位电路在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不

10、是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。单片机系统的复位方式有:手动按钮复位和上电复位 。复位方式有手动复位、上电复位和积分型复位。如图3.2所示。图3.2 复位电路3.3 AD转换原理与系统电路 模拟/数字转换就是我们通常所说的A/D转换,它将输入的模拟信号(如电压)转换成控制芯片(如单片机,ARM)所能识别的二进制形式,然后经过运算,既可以还原出输入模拟信号的值。A/D转换是一种非常重要的技术手段,是单片机等控制芯片与外界信号的接口部分,如图3.3所示。

11、图3.3图3.4 AD外围设计原理图CS:芯片片选信号,低电平有效,即/CS=0,该芯片才能正常工作,在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。WR:启动ADC0804进行ADC采样,该信号低电平有效,即/WR信号由高电平变成低电平时,触发一次ADC转换。RD:低电平有效,即/RD=0时,可以通过数据端口DB0DB7读出本次的采样结果。UIN(+)和UIN(-):模拟电压输入端,模拟电压输入接UIN(+)端,UIN(-)端接地。双边输入时UIN(+)、UIN(-)分别接模拟电压信号的正端和负

12、端。当输入的模拟电压信号存在“零点漂移电压”时,可在UIN(-)接一等值的零点补偿电压,变换时将自动从UIN(+)中减去这一电压。VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外界电压,则ADC的参考电压为该外界电压的两倍,如不外接,则Vref与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。CLKR和CLKIN:外接RC电路产生模数转换器所需的时钟信号,时钟频率CLK = 1/1.1RC,一般要求频率范围100KHz1.28MHz。AGND和DGND:分别接模拟地和数字地。INT:中断请求信号输出引脚,该引脚低电平有效,当一次A/D转换完成后,将引起/INT=0

13、,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生/INT信号有效时,还需等待/RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将/INT引脚悬空。DB0DB7:输出A/D转换后的8位二进制结果。AD外围电路图中Vin(+)接电位器的中间滑动端,Vin(-)接地,因为这两端可以输入差分电压,即它可以测量这两端之间的电压,此时,Vin(-)即为ADC0804的模拟输入电压。Vin(+)与电位器之间串联一个10欧电阻,目的是限制电流。防止电流过大而烧坏芯片。如图3.6所示。 3.4 声光报警接口电路采用声光报警装置有一下几大优点

14、,1.在远距离是可以可以通过声音及时通知2.在近距离可以通过视听觉做出反应3.在嘈杂的环境中可以通过视觉通知4.两种器件配合更加安全可靠具体外围电路如3.7所示。图3.5声光报警装置3.5 显示及键盘接口电路(1)显示器接口电路如图3.8所示 图3.6 显示器接口电路图第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平

15、时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1602LCD的RAM地址映射液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表四是1602的内部显示地址。表四 1602LCD内部显示地址例如第二行第一个字符的地址

16、是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H

17、:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标不闪烁(2)键盘接口电路如图3.7所示 图3.7 键盘接口电路第一个键S4:表示功能切换键 ,按第一下表示进行调节上下限 ,按第二下表示不再调表,开始进行AD转换。第二个键S1: 表示调节上限和下限值,按第一下表示调上限值液晶光标闪烁,按第二下液晶不再闪烁,表示调节结束。第三个键S2,在按下参考压力值递增,上限当超过90时复位为0,下限值当超过30时复位为0,液晶光标一直闪烁。第四个键S3在按下参考压力值递减,当上限值减到0时置位为90,下限值减到0时置位为30, 液晶光标一直闪烁

18、。4 系统软件设计系统软件分为主程序、中断服务程序和子程序三部分。4.1 主程序设计主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘,AD转换等工作。主程序上电自动复位,也可手动复位;主程序执行时,分别进行键盘扫描,AD转化,以及液晶显示。如图4.0所示 图4.0 主程序流程图主程序分三步执行:1、系统上电后,即开始在默认的设置最小下限参考电和最大参考电压的显示在第一行即: P-T Down:25Up:60(参考压力的 上下限值) Real-time Pre:12(实时监测的压力) (P-T)即Press Test ( Real-time Pre)即Re

19、al time press2、本设计设置4个功能键,3、AD转换模块及显示模块,压力传感器检测到压力后,通过模拟量转换量,通过单片机计算,把数字量在1602液晶上显示出来。调试结果如图4.1所示 图4.1 硬件显示结果图4.2 部分主要子程序的设计系统主要子程序包括显示子程序、键处理子程序,显示子程序的设计。 既包含三大模块: 1,键盘扫描的子程序设计; 2,A/D0804的子程序设计 3,1602液晶显示的子程序设计 4,初始化液晶和单片机的子程序设计5 系统调试与总结系统研制完成后,首先在实验室进行了系统功能测试和技术指标测试。并力求完全达到工业要求的水准。5.1 系统功能测试系统上电后,

20、显示正常,进行了以下测试。 1.上电开始默认显示测试。2.按钮s1功能键测试。3.按钮s2数值增测试。4.按钮s3数值减测试。 6按钮S4键的A/D切换与调节参考上下限的功能转换测试7.上下限最值测试。8.AD显示测试。9.AD转换结果测试。10.报警装置测试。上述测试结果最终与预期相符。5.2 技术指标测试1.硬件电路测试此次课程设计首先采用PROTEUS软件仿真,而后进行硬件电路的设计。在软件仿真中初步形成了程序的调试与修改。此过程采用三个步骤,(1)了解各个功能模块的作用与联系。(2)单独写出各个模块的控制程序,进行单独调试。(3)各个模块进行有机组合,实现目的功能。此过程遇到的问题比较

21、少,但了解到了完成一个较大工程所需要具备的素质及技巧。完成此系统问题主要出现在硬件的调试6心得体会 6.1 为何不采用8255了?我想这篇心得体会一定要加上的,忙碌了两个星期,终于在周五的晚上成功了。我做的这个系统是很复杂的,当初硬件电路设计时,我本想用8255作为扩展IO口使用,并用PC口做位寻址进行片选操作,同时用PA口控制1602,PB口做输入接A/D0804,但是8255的操作复杂程度会使整个设计显得臃肿而且多余,最后我决定取消用8255作为整个电路的实现。6.2为何不采用A/D0809? 最后敲定采用了单输入的A/D0804作为A/D转换,之所以不采用8路输入的A/D0809为我所要

22、选的A/D转换器件,是因为这个8路输入进行片选输入有点浪费系统,而且,在帮同学解决难题的时候我都推荐使用了A/D0809,对于它的操作我也是非常熟悉的。但为了能够由硬件电路作为我的课程设计结果的证明。我采用了我自买板子的硬件资源。6.3在帮助同学的过程中我学到了什么?整个课程设计下来,我积累了丰富的经验,分别帮同学做了断电保护系统,步进电机的正反转加速减速,还有数字音乐盒的辅助调试。在帮同学解决问题的同时,也是我的知识结构更加完善。我也进一步掌握了调程序的方法,比如说:我自创在检查程序中用LED小灯,比如说在各个功能跳转时再养从while语句中跳到另一个while语句中。参考文献【1】单片机微

23、型计算机原理、应用及接口技术 张迎新 国防工业出版社【2】 C程序设计 谭永强 清华大学出版社【3】阎石数字电路技术基础(第五版)北京:高等教育出版社,2006【4】单片机开发板的原理图及系统。附录A 系统原理图附录B 源程序#include#define uchar unsigned char#define uint unsigned intsbit cs=P32;sbit rd=P37;sbit wr=P36;uchar value;sbit eg=P34;sbit rs=P35;sbit s1=P20;sbit s2=P21;sbit s3=P22;sbit s4=P23;sbit du

24、la=P26;sbit wela=P27;uchar uper,low;uchar s1num,num;uchar table=P-T Down:25Up:60;uchar table1=Real-time Pre:12;void delay(uint z)/延迟函数 uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-); void sweep() if(s4=0) delay(5); if(s4=0) num+; if(num=2) num=0; while(!s4); void write_com(uchar com);/写命令函数void write_da

25、t(uchar dat);/写数据函数void chushi();/关闭LED,并对LCD初始化,利用数组;void write_press(uchar addr,uchar dat)/此函数可把十进制数写入对应位的液晶中 uchar a,b; a=dat/10; b=dat%10; write_com(0x80+addr); write_dat(0x30+a); write_dat(0x30+b); void write_press2(uchar addr,uchar dat) uchar a,b; a=dat/10; b=dat%10; write_com(0x80+0x40+addr);

26、 write_dat(0x30+a); write_dat(0x30+b); uchar AD_divert() uchar a; cs=0; wr=0; delay(200); wr=1; cs=1; delay(1000); cs=0; rd=0; delay(100); a=P1; rd=1; cs=1; a=a%10+17; return a; void AD_display() value=AD_divert(); write_press2(14,value); write_com(0x80+14); void display();void keyscan() if(s1=0) de

27、lay(5); if(s1=0) s1num+; while(!s1); if(s1num=1) write_com(0x80+10); write_com(0x0f); if(s1num=2) write_com(0x80+15); write_com(0x0f); if(s1num=3) s1num=0;/注意加5不是16进制 write_com(0x0c); if(s2=0) delay(5); if(s2=0) while(!s2); if(s1num=1) low-; if(low=0) low=30; write_press(9,low); write_com(0x80+10);

28、if(s1num=2) uper-; if(uper=0) uper=90; write_press(14,uper); write_com(0x80+15); if(s3=0) delay(5); if(s3=0) while(!s3); if(s1num=1) low+; if(low=30) low=0; write_press(9,low); write_com(0x80+10); if(s1num=2) uper+; if(uper=90) uper=0; write_press(14,uper); write_com(0x80+15); void main() chushi();

29、display(); while(1) while(num=1) keyscan(); sweep(); delay(2000); while(num=0) sweep(); write_com(0x0c); AD_display(); delay(1000); void write_com(uchar com) wr=0; rs=0; eg=0; P0=com; delay(15); eg=1; delay(15); eg=0; void write_dat(uchar dat) wr=0; rs=1; eg=0; P0=dat; delay(15); eg=1; delay(15); eg

30、=0; void chushi() dula=0; wela=0; delay(200); write_com(0x38); delay(65); write_com(0x38); delay(65); write_com(0x38); write_com(0x38); write_com(0x08); write_com(0x01); write_com(0x06); write_com(0x0c); write_com(0x80); low=25; uper=60; void display() uchar num; for(num=0;num16;num+) write_dat(tablenum); delay(20); write_com(0x80+0x40); for(num=0;num16;num+) write_dat(table1num); delay(20); 附录C 硬件显示结果图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号