智能仪表课程设计 - 图文

更新时间:2024-02-27 12:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《智能仪器设计》课程设计报告书

班 级:自动化0803 学 号: 姓 名 指导教师:

摘要

实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配PT100热电阻,测温范围为0℃~300℃。采用比例控制、并用晶闸管移相驱动1000W电加热器(电源电压为AC220V)。

一、 课程设计题目

17. 试设计智能仪表

实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配PT100热电阻,测温范围为0℃~300℃。采用比例控制、并用晶闸管移相驱动1000W电加热器(电源电压为AC220V)。

二、 题目分析

1. 设计任务分析

本设计要求使用ATmega16单片机作为MCU主控芯片,设计一个智能显示仪表。

据任务要求,本系统采用8位数码管分别显示测量温度值和设定值,在设定状态时用来显示设置功能号和该功能实现的设置当前值;系统拥有报警功能,当当前温度超过上限值或者下限值时,蜂鸣器响,且上限报警/下限报警LED灯亮以区分上/下限报警;系统有四个控制按键,功能分别是:功能选择、数码管选择、数字增加、数字减少,用来对温度设定值、上限值、下限值等设置;还有四个状态显示LED灯,分别显示:正常运行、设定状态、上限报警、下限报警;本系统除显示以外,还要求有对加热器控制的功能以达到使温度控制在设定值的要求。

2. 功能实现分析

根据设计任务要求,现设想以下设计以满足要求:

仪表适配PT100热电阻,因此首先需要一个PT100热电阻的信号调理电路,使热电阻的热电势转化为MCU可直接测得的电压值,从而测得当前温度值。

采用ATmega16作为主控芯片,可直接利用内部AD转换电路进行,因为内置10位A/D转换器,可以满足一般精度的要求。

按键电路可以采用中断方式进行处理,并且只有先按“功能选择”键才可以启动按键扫描,对其进行处理,在处理过程中关中断,各功能都设置完后,再按“功能选择”键以退出处理程序;不同按键实现不同的功能:

“功能选择”键:启动中断,并选择切换不同的设置对象和存储上一个对象设置的值,最后切换完所有功能后按下保存所有设定值并退出中断;

“数码管选”键:选择待设定对象的数码管,即选择该对象加/减操作的单位量(1000/100/10/1);

“数字增加”键:在以选择的单位上进行加1个单位的操作; “数字减少”键:在以选择的单位上进行减1个单位的操作。 状态显示和蜂鸣器操作分别用单片机的输出端口操作。

硬件框图:

三、 电路器件选型

1. 主芯片简介

ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

