洛阳理工学院单片机课程设计报告(已修改)_第1页
洛阳理工学院单片机课程设计报告(已修改)_第2页
洛阳理工学院单片机课程设计报告(已修改)_第3页
洛阳理工学院单片机课程设计报告(已修改)_第4页
洛阳理工学院单片机课程设计报告(已修改)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

洛洛 阳阳 理理 工工 学学 院院 课课 程程 设设 计计 报报 告告 课程名称 单片机原理与接口技术 设计题目 基于 51 系列单片机的实验平台开发设计 专 业 通信工程 班 级 B 学 号 B 姓 名 徐 国 旗 完成日期 2015 年 1 月 2 日 课课 程程 设设 计计 任任 务务 书书 设计题目 设计题目 基于 51 系列单片机的实验平台开发设计 设计内容与要求 设计内容与要求 一 设计内容一 设计内容 利用 STC 系列单片机作为微控制器开发一套软 硬件相结合的单片机实验平 台 主要包括以下内容 1 电路原理图设计 主要包括集 LCD 显示模块 串口通信模块 数码管显示 模块 LED 发光二极管 键盘等接口电路的设计 2 学习集成电路等芯片的焊接方法与技巧 进行实际元器件的识别 进行电 路板焊接 3 在 Keil C 环境下 进行软件设计 主要包括流水灯 计数器 LCD 字符显 示 键盘的控制等功能程序设计 4 针对所开发的实验板 结合器件选择 原理图设计 硬件焊接 软件编程 调试 软硬件联调等方面写出课程设计报告 二 设计要求二 设计要求 1 完成综合实验平台的电路结构分析 进行模块分解 掌握各部分电路的工 作原理 2 独立完成电路板的焊接 掌握故障排除方法 完成实验平台的硬件设计及 开发 3 结合 Keil C 软件在焊接无误的单片机实验平台上开发出流水灯 LCD 显示 模块 数码管显示模块等程序设计 4 按照要求撰写课程设计论文 指导教师 李传锋 2014 年 12 月 29 日 课课 程程 设设 计计 评评 语语 成绩 成绩 指导教师 年 月 日 1 摘 要 1 第 1 章 概述 2 1 1 设计题目 2 1 2 设计步骤 2 1 3 Proteus 与 Keil C51 软件介绍 2 第 2 章 硬件电路设计 3 2 1 电路各元器件介绍 3 2 1 1 LCD1602 液晶 3 2 1 2 两位一体共阴数码管 4 2 1 3 其它元器件介绍 5 2 2 仿真电路连接与实物焊接 6 2 2 1 protues 仿真电路 6 2 2 2 电路板焊接 7 第 3 章 软件设计 8 3 1 程序整体思路 8 3 2 程序编程实现 9 3 3 程序的优缺点分析 11 第 4 章 仿真及实物效果展示 11 4 1 关闭菜单与主菜单 11 4 2 流水灯模块 12 4 3 计数器模块 13 4 4 LCD 液晶显示模块 13 心得体会 14 参考文献 14 附 录 16 1 基于 51 系列单片机的实验平台开发设计 摘 要 单片机 全称单片微型计算机 英语 Single Chip Microcomputer 又 称微控制器 Microcontroller 是把中央处理器 存储器 定时 计数 Timer Counter 各种输入输出接口等都集成在一块集成电路芯片上的微型 计算机 与应用在个人电脑中的通用型微处理器相比 它更强调自供应 不用外 接硬件 和节约成本 它的最大优点是体积小 可放在仪表内部 但存储量小 输入输出接口简单 功能较低 由于其发展非常迅速 旧的单片机的定义已不能 满足 所以在很多应用场合被称为范围更广的微控制器 由于单芯片微电脑常用 于当控制器故又名 single chip microcontroller 但是目前在中国大陆仍多沿 用 单片机 的称呼 主要特点 1 主流单片机包括 CPU 4KB 容量的 ROM 128 B 容量的 RAM 2 个 16 位 定时 计数器 4 个 8 位并行口 全双工串口行口 ADC DAC SPI I2C ISP IAP 2 系统结构简单 使用方便 实现模块化 3 单片机可靠性高 可工作到 10 6 10 7 小时无故障 4 处理功能强 速度快 5 低电压 低功耗 便于生产便携式产品 6 控制功能强 7 环境适应能力强 本次课程设计就是利用 STC 系列单片机作为微控制器开发一套软 硬件相结 合的单片机实验平台 主要通过电路原理图 进行电路的焊接 原理图主要包括 集 LCD 显示模块 串口通信模块 数码管显示模块 LED 发光二极管 键盘等接 口电路的设计 这次单片机的课设它具有模块化硬件结构和简单的人机交互功能 硬件功能模块及部分演示程序 该实验板具有降低设计成本 缩短开发周期 丰 富学生知识 提高设计水平等优点 2 第 1 章 概述 1 1 设计题目 基于 51 系列单片机的实验平台开发设计 1 2 设计步骤 1 学习各元器件 弄清楚其工作原理 2 Proteus 软件仿真电路图的绘制 3 根据电路图在开发板上进行焊接 4 编写 调试开发板程序 5 下载到单片机中 查看实际运行效果 1 3 Proteus与 Keil C51 软件介绍 Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 工具软件 该软 件中国总代理为广州风标电子技术有限公司 它不仅具有其它 EDA 工具软件的 仿真功能 还能仿真单片机及外围器件 它是目前比较好的仿真单片机及外围器 件的工具 虽然目前国内推广刚起步 但已受到单片机爱好者 从事单片机教学 的教师 致力于单片机开发应用的科技工作者的青睐 Proteus 是世界上著名的 EDA 工具 仿真软件 从原理图布图 代码调试到单片机与外围电路协同仿真 一键切换到 PCB 设计 真正实现了从概念到产品的完整设计 是目前世界上唯 一将电路仿真软件 PCB 设计软件和虚拟模型仿真软件三合一的设计平台 其处 理器模型支持 8051 HC11 PIC10 12 16 18 24 30 DsPIC33 AVR ARM 8086 和 MSP430 等 2010 年又增加了 Cortex 和 DSP 系列处理器 并持续增加其他系 列处理器模型 在编译方面 它也支持 IAR Keil 和 MATLAB 等多种编译器 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开 发系统 与汇编相比 C 语言在功能上 结构性 可读性 可维护性上有明显的 优势 因而易学易用 Keil 提供了包括 C 编译器 宏汇编 连接器 库管理和一 个功能强大的仿真调试器等在内的完整开发方案 通过一个集成开发环境 Vision 将这些部分组合在一起 运行 Keil 软件需要 WIN98 NT WIN2000 WINXP 等操作系统 如果你使用 C 语言编程 那么 Keil 几乎就是你的不二之选 即使不使用 C 语言而仅用汇编语言编程 其方便易 用的集成环境 强大的软件仿真调试工具也会令你事半功倍 3 第 2 章 硬件电路设计 2 1 电路各元器件介绍 2 1 1 LCD1602 液晶 液晶显示器 或称 LCD Liquid Crystal Display 为平面超薄的显示设备 它由一定数量的彩色或黑白像素组成 放置于光源或者反射面前方 液晶显示器 功耗很低 因此倍受工程师青睐 适用于使用电池的电子设备 它的主要原理是 以电流刺激液晶分子产生点 线 面配合背部灯管构成画面 1 LCD1602 实物图 图 1 LCD 外观及引脚 显示容量 16 个 2 排字符 工作电流 2 0mA 5 5 0 0V V 字符尺寸 2 95 4 35mm 能够看到的是 2 排 各 16 个字符 不是汉字 2 LCD1602 的读写 LCD1602 的第5 脚 R W 读写操作选择 1 读 0 写 表 1 LCD1602 的读写 RSR W 寄存器及操作 00 指令寄存器写入 01 忙信号和地址计数器读出 10 数据寄存器写入 4 11 数据寄存器读出 LCD1602 的第 6 脚 E 端为使能端 当 E 端由高电平跳变成低电平时 负 跳变 液晶模块执行命令 类似于 74LS373 需要负跳变 执行一条命令或写 入 一个数据 都要使E 有一个负跳变 2 1 2 两位一体共阴数码管 数码管是一种半导体发光器件 其基本单元是发光二极管 共阴数码管是指 将所有发光二极管的阴极接到一起形成公共阴极 COM 的数码管 共阴数码管在 应用时应将公共极 COM 接到地线 GND 上 当某一字段发光二极管的阳极为高 电平时 相应字段就点亮 当某一字段的阳极为低电平时 相应字段就不亮 同 时数码管要正常显示 就要用驱动电路来驱动数码管的各个段码 从而显示出我 们要的数字 1 实物图 图 2 两位一体 LED 数码管 2 共阴极 LED 数码管的内部结构原理图 5 图 3 共阴极 LED 数码管的内部结构原理图 表 2 共阴数码管字模表 显示0123456789 字模0 x3f0 x060 x5b0 x4f0 x660 x6d0 x7d0 x070 x7f0 x6f 此次设计中两位一体数码管采用 74LS374 锁存器锁存 电路详见附录 2 1 3 其它元器件介绍 1 LED 流水灯 流水灯中用 8 只 LED 发光二极管练成一排 作为流水灯 二极管长引脚为 正极短引脚为负极 也可用万用表测量 发光二极管如图所示 图 4 LED 发光二极管 2 74LS138 74LS373 芯片 6 图 5 74LS138 引脚及真值表 注 1表示高电平 0表示低电平 表示任意 C 为高位 A 为低位 图 6 74LS373 引脚及功能表 74LS373的三种工作方式 跟随 OE 0 LE 1 输出跟随输入 锁存 OE 0 LE 从高变为低负跳变时 锁存 D0 D7 高阻 OE 1 Q0 Q7 输出为高阻 相当于断开 另外 此次设计中还用的排阻 色环电阻 电容 三极管等元件 在此不再做详 细介绍 2 2 仿真电路连接与实物焊接 2 2 1 protues 仿真电路 在 protues 中连接各模块电路 注意各元器件的接法 各模块连接电路图如 下 OE LEDQ 0111 0100 00 不变 1 高阻态 7 图 7 液晶显示及流水灯模块 图 8 数码管及按键模块 其它模块的连接在此不再展示 详见附录 2 2 2 电路板焊接 1 焊接准备 根据电路原理图 焊接元器件 先读出色环电阻的阻值 判断电容引脚的正 负极 或用万用表测试 检测各器件是否正常 准备好电烙铁 焊锡 松香等必 备物品 2 焊接 给电烙铁加热 达到温度后按电路板上元件从低到高的顺序进行焊接 在焊 接时要细心 仔细 在正确的位置焊上正确的元件 防止出现错误 3 检测焊接电路 完成后检查是否有漏焊 连锡等问题 在我们组用了一上午焊接电路 检查 时发现 LCD 液晶显示不能显示 一个发光二极管不亮 经检测是器件损坏 经 更换后故障解除 焊接实物图如下 8 图 9 焊接电路图 第 3 章 软件设计 3 1 程序整体思路 从电路着手编写程序 希望一个程序能把各模块连接起来 而不是用多个程 序进行加载 并且打开电源后能够重复进入各模块 而不是每次都需要复位 所 以可以先分开写各模块程序 然后连接起来 可用 while 语句查询各标志位实现 开电源后能够重复进入各模块 程序的流程及各标志位含义如下 图 10 程序流程图 表 3 各标志位含义 s总标志位 1 开 0 关b11 写时计数器菜单 s1每次进入主菜单时写主菜单b2更新计数值时重新显示 s2刚通电或关闭时写关闭菜单cLCD 模块总标志位 a流水灯总标志位 1 进入 0 退出c01 时写 LCD 菜单 a1流水灯左循环标志位c1LCD 显示姓名 a2流水灯右循环标志位c2LCD 显示学号 a3流水灯暂停标志位c3LCD 显示日期 b计数器总标志位 1 进入 0 退出 按 1 按 3 按 2 按 2 按 1 按 2 按 1 按 2 主菜单 关闭 计数器流水灯LCD 模块 左移右移 移 暂停加计数减计数归零姓名学号日期 按 4 按 4 按 1 按 3按 3按 3 按 4 由各模块返回主菜单 9 3 2 程序编程实现 1 流水灯函数程序 执行该模块的同时 LCD 上显示流水灯菜单 详见附录 void ledmod writemenu LEDmenu 写菜单 for i 0 i 3 i 先闪烁几下后全亮 P2 0 x55 delay 150 P2 0 xaa delay 150 P2 0 while 1 if a1 1 for i 0 i 8 i 往左流 if a 0 break a 0 跳出 LED 模块 下同 if a2 1 a1 0 break P2 led i delay 200 while a3 1 if a 0 break a3 1 执行 while 循环 相当于暂停 if a2 1 for i 0 i 8 i 往右流 if a 0 break if a1 1 a2 0 break P2 led 7 i delay 200 while a3 1 if a 0 break if a 0 break 2 计数器函数程序 执行该模块的同时 LCD 上显示计数器菜单 详见附录 void coutermod if b1 1 b1 0 进入计数器后 写菜单并让数码管显示 0 流水灯熄灭 writemenu counter P0 0 x3f P2 0 xff if b2 1 b2 0 按下按键数据改变时 数码管重新显示 p25 1 p26 0 p27 0 10 P0 table count 10 p25 p26 p27 0 P0 table count 10 3 LCD 液晶显示模块程序 执行该模块的同时 LCD 上显示其菜单 详见附 录 void LCDmod if c0 1 c0 0 writemenu lcdmenu 写 LCD 菜单 if c1 1 c1 0 wcmd 0 x80 0 x40 for j 0 j 16 j wdat name j if c2 1 c2 0 wcmd 0 x80 0 x40 for j 0 j 16 j wdat num j if c3 1 c3 0 wcmd 0 x80 0 x40 for j 0 j 16 j wdat date j 4 写各菜单函数 用于写各个模块的菜单 void writemenu unsigned char p wcmd 0 x01 for j 0 j 16 j wdat p j wcmd 0 x80 0 x40 for j 32 j wdat p j 5 主函数 void main TCON 0 x55 TR1 TR0 IT1 IT0 1 TMOD 0 x66 两个都为计数方式 2 TH0 TL0 0 xff TH1 TL1 0 xff IE 0 x8f LCD init writemenu OFF P0 0 while 1 if s s 1 开始 s 0 关闭 while 1 if s1 s1 0 writemenu mainmenu if a 1 ledmod if b 1 coutermod if c 1 LCDmod if s 0 writemenu OFF break 6 四个中断函数 key0 interrupt 1 delay 100 11 if a 0return if count 100 count 0 b2 1 if c 1 if c1 0 c1 1 key1 interrupt 3 delay 100 if b 0return b1 1 第一次进入计数器 if a 1 if a2 0 if b 1 count if count 0 count 0 b2 1 if c 1 if c2 0 c2 1 key2 interrupt 0 delay 100 if c 0c0 1 return if a 1 b2 1 if c 1 if c3 0 c3 1 key3 interrupt 2 delay 100 if a 0 在关闭或主菜单中按下 key3 开始或进入主菜单 if a 1 a 0 a1 a2 a3 0 if b 1 b count b2 0 if c 1 c c1 c2 c3 0 if s s1 1 s 1 在每次由各模块返回到主菜单或由关闭到主菜单时写主菜单 else s2 1 s 0 在刚通电或由主菜单关闭时写关闭菜单 此次编程和优化总共花费了十多个小时 最终达到自己预想的效果 其它如 LCD 驱动函数 定义变量等命令在此不再列出 详见附录中的源程序 3 3 程序的优缺点分析 优点 1 一个程序能把各模块连接起来 而不是用多个程序进行加载 2 打开电源后能够重复进入各模块 无需每次复位 3 每个模块都可以通过按键实现多种功能 功能丰富 4 可根据 LCD 提示操作 更加人性化 5 各模块单独为一个函数 使程序结构明朗 缺点 主要是标志位过于繁多 阅读困难 给程序的修改和优化带来麻烦 所以 程序还有待优化 12 第 4 章 仿真及实物效果展示 4 1 关闭菜单与主菜单 关闭菜单与主菜单效果如下图所示 图 11 仿真与实物的关闭菜单与主菜单 4 2流水灯模块 功能有左流 右流 清零 返回 部分功能展示如下 13 图 12 流水灯模块仿真及实物部分效果 4 3 计数器模块 功能有加计数 减计数 清零 返回 部分功能展示如下 图 13 计数器模块部分效果 4 4 LCD 液晶显示模块 功能有显示姓名 学号 日期 返回 部分功能展示如下 14 图 14 LCD 模块部分效果 心得体会 参考文献 1 林立 张俊亮编 单片机原理及应用 基于 Proteus 和 Keil c M 15 北京 电子工业出版社 2013 1 2 谭浩强 C 程序设计 第四版 北京 清华大学出版社 2010 6 3 周润景等 PROTEUS 入门实用教程 北京 机械工业出版社 2007 4 贾好来 MCS 51 单片机原理及应用 北京 机械工业出版社 2007 附 录 1 源程序 include define uchar unsigned char sbit RS P1 6 sbit RW P1 7 sbit p25 P2 5 sbit p26 P2 6 sbit p27 P2 7 sbit p32 P3 2 sbit p33 P3 3 sbit p34 P3 4 sbit p35 P3 5 bit s s1 s2 a a1 a2 a3 b b1 b2 c c0 c1 c2 c3 char count uchar LCD Status i j uchar code mainmenu Main menu 1LED 2C 3LCD4OFF uchar code LEDmenu N o w i s L E D 1 0 x7f 2 0 x7e 3 p s 4 R uchar code counter Now is counter 1 2 3 0 4 R uchar code lcdmenu Now is LCD 1name2num3date4R uchar code name XuGuoQi uchar code num B uchar code date 2014 12 18 uchar code OFF OFF Press key4 Start uchar code led 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f 0 xff 0 x7e 0 x3c 0 x18 0 x00 uchar code table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f void delay unsigned int count unsigned char i while count for i 0 i 120 i LCD 相关驱动函数 unsigned char Busy Check 检查忙函数 RS 0 RW 1 RS 0 控制寄存器 RW 1 读 p25 0 p26 1 p27 0 delay 1 LCD Status P0 16 delay 1 p25 1 p26 1 p27 0 return LCD Status void wcmd unsigned char cmd 写命令函数 RS 0 RW 0 while Busy Check RS 0 RW 0 p25 0 p26 1 p27 0 P0 cmd delay 1 p25 1 p26 1 p27 0 void wdat unsigned char dat 写数据函数 RS 1 RW 0 while Busy Check RS 1 RW 0 p25 0 p26 1 p27 0 P0 dat delay 1 p25 1 p26 1 p27 1 P0 0 每次写数据后熄灭 LED 数码管 P2 0 xff 每次写数据后熄灭 LED 流水灯 void LCD init 初始化函数 wcmd 0 x38 38H 0011 1000 使用 8 位 用 5 7 的字型 2 行 delay 1 改为 0 x3C 0011 1100 就用 5 10 字型 wcmd 0 x01 01H 0000 0001 清屏 命令 1 delay 1 wcmd 0 x06 06H 0000 0110 字符不动 光标自动右移一格 命令 3 delay 1 wcmd 0 x0c 0eH 0000 1110 开显示 无光标 字符不闪烁 命令 4 delay 1 写各菜单函数 void writemenu unsigned char p wcmd 0 x01 for j 0 j 16 j wdat p j wcmd 0 x80 0 x40 for j 32 j wdat p j LED 流水灯模块函数 void ledmod writemenu LEDmenu 写菜单 17 for i 0 i 3 i 先闪烁几下后全亮 P2 0 x55 delay 150 P2 0 xaa delay 150 P2 0 while 1 if a1 1 for i 0 i 8 i 往左流 if a 0 break a 0 跳出 LED 模块 下同 if a2 1 a1 0 break P2 led i delay 200 while a3 1 if a 0 break a3 1 执行 while 循环 相当于暂停 if a2 1 for i 0 i 8 i 往右流 if a 0 break if a1 1 a2 0 break P2 led 7 i delay 200 while a3 1 if a 0 break if a 0 break 计数器模块函数 void coutermod if b1 1 b1 0 进入计数器后 写菜单并让数码管显示 0 流水灯熄灭 writemenu counter P0 0 x3f P2 0 xff if b2 1 b2 0 按下按键数据改变时 数码管重新显示 p25 1 p26 0 p27 0 P0 table count 10 p25 p26 p27 0 P0 table count 10 LCD 模块函数 void LCDmod if c0

温馨提示

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

评论

0/150

提交评论