wsf-单片机课程设计论文.doc_第1页
wsf-单片机课程设计论文.doc_第2页
wsf-单片机课程设计论文.doc_第3页
wsf-单片机课程设计论文.doc_第4页
wsf-单片机课程设计论文.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

山东财经大学 单片机课程设计单片机课程设计 题目 题目 基于单片机的秒表系统设计基于单片机的秒表系统设计 学学 院院 计算机科学与技术学院 专专 业业 电子信息科学与技术 班班 级级 电子0902 学学 号号 姓姓 名名 学学 号号 姓姓 名名 指导教师指导教师 山东财经大学教务处制 二 一二 年 六 月 山东财经大学课程设计论文 i 基于单片机的秒表系统设计 摘摘 要要 本文讲述了一个基于单片机的秒表系统的设计与实现 系统有启动 暂停 清零按钮 每一 秒钟都有提醒功能 秒表的最长计时长度为 9 59 9 超过此长度 报警 本文首先分析对秒表系统 研究设计方案 根据自己所学对秒表系统的硬件及软件进行开发 最后总结经验及实验心得 关键词 单片机 秒表系统 LCD 显示 Abstract This article describes the design and implementation of a microcontroller based stopwatch the system has to start pause clear button every second to remind function the the stopwatch longest timing length of 9 59 9 more than this length alarm This paper first analyzes the stopwatch system study design according to the stopwatch system hardware and software development Finally sum up experience and experimental experience Keywords microcontroller stopwatch LCD display 山东财经大学课程设计论文 i 目 录 摘 要 I ABSTRACT 1 引 言 I 一 设计要求 2 二 设计方案分析 2 1 方案设计 2 2 知识背景介绍 3 三 硬件设计 3 四 软件设计 3 五 测试结果及分析 9 六 测试出现的错误及解决方案 2 1 测试出现的错误及解决方案 2 2 实验心得 3 七 参考文献 3 附录 9 山东财经大学课程设计论文 i 引言 数字电子秒表具有显示直观 读取方便 精度高等优点 在计时中广泛使用 本设计用单片 机组成数字电子秒表 力求结构简单 精度高为目标 本系统采用 C51 系列单片机为中心器件 利用其定时器 计数器定时和记数的原理 结合硬 件电路如电源电路 晶振电路 复位电路 显示电路 以及一些按键电路等来设计计时器 将软 硬件有机地结合起来 其中软件系统采用 C 语言编写程序 开发板实际操作 易于观察 在实验 中就可以观察到实际的工作状态 本设计利用 STC89C52 单片机的定时器 计数器定时和计数的原理 使其能精确计时 利用中 断系统使其能实现开始暂停的功能 根据要求知道秒表设计主要实现的功能是计时和显示 因此 设置了三个按键和 LCD 显示时间 三个按键分别是开始 暂停和复位按键 利用这两个建来实现 秒表的全部功能 而 LCD 则能显示最多 9 59 9 秒的计时 山东财经大学课程设计论文 i 一 设计要求 1 系统的功能要求 1 该实验通过单片机的定时器 计数器定时和计数原理 设计简单的计时器系统 拥有正确的 计时 暂停 清零功能 并同时可以用数码管显示 在现实生活中应用广泛 具有现实意义 2 设计内容 1 设计精度为 0 1S 的秒表系统 2 设置启动 暂停 清零按钮 3 设计每一秒钟都有提醒功能 4 秒表的最长计时长度为 9 59 9 超过此长度 报警 图示 00 00 25 二 设计方案分析 1 1 方案设计方案设计 数字电子秒表具有显示直观 读取方便 精度高等优点 在计时中广泛使用 本设计用单片机组 成数字电子秒表 力求结构简单 精度高为目标 本系统采用 C51 系列单片机为中心器件 利用其定时器 计数器定时和记数的原理 结合硬件电路 如电源电路 晶振电路 复位电路 显示电路 以及一些按键电路等来设计计时器 将软 硬件有机 地结合起来 其中软件系统采用 C 语言编写程序 开发板实际操作 易于观察 在实验中就可以观察 到实际的工作状态 本设计利用 STC89C52 单片机的定时器 计数器定时和计数的原理 使其能精确计时 利用中断系 统使其能实现开始暂停的功能 根据要求知道秒表设计主要实现的功能是计时和显示 因此设置了三 个按键和 LCD 显示时间 三个按键分别是开始 暂停和复位按键 利用这两个建来实现秒表的全部功 能 而 LCD 则能显示最多 9 59 9 秒的计时 电路原理图设计最基本的要求是正确性 其次是布局合理 最后在正确性和布局合理的前提下力求美观 主要硬件电路图 AT89C52 单片机控制器单片机控制器 复位电路复位电路 开关电路开关电路 LCD 显示显示 图 1 1 数字秒表硬件电路主要原理图 本设计中 数码管显示的数据存放在内存单元 31H 33H 中 其中 31H 存放分钟变量 32H 存放秒 钟变量 33H 存放 10ms 计数值 即存放毫秒位数据 每一地址单元内均为十进制 BCD 码 由于采用软 件动态扫描实现数据显示功能 显示用十进制 BCD 码数据的对应段码存放在 ROM 表中 显示时 先取 出 31H 33H 某一地址中的数据 然后查得对应的显示位 并从 P1 口输出 就能显示该地址单元的数 据值 计时通过中断完成 定时溢出中断周期为 1ms 当一处中断后向 CPU 发出溢出中断请求 每1INT 发出一次中断请求就对毫秒计数单元进行加一 达到 10 次就对十毫秒位进行加一 依次类推 直到 9 59 9 秒重新复位 再看按键的处理 这三个键可以采用中断的方法 也可以采用扫描的方法来识别 复位键主要功 能在于数值复位 对于时间的要求不是很严格 而开始和暂停键则是用于对时间的锁定 需要比较准 确的控制 因此可以对复位按键采取扫描的方式 而对开始和暂停键采用外部中断的方式 设计中包括硬件电路的设计和系统程序的设计 其硬件电路主要有主控制器 显示电路和回零 启动 查看 停表电路等 主控制器采用单片机 STC89C52 显示电路采用 LCD 显示计时时间 三个按 键均采用触点式按键 2 2 背景知识介绍背景知识介绍 2 1 单片机相关知识 本课题在选取单片机时 充分借鉴了许多成形产品使用单片机的经验 并根据自己的实际情况 选择了 STC89S51 STC89C52 单片机采用 40 引脚的双列直插封装方式 图 1 2 为引脚排列图 40 条引脚说明如下 主电源引脚 Vss 和 Vcc Vss 接地 Vcc 正常操作时为 5 伏电源 外接晶振引脚 XTAL1 和 XTAL2 XTAL1 内部振荡电路反相放大器的输入端 是外接晶体的一个引脚 当采用外部振荡器时 此引脚接地 XTAL2 内部振荡电路反相放大器的输出端 是外接晶体的另一端 当采用外部振荡器时 此 引脚接外部振荡源 图图 1 21 2 STC89C52STC89C52 单片机引脚图单片机引脚图 控制或与其它电源复用引脚 RST VPD ALE 和 VppPROGPSENEA RST VPD 当振荡器运行时 在此引脚上出现两个机器周期的高电平 由低到高跳变 将使 单片机复位在 Vcc 掉电期间 此引脚可接上备用电源 由 VPD 向内部提供备用电源 以保持内部 RAM 中的数据 ALE 正常操作时为 ALE 功能 允许地址锁存 提供把地址的低字节锁存到外部锁存器 PROG ALE 引脚以不变的频率 振荡器频率的 1 6 周期性地发出正脉冲信号 因此 它可用作对外输出的 时钟 或用于定时目的 但要注意 每当访问外部数据存储器时 将跳过一个 ALE 脉冲 ALE 端可以 驱动 吸收或输出电流 八个 LSTTL 电路 对于 EPROM 型单片机 在 EPROM 编程期间 此引脚接收编 程脉冲 功能 PROG 外部程序存储器读选通信号输出端 在从外部程序存储取指令 或数据 期间 PSEN 在每个机器周期内两次有效 同样可以驱动八 LSTTL 输入 PSENPSEN Vpp Vpp 为内部程序存储器和外部程序存储器选择端 当 Vpp 为高电平时 EAEAEA 访问内部程序存储器 当 Vpp 为低电平时 则访问外部程序存储器 对于 EPROM 型单片机 在EA EPROM 编程期间 此引脚上加 21 伏 EPROM 编程电源 Vpp 输入 输出引脚 P0 0 P0 7 P1 0 P1 7 P2 0 P2 7 P3 0 P3 7 P0 口 P0 0 P0 7 是一个 8 位漏极开路型双向 I O 口 在访问外部存储器时 它是分时 传送的低字节地址和数据总线 P0 口能以吸收电流的方式驱动八个 LSTTL 负载 P1 口 P1 0 P1 7 是一个带有内部提升电阻的 8 位准双向 I O 口 能驱动 吸收或输出电 流 四个 LSTTL 负载 P2 口 P2 0 P2 7 是一个带有内部提升电阻的 8 位准双向 I O 口 在访问外部存储器时 它输出高 8 位地址 P2 口可以驱动 吸收或输出电流 四个 LSTTL 负载 P3 口 P3 0 P3 7 是一个带有内部提升电阻的 8 位准双向 I O 口 能驱动 吸收或输出电 流 四个 LSTTL 负载 AT89C52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口线 看门狗定时器 2 个 数据指针 三个 16 位定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电 路 另外 AT89C52 可降至 0Hz 静态逻辑操作 支持 2 种软件可选择节电模式 空闲模式下 CPU 停 止工作 允许 RAM 定时器 计数器 串口 中断继续工作 掉电保护方式下 RAM 内容被保存 振荡 器被冻结 单片机一切工作停止 直到下一个中断或硬件复位为止 CPU 是单片机的核心部件 它由 运算器和控制器等部件组成 1 运算器 运算器的功能是进行算术运算和逻辑运算 可以对半字节 4 位 单字节等数据进行操作 例如 能完成加 减 乘 除 加 1 减 1 BCD 码十进制调整 比较等算术运算和与 或 异或 求补 循 环等逻辑操作 操作结果的状态信息送至状态寄存器 89C52 运算器还包含有一个布尔处理器 用来处理位操作 它是以进位标志位 C 为累加器的 可 执行置位 复位 取反 等于 1 转移 等于 0 转移 等于 1 转移且清 0 以及进位标志位与其他可寻址 的位之间进行数据传送等位操作 也能使进位标志位与其他可移位寻址的位之间进行逻辑与 或操作 2 程序计数器 PC 程序计数器 PC 用来存放即将要执行的指令地址 共 16 位 可对 64K 程序存储器直接寻址 执行 指令时 PC 内容的低 8 位经 P0 口输出 高 8 位经 P2 口输出 3 令寄存器 指令寄存器中存放指令代码 CPU 执行指令时 由程序存储器中读取的指令代码送入指令寄存器 经译码后由定时与控制电路发出相应的控制信号 完成指令功能 本设计采用 ATMEL 的 AT89C52 微处理器 主要基于以下几个因素 AT89C52 为 51 内核 仿真调试的软硬件资源丰富 性价比高 货源充足 功耗低 功能强 灵活性高 DIP40 封装 体积小 便于产品小型化 为 EEPROM 程序存储介质 1000 次以上擦写周期 便于编程调试 工作电压范围宽 2 7V 6V 便于交直流供电 2 2 TC1602 LCD 的构造是在两片平行的玻璃当中放置液态的晶体 两片玻璃中间有许多垂直和水平的细小电 线 透过通电与否来控制杆状水晶分子改变方向 将光线折射出来产生画面 比 CRT 要好的多 但是 价钱较其贵 1 LCD 的特点 低压微功耗 平板型结构 被动显示型 无眩光 不刺激人眼 不会引起眼睛疲劳 显示信息量大 因为像素可以做得很小 易于彩色化 在色谱上可以非常准确的复现 无电磁辐射 对人体安全 利于信息保密 长寿命 这种器件几乎没有什么劣化问题 因此寿命极长 但是液晶背光寿命有限 不 过背光部分可以更换 注 注 16021602 的管脚功能的管脚功能 三 硬件设计 1 控制芯片的介绍 AT89S52 是一种低功耗 高性能 CMOS8 位微控制器 具有 8K 在系统可编程 Flash 存储器 使用 Atmel 公司高密度非 易失性存储器技术制造 与工业80C51 产品指令和引脚完 全兼容 片上 Flash 允许程序存储器在系统可编程 亦适于 常规编程器 在单芯片上 拥有灵巧的8 位 CPU 和在系统 可编程 Flash 使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活 超有 效的解决方案 AT89S52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口 线 看门狗定时器 2 个数据指针 三个 16 位 定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另外 AT89S52 可降至 0Hz 静态逻 辑操作 支持 2 种 软件可选择节电模式 空闲模式下 CPU 停止工作 允许 RAM 定时器 计数器 串口 中断继 续工 作 掉电保护方式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一 个中断或硬件复位为止 2 定时器 1 定时器的结构 定时 计数器的实质是加 1 计数器 16 位 由高 8 位和低 8 位两个寄存器组成 TMOD 是定时器的 工作方式寄存器 确定工作方式和功能 TCON 是控制寄存器 控制 T0 T1 的启动和停止及设置溢出 标志 2 定时器的工作原理 加 1 计数器输入的计数脉冲有两个来源 一个是由系统的时钟振荡器输出脉冲经 12 分频后送来 一个是 T0 或 T1 引脚输入的外部脉冲源 3 定时器的控制 89S52 单片机定时器的工作由两个特殊功能寄存器控制 TMOD 用于设置其工作方式 TCON 用于控 制其启动和中断申请 3 独立按键控制模块 在按键电路中 我们可以在 I O 口上直接接按键 或者通过 I O 口设计一个键盘 然后通过键盘 扫描程序判断是否有键按下等 键盘扫描电路节省 I O 口 但编程有些复杂 在这里 由于我们所用 的按键较少 且系统是一个小系统 有足够的 I O 口可以使用 为了使程序简化 我们采用按键电路 用部分 P3 口做开关 P3 1 为开始 P3 2 为暂停 P3 3 为清零 用外部中断 INT1 开始 另外用软件 法消除抖动 四 软件设计 1 软件设计概述 在软件设计中 一般采用模块化的程序设计方法 它具有明显的优点 把一个多功能的复杂的程 序划分为若干个简单的 功能单一的程序模块 有利于程序的设计和调试 有利于程序的优化和分工 提高了程序的阅读性和可靠性 使程序的结构层次一目了然 应用系统的程序由包含多个模块的主程序和各种子程序组成 各程序模块都要完成一个明确的任 务 实现某个具体的功能 在具体需要时调用相应的模块即可 功能描述 用 LCD1602 液晶显示 秒表 显示时间为 0 00 0 9 59 9 秒 每秒自动加 1 一个 开 始 键 一个 暂停 键 一个 清零 键 2 主程序流程图 这里采用顺序结构 通过对按键的扫描 判断要实现什么功能 如下所示 赋初始值 开始 LCD1602 显示 复位键 P3 1 是否按下 查看键 P3 2 是否按下 调用最终缓存区数据进行显示 否 是 是 否 否 是 查看键 P3 3 是否按下 LCD 清零 零 1 主程序 include include lcd h 调用 LCD 模块 显示数据 define uchar unsigned char define uint unsigned int sbit led1 P3 0 定义中断端口 sbit led2 P3 1 sbit buzz P1 2 sbit start P2 0 sbit push P2 1 sbit reset P2 2 uchar aa 0 shi 9 fen 59 miao 30 xx 0 定义参数 uchar flag old 0 flag void init 初始化外部中断和定时器 TMOD 0 x01 TH0 0 x4c TL0 0 x00 EA 1 ET0 1 TR0 0 void tixing 定时模块 设置 0 1 秒报警 uint i j for i 0 i 100 i for j 0 j 80 j buzz buzz for i 0 i 100 i for j 0 j 150 j buzz buzz void main lcd1602 lcd1602 init 计时显示 start init display onechar 0 11 s display onechar 0 12 t display onechar 0 13 a display onechar 0 14 r display onechar 0 15 t TR0 1 while 1 display onechar 0 0 shi 0 x30 display onechar 0 1 display onechar 0 2 fen 10 0 x30 display onechar 0 3 fen 10 0 x30 display onechar 0 4 display onechar 0 5 miao 10 0 x30 display onechar 0 6 miao 10 0 x30 display onechar 0 7 display onechar 0 8 xx 0 x30 if start 0 while start 0 delay 5000 TR0 1 display onechar 0 11 s display onechar 0 12 t display onechar 0 13 a display onechar 0 14 r display onechar 0 15 t if stop 0 暂停模块 同步显示 push delay 15000 while push 0 delay 5000 TR0 0 display onechar 0 11 display onechar 0 12 p display onechar 0 13 u display onechar 0 14 s display onechar 0 15 h if reset 0 复位模块 delay 15000 while reset 0 delay 5000 TR0 0 shi 0 fen 0 miao 0 xx 0 if xx 0 if shi 10 超出量程 9 59 9 报警 显示 over tixing display onechar 0 11 display onechar 0 12 o display onechar 0 13 v display onechar 0 14 e display onechar 0 15 r void timer0 interrupt 1 TH0 0 x4c TL0 0 x00 aa if aa 2 aa 0 xx if xx 1 led1 0 led2 0 if xx 2 led1 1 led2 1 if xx 10 xx 0 miao if miao 60 miao 0 fen if fen 60 fen 0 shi if shi 10 TR0 0 2 LCD 模块化程序 include lcd h void lcd1602 en 0 rs 1 rw 1 lcd data 0 xff void read busy lcd data 0 xff rs 0 rw 1 en 1 while lcd data en 0 void write lcd unsigned char value bit i read busy lcd data value rs i rw 0 en 1 en 0 void lcd1602 init delay 15000 write lcd 0 x38 0 delay 5000 write lcd 0 x38 0 delay 5000 write lcd 0 x38 0 delay 5000 write lcd 0 x08 0 write lcd 0 x01 0 write lcd 0 x06 0 write lcd 0 x0c 0 void delay unsigned int i 延时子程序 while i void display onechar unsigned char y unsigned char x unsigned char value y x if y x 0 x40 x 0 x80 write lcd x 0 write lcd value 1 五 仿真结果及分析 基于单片机的秒表系统设计完成之后 最终通过一个独立按键控制暂停与开始 另一个独立按键 控制清零 同时实现秒表每一秒都要提示 同时将独立按键的控制信息在液晶屏上显示出来 还要同 时实现蜂鸣器的报警功能 图 4 1 整体连线 图 4 2 结果显示 6 6 调试中出现的错误及解决方法调试中出现的错误及解决方法 1 实验中遇到的问题及解决方法实验中遇到的问题及解决方法 问题 LCD 显示模糊 原因 VEE 接高电平 LCD 的对比度太低 从而无法正常显示数据 解决方法 将 VEE 接地 提高了 LCD 的对比度 数据显示清晰 问题 蜂鸣器声音小 原因 试验箱子的问题 换个好的试验箱子声音变大 2 实验心得实验心得 王术芳王术芳 接到题目时 发现是关于电子秒表的设计 先在网上查阅了一些有关电子秒表设计的材料 熟悉 了设计思想与工作原理 并且具体的分析了单片机 数码管显示器的工作过程 从理论上分析了该工 作过程 将程序考入单片机后开始测试 刚开始时 LCD 显示器无数据显示 经过对电路板各模块的重新测 试 发现并无问题 经过和同学的探讨 发现 LCD 的 VEE 管脚接高电平时 因对比度低 导致 LCD 无数据显示 而当 VEE 接低电平时 因对比度高 LCD 正常显示 通过此次课程设计 熟悉了电子秒表的设计思想 在实践中测试电路 分析数据 排除故障 最 终实现了设计要求 虽然这次课程设计相对简单 但并未一次性成功 所以同样需要严谨的态度 在 整个过程中不但增强了自己的学习能力 还提高了自己的团队合作能力 这些能力在以后的工作中是 很重要的 杨卜威杨卜威 这次课程设计我们组的题目是设计一个电子秒表 有启动 暂停 复位等键 据说是相对简单的 题目 通过这次设计 我学到了很多知识 将学习的理论知识通过实验融会贯通 让我对它的理解更加 深刻 由于这次课程设计不仅设计编程方面的知识 还涉及了其它学科的知识 例如 PROTEUS 等的基 本知识 总之 通过这次课程设计 不仅加深了我对单片机理论方面的理解 将理论更好的运用的实 践方面 而且锻炼了我们各方面的能力 培养了坚强的毅力和做事的耐心和细心 同时也认识到在团 队工作中需要有合作精神 我想这会为今后自己踏上工作岗位 更好地融入新的团队打下良好的基础 七 参考文献七 参考文献 1 51 单片机学习网 2 单片机学习网 3 单片机 C 语言应用程序设计 第四版 马忠梅主编 北京航空航天大学出版社 4 单片机开发与典型工程项目实例详解 边海龙 孙永奎编著 电子工业出版社 附录 程序代码 1 主程序 include include lcd h 调用 LCD 模块 显示数据 define uchar unsigned char define uint unsigned int sbit led1 P3 0 定义中断端口 sbit led2 P3 1 sbit buzz P1 2 sbit start P2 0 sbit push P2 1 sbit reset P2 2 uchar aa 0 shi 9 fen 59 miao 30 xx 0 定义参数 uchar flag old 0 flag void init 初始化外部中断和定时器 TMOD 0 x01 TH0 0 x4c TL0 0 x00 EA 1 ET0 1 TR0 0 void tixing 定时模块 设置 0 1 秒报警 uint i j for i 0 i 100 i for j 0 j 80 j buzz buzz for i 0 i 100 i for j 0 j 150 j buzz buzz void main lcd1602 lcd1602 init 计时显示 start init display onechar 0 11 s display onechar 0 12 t display onechar 0 13 a display onechar 0 14 r display onechar 0 15 t TR0 1 while 1 display onechar 0 0 shi 0 x30 display onechar 0 1 display onechar 0 2 fen 10 0 x30 display onechar 0 3 fen 10 0 x30 display onechar 0 4 display onechar 0 5 miao 10 0 x30 display onechar 0 6 miao 10 0 x30 display onechar 0 7 display onechar 0 8 xx 0 x30 if start 0 while start 0 delay 5000 TR0 1 display onechar 0 11 s display onechar 0 12 t display onechar 0 13 a display onechar 0 14 r di

温馨提示

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

评论

0/150

提交评论