智能仪器课程设计_第1页
智能仪器课程设计_第2页
智能仪器课程设计_第3页
智能仪器课程设计_第4页
智能仪器课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告课程名称智能仪表课程设计学校 杭州电子科技大学学院 生命信息与仪器工程学院专业电子信息技术及仪器姓名李棒学号12192213一、 实验目的智能仪表课程设计是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。二、 实验任务本次智能仪表课程设计的任务是设计一个温度控制器,并完成相关的编程工作。基本任务是利用AT89C51单片机、ADC0809模数转换器等芯片设计一个具有温度测量显示和开关控制输出的装置。三、实验要求 1)用6只共阴极的八段数码管来分别显示工作状

2、态、设定温度和实际温度温度。为了统一起见,对6只八段数码管的具体排列和工作状态的显示符号作如下规定: 实际温度 设定温度 工作状态:“1”“1”表示开机 “0”“0”表示关机2)用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。(1#开发板有5只操作按钮和1只系统复位按钮,共6只)3)用1只LED发光二极管来表示加热器开关量控制输出(1#开发板上共有6只控制输出的LED发光二极管),所有发光二极管均要求用2003达林顿管或三极管放大驱动。4)温度设定范围099,在装置处于开机状态情况下,当实际温度高于等于设定温度时,加热器控制输出“关”;当实际温度低于设定温度5时,加热器控制输出“开”

3、。5)上电后,自动显示关机这时状态、设定温度50和实际室内温度,用户可以设定温度进行设定,但只有在按下启动/关闭键后,控制器正式工作;在运行期间,若对温度状态进行设定,则控制器按新设定开始。若关机后(非断电)重新启动控制器,则自动进入上次关机前的设定状态。 三、 实验内容系统的总体框图如下:数码管显示 AT89C51 ADC0808温度控制按键扫描主要是基于AT89C51单片机 LED和数码管显示模块、加热器控制模块、按键扫描/处理模块和基于ADC0808芯片的数据采集模块。1、LED模块 LED发光二极管来表示加热器开关量控制输出。 2、数码管显示模块显示工作原理本系统应用8段6位共阴数码管

4、作为显示器件,用片选信号来控制数码管的显示字符,应位选信号来控制点亮那个数码管。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;其他数字以此类推。P0口对应的是控制数码管的段选,也就

5、是说可以让数码管显示不同的数字,字符。而在不同的数码管显示则是通过P2口的位选来实现的。换句话说P2口就是控制1-6号数码管哪个被点亮,哪个来显示数字。如果程序循环显示的时间比较少那就呈现在眼前的就是六位数码管全亮,其实是循环点亮,但是人的眼没法在这么短时间内辨别出来。硬件电路如下:注:(1、2位置显示工作状态:“1”“1”表示开机,“0”“0”表示关机。3、4位置显示设置温度。5、6位显示控制温度。)数码管程序见3、按键模块说明 用3只按钮来分别作为开机/关机键、温度设定上升键和下降键。硬件电路图如下具体按键程序见4、ADC0808的简介A/D转换器是一种能把输入模拟电压或者电流信息变成与其

6、成正比的数字量信息的电路芯片。A/D转换器用于实现模拟量到数字量的转换。ADC0808是典型的8通道模拟输入8位并行数字输出的逐次逼近式A/D转换器。该转换器采用COMS工艺,可以实现8路模拟信号的分时采集。片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路。1)ADC0808芯片的介绍2)ADC0808的工作流程2)ADC0808的实现方法ADC0808与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本系统中选用中断接口方式。注:其中的CLK我是用定时器产生500Khz的方波。1) 具体的程序实现如产生500KHZ的方波送给ADS0808模块五、系统总框架

7、系统的具体框图如下: 初始化按键扫描控制显示数码管子程序温度控制硬件设计如下:具体程序见六、实验分析及心得本实验采用外接AD芯片采集外接模拟量发送到P0口, 并将转化成对应的温度结果用数码管显示。进行显示 通过按键进行设置温度的调节及开关机的调节。通过本次实验让我对keil软件及proteus软件有了深入的了解和认识,尤其是proteus的强大的硬件仿真功能简单易学非常适合单片机的初学者使用学习对让我单片机系统搭建与程序的编写有了更深入的认识和了解。培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。数码管在指定的地址显示一个两位数程序 /* * brief

8、: Display a number * * param : dat want to display number * * param : addressdisplay location * * return : none */1、 void Display(u8 dat,u8 address)2、 3、 u8 shi = 0, ge = 0;4、 Wela = 1;5、 P2 = WhichOneaddress;6、 Wela = 0;7、 Duan = 1;8、 P0 = DisplayNumberdat / 10;9、 Duan = 0;10、 delay_ms(5);11、 Wela

9、= 1;12、 P2 = WhichOneaddress+ 1;13、 Wela = 0;14、 Duan = 1;15、 P0 = DisplayNumberdat % 10;16、 Duan = 0;17、 delay_ms(4);18、 19、 /*20、 * brief : keysacnf21、 *22、 * param : none23、 *24、 * return : none25、 */26、 27、 void KeyScanfPro(void)28、 29、 static unsigned char stateFlag = 0;30、 if( key1 = 0 | key2

10、= 0 | key3 = 0 )31、 32、 static unsigned char state1 = 0,state2 = 0,Delay = 0;33、 Delay+;34、 if( key1 = 0 && Delay >= SysClycleCntMax && stateFlag = 1 )35、 36、 Delay = 0;37、 stateFlag = 0;38、 if( SystemCoreDat.SystemState = 0 ) 39、 40、 led = 1;41、 SystemCoreDat.SystemState = 1;42、

