欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于51的温度报警器设计讲诉Word格式文档下载.docx

    • 资源ID:4489584       资源大小:1.22MB        全文页数:29页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51的温度报警器设计讲诉Word格式文档下载.docx

    1、在温度传感器选择时,为了避免大量的硬件设计,增加成本,选择了数字型温度传感器,从而不用在使用时进行AD转换,附加复杂的信号调理电路;在液晶模块选择时,考虑到单片机IO口的利用率,舍弃了需占用大量IO口并行传输的1602,选择了可以进行串行传输的12864;在报警方式选择时,舍弃了液晶显示闪烁报警,选择了更能引起用户注意的蜂鸣器发声报警方式。3 硬件电路设计3.1 电源电路设计51单片机,温度传感器DS18B20,12864液晶模块所需正常的工作电压是5V,因此设计的电源应能够提供5V直流电,图3.1是设计的电源电路图。在该电源电路中使用了三端集成稳压芯片L M7805,可以输出5V直流电压。图

    2、3.1 电源电路图3.2 晶振电路电路中的晶振就是石英晶体震荡器。石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器常用来产生基准频率的。此外它还可以产生振荡电流,向单片机发出时钟信号。图3.2是设计的单片机晶振电路。片内电路与片外器件构成一个时钟产生电路,晶振频率一般多在1.2MHz24MHz之间选取。C1、C2是反馈电容,其值在20pF100pF之间选取,一般为30pF左右。本电路选用的电容为33pF,晶振频率为12MHz。时钟周期为1us。 图3.2 单片机晶振电路3.3 复位电路复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于2个

    3、机器周期的高电平。复位后的单片机地址初始化为0000H,然后单片机继续从0000H单元开始执行程序。单片机复位有上电复位和手动复位两种方式,图3.3所示的复位电路可以实现上电复位和手动复位两种基本功能。图3.3 复位电路图3.4 矩阵键盘电路由于采用单个按键的方式会提高设计的复杂性,且占用IO口较多,本设计采用了4*4矩阵键盘,矩阵键盘的应用可以获取16个键值,降低了设计难度,节约了单片机IO口,提高了单片机IO口的利用率。4*4矩阵键盘电路在本温度报警器设计中起到的作用是设定报警温度的上下限,它的四条行线和四条列线占用了单片机的P1口,如图3.4所示。其中S0至S9用于设定温度值,S10按下

    4、则启动设定温度下限,S11按下则启动设定温度上限。 图3.4 矩阵键盘电路图3.5 温度检测电路温度检测电路采用的是单线数字型温度传感器DS18B20,其外形如图3.5所示。DS18B20独特的单总线接口使其仅通过一条数据线就可以完成数据传输。它的供电电压在3V至5.5V之间,感温范围在-55摄氏度至+125摄氏度之间,9至12位可调分辨率。DS18B20有3条输出引线,分别接电源,地,单片机引脚,由于在正常工作时,该传感器需要约1mA的驱动电流,所以硬件电路需要在接电源和地的两条引线之间接一个约5K的电阻,硬件电路图如图3.6所示图3.5 DS18B20实物图图3.6 温度检测电路3.6 液

    5、晶显示电路本课题设计的温度报警器显示模块采用的是字符型液晶QC12864B,带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行(即32个)1616 点 阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都

    6、要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。本设计采用的是该液晶的串行方式,其串行方式引脚接法如表1所示,硬件电路图如图3.7所示。表1:QC12864B串行方式引脚接线图管脚号名称LEVEL功能1VSS0V电源地2VDD+5V电源正3Vo-对比度调整4CSH/L片选,高电平有效5SID串行数据输入6CLK串行同步时钟,上升沿读取SID数据15PSBLL:串行方式19A背光源电压+5V20K背光源负端0V图3.7 液晶显示电路3.7 蜂鸣器报警电路当温度超过设定范围时,采用蜂鸣器模块电路报警,电路中跳线帽的作用是可以人为地接通或断开该电路,电阻起到限流的作用。电路工作原理是当温度

    7、超出温度设定范围时,通过程序编程给P0口第7个引脚赋为低电平,三极管导通,蜂鸣器发声。 图3.8 蜂鸣器报警电路4 系统软件设计系统软件设计主要包括键盘扫描子程序,温度上下限设定子程序,延时子程序等几部分构成。本章节系统的介绍了温度报警器的主程序和各主要功能子程序的设计流程,具体的程序代码见附录2。4.1 主程序软件设计主程序构成无限循环,主要完成相关模块初始化,温度采集,设定温度上下限,液晶显示,温度超出设定范围时蜂鸣器报警等功能,主程序的流程图如图4.1所示。图4.1 主程序流程图程序首先进行相关宏定义,定义变量和数组,编写所需要的子函数,然后在主函数中调用液晶初始化子函数对液晶进行初始化

    8、,并在液晶第一行显示温度显示四个汉字,调用温度采集函数对当前温度进行采集,调用温度上下限设定子函数设定适合现场的温度范围,然后将采集到的温度值同设定的温度上下限进行比较。若在设定范围内,则调用液晶显示函数显示当前温度并返回到温度采集子函数调用处;若不在设定范围内,则调用液晶显示函数显示当前温度,使蜂鸣器报警,程序返回温度采集子函数调用处。4.2 键盘扫描程序设计图4.2 键盘扫描程序流程图 该键盘扫描程序采用行扫描的方式,从第一行扫描到第四行,首先将第一行设为低电平,其余行为高电平,通过读取P1口高四位电平情况判断是否有键按下,若无键按下则扫描下一行,若有键按下,延时5ms消抖,再次判断是否有

    9、键按下,若无键按下则扫描下一行,若有键按下则通过switch语句获取相应键值,松手检测后扫描下一行。4.3 温度上下限设定子程序设计图4.3 温度上下限设定子程序流程图 该程序功能是设定温度上下限,程序开始,调用键盘扫描函数获取一个键值,通过第一个if语句判断该键值是否为10,若是则通过for循环执行三次依次获取三个键值并赋给数组b ,从而计算出温度下限l,然后再次调用键盘扫描函数通过第二个if语句进行所得键值是否为11的判断;在第一个if语句判断中若键值不为10,则通过第二个if语句进行所得键值是否为11的判断。在第二个if语句进行所得键值是否为11的判断中,若键值为11,则通过for循环执

    10、行三次依次获取三个键值并赋给数组c ,从而计算出温度上限h,然后程序结束;若不为11,则程序结束。4.4 延时子程序设计图4.4 延时子程序流程图由于单片机采用的是12MHZ晶振,则执行一条空指令所用时间恰为1us,子函数中设定的参数x是空指令执行次数,所以这是一个us级的软件延时函数。5 系统调试由于实验室的仪器较老,有些损坏,为了更好地调试,最终采用了自己买的51开发板。首先利用Keil软件进行编程,反复调试无错后生成了一个Hex文件,然后将程序烧录进单片机里面,进行运行。单片机运行后采集到当时室内温度为11.6,如图5.1,用矩阵键盘将温度上下限设为1015,用手捏住温度传感器DS18B

    11、20一段时间,当传感器采集到的温度大于15时,如图5.2,蜂鸣器成功报警,说明该单片机系统能够很好地完成预期的功能。图5.1 采集室内温度显示图5.2 加热后温度显示6总结经过一周多的努力,终于完成了单片机课程设计,我们小组的题目是基于89C51的温度报警器设计,在经过大量的资料查阅后,我经过比较论证,进行了以AT89C51单片机为微控制器的温度报警器设计。该设计围绕单片机附加了矩阵键盘电路,可以对温度上下限进行设定,增强了该设计的适应性;附加了温度检测模块,液晶模块,蜂鸣器电路分别对温度进行检测和显示,并在温度超出设定值时发声报警。由于基础和时间有限,在设计过程中存在一些考虑不周的地方,例如

    12、在选择显示模块时,只考虑到和数码管相比,液晶具有显示内容丰富,低功耗的特性,在价格上考虑较少,此外,由于程序较复杂,还存在一些可以简化的地方。总之,通过一个完整的课程设计,让我对所学的单片机知识有了更加深刻的理解和掌握,了解了用C语言对单片机进行编程的方法,此外使我复习了protel画电路图,visio画流程图,从而为以后的毕业设计打下了坚实的基础。参考文献1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,2006 4 郭天祥. 新概念51单片机C语言

    13、教程.北京:电子工业出版社,2009附录1 系统原理图附录2 程序清单#include #include /包含 _nop_()的定义#define uint unsigned int /对无符号整型数据类型进行宏定义#define uchar unsigned char /对无符号字符型数据类型进行宏定义sbit P03=P03; /对P0口的相关引脚进行位定义sbit P04=P04;sbit P05=P05;sbit P06=P06;sbit P07=P07;#define rs_1 P03=1 /宏定义 rs_1表示寄存数据#define rs_0 P03=0 /宏定义 rs_0表示寄

    14、存指令#define rw_1 P04=1 / 宏定义 rw_1表示读操作#define rw_0 P04=0 / 宏定义 rw_0表示写操作#define en_1 P05=1 / 宏定义 en_1 表示使能#define en_0 P05=0 / 宏定义 en_0 表示禁止#define DS_0 P06=0 / 设P0.6引脚为低电平#define DS_1 P06=1 /设P0.6引脚为高电平#define DS_H DS_1 /设P0.6引脚为输入#define DS_L DS_0 /设P0.6引脚为输出uint TEMP_Result,te; / 定义整型变量uchar table

    15、=温度显示; / 定义无符号字符型数组uint i,a3,b3,c3,l=100,h=300 / 定义无符号整型变量和数组 uchar temp_low,temp_high,num; /定义无符号字符型变量uchar key,temp;void delay_us(uint x) /定义us级延时函数 for(i=0;ix;i+) _nop_();uchar keyscan() /定义键盘扫描函数 /* 扫描第一行 */ P1=0xfe; /将第一行设为低电平,扫描第一行 temp=P1; /读取P1口电平 temp=temp&0xf0; /获取列线电平状态 while(temp!=0xf0)

    16、/当有键按下时 delay_us(5000); /延时5ms消抖 temp=P1; /读取P1口电平 temp=temp& while(temp! temp=P1; switch(temp) /switch语句获取键值 case 0xee: key=1;/若P1口电平为0xee,则得到键值1 break; case 0xde: key=2;/若P1口电平为0xde,则得到键值2 case 0xbe: key=3;/若P1口电平为0xbe,则得到键值3 case 0x7e: key=4;/若P1口电平为0x7e,则得到键值4 while(temp!=0xf0) /松手检测 temp=P1; te

    17、mp=temp& /* 扫描第二行 */ P1=0xfd;=0xf0) switch(temp) case 0xed: key=5; break; case 0xdd: key=6; case 0xbd: key=7; case 0x7d: key=8;/* 扫描第三行 */P1=0xfb;temp=P1;temp=temp&while(temp! case 0xeb: key=9; break; case 0xdb: key=0; case 0xbb: key=10; case 0x7b: key=11;/* 扫描第四行 */P1=0xf7; case 0xe7: key=12; case

    18、0xd7: key=13; case 0xb7: key=14; case 0x77: key=15; return key;/将键值返回至键盘扫描函数调用处void area()/温度上下限设定函数,程序设定温度上下限最大范围为00.0到99.9 keyscan();/调用键盘扫描函数获取键值 if(key=10)/如果键值为10,开始设定温度下限 for(i=0;3; keyscan(); bi=key; delay_us(5000); l=100*b0+10*b1+ b2;/b0为十位数值,b1为个位数值,b2为十分位数值 keyscan(); if(key=11)/如果键值为11,开始

    19、设定温度上限 ci=key; h=100*c0+10*c1+ c2;void Sendbyte(uchar dat)/串行发送数据子函数8; en_0; if(dat&0x80)/如果最高位数据被发送 rw_1; else rw_0; en_1; dat=dat1;/左移一位void write_com(uchar com)/写指令子函数 rs_1; Sendbyte(0xf8); Sendbyte(com&0xf0);/取高四位,数据分两次传送 /每字节的内容被送入两个字节 /高四位放在第一个字节的高四位 Sendbyte(com&0x0f)4);/低四位放在第二个字节的高四位 rs_0;v

    20、oid write_date(uchar date)/写数据子函数 Sendbyte(0xfa); Sendbyte(date& Sendbyte(date&void lcd_init()/液晶初始化子函数 write_com(0x01); /清除显示屏幕 write_com(0x30); /基本指令集动作 write_com(0x0c); /开显示,无游标 write_com(0x06); /设定光标右移,整屏不移动 write_com(0x02); /清DDRAM位址归位 write_com(0x82); /将第一行显示位置设为第3个汉字位 for(num=0;numnum+) /在第一行

    21、显示汉字“温度显示” write_date(tablenum);void lcd_display() /lcd显示函数 write_com(0x92); /设定温度值显示的位置 write_date(0x30+a0);/显示温度十位数值 write_date(0x30+a1);/显示温度个位数值 write_date(0x2e); /显示小数点 write_date(0x30+a2);/显示温度十分位数值 write_date(0xA1); /*lcd显示温度值符号*/ write_date(0xE6);int DS18B20_init(void) int t; DS_H; delay_us(

    22、50);/_nop_();是单周期指令,实现短时间延时 DS_L; DS_0; /主器件拉低 delay_us(500); /最少480us /电阻上拉 delay_us(60); /等待1560us if(P06=0) t=1; /判断存在脉冲,DS18B20是否拉低 else t=0; delay_us(480); /最小480us return(t); /若DS18B20复位,返回值t=1void DS18B20_w(uchar date) DS_L; /主器件拉低开始delay_us(3); /最少延时1us if(date) DS_H; /电阻上拉,写1 else /主器件拉低,写0 DS_0; delay_us(80); /写时隙必须至少持续60


    注意事项

    本文(基于51的温度报警器设计讲诉Word格式文档下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开