AVR多功能实验开发板毕业设计说明.doc_第1页
AVR多功能实验开发板毕业设计说明.doc_第2页
AVR多功能实验开发板毕业设计说明.doc_第3页
AVR多功能实验开发板毕业设计说明.doc_第4页
AVR多功能实验开发板毕业设计说明.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

学习好帮手 郑州轻工业学院郑州轻工业学院 本科毕业设计 论文 题 目 AVR 多功能实验开发板的设计 学生姓名 杨飞 专业班级 电子科学与技术专业 05 1 学 号 200511010140 院 系 技术物理系 指导教师 职称 张晓冬 助教 完成时间 2009 年 5 月 24 日 学习好帮手 目目 录录 中文摘要 英文摘要 1引言引言 1 2课题研究背景课题研究背景 2 2 1市场上单片机实验开发板情况 2 2 2课题研究的意义 3 3课题研究内容课题研究内容 4 3 1研究主要内容 4 3 2主要方案选择 4 4主要器件的原理及应用主要器件的原理及应用 5 4 1ATMEGA16 5 4 1 1 ATmega16L 性能 5 4 1 2 引脚说明 7 4 1 3 4 1 3 AVR CPU 内核 9 4 2STC89C52 10 4 2 1 STC89C52 性能 10 4 2 2 STC89C52 内部结构图及外部管脚图 11 4 374HC595 芯片资料 12 4 3 1 芯片特点 12 4 3 2 输出能力 12 4 3 3 芯片描述 13 4 3 4 参考数据 13 4 3 5 引脚说明 13 4 4高耐压 大电流达林顿陈列 ULN2003 15 学习好帮手 4 4 1 概述与特点 15 4 4 2 外部管脚图 15 4 4 3 极限值 16 4 5DS18B20 温度采集芯片 16 4 5 1 芯片特性 16 4 5 2 DS18B20 的内部结构 17 4 5 3 DS18B20 温度传感器的存储器 18 4 5 4 DS1820 使用中注意事项 19 4 6DS1302 19 4 6 1 DS1302 概述 19 4 6 2 DS1302 的基本组成和工作原理 21 4 6 3 DS1302 内部寄存器 21 4 724C02 21 4 7 1 1K 2K 4K 8K 16K 位串行 E2PROM 21 4 7 2 工作特性和可靠参数 22 4 7 3 24C02 概述 22 4 7 4 极限参数 23 4 7 5 可靠性参数 23 4 7 6 功能描述 23 4 7 7 管脚描述 23 4 812864 液晶显示 24 4 8 1 概述 24 4 8 2 基本特性 25 4 8 3 方框图 26 4 8 4 外形尺寸图 26 4 8 5 模块接口说明 27 4 8 6 模块主要硬件构成说明 27 4 8 7 E 信号 28 5整体电路设计整体电路设计 29 5 1主控制 MCU 模块 29 5 2DS1302 时钟模块 31 5 374HC595 串转并模块 32 5 48 8 点阵模块 32 5 5数码管模块 33 学习好帮手 5 6流水灯模块 34 5 7串行通信模块 35 5 8液晶显示模块 36 5 9直流 步进电机模块 37 5 10 蜂鸣器 继电器模块 37 5 11 实验板电路总体概括 38 5 12 结束语 39 致致 谢谢 40 参考文献参考文献 41 附附 录录 1 1 42 附附 录录 2 43 附附 录录 3 44 学习好帮手 AVR 多功能实验开发板的设计 摘 要 本实验开发板是综合 AVR 和 51 单片机的多功能实验板 采用 ATMEL 公司的中高 档 MCU ATmega16L 和深圳宏晶公司生产的STC89C52 作为实验开发板的 双核 CPU 两种 CPU 的共同之处是均支持在线编程 不需为下载程序而专 门购置所谓的编程器 徒增成本 另外 本实验开发板采用了排线连接的方式 将各部分功能模块单独引出插头以供实验 这样不仅提高了编程的灵活性而且 给学习者以自由的编程思路 单独的功能模块使得电路减少了更或者说是避免 了管脚复用所造成的种种干扰 再者 考虑到AVR 和 51 的驱动差异 特有 数码管和 8 8 点阵的驱动添加 从而使AVR 和 51 的各部分试验功能得以吻 合 该实验开发板的实验 功能齐全 实验模块数量不低于实验开发箱 但成 本却远远低于实验开发箱 比较适合学习者学习使用 关键词 ATmega16L STC89C52 实验开发板 学习好帮手 THE EXPERIMENTAL DEVELOPMENT OF MULTI FUNCTION BOARD FOR AVR ABSTRACT This experiment exploitation board be the experiment board synthesizing AVR and 51 monolithic machine multiple functions In adopt the ATMEL company s STC89C52 that top grade MCU ATmega16L and the grand Shenzhen crystal company produce develops unnatural dicaryon CPU as the experiment Two place of growing the CPU common are to support the online programming equally specially buy the so called programming implement increase cost only to download procedure The experiment has developed the way that board has adopt to link up row gleam besides Originally the function module has drawn forth an attachment plug to provide an experiment alone with every part such has improved the programming flexibility not only giving a free programming of learner a train of thought The feasible circuit of single handed function module has decreased by more in other words being to have avoided what pin multiplexing brings about a variety of disturbances Moreover think to AVR and 51 s drive difference proper numerical code and 8 8 lattice drive addition Make AVR and every 51 s parts test that the function can be fitted thereby The experiment function owing an experiment the board developing is all in readiness The experiment module is not lower than the chest developing an experiment s the chest developing an experiment s but over lower than the experiment the learner comparatively suitable learns being put into use but KEY WORDS ATmega16L STC89C52 experiment develops board 学习好帮手 1 引言 随着单片机课程在大学工科类专业的开设和普及 单片机课程已经日益成为不 可缺少的重点课程 科技的发展和自动化的日渐兴起 使得单片机成为硬件设计人 员和工程开发人员关注的焦点 单片机的种类也逐渐的由 Inter 的 51 单片机发展为 种类繁多 功能强大的单片机体系 我们所学的课程往往太过偏重于理论 虽然开设有实验课 但实验室终究是不 可能整日开放的 而且买一套实验室里的实验开发设备对学生来说是一笔不小的数 目 为此 市面上出现了诸多种类和性能的单片机实验开发板 以满足初学者的编 程锻炼需要 本实验开发板综合了 AVR 和 51 的单片机作为板子的 CPU 外部设置了 种类齐全的实验模块 而且考虑到 AVR 和 51 单片机之间的驱动差异 特别添加了数 码管和 8 8 点阵的驱动电路 开发板采用排线连接 各实验模块均设有连接端口 这种方式的设计不局限编程思维 使学习者可以根据自己的想法使用单片机端口 AVR 和 51 同处一板 这样等于拥有了两套不同种类单片机的开发板 当然 在 51 单片机的基础上学习 AVR 会更容易了解和掌握 AVR 单片机的性能 该开发板的功能 不亚于实验室的实验开发箱 但是成本却远远低于开发箱 这为单片机初学者提供 了性价比超高的实验平台 而且具备完善的实验源程序 对初学者的单片机语言学 习更有帮助 大部分独立模块之间可以同时进行实验或者进行复用 实验开发板 MCU 外扩插 槽为双排插槽 可为电路复用准备 学习好帮手 2 课题研究背景 2 1 市场上单片机实验开发板情况 在现在的市场中 单片机实验开发板的种类繁多 特别是仅仅 51 单片机实验开 发板就琳琅满目 试验功能也不尽相同 但是占据开发板市场排行之首的仍然是 51 实验开发板 这是由于 51 单片机是其他种类单片机的始祖 人们已经习惯了用 51 单片机去做一些智能控制 当然 其他新品种的单片机实验开发板也不在少数 只 是人们对这种新品种单片机仍缺乏认识和信任 也或者说是先入为主吧 所以这些 新型的单片机实验开发板在数目和气势上必然会劣于 51 1 51 实验开发板 在目前的高校单片机课程中 51 单片机占百分之九十以上 所以 51 开发板必 然会成为高校单片机试验设备所必须的 而且它也是单片机实验开发板中的领头军 因此 51 开发板在市场中所占的份额也是最大的 2 AVR 实验开发板 AVR 单片机作为新一代高性能低功耗的单片机 其性能优点让之脱颖而出 但 市面上的 AVR 实验开发板数目很少 在大学课程里仍很少开设 但是基于 AVR 单片 机的电路已经开始普遍 就 AVR 单片机实验开发板来说 确实有一定开发价值 3 其他种类单片机 在单片机大家庭当中 除了前两种之外还有Microchip 单片机 TI 公司的 MSP430 系列单片机 凌阳单片机 Motorola 单片机 Zilog 单片机 Scenix 单片机 NEC 单片机等等 这些品牌单片机大部分的八位单片机还是 51 内核 用作实验板的较少 学习好帮手 2 2 课题研究的意义 单片机课程在大学工科类专业的开设和普及 使单片机课程成为不可缺少的重 点课程 而且单片机的应用非常广泛 学习单片机的必要性有目共睹 实验室具备单片机实验设备 但实验室终究是不可能整日开放的 而且买一套 实验室里的实验开发设备对学生来说是一笔不小的数目 市面上所出售的单片机实 验开发板往往功能不太齐全 而且单片机固定不变 使学习者必须去学习某一种单 片机而没有其它单片机的实验设备 从而造成了单片机学习的局限 鉴于此 设计 AVR 多功能实验开发板 打破单一的单片机实验的种类局限 而且对这两种不同的 单片机兼容了实验模块 让学习者用同音 模块做不同的单片机实验 另外 该开 发板的独立接线模块可以用来做非本板的实验 比如说用其它的单片机来控制该开 发板上的实验模块 开发板综合了 AVR 和 51 的单片机作为板子的 CPU 外部设置了种类齐全的实验 模块 而且考虑到 AVR 和 51 单片机之间的驱动差异 特别添加了数码管和 8 8 点阵 的驱动电路 开发板采用排线连接 各实验模块均设有连接端口 这种方式的设计 不局限编程思维 使学习者可以根据自己的想法使用单片机端口 AVR 和 51 同处一 板 这样等于拥有了两套不同种类单片机的开发板 当然 在 51 单片机的基础上学 习 AVR 会更容易了解和掌握 AVR 单片机的性能 该开发板的功能不亚于实验室的实 验开发箱 但是成本却远远低于开发箱 这为单片机初学者提供了性价比超高的实 验平台 而且具备完善的实验源程序 可以辅助学习单片机语言 减少单片机学习 中的弯路 学习好帮手 3课题研究内容 3 1 研究主要内容 1 ATmega16L 的外部接口及扩展 2 STC89C52 的外部接口及扩展 3 数码管驱动电路及程序 4 8 8 点阵驱动电路及程序 5 74HC595 串转并电路及程序 6 4 4 键盘电路及程序 7 时钟模块 DS1302 电路及程序 8 液晶模块 12864 1602 电路及程序 9 温度采集模块 18B20 电路及程序 10 直流 步进电机电路及 PWM 调速程序 11 红外接收模块 SM3381 电路 12 串行通信模块电路 MAX232 13 流水灯 PS 2 接口 模数转换 蜂鸣器 继电器 EEP 电路等等 3 2 主要方案选择 1 实验板中的 AVR 主控器芯片选用 ATMEL 公司的 ATmega16L 这是一款很特别的多 接口芯片 而且在接口设计方面的表现很优秀 其较高于 51 的驱动电流可以直接驱 动小型继电器等器件 它也是 AVR 单片机的典型芯片 2 实验板中的 51 芯片采用 STC89C52 它支持串口下载程序 免去了编程器 比较 适合作为 51 实验板的典型芯片 3 整板电路采用 5V 电压 因此所用芯片器件均采用 5V 的 包括继电器 直流电机 等 学习好帮手 4主要器件的原理及应用 4 1 ATmega16 4 1 1 ATmega16L 性能 1 高性能 低功耗的 8 位 AVR 微处理器 1 2 先进的 RISC 结构 131 条指令 大多数指令执行时间为单个时钟周期 32 个 8 位通用工作寄存器 全静态工作 工作于 16 MHz 时性能高达 16 MIPS 只需两个时钟周期的硬件乘法器 3 非易失性程序和数据存储器 16K 字节的系统内可编程 Flash 擦写寿命 10 000 次 具有独立锁定位的可选 Boot 代码区通过片上 Boot 程序实现系统内编程 真正的同时读写操作 512 字节的 EEPROM 擦写寿命 100 000 次 1K 字节的片内 SRAM 可以对锁定位进行编程以实现用户程序的加密 4 JTAG 接口 与 IEEE 1149 1 标准兼容 符合 JTAG 标准的边界扫描功能 支持扩展的片内调试功能 通过 JTAG 接口实现对 Flash EEPROM 熔丝位和锁定位的编程 5 外设特点 两个具有独立预分频器和比较器功能的 8 位定时器 计数器 一个具有预分频器 比较功能和捕捉功能的 16 位定时器 计数器 具有独立振荡器的实时计数器 RTC 四通道 PWM 8 路 10 位 ADC 8 个单端通道 TQFP 封装的 7 个差分通道 2 个具有 学习好帮手 可编程增益 1x 10 x 或 200 x 的差分通道 面向字节的两线接口 两个可编程的串行 USART 可工作于主机 从机模式的 SPI 串行接口 具有独立片内振荡器的可编程看门狗定时器 片内模拟比较器 6 特殊的处理器特点 上电复位以及可编程的掉电检测 片内经过标定的 RC 振荡器 片内 片外中断源 6 种睡眠模式 空闲模式 ADC 噪声抑制模式 省电模式 掉电模式 Standby 模式以及扩展的 Standby 模式 7 I O 和封装 32 个可编程的 I O 口 40 引脚 PDIP 封装 44 引脚 TQFP 封装 与 44 引脚 MLF 封装 8 工作电压 ATmega16L 2 7 5 5V ATmega16 4 5 5 5V 9 速度等级 0 8 MHz ATmega16L 0 16 MHz ATmega16 10 ATmega16L 在 1 MHz 3V 25 C 时的功耗 正常模式 1 1 mA 空闲模式 0 35 mA 掉电模式 低I O 缓冲 DR配合 W 进行写数据或指令 高DR I O 缓冲配合 R 进行读数据或指令 低 低 高无动作 忙标志 BF BF 标志提供内部工作情况 BF 1 表示模块在进行内部操作 此时模块不接受外部 指令和数据 BF 0 时 模块为准备状态 随时可接受外部指令和数据 利用 STATUS RD 指令 可以将 BF 读到 DB7 总线 从而检验模块之工作状态 字型产生 ROM CGROM 字型产生 ROM CGROM 提供 8192 个此触发器是用于模块屏幕显示开和关的控 制 DFF 1 为开显示 DISPLAY ON DDRAM 的内容就显示在屏幕上 DFF 0 为关显示 DISPLAY OFF DFF 的状态是指令 DISPLAY ON OFF 和 RST 信号控制的 显示数据 RAM DDRAM 模块内部显示数据 RAM 提供 64 2 个位元组的空间 最 多可控制 4 行 16 字 64 个字 的中文字型显示 当写入显示数据 RAM 时 可分别 显示 CGROM 与 CGRAM 的字型 此模块可显示三种字型 分别是半角英数字型 16 8 CGRAM 字型及 CGROM 的中文字型 三种字型的选择 由在 DDRAM 中写入的编码选择 在 0000H 0006H 的编码中 其代码分别是 0000 0002 0004 0006 共 4 个 将选 择 CGRAM 的自定义字型 02H 7FH 的编码中将选择半角英数字的字型 至于 A1 以 上的编码将自动的结合下一个位元组 组成两个位元组的编码形成中文字型的编码 BIG5 A140 D75F GB A1A0 F7FFH 字型产生 RAM CGRAM 型产生 RAM 提供图象定义 造字 功能 可以提供四组 16 16 点的自定义图象空间 使用者可以将内部字型没有提供的图象字型自行定义 到 CGRAM 中 便可和 CGROM 中的定义一样地通过 DDRAM 显示在屏幕中 地址计数器 AC 地址计数器是用来贮存 DDRAM CGRAM 之一的地址 它可由设定指令 学习好帮手 暂存器来改变 之后只要读取或是写入 DDRAM CGRAM 的值时 地址计数器的值就会 自动加一 当 RS 为 0 时而 R W 为 1 时 地址计数器的值会被读取到 DB6 DB0 中 5整体电路设计 该部分将介绍 AVR 51 实验开发板的实验模块分类及功能 5 1 主控制 MCU 模块 此部分为实验板的核心部件 分为 ATmega16L 和 STC89C52 用于实现不同单片 机的实验控制 1 ATmega16L 部分的电路及扩展插头电路如图 5 1 所示 图 5 1 ATmega16L 及扩展电路 学习好帮手 2 STC89C52 部分的电路及扩展插头电路如图 5 2 所示 图 5 2 STC89C52 及扩展电路 两部分的复位电路如下 1 ATmega16L 复位电路如下图 5 3 所示 学习好帮手 图 5 3 ATmega16L 复位电路 2 STC89C52 复位电路如下图 5 4 所示 14 图 5 4 STC89C52 复位电路 学习好帮手 5 2 DS1302 时钟模块 DS1302 作为本开发板时钟模块的时钟芯片 可与单片机进行通信 给单片机提 供标准时钟 可进行年月日的设置 并通过通信口将数据传送给单片机 从而将时 间信息显示出来 本实验开发板在程序上 将该部分模块与数码管结合起来显示时 间 时钟模块的电路原理图如下图 5 5 所示 图 5 5 时钟模块 5 3 74HC595 串转并模块 前文已经介绍过 74HC595 的功能特性 本实验板用到该芯片的作用是用来实现 数码管 流水灯等的串行转并行实验 利用串行可以减少单片机的 I O 口使用 可 以用四个甚至三个 I O 口去输出八位数据 经过 74HC595 转换后交给执行电路 从 而实现串转并 当然 这个串转并实验相对于其他并行实验来说 在处理速度上会 有些减慢 这是情理之中的事情 74HC595 是一个移位寄存缓存器 数据可以缓存 到芯片中 等到芯片得到发放数据信号时将会把数据发放到执行电路 下面是该模块的原理图 如图 5 6 所示 学习好帮手 图 5 6 串转并模块 5 4 8 8 点阵模块 该部分是用来演示点阵实验 由于 ATmega16L 和 STC89C52 的驱动差异 该部分 特添加了驱动电路 8 8 点阵的程序设计可采用逐行式 逐列式 行列式 8 8 点阵 可现实字符和简单的汉字 均可从取模软件获得 一下将给出该部分电路的点阵模块和驱动模块 1 8 8 点阵模块 如图 5 7 所示 学习好帮手 图 5 7 8 8 点阵模块 2 8 8 点阵驱动电路 如图 5 8 所示 图 5 8 8 8 点阵驱动电路 5 5 数码管模块 数码管模块采用的是两块四位共阳极数码管 考虑到驱动的因素 故采用共阳 极 两块采用级联的方式 数据端并联在一起 组成了八位的数码管显示电路 该部分分为两个单元 数码管模块和驱动电路 1 八位数码管模块 如图 5 9 所示 图 5 9 八位数码管模块 2 数码管驱动电路 如图 5 10 所示 学习好帮手 图 5 10 数码管驱动电路 5 6 流水灯模块 流水灯采用八位 阳极通过电阻共同接在 VCC 上 相当于给单片机灌入电流 可不用考虑驱动能力 其电路如下图 5 11 所示 图 5 11 流水灯模块 5 7 串行通信模块 串行通信模块采用 11 针串行插头 经过电平转换芯片 MAX232 后将与单片机间 进行串行数据通信 另外 STC89C52 的数据下载方式采用串行口下载 可直接将编 学习好帮手 译好的程序通过串行口写入 STC89C52 的程序存储器中 另外串行通信接口用于单片机和电脑的数据通信 可通过上位机软件实现人机 对话 从而智能的控制单片机所控制的智能控制电路 串行通信模块如图 5 12 所示 图 5 12 串行通信模块 5 8 液晶显示模块 该实验开发板上给出了两个液晶显示模块 12864 和 1602 1602 是字符液晶 可以显示两行字符或英文字母 其分辨率为 16 2 12864 可以显示汉字 根据型号 不同又可分为带字库和不带字库的 该实验板设计的是按照不带字库的形式写的 也不分左右半屏 13 一下将给出液晶模块的电路图 如图 5 13 所示 学习好帮手 图 5 13 液晶显示模块 5 9 直流 步进电机模块 该部分分为直流电机和步进电机两个小模块 直流电机用三极管驱动 步进电 机用 74LS04 反相驱动 以下给出两个模块的电路原理图 1 直流电机模块 如图 5 14 所示 图 5 14 直流电机模块 2 步进电机模块 如图 5 15 所示 学习好帮手 图 5 15 步进电机模块 5 10蜂鸣器 继电器模块 该部分分为继电器和蜂鸣器两部分 均采用三极管驱动的方法 另外继电器外 接了接口电路 可以用作控制开关去控制其他电路 以下给出该部分的电路原理图 如图 5 16 所示 图 5 16 蜂鸣器 继电器模块 5 11实验板电路总体概括 由于实验模块较多 此处不再一一介绍 上面给出的基本上是大部分实验开发 板所共有的模块 不同的是这些模块之间都是独立的 没有管脚的复用 可以用排 线连接所需要的实验模块 另外 该实验板设计有 MCU 切换开关 该开关直接控制 学习好帮手 两个单片机的电源 可通过控制其电源进行 MCU 切换 该实验板从各个方面上来说是非常成功的 而且程序测试都很成功 各部分工 作也很协调 并没出现由于电路的不当而造成的干扰 电路性能也很稳定 每个模 块均能够在 AVR 和 51 的控制下正常工作 而且 也没出现什么兼容问题 当然 在对实验模块的调试中 发现了不少错误 譬如说将串行通信模块同时 连接在 AVR 和 51 的串行通信端口后 不管接通哪一个单片机 另外的一个单片机就 会被激活 两个单片机的电源是独立的 由切换开关给电 地接在一起即共地 这是一个是一个亟待讨论并解决的问题 为什么将他们的串行通信连接在一起就会 将另一片激活 而且从另一片的VCC 端测到 5V 电压 种种现象都说明了实践是检验真理的唯一标准 只有在现实的操作和调试中才 能得到正确的参数 5 12结束语 在此开发板设计之前曾第一批 AVR 实验开发板 第一批实验开发板整体小巧 功能齐全 而且不需要驱动电路 直接由 AVR 驱动 但是大部分功能采用管脚复用 这样就有了很多不可避免的干扰问题亟待解决 AVR 多功能实验开发板的设计正是在这个错误上作出许多改进 为实验的可靠 性提供了充足的保障 实践中的经验往往是最宝贵的 之前做的这些对以后这方面 的设计会有很大的帮助 有了前车之鉴 自然会让下一步的设计更加趋于稳定可靠 但是毕竟经验是最大的桎梏 多功能实验开发板依然出现了一些小问题 不过通过 老师的指导和同学的共同探讨 最终找到了解决的办法 不是每一次都能成功 关 键在于每一次都会在以前的基础上减少错误和避免同类错误的产生 通过这两代板子的制作 着实让我对单片机及其外围电路的了解达到了一个新 的阶段 对各种电路的组成和性能匹配也有了进一步的了解 对一些不能复用又无 法解释错误的电路尽量避免 将电路设计的趋于完美 不敢说绝对不出错误 但最 起码出现过的错误绝对不会再现 通过这两次的设计制作 我对 Protel99se 的使用更是得心应手 掌握了以前没 有用到甚至没有听说过的技巧 对电路板的手工布线也有了一定的认识和布线能力 不再懒惰于单纯的自动布线 这样更使得板子的可靠性得到提高 学习好帮手 相信这些经验会对自己日后的工作有很大的帮助 致 谢 自从大四开学到走向工作岗位 我一直在 507 实验室学习 而且晚上就住在那 里 在实验室的半年时间着实让我学习了不少以前所不知的知识 在这样一个仪器 和元件充足的环境中 自然对自己的动手能力也有了很大的提高 这些 都不仅是 我一个人所能得到的 我真的很感谢张晓冬老师和郝俊红老师能够让我在实验室学 习 这是我能力提高的桥梁 张老师和郝老师对学生没有一点点架子 反而跟我们在一起的时候倒像是我们 的同窗挚友 这样的环境中不会有什么压抑的情绪 学习起来便轻松了许多 很感 谢张老师给了我做第一代 AVR 实验开发板的机会 让我从对单片机的懵懂到了现在 的熟知 坦白说 第一代开发板做好后出现了不少问题 张老师和郝老师不但没有 责怪 反而共同去查找问题的根源并提出解决办法 并和实验室的伙伴们一起去解 决这些问题 在这些错误上 我有责任 我的原因很简单 看书太少了 通过这一 次的教训之后张老师依然给了我第二次机会 做 AVR 多功能实验开发板 我真的非 常感谢 感谢张老师的信任和郝老师一次次的宝贵建议 这些都会在日后的工作中 得以应用 对张老师和郝老师我感觉用那个一句话很恰当 听君一席话 胜读十年书 在这么多老师和同学的帮助下 我的毕业设计才得以顺利完成 感谢他们的无 私帮助 学习好帮手 同时也感谢宿友们四年来的关心 同窗四年来的关切 在此一并向他们表示感 谢 参考文献 1 马潮编著 AVR 单片机嵌入式系统原理与应用实践 北京航空航天大学出版社 2007 2 周兴华编著 AVR 单片机 C 语言高级程序设计 中国电力出版社 2008 3 余熄存 曹国华编著 单片机原理及接口技术 西安电子科技大学出版 2000 4 赵亮 等编著 单片机 C 语言编程与实例 南京 人民邮电出版社 2003 5 李军 主编 51 系列单片机高级实例开发指南 北京航空航天大学出版社 2004 6 谭浩强 主编 C 语言程序设计 北京 清华大学出版社 2001 7 赵文博 刘文涛 编著 单片机语言 C51 程序设计 南京 人民邮电出版社 2005 8 詹卫前主编 AVR 单片机 C 语言开发与指导 北京 清华大学出版社 2003 9 詹卫前主编 ATmega8 原理及应用手册 北京 清华大学出版社 2003 10 朱宇光 陆锦军 黄忠良 高玉芹编 单片机应用新技术教程 北京 电子工业出版社 2000 11 武庆生 编著 单片机及其应用 成都 电子科技大学出版社 2000 12 丁化成 耿德根等主编 AVR 单片机应用设计 北京 北京航空航天大学出版社 2002 13 金春林 邱慧芳 张皆喜编著 AVR 系列单片机 C 语言编程与应用实例 清华大学出版社 2003 学习好帮手 14 夏路易 石宗义编著 电路原理图与电路板设计教程 北京希望电子出版社 2002 15 徐泳龙主编 单片机原理及应用 机械工业出版社 2004 16 K Alexander N O Sadiku Fundamentals of electric Circuits 清华大学出版社 2000 17 AVR webring R 函数声明 学习好帮手 void delay 1us void void delay nus uint n void delay 1ms void void delay nms uint n void Lcd init void void M16 init void void send c d uchar com dat uchar c d 写指令或数据 void set xy uchar x uchar y 设定显示位置 void show str uchar x uchar y uchar str 显示字符串 void show num uchar x uchar y int num 显示数字 int 范围 32767 32767 void show pic const uchar pic1 显示图片 void show 2pic const uchar pic1 const uchar pic2 图片叠加 void lcdtest void void lcdcls void 主函数 void main void int a 0 i M16 init Lcd init delay nms 5 Lcd 初始化中清屏需 4 6ms while 1 lcdtest 黑屏可以检测是否有坏点 呵呵 一般没必要 delay nms 1000 lcdcls 清屏 show pic qingyuan 开机画面 delay nms 1000 lcdcls 清屏 show str 1 1 欢 28 show str 2 1 迎 技术物理系 show str 3 1 光 507 实验室 show str 4 1 临 show pic wenduji delay nms 2000 学习好帮手 send c d clean 1 清除汉字 delay nus 200 清除汉字的延时 至少 150us 否则乱码 M16 初始化 void M16 init void PORTA 0 x00 DDRA 0 xFF PORTB 0 x00 DDRB 0 xFF PORTC 0 x00 DDRC 0 xFF PORTD 0 x00 DDRD 0 xFF lcd 初始化 void Lcd init void send c d j com 1 功能设定 基本指令 send c d show on 1 显示开关 整体显示 on 游标 on 游标位 on send c d clean 1 清屏 AC 归 0 send c d cursor 1 进入设定点 写入时 游标右移动 写指令或数据 void send c d uchar com dat uchar c d if c d 1 RS L c d 0 时选择指令 else RS H c d 1 时选择数据 RW L 写 PORTD com dat 指令或数据送到 PD 端口 EN H delay 1us 在晶振为 1MHz 的最佳延时 晶振为 8MHz 时 需要仔细调试 EN L 下降沿写入 设定显示位置 void set xy uchar x uchar y 行 x 从 1 4 列 y 从 1 8 uchar a 学习好帮手 a 8 x y 9 对 x y 调整 send c d AC a 1 查表 AC 的实际寄存器地址 第二种方法不查表直接计算 if x 1 x 3 a 8 x y 9 if x 2 x 4 a 8 x y 1 send c d 0 x80 a 1 显示字符串 show str void show str uchar x uchar y uchar str uchar p 定义一个指针 p str 指针指向字符串在 M16 内存中的地址 set xy x y 将要放入液晶的寄存器地址 while p 0 判断指针是否到了字符串的末尾 send c d p 0 写入指针指向的字符 p str str 地址加 1 后给指针 显示数字 show num void show num uchar x uchar y int num uchar temp 0 flag 0 设置一个标志 set xy x y if num 0 send c d 0 x2d 0 显示负号 num num temp num 10000 整除 取万位值 temp if flag temp 若万位值 0 则不执行显示万位值 否则会显示万位值为 0 若万位值 0 则发送万位值的 ASCII 码 send c d 0 x30 temp 0 flag 1 若执行显示了万位 说明 num 为 位数 标志 1 千百十个位全部显示 num temp 10000 num 去除万位后的余数 temp num 1000 整除 取千位值 temp if flag temp 若 flag 0 千位值 0 则不执行显 示 千位值 否则会显示千位值为 0 若千位值 0 则发送千位值的 ASCII 码 send c d 0 x30 temp 0 学习好帮手 flag 1 num temp 1000 temp num 100 if flag temp send c d 0 x30 temp 0 flag 1 num temp 100 temp num 10 if flag temp send c d 0 x30 temp 0 flag 1 num temp 10 temp num if flag temp send c d 0 x30 temp 0 flag 1 if flag flag 1 则以上步骤有执行 则不执行以下 send c d 0 x30 0 flag 0 则以上步骤没有执行 说明 num 0 发送 0 的 ASCII 码 显示图片 show pic void show pic const uchar pic

温馨提示

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

评论

0/150

提交评论