基于单片机的0-99计数器设计_第1页
基于单片机的0-99计数器设计_第2页
基于单片机的0-99计数器设计_第3页
基于单片机的0-99计数器设计_第4页
基于单片机的0-99计数器设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

0 计数器设计 一 实习目的与要求 1 设计的目的 1 掌握 51 系列单片机的基本硬件结构及工作原理 2 掌握 51 系列单片机的汇编语言及基本程序设计方法 3 学习并掌握使用 51 系列单片机开发控制系统的基本步骤及方法 4 掌握 51 系列单片机键盘显示电路的编程方法 2 设计要求 1 设计十进制 0 99 的计数器 采用按键计数 数码管显示 2 采用按键产生计数值 按下按键 计数值增加 1 3 采用 2 位数码管显示 计数初值为 0 4 当计数达到 99 时 再次按下按键 计数值从 1 开始增加 5 设计一个按键 用于清空计数值 2 总体设计方案 1 计数器的基本原理 利用 AT89S51 单片机来制作一个手动计数器 在 AT89S51 单片机的 P3 2 管脚接 一个轻触开关 作为手动计数的按钮 再利用 AT89S51 单片机的复位键进行清零处理 同时 51 单片机的 P1 0 P1 7 接共阴数码管的位选 作为 0 99 计数选择的位置 用 单片机的 P0 0 P0 7 接共阴数码管的段选 作为 00 99 计数的显示 总体结构框图 如图 1 1 所示 图 1 1 2 模块电路分析 1 STC89C51 单片机 它是一个低功耗 高性能 CMOS 8 位单片机 片内含 8k Bytes ISP In system programmable 的可反复擦 1000 次的 Flash 只读程序存储器 器件采用 ATMEL 公司的高密度 非易失性存储技术制造 兼容标准 MCS 51 指令 系统及 STC8951 引脚结构 芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单 电源 键盘 AT89S51 单片机 数码管显示 1 元 功 能强大的微型计算机的 STC8951 可为许多嵌入式控制应用系统提供高性价比的解方 案 STC8951 具有如下特点 40 个引脚 8k Bytes Flash 片内程序存储器 128bytes 的随机存取数据存储器 RAM 32 个外部双向输入输出 I O 口 5 个中断优先 级 2 层中断嵌套中断 2 个 16 位可编程定时计数器 2 个全双工串行通信 片内 时钟振荡器 其单片机的外围引脚有 40 个 分别是 第 20 脚和 40 脚分别是电源 即 GND 和 Vcc 第 9 脚是复位脚 RST 第 18 脚是时钟 XTAL2 脚 片内振荡电路的输 出端 第 19 脚是时钟 XTAL1 脚 片内振荡电路的输入端 第 29 脚 PSEN 脚 当访问外部程序存储器时 此引脚输出负脉冲选通信号 PC 的 16 位地址数据将出 现在 P0 和 P2 口上 第 30 脚 ALE PROG 当访问外部数据存储器时 ALE 地 址锁存 的输出用于锁存地址的低字节 第 31 脚 EA Vpp 为程序存储器内外部 选通信号 P0 0 P0 7 P1 0 P1 7 P2 0 P2 7 P3 0 P3 7 这 32 个引脚为数据的输出及 输入引脚 即 I 0 口 2 键盘模块 它是 4 个独立式键盘 其特点是一键一线 各键相互独立 每个 按键各接一条 I O 口线 通过检测 I O 输入线的电平状态 可以很容易的判断那个键 被按下 如图 2 1 所示 图 2 1 3 电源和复位电路 AT89S52 需 5V 电压 所以可以采用 USB 接口的 5V 电 源对其供电 复位电路可采用上电复位 按键电平复位 按键脉冲复位 3 种 本次 采用按键电平复位 如图 2 2 所示 2 图 2 2 4 显示模块 该模块由 8 位 8 段共阳极数码管组成 由 8 个 PNP 型三极管分 别驱动其发光 从左至右位控分别接于单片机的 P1 7 P1 0 中上 段控 a dP 接于单 片 机的 P0 0 P0 7 口上 使用动态显示从右向左循环点亮每一位数码管 如电路原理 图中的数码管电路如图 2 3 所示 图 2 3 5 总的原理图如图 2 4 所示 3 图 2 4 4 三 软件编程 1 程序流程图 主程序开始初始化 然后键盘扫描 复位电路 计数器 当有键盘按键按下去时 调整计数器值 数码管显示新值 当有复位键按下去时 计数器复为初值 重新按键 计数 当计数器计到 100 时初值复位 1 又一次开始按键计数 程序流程图如图 3 1 否 是 图 3 1 2 具体程序 0 99 计数器 include 开始 初始化程序 调用显示函数 是否有 键按下 调用键盘扫描程序 计数加 1 计数加 100 时 指示计数值 回到预置值 5 define uchar unsigned char define uint unsigned int sbit key1 P3 2 uchar num1 shi ge n unsigned char code disp code 0 xC0 0 xF9 0 xA4 0 xB0 0 x99 0 x92 0 x82 0 xF8 0 x80 0 x90 0 9 0 1 2 3 4 5 6 7 8 9 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e 10 15 void display uchar num1 void keys void delay uint z void main key1 1 P0 0XC0 P1 0Xfc while 1 keys display num1 void keys 按键函数 if key1 0 delay 5 if key1 0 num1 if num1 100 num1 1 while key1 6 void delay uint z 延时函数 uint x y for x z x 0 x for y 110 y 0 y void display uchar num1 显示函数 ge num1 10 P0 disp code ge P1 0 xfe delay 1 shi num1 10 P0 disp code shi P1 0 xfd delay 1 4 系统调试 1 硬件调试 1 把电路板焊好后 先通过检查电路板表面检查是否有漏焊 错焊 接触不良等 2 编写检测程序逐个点亮数码管 检查数码显示部分是否有硬件问题 3 编写检测程序检测矩阵扫描是否有硬件问题 2 程序调试 重点就是这个部分 很多程序就是在调试过程中慢慢完善 先前所完成的程序部 分只能算一个基本框架 当然 这一切是建立在硬件没用问题的基础上程序在进行调 试时 可以像硬件一样使用分模块调试 这样可以最迅捷的找出问题所在 不受其他 模块的影响 我们在硬件调试时 一开始时 51 芯片不工作 经过反复检查后发现原来 51 芯片的 31 脚 EA VPP 必须接入高电平才能使单片机在读取程序时优先访问内部 程序存储器 否则只访问外部程序存储器 而我们的程序是在内部的 故芯片不工作 我们随即在 31 脚外接 VCC 和限流电阻 在解决了这个后 硬件 OK 了 软件调试时问题就比较多了 很多都是小问题 大多是因为在编写程序时一些地 方不够注意或笔误引起的 在这里就不过多解释 少部分是一些难以解决的大问题 7 一是在输入数字的储存上 开始打算只使用一个数组 disp code 解决 但在编程时发 现在数字转换为一个一个的编码中发现直接引用会引起数据混乱 最后在添入另一数 组 str1 后问题得到解决 二是输入数据在内部进行加减乘除时 加法乘法没有错误 但减法除法因为一次输出和二次输入数据的位置关系导致第二次运作时出现错误 最 后我们调整了储存数据的变量 这个问题顺利的解决了 最后一个问题困扰我们最久 甚至导致调试过程一度中止 由于我们是 2 位数的运算 在数字显示过程中 出现了 跳位现象 当输如 12 时 数码管正常显示 12 但将 3 输入后 数码管显示变为了 32 由于一直找不出原因 这个问题一直得不到解决 最后我尝试改变 display 函数 和大循环中函数的位置循序后才能正常显示 但这从理论上说不通 最后得出可能是 受到延时函数 delay 的延时影响 导致数码管动态显示位码出错 5 总结及体会 从这次课题设计任务中 学习到了很多 经过二十天的努力 老师的精心指导 还有和在网上找到的一些资料 主要让我们掌握了数码管移位动态扫描显示的编程方 法 掌握了矩阵扫描的编程方法 掌握了数据在内部运算的编程方法 这也是编程必 须掌握的知识 当然调试的时候也是一个重点 也收获良多 这其中就分硬件和软件 两部分 硬件只要注意一些焊接问题 对板子输入简单的程序进行检测 这个只要自 己细心一点都可以按照原理图做好 其中最重要 最麻烦 也是学到和掌握的东西最 多的地方就是软件调试了 这其中包括程序的编写检验 这样必须对程序的每部分都 很熟悉 掌握每句程序的再整个整体的作用 这样当出现问题是才能根据问题改变程 序内容而达到目的 出问题最多的也是这个地方 这也证明了我对程

温馨提示

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

评论

0/150

提交评论