网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

基于单片机的电加热炉温度控制系统的设计

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
基于单片机的电加热炉温度控制系统的设计
单片机控制系统由微机和工业生产对象两大部分组成。随着国民经济的发展,人们需要对各种加热炉,热处理炉,反应炉和锅炉中温度进行监测和控制。
本设计采用无ROM的8031作为主控制芯片。8031的接口电路有8155,2732和ADC0809等芯片。8155用于键盘/LED显示器接口,2732可作为8031的外部ROM存储器,ADC0809为温度测量电路的输入接口。
本设计温度控制电路是通过可控硅调功器实现的。双向可控硅管和加热丝串联接在交流220V,50HZ交流市电回路,在给定周期内,8031只要改变可控硅管的接通时间便可改变加热丝功率,以达到调节温度的目的。 
关键词  温度控制; 单片机; 可控硅目  录1  绪论 11.1  概述 11.2  课题分析 11.3  设计思路 22  单片机温度控制系统方案简介 32.1  系统的基本组成 32.2  单片机炉温控制系统结构 32.3  单片机的选型 42.3.1 MCS-51单片机片内结构 42.3.2 MCS-51的引脚 52.4  测温电路的选择及设计 72.4.1 热电偶 72.4.2 变送器 82.5  光耦 82.5.1 光耦的定义 82.5.2 光耦的工作原理 92.6  温度控制电路 93  硬件电路设计 113.1  ADCO809与8031接口硬件电路设计 113.1.1 ADC0809引脚及功能 113.1.2 ADC0809结构及转换原理 123.1.3 MCS-51与ADC0809的接口 133.1.4 ADC0809与系统总线的连接 153.2  8155和8031接口硬件电路设计 153.2.1 8155芯片的结构 153.2.2 8155芯片的引脚功能 163.2.3 8155与8031接口电路 173.2.4 MCS-51和8155的接口方法 193.3  2732EPROM的工作原理及硬件接口设计 193.3.1 2732的管脚图:(24线双列直插式封装) 193.3.2 2732EPROM与8031硬件接口电路 203.4  键盘和显示接口技术 213.4.1 键盘接口技术 213.4.2 显示接口技术 224  温度控制程序和算法 234.1  温度控制的算法 234.2  温度控制程序 245  系统程序设计 255.1  系统控制主程序的设计 255.1.1 主程序流程图: 255.1.2 主程序清单: 265.2  T0 中断服务程序CT0 275.2.1 T0中断服务程序流程图: 285.2.2 T0中断服务程序清单: 305.3  采样子程序 335.3.1 采样子程序流程图 335.3.2 采样子程序: 335.4  数字滤波 345.4.1 数字滤波程序流程图 345.4.2 数字滤波子程序: 355.5  PID 计算程序: 365.6  扫描显示程序: 42结论 46致谢 47参考文献 48附录A  译文 49附录B  外文原文 63图  温度自动控制系统原理图 92
 
基于单片机的电加热炉温度控制系统的设计

1.1 概述
单片微机是单片微型计算机SCMC(single chip micro computer)的译名简称,在国内也常简称为“单片机”。它包括中央处理器CPU、随机存储器RAM、只读存储器ROM、中断系统、定时器/计数器、串行口和I/O等等。
单片机是微机发展的一个重要的分支,自问世以来,性能不断地改善和提高,加之单片机具有集成度高、功能强、速度快、体积小、功耗小、使用方便、性能可靠、价格便宜等优点,故在工业控制、数据采集和处理、通信系统、家用电器等领域的应用日益广泛。
随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。尤其在工业控制、自动化仪器仪表、计算机系统接口、智能化外设等应用领域发展很快。它的应用对于产品升级换代、机电一体化都具有重要的意义。在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
1.2 课题分析
单片机控制系统由微机和工业生产对象两大部分组成,其中包括硬件电路和软件程序,整个控制系统是通过接口将计算机和生产过程联系起来实现计算机对生产过程中的数据处理和控制。
本设计介绍了MCS—51单片机对温度控制系统硬件接口和软件设计的基本思想。包括单片机系统的扩展即程序存储器和数据存储器的扩展,输入/输出接口扩展和温度控制电路的接口。
1.3 设计思路根据系统具体指标要求,对每一个具体部分进行分析设计。整个控制系统分为硬件电路设计和软件程序设计两部分。
  单片机温度控制系统方案简介
2.1 系统的基本组成
单片机温度控制系统是数控系统的一个简单应用。在冶金、化工、建材、机械、食品、石油等各类工业中,广泛使用着加热炉、热处理炉、反应炉等,因此,温度是工业对象中一个主要的被控参数。由于炉子的种类不同,因而所使用的燃料和加热方法也不同,例如煤气、天然气、油、电等;由于工艺不同,所需要的温度高低不同,因而所采用的测温元件和测温方法也不同;产品工艺不同,控制温度的精度也不同,因而对数据采集的精度和所采用的控制算法也不同。
本系统是由8031单片机、8155外围接口芯片,以及2732EPROM可擦除程序存储器、ADC0809模数转换器、温度检测元件和温度控制电路组成。
2.2 单片机炉温控制系统结构
系统的单片机炉温控制系统结构主要由单片机控制器、可控硅输出部分、热电偶传感器、温度变送器以及被控对象组成。
单片机温度控制系统是以MS-5l单片机为控制核心,辅以采样反馈电路,驱动电路,晶闸管主电路对电炉炉温进行控制的微机控制系统。其系统结构框图可表示为:系统采用单闭环形式,其基本控制原理为:将温度设定值(即输入控制量)和温度反馈值同时送入控制电路部分,然后经过调节器运算得到输出控制量,输出控制量控制驱动电路得到控制电压施加到被控对象上,电炉因此达到一定的温度。
炉温信号T通过温度检测及变送,变成电信号,与温度设定值进行比较,计算温度偏差e和温度的变化率de/dt,再由智能控制算法进行推理,并得控制量u,可控硅输出部分根据调节电加热炉的输出功率,即改变可控硅管的接通时间,使电加热炉输出温度达到理想的设定值。
以AT89C51单片机为该控制系统的核心,实现对温度的采集、检测和控制。系统由变送器经A/D转换器构成输入通道,用于采集炉内的温度信号。变送器可以选用DBW,型号,它将热电偶信号(温度信号)变为0~5 V电压信号,以供A/D转换用。转换后的数字量与炉温数字化后的给定值进行比较,即可得到实际炉温和给定炉温的偏差及温度的变化率。炉温的设定值由BCD拨码盘输入。由AT89C51构成的核心控制器按智能控制算法进行推算,得出所需要的控制量。由单片机的输出通过调节可控硅管的接通时间,改变电炉的输出功率,起到调温的作用。
AC-SSR和加热丝串接在交流200V,50Hz的电源上,AC-SSR接通时间可以通过AC-SSR控制极上触发脉冲控制,过零检测电路输出经反相器和8031的T0输出相“与”后去触发AC-SSR(高电平触发),若T0在1s内总为高电平,则AC-SSR被开通100次,此时达最大功率加热;反之,若T0在1s内总为低电平,则AC-SSR输出功率为0,在给定周期T内,只要改变AC-SSR接通时间就可改变加热器功率,从而达到调节温度的目的。
2.3 单片机的选型
在本设计中,从经济上以及性能上考虑,我选用8031作为CPU。8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样。8031是MCS-51系列单片机的一种型号。 MCS-51单片机的类型有:8051、8031、8751等。8051内部有4K ROM,8751内部有4K EPROM,8031片内无ROM;除此之外三者内部结构引脚完全相同。
2.3.1 MCS-51单片机片内结构
1.CPU(微处理器): MCS-51的CPU由运算器和控制器所构成。
2.数据存储器(RAM): 片内为128个字节(52子系列的为256个字节)
3.程序存储器(ROM/EPROM)
    8031:无此部件;
    8051:4K字节ROM;
    8751:4K字节EPROM ;
    89C51:4K字节闪存。
4.中断系统
5.定时器/计数器
6. 串行口    1个全双工的异步串行口,具有四种工作方式。
7. P1口、P2口、P3口、P0口    为4个并行8位I/O口。
 