11、43、 else44、 45、 led = 0;46、 SystemCoreDat.SystemState = 0;47、 48、 49、 else if( key2 = 0 && Delay >= SysClycleCntMax && stateFlag = 1 )50、 51、 Delay = 0;52、 stateFlag = 0;53、 SystemCoreDat.SetTemperature+;54、 limiateMaxMin(&SystemCoreDat.SetTemperature);55、 56、 else if( key3 =

12、0 && Delay >= SysClycleCntMax && stateFlag = 1 )57、 58、 Delay = 0;59、 stateFlag = 0;60、 if( SystemCoreDat.SetTemperature != 0 ) 61、 SystemCoreDat.SetTemperature-;62、 limiateMaxMin(&SystemCoreDat.SetTemperature); 63、 64、 65、 else66、 stateFlag = 1;67、 2) /*3) * brief : ADC0809 s

13、tart signal4) *5) * param : none6) *7) * return : none8) */1、 void ADC0809_ClockInit(void)2、 TMOD=0X12; TH0=(256-50)/256;TL0=TH0;ET0=1;TR0=1;EA=1; 3、 4、 /*5、 * brief : timer0 interrupt 6、 *7、 * param : none8、 *9、 * return : none10、 */11、 void timer0() interrupt 112、 PWM = PWM;13、 14、 2)ADS0808的读取中断处

14、理15、 /*16、 * brief : ADC0808 Init17、 *18、 * param : none19、 *20、 * return : none21、 */22、 void ADC0808_InIt(void)23、 EX0 = 1; IT0 = 1; EA = 1; AD0808_OE = 0;24、 25、 26、27、28、 29、 /*30、 * brief : ADC0809 start signal31、 *32、 * param : none33、 *34、 * return : none35、 */36、 void AD0808Pro(void)37、 P0 =

15、 0XFF;AD0808_Satrt = 0;_nop_();AD0808_Satrt = 1;nop_();AD0808_Satrt = 0;38、 / while(EOC = 0);39、 / AD0808_OE = 1;40、 / SystemCoreDat.ADC_Vaule = P0;41、 / SystemCoreDat.RealTemperature = (SystemCoreDat.ADC_Vaule * 0.388);42、 / AD0808_OE = 0;43、 44、 /*45、 * brief : External Interruption 46、 *47、 * par

16、am : none48、 *49、 * return : none50、 */51、52、 void T0_Interrupt() interrupt 0 53、 54、 P0 = 0Xff;55、 AD0808_OE = 1;56、 SystemCoreDat.ADC_Vaule = P0;57、 SystemCoreDat.RealTemperature = (SystemCoreDat.ADC_Vaule * 0.388);58、 AD0808_OE = 0;59、 60、 #include "main.h"61、62、 SystemCore SystemCoreDa

17、t = 0,50;63、64、 int main(void)65、 66、 ADC0808_InIt();67、 ADC0809_ClockInit();68、69、 while(1)70、 71、 SystemCoreDat.ExceCnt+;72、 coreControl();73、74、 if( SystemCoreDat.ExceCnt >= 10 )75、 76、 AD0808Pro();77、 SystemCoreDat.ExceCnt = 0;78、 79、 80、 return 0;81、 82、 其他相关程序83、 #ifndef _MAIN_H84、 #define

18、_MAIN_H85、86、 #include "corecontrol.h"87、 #include "REG51.h"88、 #include "key.h"89、90、 #define u8 unsigned char91、 #define u16 unsigned int92、93、 typedef struct System94、 95、 u8 SystemState;96、 u8 SetTemperature;97、 u8 RealTemperature;98、 u8 HealState;99、 u8 ADC_Vaule;1

19、00、 u16 ExceCnt;101、 SystemCore;102、 103、 extern SystemCore SystemCoreDat;104、 #endif 105、 const u8 DisplayNumber =106、 107、 0x3f,0x06,0x5b,0x4f,0x66,108、 0x6d,0x7d,0x07,0x7f,0x6f109、 ;110、 const u8 WhichOne =111、 112、 0xfe,0xfd,0xfb,0xf7,0xef,0xdf 113、 ;114、 /*115、 * brief : System CoreContronl116、

20、 *117、 * param : none118、 *119、 * 120、 * return : none121、 */122、 void coreControl(void)123、 124、 KeyScanfPro() ;125、 SystemDisplay();126、 127、 /*128、 * brief : System CoreContronl129、 *130、 * param : none131、 * 132、 * return : none133、 */134、 void System_State(void)135、 136、 if( SystemCoreDat.Syste

21、mState = 0 )137、 Display(0,0);138、 else139、 Display(11,0); 140、 141、 /*142、 * brief : System display143、 *144、 * param : none145、 *146、 * return : none147、 */148、 void SystemDisplay(void)149、 150、 System_State();151、 Display(SystemCoreDat.SetTemperature,2);152、 Display(SystemCoreDat.RealTemperature,4);153

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论