《单片机原理与应用》课程设计-基于ATmega16实现的电压和温度的采集及液晶显示系统.doc_第1页
《单片机原理与应用》课程设计-基于ATmega16实现的电压和温度的采集及液晶显示系统.doc_第2页
《单片机原理与应用》课程设计-基于ATmega16实现的电压和温度的采集及液晶显示系统.doc_第3页
《单片机原理与应用》课程设计-基于ATmega16实现的电压和温度的采集及液晶显示系统.doc_第4页
《单片机原理与应用》课程设计-基于ATmega16实现的电压和温度的采集及液晶显示系统.doc_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学单片机原理与应用课程设计 1 课程设计任务书课程设计任务书 学生姓名:学生姓名: 专业班级:专业班级: 自动化自动化 05010501 班班 指导教师:指导教师: 工作单位:工作单位: 自动化学院自动化学院 题题 目目: : 电压和温度的采集及液晶显示电压和温度的采集及液晶显示 要求完成的主要任务要求完成的主要任务: : (包括课程设计工作量及其技术要求,以及说明书撰 写等具体要求) (1)系统能够测量环境温度,测量范围 0-100 摄氏度。 (2)系统能够测量给定电压,测量范围 0-5v。 (3)电压测量精确到 0.01 伏,温度测量精确到 0.1 摄氏度。 (4)具有液晶实时显示当前电压及温度的功能。 时间安排:时间安排: 序序 号号 设计内容设计内容所用时间所用时间 1选题及调研1 天 2硬件软件设计2 天 3硬件软件调试及撰写报告1 天 答辩1 天 合 计1 周 指导教师签名:指导教师签名: 年年 月月 日日 系主任(或责任教师)签名:系主任(或责任教师)签名: 年年 月月 日日 武汉理工大学单片机原理与应用课程设计 2 目录目录 摘要摘要3 3 1.1. 硬件选择及各模块组成硬件选择及各模块组成4 4 1.11.1 设计原设计原理理4 4 1.21.2 器件选择及基本原理器件选择及基本原理4 4 1.2.1 模数转换模块.4 1.2.2 atmega16 芯片模块.5 1.2.3 ds18b20 模块6 1.2.4 液晶显示器模块.7 2 2 各模块实现方法说明及整体电路图各模块实现方法说明及整体电路图 9 2.1 温度采集9 2.2 电压采集9 2.3 液晶中文显示.9 2.4 整体电路图 1010 3.3.软件设计软件设计1111 3.1 程序设计流程图 1111 3.2 源程序 1111 4 4 仿真调试结果仿真调试结果1212 总结总结1313 参考文献:参考文献:1414 附录附录 1 1 1515 主程序源程序主程序源程序: :1515 显示驱动程序源程序显示驱动程序源程序: :2222 武汉理工大学单片机原理与应用课程设计 3 摘要摘要 此次课程设计是基于 atmega16 实现的电压和温度的采集及液晶显示系统。 该系统主要包括控制器、温度传感器、外部参考电压及测试电压、液晶显示器 几个硬件部分。控制器采用的 8 位 avr 系列单片机-atmega16,有高性能、低功 耗等优点,电压采集是通过单片机内部的数模转换器实现的;温度传感器则采 用 ds18b20 实现,该传感器有低功耗单总线控制的特点,显示部分采用控制芯 片为 ks0108 的 12864 液晶显示器,通过单片机的 i/o 口直接驱动。 关键词:关键词: avr atmega16 温度传感器 ds18b20 12864 液晶显示器 武汉理工大学单片机原理与应用课程设计 4 1.1. 硬件选择及各模块组成硬件选择及各模块组成 1.1 设计原理 整个系统主要涉及数据采集,数据处理,数据显示 3 方面内容。利用单片 机内部的数模转换器完成电压数据的采集,将外部待测的模拟电压信号转换为 数字信号,单片机中读取这个转换值会根据参考电压进行相关的处理计算出实 际的电压值。温度采集通过温度传感器在单片机工作时不断查询其温度信息以 备显示。显示部分主要是 12864 液晶显示器,并在单片机运行时不断更新采集 到的电压和温度信息。 1.2 器件选择及基本原理 1.2.11.2.1 模数转换模块模数转换模块 由于单片机只能处理数字信号,因此外部模拟信号必须经过转换,变成数 字信号之后才能输入到单片机中。模数转换器就是一种将模拟信号转换成数字 信号的器件,atmega16 单片机的片内包含一个 8 通道的 10 位数模转换器,其 内部结 构如下图图 1。 如图,atmega16 单片机的模数转换单元包括一个 8 通道的模拟开关, 一个采样保持比较器,一个转换逻辑和 3 个控制/状态寄存器。adc 可以将输 入的模拟电压信号转换成一个 10 位的数字量信号。输入模拟电压的范围介于 agnd 和 avcc 之间,输入模拟信号通道通过 admux 寄存器选择。adc 模 块由 adscra 寄存器的 aden 位使能,当 adc 模块被启动以后,用户可以通 过 sfior 寄存器选择单次转换模式或者连续转换模式。adc 的转换结果存储 在 adch 和 adcl 两个寄存器中。 武汉理工大学单片机原理与应用课程设计 5 图 1 atmega16 单片机的模数转换器结构 1.2.21.2.2 atmega16atmega16 芯片芯片模块模块 atmega16 本身具有数模转换功能,完全能够满足本设计题目的要求,故本设计不需要接 单独的 ad 芯片,由单片机实现电压采集和控制器的作用。 具体引脚应用及引脚图如下: 端口端口 a(pa7pa0)a(pa7pa0): 端口 a 做为 a/d 转换器的模拟输入端。端口 a 为 8 位双 向 i/o 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性, 可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部 电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 a 处于 高阻状态。本设计只需要用到一个 a/d 转换口,可以任意选用 pa7 到 pa0 的任 意一个端口作为电压输入,本设计选用 pa4。 端口端口 b(pb7pb0)b(pb7pb0): 端口 b 为 8 位双向 i/o 口,具有可编程的内部上拉电阻。 其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。本设计中 pb2- pb6 口用来连接 12864 液晶显示器的 5 个控制断口驱动显示。 端口端口 c(pc7pc0)c(pc7pc0): 端口 c 为 8 位双向 i/o 口,具有可编程的内部上拉电阻。 其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时, 武汉理工大学单片机原理与应用课程设计 6 若内部上拉电阻使能,端口被外部电路拉低时将输出电流。本设计中用将 pc0 用做普通 io 端口,通过程序实现与 ds18b20 的单总线通信。 端口端口 d(pd7pd0)d(pd7pd0): 端口 d 为 8 位双向 i/o 口,具有可编程的内部上拉电阻。 其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时, 若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。本设计中 pd 口全 部接在 12864 液晶显示器的 8 个数据口,用来传送液晶显示器的指令和数据。 aref a/d 的模拟基准输入引脚,由于设计要求测量电压范围为 0-5v,故此引 脚接 5v 的基准电压源。 reset: 复位输 入引脚。持 续 时间超过最 小门限时间 的低电平将引 起系 统复位持续时间小于门限间的脉冲不能保证可靠复位。 地,电源略地,电源略 1.2.31.2.3 ds18b20ds18b20 模块模块 ds12b20 数字温度计提供 9 位温度数,指示器件的温度。信息经过但借口 送入 ds18b20 或从 ds18b20 送出,从单片机到 ds18b20 只需要一条线,因此成 为单线。ds18b20 不需要外部电源。它允许在许多不同的地方防止温度传感器。 ds18b20 的测量范围从-55 摄氏度到+125 摄氏度,增量值为 0.5 摄氏度,可在 1s 内把温度变换成数字。其引脚分布和内部结构如图 2,图 3。 图 2 ds18b20 内部结构图 武汉理工大学单片机原理与应用课程设计 7 图 3 ds18b20 引脚分布图 根据 ds18b20 的协议规定,微控制起控制 ds18b20 完成温度转换必须经过 以下 4 个步骤: 1,每次读写前对 ds18b20 进行复位初始化。复位要求 cpu 将数据线下拉 480us,然后释放,ds18b20 收到信号后等待 60us 左右,然后发出 60us-240us 的低存在脉冲,主 cpu 收到此信号表示复位成功。 2,发送一条 rom 指令。 3,发送存储器指令 4,进行数据通信。 1.2.41.2.4 液晶显示器液晶显示器 为了能够显示汉字,本设计选用了点阵型 lcd,型号为 hs12864。hs12864 是一种图形点阵液晶显示模块,它主要由行驱动器/列驱动器和 128*64 全点阵 液晶显示器组成,它除了可以显示 8*4(16*16 点阵)的汉字外,还可以完成图 形显示功能,应用十分灵活。 hs12864 的主要技术参数如下: 电源:dc+5,模块内自带用语 lcd 驱动的负压电路。 显示内容:128*64 全屏幕电阵。 指令系统:七种指令。 接口形式:与控制器采用 8 位数据总线和 8 条控制线相连。 模块主要构成,引脚功能及指令表: 武汉理工大学单片机原理与应用课程设计 8 图 4 hs12864 引脚功能表 图 5 hs12864 模块内部结构 武汉理工大学单片机原理与应用课程设计 9 图 6 hs12864 指令表 2 2 各模块实现方法说明各模块实现方法说明及整体电路图及整体电路图 2.1 温度采集 由于 ds18b20 采用的是单总线协议,在对其进行操作时必须严格满足其时 序,否则无法正常工作和读取结果。pa0 与 ds18b20 的数据线相连,通过编制 程序使 io 口严格满足其工作时序并循环读取温度转换结果以便显示。具体软件 流程见“软件设计” 2.22.2 电压采集电压采集 通过单片机的 adc 模块实现,外围只需要接 5v 的参考电压。通过在单片机 初始化时设置 pa4 口的工作模式为 adc 模式,并通过设置相关寄存器对 dac 进 行初始化。程序运行中通过指令循环启动 da,并读出转换数值。具体软件实现 流程见“软件设计” 。 武汉理工大学单片机原理与应用课程设计 10 2.32.3 液晶中文显示液晶中文显示 此部分的主要工作是根据器件手册上提供的时序编写液晶驱动程序,生成 显示汉字,显示字符,显示数字的子函数,在主函数只需要调用即可。另外由 于 hs12864 不带中文字库,必须手动生成所需要显示汉字及字符的字库,可以 用专门的软件实现。要显示的部分分为提示语言的固定汉字和不断刷新的数字 量,固定显示的汉字只需写入一次即可,不断刷新的部分通过在程序中不断刷 新显示内容以实现动态显示。 2.4 整体电路图 图 7 整体电路仿真图 武汉理工大学单片机原理与应用课程设计 11 3.软件设计软件设计 3.1 程序设计流程图 主程序流程: 显示程序流程: 图 8 程序流程图 3.2 源程序见附件 1 武汉理工大学单片机原理与应用课程设计 12 4 4 仿真调试结果仿真调试结果 上图为程序运行仿真后的效果,仿真中待测电压由滑动变阻器分压产生 0- 5v 的电压,由 pa4 输入单片机。ds18b20 的数据线与 pa0 相连,当前温度可以 任意调,现在为 17 度。可以看到经过单片机采集并显示的电压值与电压表示数 完全一致,温度值与 ds18b20 显示的数值完全一致。说明系统工作正常,顺利 实现了设计功能。 武汉理工大学单片机原理与应用课程设计 13 总结总结 几天的课程设计终于过去了,虽然说过程比较累,但我发现它对自己还是 很有帮助的,比如说人比较懒,不愿意动,平时知识也不扎实,但在设计过程 中碰到自己不懂的问题却只有耐心下来,查书或在网上弄清楚答案。 再就是说通过本次实验我对本课程有了更多的了解与认识,课程设计不仅 是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课 程设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前 老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设 计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断 的学习,努力提高自己知识和综合素质。 在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什 么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这 里非常感谢帮助我的同学。 我的心得也就这么多了,总之,不管学会的还是学不会的的确觉得困难比较多, 真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此 外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会 了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才 是真的学会了。 武汉理工大学单片机原理与应用课程设计 14 参考文献: 1、金春林,邱慧芳.avr 单片机 c 语言编程与应用实例 .清华大学出版社, 2007 2、陈冬云,杜敬仓等.单片机原理与开发指导.清华大学出版社,2006 武汉理工大学单片机原理与应用课程设计 15 附录附录 1 1 : 主程序源程序主程序源程序: : /icc-avr application builder : 2008-5-14 1:11:50 / target : m16 / crystal: 8.0000mhz #include #include #include “12864.h“ unsignedunsigned intint input,voltage;/定义变量 voidvoid port_init(voidvoid)/端口初始化 porta = 0x00; ddra = 0x00; portb = 0xff; ddrb = 0xff; portc = 0xff; /m103 output only ddrc = 0x00; portd = 0xff; ddrd = 0x00; voidvoid delayus(unsignedunsigned intint n)/us 延时 unsignedunsigned intint a; unsignedunsigned intint i; a=n; forfor (;a!=0;a-) forfor(i=8;i!=0;i-); 武汉理工大学单片机原理与应用课程设计 16 voidvoid delayms(uchar p) uchar a=0; uchar b=0; forfor(;a0;i-) value=1; ddrc|=bit(pc0); portc delayus(1); ddrc mid=pinc ifif(mid) value|=0x80; delayus(60); returnreturn(value); 武汉理工大学单片机原理与应用课程设计 18 voidvoid write_byte(charchar val)/*ds18b20 写一个字节 uchar i,mid; forfor(i=8;i0;i-) ddrc|=bit(pc0);/ portc delayus(2); mid=val ifif(mid) portc|=bit(pc0); elseelse portc delayus(60); val=val1; delay(60); portc|=bit(pc0); intint read_temp(voidvoid)/读取温度 uchar high=0,low=0; intint x; ifif(!reset() write_byte(0xcc);/写 rom 指令 write_byte(0x44); 武汉理工大学单片机原理与应用课程设计 19 delayms(1000); reset(); write_byte(0xcc); write_byte(0xbe); low=read_byte(); high=read_byte(); x=(high x #include /* */ #defineclrbit0(portb,rs) portb=portb uchar du=0x00,0x00,0xfc,0x24,0x24,0x24,0xfc,0xa5, 0xa6,0xa4,0xfc,0x24,0x34,0x26,0x04,0x00, 0x40,0x20,0x9f,0x80,0x42,0x42,0x26,0x2a, 0x12,0x2a,0x26,0x42,0x40,0xc0,0x40,0x00,; uchar fuhao=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,; uchar dian=0x00,0x00,0xf8,0x48,0x48,0x48,0x48,0xff, 0x48,0x48,0x48,0x48,0xf8,0x00,0x00,0x00, 0x00,0x00,0x0f,0x04,0x04,0x04,0x04,0x3f, 0x44,0x44,0x44,0x44,0x4f,0x40,0x70,0x00,; uchar ya= 0x00,0x00,0xfe,0x02,0x42,0x42,0x42,0x42, 0xfa,0x42,0x42,0x42,0x62,0x42,0x02,0x00, 0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20, 0x3f,0x20,0x21,0x2e,0x24,0x20,0x20,0x00,; uchar shi=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,; 武汉理工大学单片机原理与应用课程设计 24 uchar xiaoshudian=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,; uchar fute=0x08,0x78,0x88,0x00,0x00,0xc8,0x38,0x08, 0x00,0x00,0x07,0x38,0x0e,0x01,0x00,0x00,; uchar zero= 0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00, 0x00,0x0f,0x10,0x20,0x20,0x10,0x0f,0x00,; uchar one= 0x00,0x10,0x10,0xf8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,; uchar two= 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,; uchar three= 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0e,0x00,; uchar four= 0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,; uchar five= 0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,; uchar six= 0x00,0xe0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0f,0x11,0x20,0x20,0x11,0x0e,0x00,; uchar seven= 0x00,0x38,0x08,0x08,0xc8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,; uchar eight= 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,; uchar nine= 0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0f,0x00,; uchar t=0;/以上全部是字模,包括需要显示的汉字,字符和数字。 voidvoid delay(unsignedunsigned longlong intint time)/延时 uint k; forfor(k=time;k2;k-); voidvoid setpage(uchar page)/ delay(100); setbit2(portb,e); clrbit1(portb,rw); clrbit0(portb,rs); page=page / 0=line=7 page=page|0xb8; portd=page; 武汉理工大学单片机原理与应用课程设计 25 clrbit2(portb,e); voidvoid setlie(uchar lie)/ 设置列 delay(100); setbit2(portb,e); clrbit1(portb,rw); clrbit0(portb,rs); lie=lie / 0=column=63 lie=lie | 0x40; portd=lie; clrbit2(portb,e); voidvoid choosepinmu(uchar pin)/选择屏幕 delay(100); setbit2(portb,e); clrbit1(portb,rw); clrbit0(portb,rs); switchswitch(pin) casecase 1: setbit4(portb,cs2);clrbit3(portb,cs1); casecase 2: setbit3(portb,cs1);clrbit4(portb,cs2); casecase 0: setbit4(portb,cs2);setbit3(portb,cs1); clrbit2(portb,e); voidvoid writebyte(uint shuma)/写字节指令 delay(100); setbit2(portb,e); clrbit1(portb,rw); setbit0(portb,rs); portd=shuma; clrbit2(portb,e); voidvoid clr_scr()/清屏 unsignedunsigned intint m; 武汉理工大学单片机原理与应用课程设计 26 unsignedunsigned charchar j,k; clrbit3(portb,cs1); setbit4(portb,cs2); forfor(k=0;k8;k+) setpage(k); setlie(0); forfor(j=0;j64;j+) writebyte(0x00); delay(300); forfor(m=0;m5;m+); clrbit4(portb,cs2); setbit3(portb,cs1); forfor(k=0;k8;k+) setpage(k); setlie(0); forfor(j=0;j64;j+) writebyte(0x00); delay(300); forfor(m=0;m5;m+); /*-初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论