基于单片机的电加热炉温度控制系统的设计
2.3.2 MCS-51的引脚
如图,是MCS-51的逻辑符号图。在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。按其引脚功能分为四部分叙述这40条引脚的功能。若图片无法显示请联系QQ3710167,基于单片机的电加热炉温度控制系统的设计系统免费,转发请注明源于www.lwfree.cn
1、主电源引脚VCC和VSS VCC——(40脚)接+5V电压; VSS——(20脚)接地。 2、外接晶体引脚XTAL1和XTAL2 XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。     XTAL2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP     ①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。 VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。     ②ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。 对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。     ③PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。     ④EA/VPP(引脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。 对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。 4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
每个口都包含一个锁存器,即专用寄存器P0~P3,一个输出驱动器和输入缓冲器。为方便起见,我们把4个端口和其中的锁存器都统称P0~P3。
在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O口使用。
①P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。     ②P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。     ③P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载。     ④P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。     作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。  P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 引脚 第二功能 P3.0 10 RXD(串行输入口) P3.1 11 TXD(串行输出口) P3.2 12 INT0(外部中断0) P3.3 13 INT1(外部中断1) P3.4 14 T0(定时器0外部输入) P3.5 15 T1(定时器1外部输入) P3.6 16 WR(外部数据存储器写脉冲) P3.7 17 RD(外部数据存储器读脉冲)
2.4 测温电路的选择及设计
温度检测元件和变送器的类型选择和被控温度及精度等级有关
2.4.1 热电偶
温度检测元件:本实验中用的是镍铬/镍铝热电偶,镍铬/镍铝热电偶适用于0℃-1000℃的温度检测范围,相应输出电压为0mV-41.32mV。    热电偶是将温度量转换成电热大小的热电传感器,对它的选择将直接影响检测误差的大小。目前多选K型或S型(镍铬-镍硅)热电偶。两者相比,K型有较好的温度—热电势的线性度,但它不适宜于长时间在高温区适用;S型有高的精度,但温度—热电势的线性度较差。
 
基于单片机的电加热炉温度控制系统的设计
图2.1热电效应
如图,将两种不同材料导体A、B两端接在一起,一端温度为 ,另一端为T(T> ),这时在这个回路中将产生一个与温度 、T以及导体料性质有关的电势 (T、 ),这样构成的热电变换元件称为热电偶,可用来测量温度,这种热电效应产生的电势 (T、 )是由珀尔帖效应和汤姆逊效应引起的。
镍铬/镍铝热电偶适用于0℃—1000℃的温度测量范围,相应输出电压为0—41.32mV。
2.4.2 变送器
变送器由毫伏变送器和电流/电压变送器组成:毫伏变送器用于把热电偶输出的0—41.32 mV变成0—10mA范围内的电流,电流/电压变送器用于把毫伏变送器输出的0—10mA电流变成0—5V范围内的电压。
为了提高测量精度,变送器可以进行零点迁移。例如:若温度测量范围为400—1000℃,则热电偶输出为16.4mV—41.32mV,毫伏变送器零点迁移后输出0—10mA范围电流。这样,采用8位A/D转器就可使量化温度误差达到+/-2.34℃以内。
2.5 光耦
2.5.1 光耦的定义
耦合器(optical coupler,英文缩写为OC)亦称光电隔离器,简称光耦,是开关电源电路中常用的器件。
2.5.2 光耦的工作原理
耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,如一边是微处理器控制电路,另一边是高电压执行端,如市电启动的电机,电灯等等。之外,光耦可能有特定的结构,使光电可以进行转换。
2.6 温度控制电路
89C52对温度的控制是通过可控硅调功器电路实现的。
双向可控硅管和加热电阻丝串接在交流220V,50HZ市电回路。在给定周期T内,89C52只要改变可控硅管的接通时间便可改变加热丝功率,达到调节温度的目的。
可控硅接通时间可以通过可控硅控制极上触发脉冲控制。该触发脉冲由89C52用软件在P1.3引脚上产生,受过零同步脉冲同步后经光藕管和驱动器输出送到可控硅的控制极上。
下图示出了可控硅管在给定周期T内具有不同接通时间的情况。

由图可知可控硅在给定周期T的100%时间内接通时的功率最大
对于这样的执行机构,单片机只要输出能控制可控硅通断时间的脉冲作为信号就可以了,这可用一条功线通过程序输出控制脉冲。若图片无法显示请联系QQ3710167,基于单片机的电加热炉温度控制系统的设计系统免费,转发请注明源于www.lwfree.cn
为了达到过零触发的目的,需要交流电过零检测电路,此电路输出对应于50HZ交流电压过零时刻的脉冲作为触发双向可控硅的同步脉冲,是一种50HZ交流电压过零时刻的脉冲,可使可控硅在交流电压正弦波过零时触发导通。过零同步脉冲由过零触发电路产生,如图2.3所示,图中电压比较器LM311用于把50HZ正弦交流电压变成方波。方波的正边缘和负边缘分别作为两个单稳态触发器的输入触发信号,单稳压触发器输出的两个窄脉冲经二极管或门混合后就得到对应于交流220V市电的过零同步脉冲。此脉冲一方面作为可控硅的触发同步脉冲加到温度控制电路,另一方面还作为计数脉冲加到单片机8031和P3.4 、P3.5输入端。
 
基于单片机的电加热炉温度控制系统的设计

3  硬件电路设计
3.1 ADCO809与8031接口硬件电路设计
ADCO809是8路输入单片机模数转换器,它采用逐位逼近式A/D转换原理,可以直接接到微机总线接口上,不需另加I/O接口芯片,它可作为微机的I/O接口,亦可作为存储单元对待,它无需进行调零和满量程调节,多路开关地址输入能够进行锁存和译码,而且其三态TTL输出也可锁存。
3.1.1 ADC0809引脚及功能
ADC0809为逐次比较式8路模拟输入、8位输出的A/D转换器。
  a. 引脚如图。     
图3.1 ADC0809引脚图
b. 引脚功能:
ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图3.1。
对ADC0809主要信号引脚的功能说明如下:
IN7~IN0——模拟量输入通道
ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST.
A、B、C——地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).
3.1.2 ADC0809结构及转换原理
0809完成1次转换需100ms左右,可对0~5V信号进行转换。
图7.2中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表3.1为通道选择表。
表3.1 通道选择表  
图3.2 ADC0809原理框图
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位,下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上
3.1.3 MCS-51与ADC0809的接口
单片机如何来控制ADC?
首先用指令选择0809的一个模拟输入通道,当执行MOVX  @DPTR,A时,单片机的WR信号有效,产生一个启动信号给0809的 START脚,对选中通道转换。
转换结束后,0809发出转换结束EOC信号,该信号可供查询,也可作为向单片机发出的中断请求信号;当执行指令:MOVX A,@DPTR,单片机发出RD信号,加到查询和中断控制两种工作方式。
OE端高电平,把转换完毕的数字量读到A中。0809与8031单片机的接口如图3.3所示。若图片无法显示请联系QQ3710167,基于单片机的电加热炉温度控制系统的设计系统免费,转发请注明源于www.lwfree.cn

 
图3.4  ADC0809与8031接口电路
如图所示ADC0809与8031单片机的接口电路,当P2.2=0时,选中了ADC0809(允许启动各通道转换与读取相应的转换结果),转换结束信号EOC经倒相后接
 

基于单片机的电加热炉温度控制系统的设计
至单片机的外部中断 ,当p3.3=0时,说明转换结束,我们选用0通道作为输入,因而可以把0809视为一个地址为03F8H的外部数据存储单元,对其写数据时,8031的 信号使ALE和START有效,将74LS373锁存的地址低三位存入0809并启动ADC,当EOC为低电平时,说明A/D转换正在进行,当EOC为高电平(即P3.3=0)时,表示转换结束,8031可以读入转好的数据。
3.1.4 ADC0809与系统总线的连接
微机系统的地址线通过译码器输出端作为ADC0809的片选信号。地址线ADCA,ADCB,ADCC分别接到数据总线的低3位上。ADC0809的8位数据输出直接与系统数据总线连接。
当CPU向ADC0809执行1条输出指令时, , 和地址信号同时有效,地址锁存信号ALE将出现在数据总线上的模拟通道地址锁入地址锁存器中,同时START信号启动芯片开始A/D转换。在转换结束后,CPU向ADC0809执行一条输入指令时, , 和地址信号同时有效,这时输出允许信号OE有效,输出三态门被打开,已转换好的资料送到数据总线上被取走。
转换是否结束,可查询EOC信号状态。若采用中断方式读取资料,则可利用EOC信号在转换结束时发中断请求脉冲。
ADC0809的时钟频率为640KHz,转换时间为100µs。由于微机的时钟频率为5MHz或者更高一些,因此,系统时钟必须经分频后接到ADC0809芯片的CLOCK引脚上。
3.2 8155和8031接口硬件电路设计
3.2.1 8155芯片的结构
 


          (b)引脚图
3.2.2 8155芯片的引脚功能
8155芯片是一种多功能的可编程常用外围接口芯片,它具有三个可编程I/O端口(A口和B口是8位C口是6位)一个可编程14位定时计数器和256字节的RAM,能方便地进行I/O扩展和RAM扩展,
RESET:复位输入信号
AD0~AD7:三态地址/数据复用线。与单片机的低8位地址/数据总线(P0口)相连。单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。
:片选信号,低电平有效。
:读选通信号线,低电平有效
:写选通信号线,低电平有效
IO/,RAM/IO选择,IO/=O, =0时,单片机选择8155的RAM读写AD0~AD7上的地址为8155的RAM单元地址。
当IO/=1, =0时,单片机选择8155的I/O读写AD0~AD7上的地址为8155的I/O地址。
ALE:地址锁存信号。8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及 ,IO/ 的状态都锁存到8155内部锁存器。因此,P0口输出的低8位地址信号不需外接锁存器。
PA0~PA7:8位通用I/O口,其输入、输出的流向可由程序控制。
PB0~PB7:8位通用I/O口,功能同A口。
PC0~PC7:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。
TIMER:  定时计数器的输入端
:定时计数器的输出端
VCC:+5V电源。
3.2.3 8155与8031接口电路
8155和8031可以直接连接,不需要任何外加电路,对系统增加了256字节的RAM,22位I/O线及一个计数器,电路中8031的P2.1接8155的CE,P2.0接8155的IO/ ,P0.0~P0.7接8155的AD0~AD7时,8155的I/O和RAM地址分配将是:
(1) P2.1=0,P2.0=0时选中8155片中RAM,地址是0000H~00FFH
(2) P2.1=0,P2.0=1时选中I/0口,各口分配地址为:
0100H命令状态寄存器
0101H  A口地址
0102H  B口地址
0103H  C口地址
0104H计数值低8位
0105H计数值高8位和方式寄存器
(3) 8155的命令字和状态字
8155的控制逻辑部件中设置了一个控制命令寄存器和一个状态标志寄存器。8155的工作方式则由控制命令其存器中的控制字确定。
a.    8155的命令字
命令寄存器格式如图3.5所示
       图3.5  8155命令寄存器格式
                          
b. 8155的控制字
8155内还有一个状态寄存器,用于锁存输入/输出口和定时/计数器的当前状态,供CPU查询用。状态寄存器的端口地址与命令寄存器相同,低8位也是00H,状态寄存器的内容只能读出不能写入。所以可以认为8155的I/O口地址00H是命令/状态寄存器,对其写入时作为命令寄存器;而对其读出时,则作为状态寄存器。
状态寄存器的格式如图3.6所示。
 
基于单片机的电加热炉温度控制系统的设计

