




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、自动化与电气工程学院单片机课程设计目录1. 引言12. 设计方案及原理23. 硬件设计33.1 单片机最小系统33.2 液晶(1602)显示电路33.3 ds18b20数字温度计43.4 at89c51单片机43.5 系统主电路图54. 软件设计64.1 主程序流程图64.2 初始化流程图64.3 显示函数85. 总结96. 参考文献11附录 a 1602内部的字符集12附录 b 源程序代码13 - 22 -自动化与电气工程学院单片机课程设计1. 引言随着“信息时代”的到来,作为获取信息的手段传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡
2、量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。由于传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响因素。传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应
3、用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其发展速度之快,以及其应用之广,并且还有很大潜力。为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度采集监控系统。美国dallas公司的ds18b20数字温度传感器是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度
4、测量电路变得简单、可靠。本文结合实际使用经验,介绍了ds18b20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。为了便于观察,即监控,读回来的温度值会在液晶屏上显示。单片机芯片使用的是atmel公司的at89c51单片机。它的时钟频率可达24mhz。而本设计所使用的时钟频率为12mhz,这个频率在其它型号的单片机上也能使用,便于系统移植。2. 设计方案及原理在温度采集系统中,传统的测温方法是将模拟信号远距离采样进行a/d转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。采用数字温度芯片ds18b20测量温度,输
5、出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在-10+85时的测量精度为-0.5。ds18b20的最大特点之一采用了单总线的数据传输,由数字温度计ds18b20和微控制器at89c51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大,且由于单总线上可以带多个ds18b20,因此可以非常容易实现多点测量.轻松的组建传感器网络。本文为说明ds18b20的采集过程就用一个ds18b20,做单点温度采集。采用温度芯片ds18b20测量温度,可以体现系
6、统芯片化这个趋势。部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。本文应用这一温度芯片,也是顺应这一趋势。下面是系统整体框图:图 2-1 系统设计原理图3. 硬件设计3.1 单片机最小系统所谓单片机最小系统是指能让单片机运行程序的最小配置,包括时钟电路和复位电路。复位是单片机应用系统中不可或缺的操作,复位是使单片机处于某种确定的初始状态。单片机的工作就是从复位开始的。下面是复位操作的一种电路图:图 3-1 复位电路微型计算机执行指令是通过按序完成各种微操作,达到实现指令功
7、能目的的。各指令的微操作在时间上是有严格的次序,这种微操作的时间次序称为时序。单片机的正常运行需要片外的时钟信号来为内部的各种微操作提高时间基准。而外部的时钟信号是由外部的时钟电路产生的,如下图:图 3-2 时钟电路3.2 液晶(1602)显示电路液晶显示技术在我们的日常生活中应用的很多。它的显著特点是:低压微功耗、平板型结构、被动显示、显示信息量大、易于彩色化、没有电磁辐射、寿命长等等。其原理图如下:图 3-3 1602液晶屏3.3 ds18b20数字温度计美国 dallas公司的ds18b20数字温度传感器是世界上第一种单总线设备。dq端接在单总线上。与传统上的模拟温度计相比它所需的硬件资
8、源少,连线简洁,可靠性高,抗干扰能力强。ds18b20的外部电源供电方式电路图如下:图 3-4 ds18b20的外部电源供电方式电路图3.4 at89c51单片机当我们使用p0口作为i/o口时,必须在单片机外部添加上拉电阻,如下图排阻所示。图 3-5 接在p0口的上拉电阻下面是at89c51单片机的管脚图,及与本设计有关的单片机管脚的定义:图 3-6 at89c51的管脚及相关引脚定义3.5 系统主电路图通过对系统各个模块的分析设计,然后用总线将各个模块与单片机连接在一起,形成系统的主电路。本文硬件设计的特点是硬件接线简单、清楚。虽然硬件的复杂度得到降低,但却是通过一系列软件模块的加强来加以弥
9、补。图 3-7 系统主电路图4. 软件设计本设计的软件设计部分都是采用c语言开发的。相比汇编语言来说,c语言开发的软件移植性好,容易阅读,更便于缩短开发周期。软件的整体设计是自底向上进行的,即先将各个子功能开发出来,然后将这些子功能嵌在一起。并且在后期的功能扩展时也比较方便,在单片机外围添加相应的外围电路,在程序中添加相应的模块就可以实现系统的扩展。4.1 主程序流程图下图是本设计的主流程图,它的流程简洁,让读者一阅便知系统的清晰结构:图 4-1 系统主程序流程图4.2 初始化流程图系统中的初始化分为系统初始化init_system(),ds18b20芯片的初始化init_ds18b20(),
10、以及液晶的初始化init_lcd()。下面是它们各自的流程图:图 4-2 init_system()函数的流程图在初始化ds18b20的过程中,总线控制器(单片机)会将总线电位拉低,当低电平持续时间在480us到960us之间时复位信号有效。然后ds18b20等待15us到60us后在接下来的60us到240us产生应答信号。如下图初始化时序所示。图 4-3 初始化时序图下面的流程图就是根据上面的时序图来的。图 4-4 ds18b20初始化流程图对于液晶屏来说,初始化的目的是设定它的工作方式。液晶的控制以及数据的传输都是以字节为单位进行的,它的初始化流程图如下图所示。图 4-5 lcd初始化流
11、程图4.3 显示函数显示函数的做用是将时间、日期、温度等信息显示在液晶屏上。因此,这部分也有三个部分组成,即,时间显示、日期显示、温度显示。下面是这三个函数的流程图。显示函数的主要功能是将时间、日期、温度函数的数据信息转换成相应的字符存放在字符数组中,然后将这些数据通过一定的顺序输入到液晶内部的ram中,这样液晶得到信息后就将相应的信息显示在屏幕上。下面是它们的流程图。图 4-6 时间显示流程图图 4-7 日期显示流程图图 4-8 温度显示流程图5. 总结通过本次温度监控系统的设计,我大有收获,在制作过程中,一定要注意的每个工作步骤的检查,确保制作成功。比如在编写程序时一个微小的错误将导致程序
12、不能正常运行,在仿真过程中将连线搭错将在仿真过程中得不到想要的结果。当系统真正出现错误时,首先从相对简单的电路原理图检查起(在程序通过编译后)看看电路是否出现问题,当电路连接无误后就要对程序的各个模块进行检查看看是不是算法及程序书写是不是存在问题,最后看看是不是设计过程中存在原理性错误。当然在实际过程中以上罗列的错误仅仅是比较常见的,其它的错误就不在这里赘述了,遇到后根据个人经验,有针对性的进行解决。这次课程设计历时2周,从一开始的确定课题,到后来的资料查找、理论学习,再有就是近来的调试和测试过程,这一切都使我的理论知识和动手能力进一步得到提高。在这次课程设计中我学会了单片机项目的开发过程,认
13、识和掌握了1602液晶屏的控制以及ds18b20单线总线器件的控制。软件方面更加熟悉了keil c51软件和protues仿真软件的使用及将这两个软件联合起来快速开发单片机应用系统,为后面的学习积累了很多宝贵的经验。从得到题目到查找资料,从对题目的研究设定到protues仿真调试失败后再一次全部重新开始在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我单片机学习情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做课程设计的意义所在。本课题的重点、难点是:(1) 初步接触数字温度传感器,要对传
14、感器的原理、结构、应用等各方面从头开始琢磨;(2) 初次尝试应用液晶做监控显示界面;(3) 熟悉单片机c语言编程;(4) 对ds18b20来说,它的控制先对较难,应为它有严格的时序要求,如果时序不对,那么控制器就不能将温度的数字量读到芯片内,更不能对ds18b20写控制指令,而液晶的显示要了解液晶的字符表(见附录a)。通过做本课题,我了解并掌握了传感器的基本理论知识,更深入的掌握单片机的开发应用和pc编程控制。为以后从事单片机软硬件产品的设计开发、pc软件开发打下了良好的基础,树立独立从事产品研发的信心,并在这种能力上得到了比较充分的锻炼。6. 参考文献1 周兴华.手把手教你学单片机c程序设计
15、.北京航空航天大学出版社.20072 张天凡.51单片机c语言开发详解.电子工业出版社.20083 江志红.51单片机技术与应用系统开发案例精选.清华大学出版社.20084 汤竞南、沈国琴.51单片机c语言开发与实例.人民邮电出版社.20085 李华、王思明、张金敏.单片机原理及应用.兰州大学出版社.20016 李广弟.单片机基础.北京航空航天大学出版社.19947 丁向荣、贾萍.单片机应用系统与开发技术.清华大学出版社.20098 张萌、和湘、姜斌.单片机应用系统开发综合实例.清华大学出版社.2007 附录 a 1602内部的字符集 附录 b 源程序代码/*/* 工程名称:基于ds18b20
16、的温度采集系统 */* 作 者:李 鹏 俊 */* 开发时间:2011年7月7日 */* 工程简介:本项目是我的单片机课程设计。它是将万年*/* 历及温度检测集为一体,然后显示在液晶屏上。用来实时显*/* 现场温度,以及用作监视的液晶屏。 */*/#include<reg51.h>#include <intrins.h>sbit lcdrs=p20; / 寄存器选择,低电平为指令寄存器,高电平为数据存储器sbit lcdrw=p21; / 低电平为数据写sbit lcden=p22; / 使能端,高脉冲使能指令或数据写unsigned char h=0; /计数50ms
17、个数unsigned char code table0=" time:2011/7/7"unsigned char code table1=" by li pengjun"unsigned char time17="07/07/2011 00:00" /初始时间设置int year=2011;unsigned char mou=7;unsigned char day=7;unsigned char code table212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,3
18、1,31,30,31,30,31;bit runnian=0; /为1表示闰年,否则为平年unsigned char hour=0;unsigned char min=0;unsigned char sec=1;/ds18b20sbit dq=p27;unsigned char temph=0;/温度转换高位unsigned char templ=0;/温度转换低位bit flag=0;/flag=0,表示温度为正,相反温度为负int temputer=0;/温度为高三位整数和低四位小数表示unsigned char wendu16="t0: 25.0000 c"/由tem
19、puter转换正负由flag决定/*延时子程序*/void delay_ms(unsigned int ms)unsigned int x,y;for(x=ms;x>0;x-)for(y=105;y>0;y-);/*/* 温度传感器ds18b20 */*/*产生延时时间*/void delay(unsigned int us) /控制ds18b20的延时unsigned int i,j;for(i=0;i<us;i+)for(j=0;j<1;j+); /*ds18b20初始化*/unsigned char init_ds18b20(void)/初始化ds18b20uns
20、igned char present;dq=0;delay(29); dq=1;delay(3);present=dq;delay(25); /延时return present;/*读一个字节*/ unsigned char read_bit()/读一位unsigned char i;dq=0;dq=1;for(i=0;i<3;i+);return dq;unsigned char read_ds18b20(void) /读一个字节 /读一个位的时间60us<t<120usunsigned char temp=0,i=0;for(i=0;i<8;i+)if(read_b
21、it()temp|=0x01<<i;delay(1);return temp;/*写一个字节*/void write_bit(unsigned char date)/写一位dq=0;if(date=1)dq=1;delay(5);dq=1;void write_ds18b20(unsigned char date) /写一个字节 /写一个位的时间60us<t<120usunsigned char i,j;for(i=0;i<8;i+)j=(date>>i)&0x01;write_bit(j);delay(1);/*ds18b20 温度转换*/v
22、oid read_temputer() /读取转换的温度init_ds18b20(); /复位信号write_ds18b20(0xcc); write_ds18b20(0x44); /发送转换命令delay(15000); /等待转换完成init_ds18b20(); /复位write_ds18b20(0xcc); write_ds18b20(0xbe); /发送转换命令templ=read_ds18b20(); /读低8位temph=read_ds18b20(); /读高8位temputer=templ+temph*256;/将温度值转换成字符void wendu_h2d() /将温度值转换
23、成相应的字符float tf;int tem_d; float tem_p;read_temputer(); /读取温度值if(temputer<0)flag=1;temputer=0-temputer;tf=temputer*0.0625;elseflag=0;tf=temputer*0.0625;/上面分析温度正负,以及温度大小tem_d=(int)tf; /tem_d存放温度的整数部分 tem_p=tf-tem_d;if(tem_d/100) wendu5=(tem_d/100)+48;else wendu5=' ' wendu4=' ' tem_d
24、=tem_d%100;if(tem_d/10) wendu6=(tem_d/10)+48;else if(wendu5!=' ') wendu6='0' else wendu6=' ' tem_d=tem_d%10;wendu7=tem_d+48; tem_d=(int)(tem_p*1000);if(tem_d/100)/十分位 wendu9=(tem_d/100)+48;else wendu9='0' tem_d=tem_d%100;if(tem_d/10) wendu10=(tem_d/10)+48;else wendu10
25、='0' tem_d=tem_d%10;wendu11=tem_d+48; if(temputer%2) wendu12='5'else wendu12='0'if(flag=1)if(wendu6=' ')wendu6='-'else if(wendu5=' ')wendu5='-'else wendu4='-'else if(wendu6=' ')wendu4=' 'wendu5=' 'else if(wendu5=
26、' ')wendu4=' 'else wendu4=' '/*/* 液晶显示lm016l */*/*lcd写指令*/void write_command(unsigned char command) /写指令lcdrw=0; /信号写 _nop_();lcdrs=0; / 给低电平,写指令 _nop_(); _nop_();p0=command; / 送命令 _nop_(); _nop_();lcden=1; / 产生高脉冲 delay_ms(2);lcden=0;/*lcd写数据*/void write_data(unsigned char d
27、ate)/写数据lcdrw=0; /信号写 _nop_();lcdrs=1; / 给高电平,写数据 _nop_(); _nop_();p0=date; / 送数据 _nop_(); _nop_();lcden=1; / 产生高脉冲 delay_ms(2);lcden=0;/*lcd初始化*/void init_lcd() /初始化lcd lcdrw=0; /信号写lcden=0; /先将使能端拉低,以便后面产生高脉冲write_command(0x38); /设置显示格式 delay_ms(1);/光标即显示设置write_command(0x0c); /不显示光标 delay_ms(1);w
28、rite_command(0x06); / delay_ms(1);write_command(0x01); /lcd清屏 delay_ms(1);write_command(0x80); /lcd数据指针初始化为00h,指向第一行/*时间显示*/void time_display(void) /显示时间 unsigned char g; if(h=1) /如果计时到达1s进行以下操作h=0;sec+; if(sec%60=0) /不能被60整除 sec=0; min+; /分钟加1if(min%10) write_command(0xc0+0x0f); write_data(+time15)
29、; else g=min/10; if(g%6) write_command(0xc0+0x0e); write_data(+time14); write_data(time15='0'); else write_command(0xc0+0x0e); write_data(time14='0'); write_data(time15='0'); min=0; hour+; if(hour<24) if(hour%10) write_command(0xc0+0x0c); write_data(+time12); else write_co
30、mmand(0xc0+0x0b); write_data(+time11); write_data(time12='0'); else write_command(0xc0+0x0b); write_data(time11='0'); write_data(time12='0'); hour=0; /*日期显示*/void data_display() /日期显示int year=year%100;/取年份的后两位if(hour=0)&&(min=0)&&(sec=0)day+;if(day<=tableru
31、nnianmou-1) if(day%10)write_command(0xc0+0x01);write_data(+time1); elsewrite_command(0xc0);write_data(+time0);write_data(time1='0');elsewrite_command(0xc0);write_data(time0='0');write_data(time1='1');day=1;mou+;if(mou<=12) if(mou%10)write_command(0xc0+0x04);write_data(+time4); elsewrite_command(0xc0+0x03);write_data(+time3);write_data(time4='0');elsewrite_command(0xc0+0x03);write_data(time3='0');write_da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全自动变焦照相机项目资金申请报告代可行性研究报告
- 2024年变频器柜体系统项目资金筹措计划书
- 2025年河南省三门峡市单招职业适应性测试题库汇编
- 2025年湖北省荆门市单招职业倾向性测试题库汇编
- 2025年黑龙江商业职业学院单招职业适应性测试题库一套
- 儿童乐园装修合同
- 2025年度安全培训与操作规范服务协议
- 2025年度员工劳动合同终止及生活困难补助协议
- 2025陕西省安全员C证考试(专职安全员)题库附答案
- 2025年度房屋赠与及物业管理权转移合同
- 2024至2030年全球及中国消费电子磁阻随机存取存储器(MRAM)行业深度研究报告
- 云南省2023年秋季学期期末普通高中学业水平考试信息技术(含答案解析)
- 气血津液(中医理论)
- 2024年2型糖尿病中医防治指南解读课件
- 2024-2030年中国螺旋藻行业市场发展分析及发展趋势与投资研究报告
- MOOC 中外铁路文化之旅-华东交通大学 中国大学慕课答案
- CJJ 82-2012 园林绿化工程施工及验收规范
- 数据库原理及应用(第3版)
- 预防流感健康知识讲座总结
- 国际标准《风险管理指南》(ISO31000)的中文版
- 2023年4月自考00808商法试题及答案含解析
评论
0/150
提交评论