单片机课程设计报告Word文档格式.docx
- 文档编号:14002558
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:14
- 大小:519.03KB
单片机课程设计报告Word文档格式.docx
《单片机课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
电热水器是常用的家用电器,本文设计的是快热式电热水器,与普通电热水器的相比,它没有储水罐,而是在冷水进入加热管后立即被加热,无需预热,热水随开随用,节约电能而且体积小,安装方便。
1.1功能要求
①能够实时检测水温,精度为±
1℃。
②可以调发热功率,共有9个功率档位,分别为0~9档,对应功率依次为
③通过电源开关、“+”键和“-”键来设置功率档位,每按一次“+”或“-”键,则功率档位增或减一档。
④设置3个功率档位指示灯:
0档无功率输出,指示灯都不亮;
1~4档1个灯亮;
5~8档2个灯亮;
9档全功率输出,3个灯全亮。
⑤超温报警。
当温度超过65℃时停止加热并报警,当温度降到45℃以下时恢复加热。
当内胆温度超过105℃时电热保险丝熔断,停止加热,防止加热管干烧。
1.2功能实现方法
用传感器测量温度,经过A/D转换变为数字信号;
用2位数码管显示水温或档位;
由可控硅控制功率大小分成9个功率档位;
设置3个按键输入按钮来选择功率档位;
根据测得的温度与极限温度比较控制蜂鸣器报警或继电器动作实现保护功能;
还应有电源装置把220V交流电降压整流后供其使用。
2基本原理
用热敏电阻采集温度信息,通过硬件电路将温度的变化转换为输出方波频率的变化,输入到单片机内并查找内部存储的温度频率表,找到对应的温度,再通过LED显示输出,当温度超过规定的温限时控制蜂鸣器报警。
根据按键输入显示选择的档位,并查找该档位对应的光耦延迟时间表,来控制双向可控硅的导通角实现调节功率大小。
图1家用电热水器系统结构框图
2.1单片机硬件资源分配
P0口数码管显示输出低电平有效
P1.0-P1.2按键输入端,低电平有效
P1.5蜂鸣器控制端,低电平有效
P1.6光耦控制端,低电平有效
P1.7继电器控制端,低电平有效
P2.0、P2.1数码管片选端,输出低电平为选中信号
P2.5-P2.7控制LED显示端,输出低电平有效
温度检测电路输出方波信号的输入端
过零检测电路的过零信号输入端
T0测频计时
T1可控硅导通延时定时
3硬件电路设计
快热式电热水器控制系统电路采用AT89C51单片机,12MHz的晶振,电源由电网电源经降压整流后再经三端集成稳压器稳压输出直流电;
用轻触按钮作为按键;
显示电路用2个共阳极数码管经三极管驱动;
指示灯用3个LED发光二极管;
功率控制用光耦和可控硅;
报警保护电路用自鸣式蜂鸣器和继电器以及热保险丝。
3.1温度检测电路及A/D转换
温度检测可以用集成测温传感器DS18B20直接将温度信号转换成数字模拟信号给单片机,但为了降低成本,采用热敏电阻用计数-比较的方法。
将温度用硬件电路转换成频率,单片机用计数的方法测出代表频率的时间,再与内部存储的频率-温度表查找出对应的温度。
具体的温度/频率转换电路是由反相器、电阻、电容构成RC多谐振荡器,当温度变化时,热敏电阻的阻值发生变化,从而改变了振荡器输出的方波频率,频率估算公式为:
。
单片机对100个方波脉冲计时,测出对应的频率,再通过查表找到对应的温度。
图2温度/频率转换电路图
3.2电源变换电路
将电网电压220V通过降压变压器降压到9V,再由整流桥变换成直流,最后通过三端集成稳压器输出直流电压5V。
图3电源整流变换电路图
3.3加热控制电路
电热丝两端串联双向晶闸管后直接接220V交流电,通过光耦给双向可控硅触发信号,由单片机软件设置不同档位的不同导通角来控制电热丝的通断时间以实现不同功率档位的设置。
电路中还串联了继电器的开关,当温度超过105℃时,热保险丝熔断使得继电器的线圈断电,这时继电器动作使开关断开实现关断加热电源停止加热,起到保护的作用。
图4加热控制电路图
3.4过零检测电路
过零检测电路是用来实现光耦触发的,当由电压过零时三极管Q1的基极电位为0V,使得三极管关断,这时集电极电位经过上拉电阻接电源是高电平,再经反相器变为低电平输入到端,发出中断请求,再由定时器延时,延时后从输出端口给光耦发送低电平,再由光耦触发可控硅。
过零检测就是要找到触发角的起点,由不同的延时时间实现不同的触发角,从而控制改变可控硅导通的时间实现功率调节。
当电压不是零时,三极管Q1的基极是高电平,三极管导通,其集电极电位被发射极的接地钳位到低电平,再经过反相器变为高电平输入到,为无效信号,不发生中断请求。
图5电压过零检测电路图
3.5报警电路
采用晶体三极管驱动压电蜂鸣器,其所需的驱动电流约为10mA,当蜂鸣器两端电压降约为5V时能产生3kHz左右的蜂鸣振荡音响,结构简单且耗电少,适合于单片机应用系统。
当P1.5端输出低电平时,三极管导通,蜂鸣器两端被加上了+5V电压,产生蜂鸣;
当P1.5端输出高电平时,三极管截止,蜂鸣器停止鸣音。
图6报警电路图
3.6显示电路
采用2个共阳极数码管并接到同一组数据线上,用2个三极管驱动数码管。
当P2.0输出低电平时,三极管导通将高电平送至数码管的共阳极,即选通该数码管,将字型码依次送到字型码缓存区,每次送一个字型码,也输出相应的位选码,每次只显示一个数码管,紧接着另一时间显示下一个数码管,并依次循环轮流选通各位数码管,即P2.0和P2.1轮流输出低电平,每个数码管显示一定的时间,虽然这种显示不是连续的,但可以把扫描频率设置的高一些,利用人眼的视觉暂留特性使得看起来像是两个数码管同时显示。
这种动态显示的优点是节省硬件、接口电路简单,但显示时占用CPU时间。
图7显示电路图
图8家用电热水器控制Proteus原理图
4Protel设计
4.1画原理图
放置电路所需的各种元件,图件,网络标号等元器件,找不到的元器件如AT89C51就自己创建元器件库画元件。
对元件进行布局,布线,构成一个完整的原理图。
ERC检测通过后建立网络表
图10家用电热水器控制Protel原理图
4.2绘制PCB板
导入网络表,修改导入网络表时显示的错误如元件封装节点标号等。
根据原理图上元器件之间的连接关系,并考虑电磁兼容性以及元器件的安装空间和散热等进行布局,将元器件放置在PCB电路板上适当的位置,布局后自动布线,再手动修改调整,并将电源线加粗。
最后DRC检测,修改错误直到DRC检测通过为止
图11电热水器PCB制图
图12电热水器PCB三维图
5软件程序设计
为了充分利用单片机的CPU,内存等资源,本系统中引入了多任务的软件结构,即从宏观上来看单片机同时在做多件事情。
分析一般的多任务系统的软件结构,系统的核心是任务调度器,在适当的时候任务调度器将保存当前任务的现场,并且恢复将要运行的任务的现场,并让其投入运行。
简单的说,一般的多任务系统是任务调度器循环的调用各个需要执行的任务,进而可以更有效的利用系统的各种资源。
从这里得到启发,可以用定时器每隔一定的时间中断一次,在中断处理函数中依次调用一次各个任务所对应的函数,并且各个函数都能在一个较短的时间内返回,这样在某段时间内,各个任务所对应的函数都能够被执行到,就好像多个任务同时运行了。
还有一点需要说明,就是各个任务是由一些函数和一些静态变量组成。
函数由定时器中断处理函数定期的调用一次,并且有个前提就是这个函数能够在较短的时间内返回,否则其他任务将不能及时的被调用到,也就达不到“实时”这一要求。
静态变量保存该任务的各种状态,并且其他模块和该任务进行通信也是通过置取这些静态变量来实现的。
程序主要包括包括温度频率检测、A/D转换、加热功率控制、按键扫描、显示扫描、超温报警几个部分,因为系统要实时响应按键、测温、显示、加热控制几个功能,通过分时复用的方法,设置一个死循环,循环里面依次实现以上几个功能,每个功能占用的CPU时间不同,按键、显示和加热控制的占用的时间多一点,而测温时间间隔可长一些,在每个测温间隔中有小循环来多次实现按键、显示和加热控制功能。
采用3个中断:
测温中断、过零中断、触发可控硅定时中断。
5.1主程序
先是初始化程序设置温度和档位的初始值,清除超温标志以及设置中断和定时器的工作方式。
在主函数里设置死循环反复运行各个任务,在死循环内再设置小循环多次反复实现有实时要求的任务(按键扫描、显示扫描、加热控制),小循环结束后就检测温度,一次小循环所消耗的时间就是测温间隔,所以可根据测温间隔计算出小循环里执行的次数。
图13主程序流程图
主函数voidmain(void)的伪代码
{……//初始化
While
(1)//死循环
{for(j=0;
j<
300;
j++)//小循环300次
{keyscan()//调用按键扫描函数
display()//调用显示函数
heatctrl()//调用加热控制函数
}//小循环结束
temptest()//调用测温函数
5.2显示扫描
因为是共阳极数码管,所以低电平点亮对应字段,如P0=11000000B(0xc0),从高到低依次对应数码管的dpgfedcba,因为0表示亮,1表示暗,则该数码管的abcdef点亮,g和小数点dp不亮,此时显示数字0。
因此可以建立一个数组,里面依次存放0~9和一些特殊符号如0xff全不亮表示消隐,0xbf表示“—”用于开机时的显示。
在主程序中定义的字型码缓存区存储在内部低128B里,将两个数码管要显示的字符所在字符数组中的编号存放在这个显示缓存区里,轮流选通数码管,每选通一个数码管就使其显示对应的字符并延时一段时间,再改变位选信号,选中另一个数码管并显示对应的字符。
例如字符“0”存放在字符表table[]中的第0位,字符“—”放在第16位,则把0和16放进显示缓存区dispram[]里,轮流把table[dispram[i]]送到输出端口,即可轮流显示“0”和“—”了。
改变显示缓存区dispram[]的值,就可以改变显示的符号。
图14显示扫描流程图
显示函数voiddisplay()伪代码
{unsignedcharcodetable[]={0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
……}/*定义的数组里前9个依次为字符0~9,还有一些特殊符号,其中放在第16位的是0xbf对应符号为“—”,放在最后一位的是消隐符号0xff,用于显示温度时当温度小于10度时不显示十位数0,只显示个位数。
*/
for(i=0;
i<
2;
i++)//循环显示两位数码管
{p2|=0x1f;
/*P2端口和0x1f异或,使连接两个数码管的端口P0.0和P0.1均为高电平1,这时两个数码管均不选通*/
a=0xfe;
//片选信号初值
p2&
=a;
//P2端口和0xfe相与,使P2.0=0,P2.1=1只选通一个数码管
delay();
//显示延时
a=_crol_(a,1)/*带进位位的循环左移1位,使P2.0=1,P2.1=0,选通另一个数码管*/
p0=0xff;
//消隐使刚刚被选通的数码管由亮变暗
}//一个数码管显示结束,i++后再显示另一个数码管
}//两个数码管均显示结束
5.3按键扫描
在按键扫描函数中查询各个按键的输入端口的电平,调用多个ifelse语句,一旦判断是哪个按键被按下,则执行相应的程序,如果是“+”键或“-”键则打开蜂鸣器发出按键音,延时一段时间后关闭蜂鸣器,加热档位加1或减1并显示当前档位,等待按键释放后返回;
如果是开关键则打开蜂鸣器发出按键音,延时后置位开关键,暂存中断控
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告