图3.7  8031与8155接口电路图
3.3 2732EPROM的工作原理及硬件接口设计
3.3.1 2732的管脚图:(24线双列直插式封装)
 
 
图3. 8 2732管脚图
3.3.2 2732EPROM与8031硬件接口电路
2732是4K×8位EPROM器件,有12根地址线A11~A0,这12根地址线中高4位A8~A11与P2.0~P2.3连接,低8位A0~A7与地址锁存器74LS373的输出端Q0~Q7连接(这里地址可影响P0口的地址)数据端D0~D7直接与8031的P0口连接,当8031系统发出低12位地址信息时,分别选中2732片内4K字节存储器中各单元,2732的CE引脚为片选信号输入端,低电平有效,表示选中该2732芯片。该片选信号决定了2732这块芯片的4K字节存储器在8031系统扩展程序存储器64KB空间中的位置,图中接法2732占有的扩展程序存储器地址空间为0000H~07FFH。可以寻址片内4K字节存储器中任何单元,所以称2732为4K字节EPROM。它是一种可编程只读存储器,单一正5V供电,最大静态电流150mA,维持电流30mA。
此外,2732的 端,Vpp、 端可组合成2732的各种工作方式(读待机即维持,写即编程,编程检验等)图中连接法其工作方式为读状态,当 选通信号为低电平选通2732即把2732中的D0~D7端口上的程序或常数读入,8031单片机的P0口上去,当 为高电平时,即无效,则禁止2732的数据读入P0口。
                                                                                                                                            
图3.9  2732EPROM与8031硬件接口电路
图中74LS373是带三态输出的8口锁存器,扩展电路中用作外部地址锁存器,三态控制端E接地,以保持输出畅通,其三态输出还有一定的驱动能力,G端与8031单片机的ALE连接,当G=1时(ALE高电平持续期间)74LS373的输出Q0~Q7随其输入的D0~D1的状态变化即P0 口送出的8位地址信号一旦输出,就能映射到2732EPROM的地址输入A0~A7上,G端的状态由“1”变“0”时(ALE不跳变)低8位地址被锁存。
3.4 键盘和显示接口技术
在单片机应用系统中,键盘用于输入数据、代码和命令;显示器用来显示单片机的键入值、控制过程中间信息及运算结果等。键盘和显示器是实现人机对话,两个必不可少的功能配置。下面介绍键盘、LED显示器及LCD显示器与单片机(MCU)的接口技术。
3.4.1 键盘接口技术
键扫描方式:
a. 程控扫描方式:CPU从执行程序就开始了键盘的扫描,等待来是键盘的命令。
b. 定时扫描方式:在程序初始化时,先对定时/计数器进行设置,使其每10ms中断一次,每次中断,CPU将去扫描一次键盘,若两次中断扫描到有键按下(这里考虑了消抖动),CPU将对键作相应的处理。
c. 中断扫描方式:采用中断扫描方式必需有外部中断接口,当有键按下时,产生中断请请求,CPU响应中断,在中断服务程序扫描键盘,作相应处理。这是多任务应用系统常用的一种方式。
3.4.2 显示接口技术
a. 显示器结构与原理
LED数码管是由发光二极管显示字段的显示器件。在微机应用系统中通常使用的是七段LED。这种显示块有共阴极与共阳极两种。
a.              LED显示接口技术
(1)静态显示接口技术
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。通过MCU的口线的显示接口电路。
数码管既可直接接单片机的口线(如果是P0口的话,只能接共阳极的,接共阴的要接上拉电阻),又可通过锁存器接单片机口线。
(2)动态显示接口技术
动态扫描显示接口电路。接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。
c. LCD显示接口技术
LCD显示器分字符型和点阵型两种.4  温度控制程序和算法
4.1 温度控制的算法
通常,电阻炉炉温控制采用偏差控制法。偏差控制的原理是先求出实测炉温对所炉温的偏差值,然后对偏差值处理而获得控制信号去调节电阻炉的加热功率,以实现对炉温的控制。
按照偏差的比例,积分和微分产生控制作用,简称PID控制,是过程控制中应用最广泛的一种控制形式,通过对实际运行效果和理论分析表明,这种控制规律在相当多的工业生产中能得到比较好的效果。
计算机PID算法是用差分方程近似实现的。
用微分方程表示PID调节规律的理想算式为:式中e(t)=r(t)-y(t)为偏差信号,是调节器的输入信号;r(t) 是给定值;y(t)为被控变量;U(t)为调节器输出的控制信号;Kp为比例系数;Ti为积分时间常数;Td为微
分时间常数。计算机只能处理数字信号,若采样周期为T,第几次采样输入偏差为en,调节器输出为Un,PID算法中的微分用差分代替,积分用代替,于是得到,写成递
推形式:改写成:
由于电阻炉一般都属于一阶对象和带纯滞后的一阶对象,所以式中KP、KI、KD的选择取决于电阻炉的阶跃响应特性和实际经验,在程序中假设都为正小数,参与运算的数都变为计算机易于处理的形式,数据处理方法如下:
(1) 把所有的数都变成定点纯小数进行处理
(2)算式中的各项都有正负,用补码表示,计算结果以原码输出。
(3)双精度运算,为了保证运算精度把单字节16位进行运算,最后结果取8位有效值输出。
4.2 温度控制程序
温度控制程序的设计应考虑如下问题:1. 键盘扫描,键盘识别,温度显示;2. 炉温采样,数字滤波;3. 数据处理时把所有数转换成定点纯小数补码形式,然后把8位温度采样值,                      Umin和Umax都变成16位参加运算,运算结果取8位有效值;4. 越限报警和处理;5. PID计算,温度标度转换
通常,符合上述功能的温度控制程序由主程序和T0中断服务程序组成
 

基于单片机的电加热炉温度控制系统的设计

5  系统程序设计
系统控制程序采用两次中断嵌套方式来设计,首先使T0计数器能产生与秒钟定时中断,作为本系统的采样周期,在中断服务程序中启动A/D读入采样数据,进行数据滤波、上下线报警处理、PID计算,然后输出控制脉冲信号,脉冲的宽度由T1计数器溢出中断决定。在等待T1中断时,将本次采样数值转换成对应的温度值放入显示缓冲区,然后用显示子程序,从T1中断返回后,再从T0中断返回主程序并继续显示本次采样温度,等待下次T0中断。
5.1 系统控制主程序的设计
主程序应包括89C52本身的初始化,8155初始化等等。为简化起见,本程序只给出有关标志,暂存单元和显示缓冲区清零,T0初始化、开CPU中断。温度显示和键盘扫描等程序。
5.1.1 主程序流程图
 
图 5.1主程序流程图
5.1.2 主程序清单:
ORG 0100H
DISM0  DATA 78H
DISM1  DATA 79H
DISM2  DATA 7AH
DISM3  DATA 7BH
DISM4  DATA 7CH
DISM5  DATA 7DH
DISM6  DATA 7EH
DISM7  DATA 7FH
MOV  SP,  #50H       ; 50H送SP
   CLR  5EH             ; 清本次越限标志
   CLR  5FH             ; 清上次越限标志
   CLR  A               ;清累加器A
   MOV  2FH,   A   
   MOV  30H,   A
   MOV  3BH,   A           
MOV  3CH,   A     ;清暂存单元
   MOV  3DH,   A       
   MOV  3EH,   A       
   MOV  44H,   A       
   MOV  DISM0, A    ;
   MOV  DISM1, A    ;
   MOV  DISM2, A    ;
   MOV  DISM3, A    ;清显示缓冲区
MOV  DISM4, A       
   MOV  DISM5, A   
   MOV  DISM6, A
MOV  DISM7, A
MOV  TMOD, #56H  ; 设T0为记数方式2,T1为记数方式1
MOV  TL0,  #06H  ;
   MOV  TH0,  #06H  ;T0赋初值
   CLR   PT0         ;令T0为底中断优先级
   SETB  TR0         ;启动T0工作
SETB  ET0         ;允许T0中断
   SETB  EA          ;开CPU中断
LOOP : ACALL DISPLY      ;调用显示程序
   ACALL SCAN         ;调用扫描程序
   AJMP  LOOP         ;等待中断
5.2 T0 中断服务程序CT0
T0中断服务程序是温度控制系统的主体程序,用于启动A/D转换,读入采样数据,数字滤波,越限温度报警和越限处理,PID计算和输出可控硅的同步触发脉冲等。P1.3引脚输出的该同步触发脉冲宽度由T1计数器的溢出中断控制,89C52利用等待T1溢出中断空隙时间完成把本次采样值转换成显示值而放入显示缓冲区和调用温度显示程序。89C52从T1中断服务程序返回后便可以恢复现场和返回主程序,以等待下次T0中断。
在T0中断服务程序中,还需要用到一系列子程序。例如:温度采样值的子程序,数字滤波子程序,越限处理子程序,PID计算程序,标度转换程序和温度显示程序。在PID计算程序中,也需要双字节加法子程序,双字节求补子程序和双字节带符号数乘法子程序等。 若图片无法显示请联系QQ3710167,基于单片机的电加热炉温度控制系统的设计系统免费,转发请注明源于www.lwfree.cn
5.2.1 T0中断服务程序流程图:
如下图所示
 
基于单片机的电加热炉温度控制系统的设计
5.2.2 T0中断服务程序清单:
  ORG 000BH
   AJMP  CT0
CT0: PUSH  ACC             ;
   PUSH  DPL            ;保护现场
   PUSH  DPH             ;
   SETB  D5H            ;置标志
   ACALL    SAMP         ;调用采样子程序
   ACALL    FILTER       ;调用数字滤波程序
CJNE  A, 42H, TPL     ;
WL:  MOV     C, 5EH        ;
  MOV     5FH,  C         ;
  CLR      5EH            ;清5Eh单元
  ACALL   UPL             ;转上限处理程序
  POP      DPH
  POP      DPL
  POP      ACC
RETI                   ;中断返回
TPL :  JNC    TPL1           ; 若Ui(K)>Umax,则TPL1
CLR   5FH             ; 清上次越限标志
CJNE  A , 43H, MTPL   ;若Ui(K)≠Umin,则MTPL
HAT :  SETB    P1.1          ;若温度不越限,则令绿灯亮
ACALL  PID            ;调用计算PID子程序
MOV    A,  2FH        ;PID值送A对PID值求补,作为TL1值
 CPL     A             ;
INC     A             ;
NM:    SETB    P1.3          ;令P1.3输出高电平脉冲
MOV     TL1,   A      ;
MOV    TH1, #0FFH     ; T1赋初值
SETB    PT1            ;T1高优先级中断
SETB    TR1            ;启动T1
SETB    ET1            ;允许T1中断
ACALL  TRAST           ;调用标度转化程序
LOOP :    ACALL  DISPLY           ;显示温度
JB      D5H,  LOOP     ;等待T1中断
POP     DPH             ;
            POP     DPL             ;恢复现场
