数码管显示数字_第1页
数码管显示数字_第2页
数码管显示数字_第3页
数码管显示数字_第4页
数码管显示数字_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

在第 6 课里 我们讲到数码管的静态显示 利用静态显示法 通过控制位选和段选 可以 让数任意几位数码管显示任意字符 但由于所有位数码管的相同的段选全部接在一起 所 以只能同时显示相同的数字 例如 8 位同时显示 8 字 1 3 5 位同时显示 3 字 但大家 想一下 如果我们要让数码管同一时刻显示不同的数字 如图 1 所示的现象 用静态显示 的方法就不能够实现 这里就只能用到动态显示的方法 今天这一节我们主要讲解数码管 动态显示的原理的程序实现的方法 图 1 数码管同时显示 在讲解动态显示方法之前 我们先介绍在种数码管及单片机程序开发过程常用的方法 数组编码法 1 数组编码 在跟数码管相关的程序中 可以对位进行编码 也可对段进行编码 这里我们以段编 码进行讲解 通过第 8 课的程序我们知道 在位选确定后 要显示数字 8 时 P0 0 x80 显 示数字 3 时 P0 0 xb0 也就是 0 xb0 0 x80 分别可以表示数字 3 和 8 按此方法 我们把在 数码管上显示 0 f 16 个数字全部用 16 制度表示出来 这 16 个 16 进制数就称为数码管可 显示 0 f 的相应的编码 如图 2 所示 注意共阳和共阴极数码管相应的编码有所不同 这 里以实验板上共阳极的为例 图 2 共阳极数码管编码 在编程中 编码的表示方法如下 unsigned char code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e 这里编码表示的方法与 C 语言中数组定义的方法基本一样 table 是数组名 后面需 加 中括号中需加上数组中元素的个数 也可以不写 等号的右边用一个大括号将所有 元素包含起来 里面的元素之间用 隔开 在大括号外用 结束 等号左边的 unsigned char 是数据元素的数据类型 这里定义为无符号字符型 也就是元素的值范围 只能是 0 255 之间 Code 表示把这个数组定义为编码 这样定义的好处是其元素转化成 二进文件后可能直接存储到程序存储器中 当然这里也可以不加 code 但是这样编译后会 将其直接存储到数据存储器中 要知道单片机中数据存储器的容量是非常有限的 定义为 code 后可节约单片机数据存储器的空间 调用程序的方法如下 P0 table 1 这里表示将数组中的第 2 个元素 注意第一个是 table 0 0 xf9 赋给 P1 口 即 P0 0 xf9 也就是此时位被选通的数码管会显示数字 2 下面利用编码的方法让 6 个数码管以间隔 1 秒的时间循环显示 0 f 相应程序如例 1 例 1 6 个数码管循环显示 0 f include define uint unsigned int define uchar unsigned char sbit duan P2 6 sbit wei P2 7 uchar num unsigned char code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e void delay uint void main wei 1 P0 0 xfe wei 0 for num 0 num0 x for y 500 y 0 y 下载到实验板后实验现象如图 3 所示 图 3 6 个数码管依次从 0 f 变化 2 数码管的动态显示 明白了数组编码后 现在我们正式介绍数码管的动态显示 为了更利于大家理解 我 们先用前面介绍过的静态显示法写一个程序 功能为 让 6 个数码管间隔一秒依次显示 1 2 3 4 5 6 程序如例 2 例 2 数码管依次显示 1 2 3 4 5 6 include define uint unsigned int define uchar unsigned char sbit duan P2 6 sbit wei P2 7 uchar num uchar code table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 void delay uint void main while 1 for num 1 num0 x for y 110 y 0 y main 函数内的意思 num 从 1 开始 一直加到 6 然后不断的循环 程序为 for num 1 num 7 num 当 num 1 时 先打开第一位数码管 再让第一位数码管显示 1 程序 P0 table num 即 P0 table 1 然后进行 1s 的延时 程序为 delay 1000 紧接着当 num 2 时 打开第二位数码管 并让其显示 2 延时 1s 一直到 num 6 时 打开第六位数码管 并让其显示 6 延时 1s 再重复前的的程序 这个我们就可以在 实验板上看到数码管从第一位开始依次以 1s 的时间间隔依次显示 下面的程序下载到实验板现象如图 4 所示 图 4 数码管依次显示 现在我们把延时程序缩短 注意上面是延时 1s 依次 100ms 10ms 1ms 一直到 10us 然后把每次改后的程序下载到实验板 当短到 10us 时 可看到如下现象 也就是此时我们看到的现象是 6 个数码管在同一时刻按位依次显示 可能大家马上要 提出疑问了 在上面不是说过利用静态的写法不是实现不了这种效果吗 这里就是数码管 的动态显示 所谓动态显示

温馨提示

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

评论

0/150

提交评论