全自动电热水壶的设计Word文件下载.docx
《全自动电热水壶的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《全自动电热水壶的设计Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
STC89C52单片机是深圳宏晶科技有限公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。
每一个单片机包括:
一个8位的微型处理器CPU;
一个512K的片内数据存储器RAM;
4K片内程序存储器;
四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;
两个定时器/记数器;
五个中断源的中断控制系统;
一个全双工UART的串行I/O口;
片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
最高允许振荡频率是12MHZ。
以上各个部分通过内部总线相连接。
89C单片机时序
STC89C52单片机的一个执器周期由6个状态(s1—s6)组成,每个状态又持续2个震荡周期,分为P1和P2两个节拍。
这样,一个机器周期由12个振荡周期组成。
若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为1/6us;
在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。
对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。
如果是双字节指令,则在同一机器周期的s4读人第二字节。
若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。
在加结束时完成指令操作。
多数STC89C52指令周期为1—2个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。
对于双字节单机器指令,通常是在一个机器周期内从程序存储器中读人两个字节,但Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。
89C单片机引脚介绍
STC89C52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。
下面按引脚功能分为4个部分叙述个引脚的功能。
(1)电源引脚Vcc和Vss
Vcc(40脚):
接+5V电源正端;
Vss(20脚):
接+5V电源正端。
(2)外接晶振引脚XTAL1和XTAL2
XTAL1(19脚):
接外部石英晶体的一端。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;
对于CHOMS单片机,该引脚作为外部振荡信号的输入端。
XTAL2(18脚):
接外部晶体的另一端。
在单片机内部,接至片内振荡器的反相放大器的输出端。
当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。
对于CHMOS芯片,该引脚悬空不接。
(3)控制信号或与其它电源复用引脚
控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。
(A).RST/VPD(9脚):
RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。
当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。
(B).ALE/P(30脚):
当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低
(C).PSEN(29脚):
片外程序存储器读选通输出端,低电平有效。
当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。
当访问外部数据存储器期间,PESN信号将不出现。
(D).EA/Vpp(31脚):
EA为访问外部程序储器控制信号,低电平有效。
当EA端保持高电平时,单片机访问片内程序存储器4KB(MS—52子系列为8KB)。
若超出该范围时,自动转去执行外部程序存储器的程序。
当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。
对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。
(4)输入/输出(I/O)引脚P0口、P1口、P2口及P3口
(A).P0口(39脚~22脚):
~统称为P0口。
当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。
当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。
它分时提供8位双向数据总线。
对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。
(B).P1口(1脚~8脚):
~统称为P1口,可作为准双向I/O接口使用。
对于MCS—52子系列单片机,和还有第2功能:
口用作定时器/计数器2的计数脉冲输入端T2;
用作定时器/计数器2的外部控制端T2EX。
对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。
(C).P2口(21脚~28脚):
~统称为P2口,一般可作为准双向I/O接口。
当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。
对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。
(D).P3口(10脚~17脚):
~统称为P3口。
它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
P3口的第2功能见下表
表1单片机管脚含义
引脚
第2功能
RXD(串行口输入端0)
TXD(串行口输出端)
INT0(部中断0请求输入端,低电平有效)
INT1(中断1请求输入端,低电平有效)
T0(时器/计数器0计数脉冲端)
T1(时器/计数器1数脉冲端)
WR(部数据存储器写选通信号输出端,低电平有效)
RD(部数据存储器读选通信号输出端,低电平有效)
综上所述,MCS—51系列单片机的引脚作用可归纳为以下两点:
1).单片机功能多,引脚数少,因而许多引脚具有第2功能;
2).单片机对外呈3总线形式,由P2、P0口组成16位地址总线;
由P0口分时复用作为数据总线。
(四)温度传感器电路
采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。
传感器输出信号进的上拉电阻直接接到单片机的引脚上。
DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。
本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:
(1)系统的特性:
测温范围为-55℃~+125℃,测温精度为士℃;
温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;
12位精度转换的最大时间为750ms;
可以通过数据线供电,具有超低功耗工作方式。
(2)系统成本:
由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。
一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。
(3)系统复杂度:
由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。
(4)系统的调试和维护:
由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。
同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。
DS18B20温度传感器只有三根外引线:
单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。
DS18B20有两种供电方式:
一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。
这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。
另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。
在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,其接口电路如图4所示。
图4温度传感器接口
(五)系统电源电路的设计
本系统采用电源稳压芯片是LM2596,该开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,输入电压是+5v,输入电压是+24v,同时具有很好的线性和负载调节特性。
该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。
该器件还有其他一些特点:
在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在±
4%的范围内,振荡频率误差在±
15%的范围内;
可以用仅80μA的待机电流,实现外部断电;
具有自我保护电路(一个两级降频限流保护和一个在异常情况下断电的过温完全保护电路)
在该温度控制系统中,其电源电路设计如下图10所示。
图5系统电源模块
(六)LCD显示电路
本课题设计的温度控制系统是采用液晶屏128*64作为显示模块,其接口原理图如下图6所示:
图6液晶显示接口电路
(七)串口通讯电路
本课题设计的通讯采用的是常见的串口通讯,协议转换芯片是采用MAX232A,其接口原理图如下图7所示:
图6串口通讯接口电路
(八)按键接口电路
本课题设计采用的键盘模块,其接口原理图如下图8所示:
图8键盘模块电路
(九)DS1302时钟电路
本课题设计的时钟是采用时钟芯片DS1302,其接口原理图如下图9所示:
图9时钟接口电路
(十)存储器接口电路
本课题设计的存储器采用的是AT24C256,其接口原理图如下图十所示:
图10存储器电路
三、系统软件设计
系统的软件主要是采用C语言,对单片机进行变成实现各项功能。
主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。
用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序,其程序流程如图10系统程序流程图。
开始
初始化
图10系统程序流程图
(一)计算温度子程序
读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操,作若不存在则返回。
其程序流程图如图11所示。
图11读温度流程图
(二)按键处理子程序
按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。
其程序流程框图如图12所示。
图12温度转换流程图
(三)计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图13所示。
图13计算温度子程序
(四)显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图14。
图14数据刷新子程序
四、结束语
通过此次毕业论文的课题设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。
实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。
此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。
参考文献
[1]李广弟,朱月秀,王秀山.《单片机基础》北京航空航天大学出版社,2001(07).
[2]蔡美琴,张为民等.《MCS-51系列单片机系统及其应用》高等教育出版社,2004(06).
[3]张毅刚,等.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997.
[4]刘瑞星,胡健等.《ProtelDXP实用教程》机械工业出版社,2003(04).
[5]于海生.《计算机控制技术》机械工业出版社2007(05).
[6]谭浩强.《C程序设计》清华大学出版社.
[7]康华光.《电子技术基础模拟部分》高等教育出版社1998(08).
[8]余锡存.《单片机原理与接口技术》西安电子科技大学出版社,2003.
致谢
本论文是在我的指导老师密切关心和悉心指导下完成的。
老师在课题开题期间和论文写作的过程中给予了我许多指导,导师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,他优良的作风和严谨治学的态度深深影响着我,至此,向恩师致以最真挚的感谢和最崇高的敬意!
同时我要感谢我的同学,特别是我的室友们,正是他们在这几年里陪我一起成长,一起学习,才让我有了今天的成绩。
他们在平时的学习和生活中他们给予了我无私的关怀和帮助,在此表示我最诚挚的谢意。
附件1:
系统原理图
附件2:
系统相关程序
一、DS18B20底层驱动程序
0c0c7f24c24c24c24c7f24c24c0F0F........
;
程序名称:
HtoB
功能:
十六进制转BCD
入口参数:
A
出口参数:
R7HtoB:
MOVB,#064H;
100DIVAB;
a/100MOVR7,A;
MOVA,#0AHXCHA,BDIVABSWAPAORLA,BRET
INIT_TEMP
初始化DS18B20,确定DS18B20是否是存在的
无
FLAG
INIT_TEMP:
SETBP_DS18B20
NOP
CLRP_DS18B20;
主机发出延时537微秒的复位低脉冲
MOVR0,#6BH
MOVR1,#04H
TSR1:
DJNZR0,$
MOV40,#6BH
DJNZR1,TSR1
SETBP_DS18B20;
然后拉高数据线,释放总线进入接受状态
MOVR0,#32H
TSR2:
JNBP_DS18B20,TSR3;
等待DS18B20回应
DJNZR0,TSR2
LJMPTSR4;
延时
TSR3:
SETBFLAG;
置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG;
清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6;
时序要求延时一段时间
TSR7:
RET
READ_TEMP
读取DS18B20的数据
TEMPERATURE_L,TEMPERATURE_H
READ_TEMP:
LCALLINIT_TEMP;
先复位DS18B20
JBFLAG,TSS2
RET;
判断DS1820是否存在若DS18B20不存在则返回
TSS2:
MOVA,#0CCH;
跳过ROM匹配
LCALLWRITE_18B20
MOVA,#44H;
发出温度转换命令
LCALLDISPLAY;
等待AD转换结束,12位的话750微秒
准备读温度前先复位
MOVA,#0BEH;
发出读温度命令
LCALLREAD_18B20;
将读出的温度数据保存到35H/36H
WRITE_18B20
将A保存的数值写入DS1820中,
A寄存器
WRITE_18B20:
MOVR2,#8;
一共8位数据,串行通信CLRC
WR1:
CLRP_DS18B20
MOVR3,#07
DJNZR3,$
RRCA;
循环右移
MOVP_DS18B20,C
MOVR3,#3CH
DJNZR3,$;
23*2=46微妙
SETBP_DS18B20
NOP
DJNZR2,WR1;
A里面一共是8位,所以要送8次
SETBP_DS18B20;
释放总线RET
READ_18B20
读取18B20中的数据,由于是串行通信,每次读取一个,循环8次读取
TEMPRATURE_L
READ_18B20:
MOVR4,#4;
将温度高位和低位从DS18B20中读出MOVR1,#TEMPERATURE_L
RE00:
MOVR2,#8;
数据一共有8位
RE01:
CLRCSETBP_DS18B20NOPNOPCLRP_DS18B20NOPNOPNOPSETBP_DS18B20MOVR3,#09
RE10:
DJNZR3,RE10MOVC,P_DS18B20MOVR3,#3CH
RE20:
DJNZR3,RE20RRCADJNZR2,RE01MOV@R1,ADECR1DJNZR4,RE00RET
SCAN_KEY
扫描键盘
DIS_BUF_G,DIS_BUF_S,DIS_BUF_B
KEY_BUF_G,KEY_BUF_S,kEY_BUF_B
SCAN_KEY:
JBK_ENTER,QUIT;
如果又Enter键入,则开始键盘输入
LCALLK_DELAY
JBK_ENTER,QUIT
CLRENTER_FLAG;
每次进来都赋值输入标志,设置为0
MOVKEY_BUF_G,DIS_BUF_G;
将当前的温度赋值给KEY_BUF
MOVKEY_BUF_S,DIS_BUF_SMOVKEY_BUF_B,DIS_BUF_B
K_LOOP:
JBENTER_FLAG,QUIT;
如果输入完成,ENTER_FLAG则为1,退出键盘程
序JBK_ENTER,KUP
CALLPRO_ENTER
KUP:
JBK_UP,KDOWNCALLPRO_UP
KDOWN:
JBK_DOWN,LOOPACALLPRO_DOWN
LOOPA:
LCALLDISPLAYSJMPK_LOOP
QUIT:
PRO_ENTER
确认键盘输入和退出键盘输入
ENTER_FLAG
PRO_ENTER:
CALLK_DELAY
JBK_ENTER,K_LOOP;
按钮抖动处理SETBENTER_FLAGCALLK_DELAYRET
PRO_UP
数值上调处理
KEY_BUF_G,KEY_BUF_S,KEY_BUF_B
PRO_UP:
JBK_UP,K_LOOP;
按钮抖动处理
INCKEY_BUF_G;
个位增一
MOVA,KEY_BUF_G
CJNEA,#0AH,UPNEXT;
个位增加到10,回0
MOVKEY_BUF_G,#00H
INCKEY_BUF_S;
十位加一
MOVA,KEY_BUF_S
十位超过99,溢出了MOVR0,#200
ERROR1:
LCALLERR;
出错,显示8888
DJNZR0,ERROR1
DECKEY_BUF_S;
退回99MOVKEY_BUF_G,#09H
UPNEXT:
MOVDIS_BUF_G,KEY_BUF_GMOVDIS_BUF_S,KEY_BUF_SMOVDIS_BUF_B,KEY_BUF_BCALLK_DELAY