POP     ACC             ;
RETI                    ;中断返回
MTPL:   JNC     HAT              ;若Ui(K)>Umin ,则HAT
SETB   P1.0              ;否则越下限声光报警
MOV    A, 45H   ;取PID最大值输出对PID值求补,作为TL1值
CPL     A           
INC     A                      
AJMP    NM                ;转NM 执行
TPL1:  SETB    5EH                ;若Ui(K)>Umax,则5EH单元置位
JNB     5FH,  WL           ;若上次未越限。则转WL
INC     44H                ;越限计数器加“1”
MOV    A,  44H
CLR    C
SUBB   A, #N               ;越限N次吗 ?
JNZ    WL                 ;越限小于N 次,则WL
SETB   P1.2                ;否则越上限声光报警
CLR    5EH                  ;
CLR    5FH                  ;清越限标志
POP    DPH                  ;

    AJMP  CT1
CT1:  CLR  D5H                   ; 清标志
    CLR  P1.3                  ; 令P1.3变为低电平
        RETI                        ;  中断返回
 

基于单片机的电加热炉温度控制系统的设计
图 5.3 采样子程序流程图
5.3.2 采样子程序:
   SAMP:  MOV     R0, #2CH        ;采样值始送R0
           MOV     R2, #03H       ;采样次数初值送R2
           MOV     DPTR, @03F8H
SAM1:  MOVX    @DPTR, A        ;启动ADC0809工作
          MOV     R3, #20H
DLY:   DJNZ    R3, DLY         ;延时
HERE:   JB        P3.3,  HERE   ;等待A/D完成
           MOVX    A,  @DPTR        ;采样值送A
           MOV     @R0,  A          ;存放采样值
           INC      R0
           DJNZ     R2,  SAM1        ;若采样未完,则SAM1
           RET                        ;若已采样完,则返回
5.4 数字滤波
微机控制系统通常直接放在生产现场,会受到严重干扰,系统采用滤波方法来滤除干扰,数字滤波算法有很多,本系统采用中值滤波,就是连续三次取样,取中间值作为本次采样值。
三次采样值分别放于2CH,2DH,2EH中,取中间值放在累加器A中,同时也转放在2AH单元中,以备进行温度标度转换用。
图 5.4 数字滤波程序流程图
5.4.2 数字滤波子程序:
FITER:     MOV   A, 2CH                 ;(2CH)送A
       CJNE   A, 2DH,  CMP1       ;若(2CH)≠(2DH),则CMP1
       AJMP   CMP2                  ;否则,转CMP2
CMP1:      JNC     CMP2                  ;若(2CH)>(2DH),则
       XCH    A, 2DH               ;
       XCH    A, 2DH               ;  
CMP2:      MOV    A, 2DH               ;(2DH)送A
        CJNE    A, 2EH, CMP3    ;若(2DH)≠(2EH),则CMP
        MOV    2AH,A             ;否则,(2DH)送2AH
         RET                     ;返回
CMP3:      JC       CMP4            ;若(2DH)<(2EH),则CMP4
        MOV    2AH,  A           ;否则, (2DH)送2AH
        RET                      ;返回
CMP4:       MOV    A, 2EH             ;(2EH)送A
        CJNE    A, 2CH, CMP5     ;若(2EH)≠(2CH),则 CMP5
        MOV    2AH, A              ;否则,(2EH)送2AH
        RET                      ;返回
CMP5:      JC      CMP6              ;若(2EH)<(2CH),则CMP6
     
5.5 PID 计算程序:
a. MOV    R5, 31H          ; Ur 送R5R4PID  
   MOV    R4, 32H          ;
   MOV    R3, 2AH          ;    Ui(K) 送R3R2:
   MOV    R2, #00H         ;   
   ACALL  CPL1             ;取ui(K)的补码
   ACALL  DSUM            ;计算E(K)
MOV    39H,  R7         ;   
   MOV    3AH,  R6         ; E(K)送39H和3AH单元:
   MOV    R5 , 35H         ; K1送R5R4: 
   MOV    R4, 36H          ;   
   MOV    R0  #4AH         ;基地址4A送HR0
ACALL  MULT1            ;计算Pi=Ki·E(k)
   MOV    R5, 39H          ;E(K)送R5R4  
   MOV    R4, 3AH              
   MOV    R3, 3BH          ; E(K-1)送R3R2  
   MOV    R2, 3CH            

MOV    R5, 49H           ;Pp的高16位送R5R4   
   MOV    R4, 48H             
   MOV    R3, 4DH           ;KP1送R3R2  
   MOV    R2, 4CH             
   ACALL  DSUM               ;求得Pp+p1
   MOV    4AH, R7     
   MOV    4BH,R8             ; 存入4AH和4BH单元           
MOV    R5, 39H            ; E(K)送R5R4             
   MOV    R4, 3AH            
   MOV    R3, 3DH            ; E(K-2)送R3R2         
   MOV    R2, 3EH
ACALL  DSUM                ;计算E(K)+E(K-2)             
          MOV    R5, R7            
   MOV    R4, R6              ;存入R5﹑R4               
   MOV    R3, 3BH             ;E(K-1)送R3R2      
   MOV    R2, 3CH          
   ACALL  CPL1                ;对E(K-1)求补
   ACALL   DSUM                ;计算{E(K)+E(K-2)-E(K-1)}
MOV     R5, R7              ;存入R5﹑R4   
   MOV     R4, R6              
   MOV     R3, 3BH            ;E(K-1)送R3﹑R2     
   MOV     R2, 3CH           
ACALL   CPL1                 ;对E(K-1)求补
ACALL   DSUM                 ;求E(K)-2E(K-1)+E(K-2)
MOV     R5, 37H             ;Kd送R5R4
MOV     R4, 38H
MOV     R0, #46H            ;基地址46H送R0
ACALL   MULT1                ;求得Pd
MOV     R5, 49H             ;送入R5R4

MOV     R2, R6              
MOV     R5,2FH             
MOV     R4,30H             
ACALL   DSUM                  
MOV     2FH,R7             
MOV     30H,R6              
MOV     3DH,3BH             
MOV     3EH,3CH            
MOV     3BH,39H            
MOV     3CH,3AH            
RET
 
b. 双字节加法程序DSUM
DSUM:  MOV  A, R4
       ADD  A, R2
 

基于单片机的电加热炉温度控制系统的设计
 MOV  R6,R5
        ADDC  A, R3
        MOV  R7,  A
        RET
c. 双字节求补程序CPL1
CPL1: MOV  A, R2
       CPL   A
       ADD  A, #01H
       MOV  A,  R3
       CPL   A
       ADDC  A,#00H
       MOV  R3,  A
       RET
d. 带符号双字节乘法程序:
带符号双字节乘法流程图:
5.5 带符号双字节乘法流程图:
带符号乘法子程序MULT1:
MULT1:  MOV  A ,R7
               RLC  A
               MOV  SIGN1 ,C      ;被乘数符号送SIGN1
               JNC    POS1         ;若被乘数为正,则POS1
               MOV  A  ,R6         ;对R7求补
               CPL    A
               ADD   A, #01H
               MOV   R6, A
               MOV   A,R7           ;对R4求补
               CPL    A
               ADDC   A , #00H
               MOV   R7, A               
POS1:  MOV    A ,R5
               RLC    A
               MOV   SIGN2,C          ; 乘数符号送SIGN2
               JNC    POS2 
               MOV   A ,R4             ;对R4求补
               CPL    A
               ADD    A , # 01H
               MOV   R4, A
                MOV   A, R5             ;对R5求补
               CPL     A
               ADDC   A, #00H
               MOV   R5, A
    POS2:      ACALL  MULT             ;调用无符号程序                                  
               MOV   C , SIGN1
               ANL   C , SIGN2
                JC     TPL              ;若是,则TPL
                MOV  C , SIGN1     ;否则,判两乘数
                ORL   C, SIGN2  
                JNC   TPL           ;若是,则TPL
                DEC   R0            ;否则,对成绩的高16为求补                     
                MOV  A , @R0
                CPL    A
                ADD   A , #01H
                MOV   @R0 , A
                INC    R0
                MOV   A , @R0
                CPL    A
                ADDC  A , #00H
                MOV   @R0, A
TPL:   RET
                END
5.6 扫描显示程序:
SCAN:  MOV   DPTR,#7FF8H
                MOV   A,#01H
                MOVX  @DPTR,A
KEY:   ACALL KST
                CJNE  A,#0FH,KEY1
                ACALL DELAY

        MOVX   A,@DPTR
        ANL    A,#0FH
        CJNE   A,#0FH,KEY4
 

基于单片机的电加热炉温度控制系统的设计
  MOV  A,R2
        RL A
        DJNE   R4,KEY3
        LJMP   KEY
KEY4: MOV 20H,R2
        MOV    21H,A
        MOV    R7,#00H
        MOV    A,#00H
        MOV    DPTR,#TAB1
KEY5: MOVC   A,A+@DPTR
        CJNE   A,20H,KEY6
        INC    DPTR
        PUSH   DPH
        PUSH   DPL
        CJNE   A,21H,KEY6
        MOV    DPTR,#TAB2
        MOV    A,R7
        ADD    A,DPL
        MOVC   A,A+@DPTR
        MOV    22H,A
KEY6:  INC R7
        POP    DPL
        POP    DPH
        AJMP   KEY5
KST:   MOV DPTR,#7FF9H
        MOV    A,#00H
        MOVX   @DPTR,A
        INC    DPTR
        INC    DPTR
        MOVX   A,@DPTR
        ANL    A,#0FH
        RET
TAB1:  DW  FE0EH,FD0EH,FB0EH,F70EH
           EF0EH,DF0EH,BF0EH,7F0EH
        DW  FE0DH,FD0DH,FB0DH,F70DH
           EF0DH,DF0DH,BF0DH,7F0DH
        DW  FE0BH,FD0BH,FB0BH,F70BH
           EF0BH,DF0BH,BF0BH,7F0BH
        DW  FE07H,FD07H,FB07H,F707H
           EF07H,DF07H,BF07H,7F07H
TAB2:  DB  30H,31H,32H,33H,34H,35H,36H,37H
 
DISPLAY:   SWTB   RS0
       PUSH   ACC
       PUSH   DPH
       PUSH   DPL
       MOV R2,#08H
       MOV R0,#DISM7
