资源描述:
《AVR数字温度传感器实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南京邮电大学2010/2011学年第1学期课程设计:实验报告模块名称AVR单片机课程设计专业网络工程学生班级B080221学生学号B080221xx学生姓名XXXXX指导教师李虹戴海鸿杨洁王明伟日期:2010年11月29日至2010年12月25日AVR单片机课程设计报告一.课程设计目的1、设计要求本课程着重于把理论学习的知识应用于实际,解决实际的工程问题,培养学生的系统设计能力,提高学生的科研动手能力。本次设计要求深入了解AVR单片机ATmega128的功能,通过研究开发板的硬件设计,进行相关的
2、硬件连接,选择合适的编程及程序植入方法,用开发板完成列出的各设计课题;初步学习撰写规范的设计文档;提交实验报告。二.课程设计内容(具体的课题内容、完成要求、相关软件介绍等)1、基本要求:1、正确连接数字温度传感器DS18B20,采集温度数据在数码管、LCD1602上显示或通过串口将数据传递至PC。2、记录间隔可任意设定(1S到1h,步长1s),能按设定时间存储数据。3、设定温度告警门限。4、通过蜂鸣器、发光二极管进行告警显示。2、相关软件介绍。(1)ICCAVR简介。简而言之,ICCAVR是一个
3、进行C代码输入和调试的AVR与代码的软件接口,它将若干个“.C”或“.h”文件合并在一起进行联合编译,生成一系列各种格式的文件,这其中“.cof”和“.hex”文件可以在AVRstudio中进行烧制,“.cof”文件还可以在AVRstudio中进行仿真操作。(2)AVRstudio简介。AVRstudio是与硬件进行直接交互的软件,在对其进行合理设置(选芯片,连端口)以后,它可以对ICCAVR生成的“.cof”和“.hex”文件分别进行仿真和烧制。当成功烧制到EasyAVR板当中之后,单片机可以
4、通过AVRstudio中的文件内容实现相应的功能。三.课程设计过程1.设计原理和思想。本实验可以分为三个部分来考虑:1、温度传感器DS18B20采集温度显示在LED上。2、设定温度告警门限。通过蜂鸣器、发光二极管进行告警显示。3、添加按键控制温度警告门限和各功能汇总。做温度采集时,要深刻了解DS18B20的作用,并且能与后面的LED例程能够好好结合。在做LED动作组设计的时候,关键思想是使用循环或者嵌套循环来写程序,从第一个灯到最后一个灯分别先后完成一系列相关动作(调用循环语句可以使LED灯按照
5、一定顺序形成一个“流程”,这对于顺序的控制尤为关键);而关键语句则是对端口的一些与、或、非操作(端口是由两位十六进制数表示的PORTE,与、或、非等操作使端口值静态地置为下一步的值,这些操作可以很好地控制LED灯的亮灭效果,达到预期目的)。将这两种方法结合很容易获取一切所需要的效果。7位数码管的设计有三个步骤:一是对4位数码管的数值进行赋值(EasyAVR公司的库函数中定义了若要管显示0-9直接赋值,若让管灭赋值16),并调用Seg7_Led_Update();语句进行更新,数值就会短暂地出现在
6、管中;二是使用循环使数值在管上停留一段时间,让人眼能清晰地感应到数值的存在;三是适时地对管上的数值进行改变,使其完成带补位的左移效果和单字左移效果等等。按键控制的思路是用key.c中的get_key()函数来读入按键,然后用case语句来判断按的是哪个按键;再设置标识符来观测是第几次进入同一个case(即第几次按同一个键),若对同一个按键进行多次触发,控制单片机实现不同的效果,并设置递归使按满三次后还原为第一个效果重新执行。2、硬件原理图的介绍。LEDKEY按键控制SEG7四位七段数码管DS18
7、B20测温模块3、软件方面程序流程图的设计。开始初始化CPU,包括GPIO,TWI,DS18B20SPI显示瞬时温度设置警告温度值低温—1低温+1高温—1高温+1S4S3S2S1判断瞬时温度是否达到报警温度超过报警温度报警+闪灯结束4、关键代码介绍。/************************************************文件:main.c用途:注意:内部8M晶振************************************************/#inclu
8、de"config.h"unsignedchari=0,j;unsignedcharLED_table[]={0xFF,0x00,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0x00,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x00,0xFF,0x7E,0xBD,0xDB,0xE7,0xFF,0x00,0xE7,0xDB,0xBD,0x7E,0xFF,0x00};voidmain(