其结构图如下:

ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW), 512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器 (T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。 工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

2. 引脚简介

ATmega16引脚图:

引脚简介:

VCC: 数字电路的电源 GND: 地

端口A(PA7..PA0): 端口A 做为A/D 转换器的模拟输入端。端口A 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。

端口B(PB7..PB0): 端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。端口B 也有其他不同的特殊功能。

端口C(PC7..PC0): 端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口C 有其他不同的特殊功能。

端口D(PD7..PD0): 端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复

位过程中,即使系统时钟还未起振,端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能。

RESET: 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。

XTAL1: 反向振荡放大器与片内时钟操作电路的输入端。 XTAL2: 反向振荡放大器的输出端。

AVCC: AVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC 连接。

AREF: A/D 的模拟基准输入引脚。

3. 传感器件简介

本系统采用PT100热电阻作为测温元件,测温范围0~300℃。 其分度表如下:

四、 硬件设计

1. 主控MCU模块 1.1 电路图

2.2 简介

电源由7805稳压得到,外部电源由POWER输入,四个二极管用来防止电源正负极反接引起设备故障或者损坏。外部电源经7805稳压后得到供电电源+5V,而模拟电源+A5V则由数字电源+5V接一个电感得到,为减小干扰,+5V和+A5V都接上去偶电容;发光二极管用于上电指示,表示已上电。

3. 信号调理模块

3.1 电路图

1.2 简介

主控MCU采用ATmega16。在主控MCU模块中,接有8MHZ的 XTAL1外部晶振,可以用短接帽Jxta1选择内部/外部晶振;在复位端RST接有上电复位和按键复位,实现复位功能;A/D转换的外部参考电平由引脚AVCC提供,通过短接帽JREF1和JREF2可以选择5V或者4.096V作为参考电平;XTAL2提供3.2767KHZ的计时晶振。

2. 电源供电模块 2.1 电路图

3.2 简介

本系统采用PT100热电阻作为测温元件,以上为信号调理电路:该电路采用运放LM258作为恒流源,PT100提供1mA电流,可调电阻RP1用于调节电流为1mA,为防止热电阻损坏和便于替换,将PT100用脚针接出。

采用单电源仪表放大器AD623放大热电阻两端的电压信号,由分度表可知:在0℃时,热电阻的阻值为100.000Ω,在300℃时,热电阻的阻值为212.062Ω,由于AD623的放大倍数为20倍,因此AD623的输出电压Vo范围为:2V~4.241V。

4. 光耦驱动模块 4.1 电路图

4.2 简介

本系统要求具有控制加热器的功能,采用二位式控制,即只需控制开和断,设计要求采用晶闸管过零驱动,故设计如上图:采用MOC3062进行驱动,该电路相当于单片机控制一个交流功率开关,控制负载得电或失电,特别是在交流电过零瞬间,因此对电网冲击小,电磁辐射小。电阻R1用于控制MOC3062输入电流在10mA左右;电阻R2用于限制被驱动双向晶闸管的门极触发电流IGT;R3用于抗干扰;Cs用于限制电压的上升速率dV/dt;电阻Rs用于限制Cs上的浪涌电流。

5. 按键模块 5.1 电路图

5.2 简介

本系统有4个功能按键,按键模块如上图: K0:功能选择; K1:数码管选择; K2:数字增加; K3:数字减少。

按键模块的扫描由K0启动INT0中断进行处理,在处理过程中管中断并一直扫描键盘进行设定操作。四个按键通过RKEY接地连接到引脚PB0、PB1、PB2、PB3,单片机内含有上拉电阻。

6. 状态显示模块 6.1 电路图

6.2 简介

本系统有四个状态显示LED,其功能分别是: LED1:正常工作,连接到PA0控制; LED2:处于设定状态,连接到PA1控制; LED3:上限报警,连接到PA2控制; LED4:下限报警,连接到PA3控制。

四个LED等都是低电平控制,在系统运行控制中显示系统状态。

7. 数显模块

7.1 电路图

7.2 简介

本系统的数字显示模块采用两片74HC595控制,共2块8个共阳数码管,其中Uy1控制段选,控制八段数码管的导通与断开,而Uy2则控制位选,选择其中一个作为当前选亮的数码管,采用动态显示。

控制线只有3根,分别接在PC0,PC1,PC2上,其中PC0分位输出数据;PC1输出锁存信号,对输入进行锁存;PC2输出移位脉冲,控制移位,每输入一位数据都需移动一位;因此需要全部点亮八个数码,必须输出8次16位数据,每次的16位数据包括位选码和段选码。

8. 蜂鸣报警模块

8.1 电路图

五、 原理图

六、 PCB图

七、 软件设计

定时器初始化 #include \#include

void T1_Init(void) //初始化,产生10mS周期中断

{OCR1A = 1249; //计数周期为10ms,F=1MHz OCR1A为计数器TOP TIMSK |= (1 << OCIE1A); //比较中断A允许

TCCR1A = 0x00; //普通端口操作,非OC1A和OC1B

TCCR1B = 0x08; //定时器工作在CTC计数器模式,计数值与OCR1A值比较,

//相等就中断,然后,计数器归0

TCCR1B |= 0x02; //设置定时器1的分频值为8分频 }

向8位数码管输出数据程序 #include \#include \

/*如下注释语句是用与共阳数码的数组 unsigned char disp[] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf}; //共阳数码段输出 unsigned int weizhi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //高电平有效位输出 */

unsigned char disp[] =

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71,0x40}; //共阴数码段输出高电平有效 unsigned char weizhi[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位输出低电平有效 unsigned int data[8];

void SPI_MasterInit(void) //SPI接口初始化

{DDRB |= (1<<5) | (1<<7); //设置MOSI 和SCK 为输出,其他为输入 SPCR = (1<<6) | (1<<4)|(1<<5)|(1<<1) | (1<<0); //使能SPI 主机模式,设置时钟速率为fck/128 }

void SPI_595_Out(unsigned char i) //595数据输出 {SPDR = i; //启动数据传输

while (!(SPSR & (1<<7))) {;} //等待传输结束 }

void main(void)

{unsigned char saomiao=0;

unsigned char w[10];

DDRA = 0x00; //输入 PORTA = 0x00; //上拉

DDRB = 0xB0; //高4位方向输出,低4位为输入/ PORTB = 0xFF; DDRC = 0xFC; PORTC = 0xFF; PORTD = 0x00; DDRD = 0xFF;

SPI_MasterInit(); //SPI初始化 while (1)

{{data[0]=1234; data[1]=5678; //向HC595输出的数据 w[0]=data[0]; w[1]=data[0]/10; w[2]=data[0]/100; w[3]= data[0]/1000; w[4]=data[1]; w[5]=data[1]/10; w[6]=data[1]/100; w[7]=data[1]/1000; }

PORTB &= ~(1 << 4); //准备锁存 SPI_595_Out(weizhi[saomiao]); //位数据 SPI_595_Out(disp[w[saomiao]]); //段数据 PORTB |= (1 << 4); //锁存数据 saomiao++; if(saomiao>=8) saomiao=0;

八、 心得体会

在课程设计期间,我认真查阅资料,学习关于这方面的知识,比如说要了解89S51芯片中各个引角的功能,怎么样去使用89S51这个可编程并行接口芯片,在这学期理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,或许是我的C语言学得不够呛好,我只能借助参考资料,这样一来又巩固了我的对C语言的了解.

如此,我体会到学习理论知识固然重要,但在你学完了之后,你不在实践中运用你所学的知识,我想学是白学了,过一段时间后,你可能什么都记不起来了,或许在学心里只有一个概念,认为这个知识我曾经学得不错,我现在怎么想不起来了,一心想依赖课本;如果我们用实践来学习知识,你会努力地去搜索你想要需要的东西,即使是过了一段时间后,你也会记得你曾经对这点不明白认真地查阅过,你不会忘记!一句话,课程设计对我们很重要!

八 参考文献

1. 华成英. 模拟电子技术基础(第四版). 高等教育出版社. 2006 2. 牛昱光. 单片机原理与接口技术. 2009

3. 夏路易. 智能控制与智能仪表(EDA). 2009版

在课程设计期间,我认真查阅资料,学习关于这方面的知识,比如说要了解89S51芯片中各个引角的功能,怎么样去使用89S51这个可编程并行接口芯片,在这学期理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,或许是我的C语言学得不够呛好,我只能借助参考资料,这样一来又巩固了我的对C语言的了解.

如此,我体会到学习理论知识固然重要,但在你学完了之后,你不在实践中运用你所学的知识,我想学是白学了,过一段时间后,你可能什么都记不起来了,或许在学心里只有一个概念,认为这个知识我曾经学得不错,我现在怎么想不起来了,一心想依赖课本;如果我们用实践来学习知识,你会努力地去搜索你想要需要的东西,即使是过了一段时间后,你也会记得你曾经对这点不明白认真地查阅过,你不会忘记!一句话,课程设计对我们很重要!

八 参考文献

1. 华成英. 模拟电子技术基础(第四版). 高等教育出版社. 2006 2. 牛昱光. 单片机原理与接口技术. 2009

3. 夏路易. 智能控制与智能仪表(EDA). 2009版

本文来源:https://www.bwwdw.com/article/3qqa.html

Top