DL0:   MOV A,@R0
       MOV DPTR,#TAB
       MOVC   A,@A+DPTR
       MOV SBUF,A
DL1:   JNB TI,DL1
       CLR TI
 
TAB:   Db  C0H,F9H,A4H,B0H,99H
       DB  92H,82H,F8H,80H,90H
       DB  88H,83H,C6H,A1H,86H
       DB  8EH,BFH,8CH,FFH
 

 基于单片机的电加热炉温度控制系统的设计
结  论
当今高科技社会计算机高速发展,单片机在自动化与智能化有了突飞猛进的发展。而温度控制在冶金、化工等领域起着举足轻重的作用。
在学校专业老师辅导的关心和帮助下,我顺利完成了这次毕业设计,通过这次毕业设计,使我对单片机的应用、微机原理、传感器技术等等好多专业知识有了更深的了解,解决了许多在学习过程中不能理解的知识,并且提高了自己理论联系实际的能力,为今后在工作中专业知识的应用积累了宝贵的经验。
本设计硬件部分由温度检测、数据处理和温度控制三部分组成,利用单片机作为数据处理器,并运用PID算法进行数据处理。单片机定时对温度进行检测,信号经A/D变换得到相应的数字量,送到计算机中进行判断和运算得到相应的控制量,去控制加热功率。
通过这次毕业设计,使我对单片机原理有了更新的认识,掌握了常用芯片如MCS—51、DAC0809、8155等器件的功能,懂得了这些器件在实际生产中的最基础的应用,掌握计算机的一些画图、排版等软件的应用,真的是受益非浅。
临近毕业,我发觉我的知识比刚进学校时长进不少,但同时也意识到还有许多的不足,以后不管在学校还是在工作单位,仍然要不断的努力,不断的提高自己的能力。
致  谢
在论文完成之际,我要特别感谢我的指导老师的热情关怀和悉心指导。在我撰写论文的过程中,老师给了我很多帮助,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面。在这段时间里,不仅大大提高了我的实践经验,也使我学到了许多在书本上没有学到的知识,开拓了视野,增广了知识面,最重要的是学到了如何利用信息资源帮助自己寻找资料,提高了自己的自学能力。我对本课题涉及的内容本来知道的很少,经过了这次的学习和指导老师的悉心教导,现在已经对它有了深刻的认识,虽然无法达到专业水平,但也有了不少的收获,感觉自己受益匪浅。
在论文的写作过程中,也得到了许多同学的宝贵建议,同时还得到在工作过程中许多同事的支持和帮助,在此一并致以诚挚的谢意。
最后感谢在这四年里所有关心、支持、帮助过我的良师益友。
 

基于单片机的电加热炉温度控制系统的设计
参 考 文 献
1  李芷,扬文显,卜艳萍. 微机原理与接口技术 [M].北京:电子工业出版社,2003.08
2  肖金球. 单片机原理与接口技术 [M].北京:清华大学出版社,2004.12
3  郑学坚,周斌. 微型计算机原理及应用 [M] .北京:清华大学出版社,2005.01
4  何立民. MCS-51系列单片机应用系统设计.[M].北京:北京航空航天大学出版社,1990
5  邹历新,翁桂荣. 单片微型计算机原理.[M]苏州:苏州大学出版社,2001
6  张友德. 单片微型机原理,应用与实验. [M]上海:上海复旦大学出版社,1992
7  赵茂泰. 智能仪器原理及应用.[M]北京:电子出版社,2004.07
8  阎石. 数字电子技术基础.[M]北京:高等教育出版社,1998.12
9  康华光. 电子技术基础:模拟部分[M] 北京:高等教育出版社,1999.6
10  王丽华,郑树展. 基于单片机的电加热炉温度控制系统设计.天津职业大学学报Vol.15,No.4
11  梁新荣,吴智铭. 电加热炉温度单片机控制系统的研制.电气传动 2000(3) 
12  张开生, 郭国法. 单片机温度控制系统的设计. 中文核心期刊 《微计算机信息》(嵌入式与SOC)2005 年第 21卷第7期
13  李林静, 基于单片机的炉温系统 .通用机械,2004(1)
14  李萍, 单片机温度控制系统的设计实现固原专学报(自然科学版)Vol.20 no.6 nov.1999
 
基于单片机的电加热炉温度控制系统的设计
附录A  译文
 
ATmega48/88/168
 
 产品特性
• 高性能、低功耗的8 位AVR® 微处理器
• 先进的RISC 结构
– 131 条指令 – 大多数指令的执行时间为单个时钟周期
– 32 x 8 通用工作寄存器
– 全静态操作
– 工作于20 MHz 时性能高达20 MIPS
– 只需两个时钟周期的硬件乘法器
• 非易失性的程序和数据存储器
– 4/8/16K 字节的系统内可编程Flash (ATmega48/88/168)
擦写寿命: 10,000 次
– 具有独立锁定位的可选Boot 代码区
通过片上Boot 程序实现系统内编程
真正的同时读写操作
– 256/512/512 字节的EEPROM (ATmega48/88/168)
擦写寿命: 100,000 次
– 512/1K/1K 字节的片内SRAM (ATmega48/88/168)
– 可以对锁定位进行编程以实现用户程序的加密
• 外设特点
– 两个具有独立预分频器和比较器功能的8 位定时器/ 计数器
– 一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器
– 具有独立振荡器的实时计数器RTC
– 六通道PWM
– 8路10 位ADC(TQFP 与MLF 封装)
– 6路10 位ADC( PDIP 封装)
– 可编程的串行USART 接口
– 可工作于主机/ 从机模式的SPI 串行接口
– 面向字节的两线串行接口
– 具有独立片内振荡器的可编程看门狗定时器
– 片内模拟比较器
– 引脚电平变化可引发中断及唤醒MCU
• 特殊的微控制器特点
– 上电复位以及可编程的掉电检测
– 经过标定的片内振荡器
– 片内/ 外中断源
– 五种休眠模式:空闲模式、ADC 噪声抑制模式、省电模式、掉电模式和Standby 模式
• I/O 口与封装
– 23个可编程的I/O 口线
– 28引脚PDIP, 32 引脚TQFP 与32 引脚MLF 封装
• 工作电压:
– ATmega48V/88V/168V:1.8 - 5.5V
– ATmega48/88/168:2.7 - 5.5V
• 工作温度范围:
– -40°C 至85°C
• 工作速度等级:
– ATmega48V/88V/168V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATmega48/88/168: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
• 极低功耗
– 正常模式:
1 MHz, 1.8V: 240μA
32 kHz, 1.8V: 15μA ( 包括振荡器)
– 掉电模式:
1.8V, 0.1μA
1.引脚配置
Figure 1-1.  ATmega48/88/168 引脚排列
 

基于单片机的电加热炉温度控制系统的设计
1.1 引脚说明
1.1.1 VCC
数字电路的电源。
1.1.2 GND
地。
1.1.3 端口B(PB7..0)XTAL1/XTAL2/TOSC1/TOSC2
端口B为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B保持为高阻态。
通过对系统时钟选择位的设定,PB6可作为反向振荡放大器与内部时钟操作电路的输入。
通过对系统时钟选择位的设定, PB7 可作为反向振荡放大器的输出。
系统使用内部RC 振荡器时,通过设置ASSR 寄存器的 AS2 位,可以将PB7..6 作为异步定时器/ 计数器2 的输入口TOSC2..1 使用。
端口B 也可以用做其他不同的特殊功能。
1.1.4 端口C(PC5..0)
端口C 为7 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 保持为高阻态。
1.1.5 PC6/RESET
RSTDISBL位被编程时,可将PC6作为一个I/O口使用。因此,PC6引脚与端口C其他引脚的电特性是有区别的。
RSTDISBL位未编程时, PC6将作为复位输入引脚Reset。此时,即使系统时钟没有运行,该引脚上出现的持续时间超过最小脉冲宽度的低电平将产生复位信号。最小脉冲宽度在表格中给出。持续时间不到最小脉冲宽度的低电平不会产生复位信号。端口C 也可以用做其他不同的特殊功能,请参见“ 端口C 的第二功能” 。
1.1.6 端口D(PD7..0)
端口D 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D 呈现为三态。
端口D 也可以用做其他不同的特殊功能,请参见 “ 端口D 的第二功能” 。
1.1.7 AVCC
AVCC AVCC为A/D转换器的电源。当引脚 PC3..0与 PC7..6用于ADC时,AVCC应通过一个低通滤波器与VCC 连接。不使用 ADC 时该引脚应直接与VCC 连接。PC6..4 的电源则是由VCC提供的。
AREF AREF 为ADC 的模拟基准输入引脚。
ADC7..6 (TQFP 与MLF 封装) TQFP 与MLF 封装芯片的 ADC7..6 引脚为两个10 位A/D 转换器的输入口,它们的电压由AVCC 提供。
1.1.8 AREF
AREF 为ADC 的模拟基准输入引脚。
1.1.9 ADC7..6 (TQFP 与MLF 封装)
TQFP 与MLF 封装芯片的 ADC7..6 引脚为两个10 位A/D 转换器的输入口,它们的电压由AVCC 提供。
2.综述
ATmega48/88/168是基于AVR增强型RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATmega48/88/168 的数据吞吐率高达 1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
2.1 方框图
图2-1 结构框图
 

