数码管显示数字

数码管显示数字

ID:40843868

大小:102.00 KB

页数:8页

时间:2019-08-08

数码管显示数字_第1页
数码管显示数字_第2页
数码管显示数字_第3页
数码管显示数字_第4页
数码管显示数字_第5页
资源描述:

《数码管显示数字》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在第6课里,我们讲到数码管的静态显示,利用静态显示法,通过控制位选和段选,可以让数任意几位数码管显示任意字符,但由于所有位数码管的相同的段选全部接在一起,所以只能同时显示相同的数字,例如8位同时显示8字,1、3、5位同时显示3字。但大家想一下,如果我们要让数码管同一时刻显示不同的数字,如图1所示的现象,用静态显示的方法就不能够实现,这里就只能用到动态显示的方法,今天这一节我们主要讲解数码管动态显示的原理的程序实现的方法。图1数码管同时显示123456 在讲解动态显示方法之前,我们先介绍在种数码管及单片机程序开发过程常用的方法-数组编码法。1、数组编码在跟数码管相关

2、的程序中,可以对位进行编码,也可对段进行编码,这里我们以段编码进行讲解。通过第8课的程序我们知道,在位选确定后,要显示数字8时,P0=0x80,显示数字3时P0=0xb0,也就是0xb0,0x80分别可以表示数字3和8,按此方法,我们把在数码管上显示0-f,16个数字全部用16制度表示出来,这16个16进制数就称为数码管可显示0-f的相应的编码,如图2所示(注意共阳和共阴极数码管相应的编码有所不同,这里以实验板上共阳极的为例)。图2共阳极数码管编码在编程中,编码的表示方法如下:unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0

3、,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};这里编码表示的方法与C语言中数组定义的方法基本一样。table是数组名,后面需加[],中括号中需加上数组中元素的个数,也可以不写。等号的右边用一个大括号将所有元素包含起来,里面的元素之间用“,”隔开,在大括号外用“;”结束。等号左边的unsignedchar是数据元素的数据类型,这里定义为无符号字符型,也就是元素的值范围只能是0-255之间。Code表示把这个数组定义为编码,这样定义的好处是其元素转化成二进文件后可能直接存储到程序存储器中,当

4、然这里也可以不加code,但是这样编译后会将其直接存储到数据存储器中,要知道单片机中数据存储器的容量是非常有限的,定义为code后可节约单片机数据存储器的空间。调用程序的方法如下,P0=table[1];这里表示将数组中的第2个元素(注意第一个是table[0])0xf9赋给P1口,即P0=0xf9;也就是此时位被选通的数码管会显示数字2.下面利用编码的方法让6个数码管以间隔1秒的时间循环显示0-f。相应程序如例1.例1:6个数码管循环显示0-f#include#defineuintunsignedint#defineucharunsignedc

5、harsbitduan=P2^6;sbitwei=P2^7;ucharnum;unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelay(uint); voidmain(){      wei=1;      P0=0xfe;      wei=0;       for(num=0;num<16;num++)      {             duan=1;             P0=t

6、able[num];             delay(150);             duan=0;      }} voiddelay(uintz){      uintx,y;      for(x=z;x>0;x--)             for(y=500;y>0;y--);}下载到实验板后实验现象如图3所示。  图3 6个数码管依次从0-f变化 2、数码管的动态显示明白了数组编码后,现在我们正式介绍数码管的动态显示,为了更利于大家理解,我们先用前面介绍过的静态显示法写一个程序,功能为:让6个数码管间隔一秒依次显示1、2、3、4、5、6。程序如

7、例2.例2          数码管依次显示1、2、3、4、5、6#include#defineuintunsignedint#defineucharunsignedcharsbitduan=P2^6;sbitwei=P2^7;ucharnum;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(uint); voidmain(){            while(1)      

8、{    

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。