基于单片机的电加热炉温度控制系统的设计
AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。
ATmega48/88/168有如下特点: 4K/8K/16K字节的系统内可编程Flash(具有在编程过程中还可以读的能力,即RWW), 256/512/512 字节 EEPROM, 512/1K/1K 字节 SRAM,23 个通用I/O 口线, 32 个通用工作寄存器,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口,一个SPI 串行端口,一个 6 路10 位ADC (TQFP 与MLF 封装的器件具有8 路10 位ADC), 具有片内振荡器的可编程看门狗定时器,以及五种可以通过软件选择的省电模式。空闲模式时CPU 停止工作,而SRAM、T/C、USART、两线串行接口、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态; ADC 噪声抑制模式时CPU 和所有的I/O 模块停止运行,而异步
定时器和ADC 继续工作,以减少ADC 转换时的开关噪声; Standby 模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力。
ATmega48/88/168 是以Atmel 的高密度非易失性内存技术生产的。片内 ISP Flash 可以通过SPI 接口、通用编程器,或引导程序进行多次编程。引导程序可以使用任意接口将应用程序来下载到应用Flash 存储区。在更新应用Flash 存储区时引导程序区的代码继续运行,从而实现了FLASH 的RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash集成在一个芯片内, ATmega48/88/168 为许多嵌入式控制应用提供了灵活而低成本的方案。
ATmega48/88/168 AVR 有整套的开发工具,包括C 编译器,宏汇编,程序调试器/ 仿真器和评估板。
2.2  ATmega48, ATmega88, 与ATmega168 的兼容性
ATmega48、 ATmega88 与ATmega168 只是在存储器大小、boot loader 支持及中断向量
长度上存在差别。表2-1给出了三种器件在存储器与中断向量长度方面的差别。
表2-1. 存储器大小简述

ATmega88 与ATmega168 支持真正的同时读写自编程操作。芯片具有独立的Boot
Loader 区,SPM指令只能在这个FLASH区里得到执行。而ATmega48不支持同时读写操作,它没有独立的Boot Loader 区, SPM 指令可以访问整个Flash 区。
3.AVR CPU 内核
3.1 概述
介绍本节从总体上讨论AVR 内核的结构。CPU 的主要任务是保证程序的正确执行。因此它必须能够访问存储器,执行运算,控制外设以及处理中断。
3.2 结构综述
Figure 3. AVR 结构的方框图
 

基于单片机的电加热炉温度控制系统的设计
为了得到最大程度的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器为可以在线编程的FLASH。
快速访问寄存器文件包括32 个8 位通用工作寄存器,访问时间为一个时钟周期。从而可以实现单时钟周期的ALU 操作。在典型的ALU 操作过程中,两个位于寄存器文件的操作数同时被访问,然后执行相应的运算,结果再送回寄存器文件。整个过程仅需要一个时钟周期。
寄存器文件里有6 个寄存器可以用作3 个16 位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16 位的X、Y、Z 寄存器。
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完成之后状态寄存器的内容将更新以反映操作结果。
程序流程通过有/ 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16 位,亦即每个程序存储器地址都包含一条16 位或32 位的指令。
程序存储器空间分为两个区:引导程序区和应用程序区。这两个区都有专门的锁定位以实现读和读/ 写保护。写应用程序区的SPM 指令必须位于引导程序区。
在中断和调用子程序时返回地址的程序计数器(PC) 保存于堆栈之中。堆栈位于通用数据SRAM,故此嵌套深度仅受限于SRAM 的大小。在复位例程里用户首先要初始化堆栈指针SP。这个指针位于I/O 空间,可以进行读写访问。数据SRAM 可以通过5 种不同的寻址模式进行访问。
AVR 存储器为线性的平面结构。
AVR 具有一个灵活的中断模块。控制寄存器位于I/O 空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。
I/O 存储器空间包含64 个可以直接寻址的地址,作为CPU 外设的控制寄存器、SPI,以及其他I/O 功能。映射到数据空间即为寄存器文件之后的地址0x20 - 0x5F。此外,ATmega48/88/168 还有位于SRAM地址0x60 - 0xFF 的扩展I/O空间,这些地址只能使用ST/STS/STD 和LD/LDS/LDD 指令来访问。
3.3 ALU -算术逻辑单元
AVR ALU 与32 个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU 运算只需要一个时钟周期。ALU 操作分为3 类:算术、逻辑和位操作。此外还提供了支持无/ 有符号数和分数乘法的乘法器。具体请参见 “ 指令集” 。
3.4 状态寄存器
状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以实现条件操作。如指令集所述,所有ALU 运算都将影响状态寄存器的内容。这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。
在进入中断服务程序时状态寄存器不会自动保存;中断返回时也不会自动恢复。这些工作需要软件来处理。
 AVR 中断寄存器 SREG 定义如下:

• Bit 7 – I: 全局中断使能
置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果I 清零,则不论单独中断标志置位与否,都不会产生中断。任意一个中断发生后I 清零,而执行RETI
指令后置位以使能中断。I 也可以通过SEI 和CLI 指令来置位和清零。
• Bit 6 – T: 位拷贝存储
位拷贝指令BLD 和BST 利用T 作为目的或源地址。BST 把寄存器的某一位拷贝到T,而BLD 把T 拷贝到寄存器的某一位。
• Bit 5 – H: 半进位标志
半进位标志H 表示算术操作发生了半进位。此标志对于BCD 运算非常有用。详见 “ 指令集” 的说明。
• Bit 4 – S: 符号位, S = N ⊕ V
S 为负数标志N 与2 的补码溢出标志V 的异或。详见“ 指令集” 的说明。
• Bit 3 – V: 2 的补码溢出标志
支持2 的补码运算。详见“ 指令集” 的说明。
• Bit 2 – N: 负数标志
表明算术或逻辑操作结果为负。详见“ 指令集” 的说明。
• Bit 1 – Z: 零标志
表明算术或逻辑操作结果为零。详见“ 指令集” 的说明。
• Bit 0 – C: 进位标志
表明算术或逻辑操作发生了进位。详见 “ 指令集” 的说明。
4.5 通用寄存器文件
 寄存器文件针对AVR 增强型 RISC 指令集做了优化。为了获得需要的性能和灵活性,寄
存器文件支持以下的输入/ 输出方案:
• 输出一个 8 位操作数,输入一个 8 位结果
• 输出两个 8 位位操作数,输入一个 8 位结果
• 输出两个 8 位位操作数,输入一个 16 位结果
• 输出一个 16 位位操作数,输入一个 16 位结果
Figure 4-1 为CPU 32 个通用工作寄存器的结构。
Figure 4-2  AVR CPU 通用工作寄存器
 

基于单片机的电加热炉温度控制系统的设计
大多数操作寄存器文件的指令都可以直接访问所有的寄存器,而且多数这样的指令的执行时间为单时钟周期。
如Figure 4-2 所示,每个寄存器都有一个数据内存地址将他们直接映射到用户数据空间的头32个地址。虽然寄存器文件的物理实现不是SRAM,这种内存组织方式在访问寄存器方面具有极大的灵活性,因为X、Y、Z 寄存器可以设置为指向任意寄存器的指针。
4.5.1 X、Y、Z 寄存器
寄存器R26..R31 除了用作通用寄存器外,还可以作为数据间接寻址用的地址指针。这三个间接寻址寄存器示于Figure 4-3。
Figure 4-3. X、Y、Z 寄存器

在不同的寻址模式中,这些地址寄存器可以实现固定偏移量,自动加一和自动减一操作。具体细节请参见指令集。
4.5 堆栈指针
堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。堆栈指针总是指向堆栈的顶部。要注意AVR 的堆栈是向下生长的,即新数据推入堆栈时,堆栈指针的数值将减小。
堆栈指针指向数据SRAM 堆栈区。在此聚集了子程序和中断堆栈。调用子程序和使能中断之前首先要定义堆栈空间,而且堆栈指针必须指向高于0x0100 的地址空间,最好为RAMEND。使用PUSH 指令将数据推入堆栈时指针减一;而子程序或中断返回地址推入堆栈时指针将减二。使用POP指令将数据弹出堆栈时,堆栈指针加一;而用RET或RETI指令从子程序或中断返回时堆栈指针加二。AVR的堆栈指针由I/O空间中的两个8位寄存器实现。实际使用的位数与具体器件有关。注意到某些AVR 器件的数据区太小,用SPL 就足够了。此时将不给出SPH 寄存器。

4.7 指令执行时序
这一节介绍指令执行过程中的访问时序。AVR CPU 由系统时钟clkCPU 驱动。此时钟直接来自选定的时钟源。芯片内部不对此时钟进行分频。
Figure 6 说明了由Harvard 结构决定的并行取指和指令执行,以及可以进行快速访问的寄存器文件的概念。这是一个性能高达1 MIPS/MHz,具有优良的性价比、功能/ 时钟比、功能/ 功耗比的基本的流水线概念。
Figure 4-4 并行取指和指令执行

Figure 4-5 演示的是寄存器文件内部访问时序。在一个时钟周期里,ALU 可以同时对两个寄存器操作数进行操作,同时将结果存回到目的寄存器中去。
Figure 4-6 单时钟周期ALU 操作

4.8 复位与中断处理
AVR有不同的中断源。每个中断和复位在程序空间都有自己独立的中断向量。所有中断事件都有自己的使能位。在使能位置位,且状态寄存器的全局中断使能位I也置位的情况下,中断可以发生。根据不某绦蚣剖鱌C 数值,在引导(Boot) 锁定位BLB02 或BLB12被编程的情况下,中断可能自动禁止。这个特性提高了软件的安全性。详见 “ 存储器编程” 部分。
程序存储区的最低地址缺省为复位向量和中断向量。完全的向量列表请参见“ 中断” 。列表也决定了不同中断的优先级。向量所在的地址越低,优先级越高。RESET 具有最高的优先级,下一个则为INT0 – 外部中断请求0。通过置位MCU 控制寄存器 MCUCR的IVSEL (具体参见“ 中断” ), 中断向量可以移至引导Flash 的起始处。编程熔丝位BOOTRST 可以将复位向量也移至引Flash 的起始处。具体参见“Boot Loader支持RWW 自编程, ATmega88 与ATmega168” 。任一中断发生时全局中断使能位I 被清零,所有其他中断都被禁止。用户软件可以通过置位I 来实现中断嵌套。此时所有的中断都可以中断当前中断服务程序。执行RETI 指令后全局中断使能位I 自动置位。
从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序计数器跳转到实际的中断向量以执行中断处理例程,同时硬件将清除相应的中断标志。中断标志也可以通过对其写”1” 来清除。当中断发生后,如果相应的中断使能位为"0",则中断标志位置位,并一直保持到中断执行,或者被软件清除。类似的,如果全局中断标志被清零,则所有已发生的中断都不会被执行,直到I 置位。然后被挂起的各个中断按中断优先级依次执行。第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中断标志。若
中断条件在中断使能之前就消失了,中断不会被触发。AVR 退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断。
要注意的是,进入中断服务程序时状态寄存器不会自动保存;中断返回时也不会自动恢复。这些工作必须由用户通过软件来完成。使用CLI 指令来禁止中断时,中断禁止立即生效。没有中断可以在执行CLI 指令后发生,即使它是在执行CLI 指令的同时发生的。下面的例子说明了如何在写EEPROM 时使用这个指令来防止中断发生以避免对EEPROM 内容的可能破坏。中断响应时间AVR 中断响应时间最少为4 个时钟周期。4 个时钟周期后,程序跳转到实际的中断处理例
程。在这4 个时钟期间, PC 自动入栈。在通常情况下,中断向量为一个跳转指令,此跳转要花3 个时钟周期。如果中断在一个多时钟周期指令执行期间发生,则在此多周期指令执行完毕后MCU 才会执行中断程序。若中断发生时MCU 处于休眠模式,中断响应时间还需增加4 个时钟周期。此外还要考虑到不同的休眠模式所需要的启动时间。这个时间不包括在前面提到的时钟周期里。中断返回需要4 个时钟。在此期间PC( 两个字节) 将被弹出栈,堆栈指针加二,状态寄存器SREG 的I 置位。
 

基于单片机的电加热炉温度控制系统的设计
ATmega48/88/168
 Features
• High Performance, Low Power AVR® 8-Bit Microcontroller
• Advanced RISC Architecture
– 131 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 20 MIPS Throughput at 20 MHz
– On-chip 2-cycle Multiplier
• High Endurance Non-volatile Memory segments
– 4/8/16K Bytes of In-System Self-programmable Flash program memory
– 256/512/512 Bytes EEPROM
– 512/1K/1K Bytes Internal SRAM
– Write/Erase cyles: 10,000 Flash/100,000 EEPROM
– Data retention: 20 years at 85°C/100 years at 25°C(1)
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– Programming Lock for Software Security
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 8-channel 10-bit ADC in TQFP and QFN/MLF package
– 6-channel 10-bit ADC in PDIP Package
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Byte-oriented 2-wire Serial Interface (Philips I2C compatible)
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
– Interrupt and Wake-up on Pin Change
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and Standby
• I/O and Packages
– 23 Programmable I/O Lines
– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF
• Operating Voltage:
– 1.8 - 5.5V for ATmega48V/88V/168V
– 2.7 - 5.5V for ATmega48/88/168
• Temperature Range:
– -40°C to 85°C
• Speed Grade:
– ATmega48V/88V/168V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATmega48/88/168: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
• Low Power Consumption
– Active Mode:
250 μA at 1 MHz, 1.8V
15 μA at 32 kHz, 1.8V (including Oscillator)
– Power-down Mode:
0.1μA at 1.8V
1. Pin Configurations
Figure 1-1. Pinout ATmega48/88/1682545M
 

基于单片机的电加热炉温度控制系统的设计
1.1 Pin Descriptions
1.1.1 VCC
Digital supply voltage.
1.1.2 GND
Ground.
1.1.3 Port B (PB7:0) XTAL1/XTAL2/TOSC1/TOSC2
Port B is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). ThePort B output buffers have symmetrical drive characteristics with both high sink and source
capability. As inputs, Port B pins that are externally pulled low will source current if the pull-up
resistors are activated. The Port B pins are tri-stated when a reset condition becomes active,
even if the clock is not running.
Depending on the clock selection fuse settings, PB6 can be used as input to the inverting Oscillatoramplifier and input to the internal clock operating circuit.
Depending on the clock selection fuse settings, PB7 can be used as output from the inverting
Oscillator amplifier.
If the Internal Calibrated RC Oscillator is used as chip clock source, PB7..6 is used as TOSC2..1 input for the Asynchronous Timer/Counter2 if the AS2 bit in ASSR is set.
The various special features of Port B are elaborated in。
1.1.4 Port C (PC5:0)
Port C is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The
PC5..0 output buffers have symmetrical drive characteristics with both high sink and source
capability. As inputs, Port C pins that are externally pulled low will source current if the pull-up
resistors are activated. The Port C pins are tri-stated when a reset condition becomes active,
even if the clock is not running.
1.1.5 PC6/RESET
If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin. Note that the electrical characteristicsof PC6 differ from those of the other pins of Port C.
If the RSTDISBL Fuse is unprogrammed, PC6 is used as a Reset input. A low level on this pin
for longer than the minimum pulse length will generate a Reset, even if the clock is not running.The minimum pulse length is given in Table. Shorter pulses are not guaranteed
to generate a Reset.
The various special features of Port C are elaborated in “Alternate Functions of Port C” 。
1.1.6 Port D (PD7:0)
Port D is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The Port D output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs, Port D pins that are externally pulled low will source current if the pull-up resistors are activated. The Port D pins are tri-stated when a reset condition becomes active, even if the clock is not running.
The various special features of Port D are elaborated in “Alternate Functions of Port D”.
1.1.7 AVCC
AVCC is the supply voltage pin for the A/D Converter, PC3:0, and ADC7:6. It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a low-pass filter. Note that PC6..4 use digital supply voltage, VCC.
1.1.8 AREF
AREF is the analog reference pin for the A/D Converter.
1.1.9 ADC7:6 (TQFP and QFN/MLF Package Only)
In the TQFP and QFN/MLF package, ADC7:6 serve as analog inputs to the A/D converter.
These pins are powered from the analog supply and serve as 10-bit ADC channels.
2. Overview
The ATmega48/88/168 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the
ATmega48/88/168 achieves throughputs approaching 1 MIPS per MHz allowing the system
designer to optimize power consumption versus processing speed.
2.1 Block Diagram
Figure 2-1. Block Diagram
 

基于单片机的电加热炉温度控制系统的设计
The AVR core combines a rich instruction set with 32 general purpose working registers. All the 32 registers are directly connected to the Arithmetic Logic Unit (ALU), allowing two independent registers to be accessed in one single instruction executed in one clock cycle. The resulting architecture is more code efficient while achieving throughputs up to ten times faster than conventional CISC microcontrollers.
The ATmega48/88/168 provides the following features: 4K/8K/16K bytes of In-System Programmable Flash with Read-While-Write capabilities, 256/512/512 bytes EEPROM, 512/1K/1K bytes SRAM, 23 general purpose I/O lines, 32 general purpose working registers, three flexible Timer/Counters with compare modes, internal and external interrupts, a serial programmable USART, a byte-oriented 2-wire Serial Interface, an SPI serial port, a 6-channel 10-bit ADC (8 channels in TQFP and QFN/MLF packages), a programmable Watchdog Timer with internal Oscillator, and five software selectable power saving modes. The Idle mode stops the CPU while allowing the SRAM, Timer/Counters, USART, 2-wire Serial Interface, SPI port, and interrupt system to continue functioning. The Power-down mode saves the register contents but freezes the Oscillator, disabling all other chip functions until the next interrupt or hardware reset. In Power-save mode, the asynchronous timer continues to run, allowing the user to maintain a timer base while the rest of the device is sleeping. The ADC Noise Reduction mode stops the CPU and all I/O modules except asynchronous timer and ADC, to minimize switching noise during ADC conversions. In Standby mode, the crystal/resonator Oscillator is running while the rest of the device is sleeping. This allows very fast start-up combined with low power consumption.
The device is manufactured using Atmel’s high density non-volatile memory technology. The
On-chip ISP Flash allows the program memory to be reprogrammed In-System through an SPI
serial interface, by a conventional non-volatile memory programmer, or by an On-chip Boot program running on the AVR core. The Boot program can use any interface to download the
application program in the Application Flash memory. Software in the Boot Flash section will
continue to run while the Application Flash section is updated, providing true Read-While-Write
operation. By combining an 8-bit RISC CPU with In-System Self-Programmable Flash on a
monolithic chip, the Atmel ATmega48/88/168 is a powerful microcontroller that provides a highly flexible and cost effective solution to many embedded control applications.
The ATmega48/88/168 AVR is supported with a full suite of program and system development
tools including: C Compilers, Macro Assemblers, Program Debugger/Simulators, In-Circuit Emulators, and Evaluation kits.
2.2 Comparison Between ATmega48, ATmega88, and ATmega168
The ATmega48, ATmega88 and ATmega168 differ only in memory sizes, boot loader support,
and interrupt vector sizes. Table 2-1 summarizes the different memory and interrupt vector sizes for the three devices.
Table 2-1. Memory Size Summary

ATmega88 and ATmega168 support a real Read-While-Write Self-Programming mechanism.
There is a separate Boot Loader Section, and the SPM instruction can only execute from there.
In ATmega48, there is no Read-While-Write support and no separate Boot Loader Section. The SPM instruction can execute from the entire Flash.
3.AVR CPU Core
3.1 Overview
This section discusses the AVR core architecture in general. The main function of the CPU coreis to ensure correct program execution. The CPU must therefore be able to access memories,perform calculations, control peripherals, and handle interrupts.
3.2 Architectural Overview
Figure 3 Block Diagram of the AVR Architecture
 
基于单片机的电加热炉温度控制系统的设计
In order to maximize performance and parallelism, the AVR uses a Harvard architecture – with
separate memories and buses for program and data. Instructions in the program memory are
executed with a single level pipelining. While one instruction is being executed, the next instruction is pre-fetched from the program memory. This concept enables instructions to be executed in every clock cycle. The program memory is In-System Reprogrammable Flash memory.
The fast-access Register File contains 32 x 8-bit general purpose working registers with a single clock cycle access time. This allows single-cycle Arithmetic Logic Unit (ALU) operation. In a typical ALU operation, two operands are output from the Register File, the operation is executed, and the result is stored back in the Register File – in one clock cycle.
Six of the 32 registers can be used as three 16-bit indirect address register pointers for Data
Space addressing – enabling efficient address calculations. One of the these address pointers
can also be used as an address pointer for look up tables in Flash program memory. These
added function registers are the 16-bit X-, Y-, and Z-register, described later in this section.
The ALU supports arithmetic and logic operations between registers or between a constant and a register. Single register operations can also be executed in the ALU. After an arithmetic operation, the Status Register is updated to reflect information about the result of the operation.
Program flow is provided by conditional and unconditional jump and call instructions, able to
directly address the whole address space. Most AVR instructions have a single 16-bit word format. Every program memory address contains a 16- or 32-bit instruction.
Program Flash memory space is divided in two sections, the Boot Program section and the
Application Program section. Both sections have dedicated Lock bits for write and read/write
protection. The SPM instruction that writes into the Application Flash memory section must
reside in the Boot Program section.
During interrupts and subroutine calls, the return address Program Counter (PC) is stored on the Stack. The Stack is effectively allocated in the general data SRAM, and consequently the Stack size is only limited by the total SRAM size and the usage of the SRAM. All user programs must initialize the SP in the Reset routine (before subroutines or interrupts are executed). The Stack Pointer (SP) is read/write accessible in the I/O space. The data SRAM can easily be accessed through the five different addressing modes supported in the AVR architecture.
The memory spaces in the AVR architecture are all linear and regular memory maps.
A flexible interrupt module has its control registers in the I/O space with an additional Global
Interrupt Enable bit in the Status Register. All interrupts have a separate Interrupt Vector in the
Interrupt Vector table. The interrupts have priority in accordance with their Interrupt Vector position.
The lower the Interrupt Vector address, the higher the priority.
The I/O memory space contains 64 addresses for CPU peripheral functions as Control Registers, SPI, and other I/O functions. The I/O Memory can be accessed directly, or as the Data Space locations following those of the Register File, 0x20 - 0x5F. In addition, the
ATmega48/88/168 has Extended I/O space from 0x60 - 0xFF in SRAM where only the
ST/STS/STD and LD/LDS/LDD instructions can be used.
3.3 ALU – Arithmetic Logic Unit
The high-performance AVR ALU operates in direct connection with all the 32 general purpose
working registers. Within a single clock cycle, arithmetic operations between general purpose
registers or between a register and an immediate are executed. The ALU operations are divided into three main categories – arithmetic, logical, and bit-functions. Some implementations of the architecture also provide a powerful multiplier supporting both signed/unsigned multiplication and fractional format. See the “Instruction Set” section for a detailed description.
3.4 Status Register
The Status Register contains information about the result of the most recently executed arithmetic instruction. This information can be used for altering program flow in order to perform conditional operations. Note that the Status Register is updated after all ALU operations, as specified in the Instruction Set Reference. This will in many cases remove the need for using the dedicated compare instructions, resulting in faster and more compact code.
The Status Register is not automatically stored when entering an interrupt routine and restored
when returning from an interrupt. This must be handled by software.
The AVR Status Register – SREG – is defined as:

• Bit 7 – I: Global Interrupt Enable
The Global Interrupt Enable bit must be set for the interrupts to be enabled. The individual interrupt
enable control is then performed in separate control registers. If the Global Interrupt Enable
Register is cleared, none of the interrupts are enabled independent of the individual interrupt
enable settings. The I-bit is cleared by hardware after an interrupt has occurred, and is set by
the RETI instruction to enable subsequent interrupts. The I-bit can also be set and cleared by
the application with the SEI and CLI instructions, as described in the instruction set reference.
• Bit 6 – T: Bit Copy Storage
The Bit Copy instructions BLD (Bit LoaD) and BST (Bit STore) use the T-bit as source or destination for the operated bit. A bit from a register in the Register File can be copied into T by the BST instruction, and a bit in T can be copied into a bit in a register in the Register File by the BLD instruction.
• Bit 5 – H: Half Carry Flag
The Half Carry Flag H indicates a Half Carry in some arithmetic operations. Half Carry Is useful
in BCD arithmetic. See the “Instruction Set Description” for detailed information.
• Bit 4 – S: Sign Bit, S = N ⊕ V
The S-bit is always an exclusive or between the Negative Flag N and the Two’s Complement
Overflow Flag V. See the “Instruction Set Description” for detailed information.
• Bit 3 – V: Two’s Complement Overflow Flag
The Two’s Complement Overflow Flag V supports two’s complement arithmetics. See the
“Instruction Set Description” for detailed information.
• Bit 2 – N: Negative Flag
The Negative Flag N indicates a negative result in an arithmetic or logic operation. See the
“Instruction Set Description” for detailed information.
• Bit 1 – Z: Zero Flag
The Zero Flag Z indicates a zero result in an arithmetic or logic operation. See the “Instruction
Set Description” for detailed information.
• Bit 0 – C: Carry Flag
The Carry Flag C indicates a carry in an arithmetic or logic operation. See the “Instruction Set
Description” for detailed information.
 
4.5 General Purpose Register File
The Register File is optimized for the AVR Enhanced RISC instruction set. In order to achieve
the required performance and flexibility, the following input/output schemes are supported by the
Register File:
• One 8-bit output operand and one 8-bit result input
• Two 8-bit output operands and one 8-bit result input
• Two 8-bit output operands and one 16-bit result input
• One 16-bit output operand and one 16-bit result input
Figure 4-1 shows the structure of the 32 general purpose working registers in the CPU.
Figure  4-2  AVR CPU General Purpose Working Registers
 
基于单片机的电加热炉温度控制系统的设计
Most of the instructions operating on the Register File have direct access to all registers, and
most of them are single cycle instructions.
As shown in Figure 4-2, each register is also assigned a data memory address, mapping them
directly into the first 32 locations of the user Data Space. Although not being physically implemented
as SRAM locations, this memory organization provides great flexibility in access of the
registers, as the X-, Y- and Z-pointer registers can be set to index any register in the file.
4.5.1 The X-register, Y-register, and Z-register
The registers R26..R31 have some added functions to their general purpose usage. These registers are 16-bit address pointers for indirect addressing of the data space. The three indirect address registers X, Y, and Z are defined as described in Figure 4-3.
In the different addressing modes these address registers have functions as fixed displacement, automatic increment, and automatic decrement (see the instruction set reference for details).
4.6 Stack Pointer
The Stack is mainly used for storing temporary data, for storing local variables and for storing
return addresses after interrupts and subroutine calls. The Stack Pointer Register always points to the top of the Stack. Note that the Stack is implemented as growing from higher memory locations to lower memory locations. This implies that a Stack PUSH command decreases the Stack Pointer.
The Stack Pointer points to the data SRAM Stack area where the Subroutine and Interrupt
Stacks are located. This Stack space in the data SRAM must be defined by the program before any subroutine calls are executed or interrupts are enabled. The Stack Pointer must be set to point above 0x0100, preferably RAMEND. The Stack Pointer is decremented by one when data is pushed onto the Stack with the PUSH instruction, and it is decremented by two when the return address is pushed onto the Stack with subroutine call or interrupt. The Stack Pointer is incremented by one when data is popped from the Stack with the POP instruction, and it is incremented by two when data is popped from the Stack with return from subroutine RET or return from interrupt RETI.
The AVR Stack Pointer is implemented as two 8-bit registers in the I/O space. The number of
bits actually used is implementation dependent. Note that the data space in some implementations of the AVR architecture is so small that only SPL is needed. In this case, the SPH Register will not be present.

4.7 Instruction Execution Timing
This section describes the general access timing concepts for instruction execution. The AVR
CPU is driven by the CPU clock clkCPU, directly generated from the selected clock source for the chip. No internal clock division is used.
Figure 6-4 shows the parallel instruction fetches and instruction executions enabled by the Harvard architecture and the fast-access Register File concept. This is the basic pipelining concept to obtain up to 1 MIPS per MHz with the corresponding unique results for functions per cost, functions per clocks, and functions per power-unit.


Figure 4-5 shows the internal timing concept for the Register File. In a single clock cycle an ALU operation using two register operands is executed, and the result is stored back to the destination register.
Figure 4-6. Single Cycle ALU Operation

4.8 Reset and Interrupt Handling
The AVR provides several different interrupt sources. These interrupts and the separate Reset
Vector each have a separate program vector in the program memory space. All interrupts are
assigned individual enable bits which must be written logic one together with the Global Interrupt Enable bit in the Status Register in order to enable the interrupt. Depending on the Program Counter value, interrupts may be automatically disabled when Boot Lock bits BLB02 or BLB12 are programmed. This feature improves software security. See the section “Memory Programming” for details.
The lowest addresses in the program memory space are by default defined as the Reset and
Interrupt Vectors. The complete list of vectors is shown in “Interrupts”. The list also
determines the priority levels of the different interrupts. The lower the address the higher is the
priority level. RESET has the highest priority, and next is INT0 – the External Interrupt Request
0. The Interrupt Vectors can be moved to the start of the Boot Flash section by setting the IVSEL bit in the MCU Control Register (MCUCR). Refer to “Interrupts” for more information.
The Reset Vector can also be moved to the start of the Boot Flash section by programming the
BOOTRST Fuse, see “Boot Loader Support – Read-While-Write Self-Programming, ATmega88 and ATmega168”.
When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. The user software can write logic one to the I-bit to enable nested interrupts. All enabled interrupts can then interrupt the current interrupt routine. The I-bit is automatically set when a Return from Interrupt instruction – RETI – is executed.
There are basically two types of interrupts. The first type is triggered by an event that sets the
Interrupt Flag. For these interrupts, the Program Counter is vectored to the actual Interrupt Vector in order to execute the interrupt handling routine, and hardware clears the corresponding Interrupt Flag. Interrupt Flags can also be cleared by writing a logic one to the flag bit position(s) to be cleared. If an interrupt condition occurs while the corresponding interrupt enable bit is cleared, the Interrupt Flag will be set and remembered until the interrupt is enabled, or the flag is cleared by software. Similarly, if one or more interrupt conditions occur while the Global Interrupt Enable bit is cleared, the corresponding Interrupt Flag(s) will be set and remembered until the Global Interrupt Enable bit is set, and will then be is enabled, the interrupt will not be triggered.
When the AVR exits from an interrupt, it will always return to the main program and execute one more instruction before any pending interrupt is served. Note that the Status Register is
 

基于单片机的电加热炉温度控制系统的设计
not automatically stored when entering an interrupt routine, nor restored when returning from an interrupt routine. This must be handled by software. When using the CLI instruction to disable interrupts, the interrupts will be immediately disabled.
No interrupt will be executed after the CLI instruction, even if it occurs simultaneously with the
CLI instruction. The following example shows how this can be used to avoid interrupts during the timed EEPROM write sequence.
  • 上一篇资讯: 学生会活动请假条
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师