1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 数码管的静态显示和动态显示

数码管的静态显示和动态显示

时间:2022-02-21 01:10:03

相关推荐

数码管的静态显示和动态显示

一、数码管简介

数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。

按发光二极管单元连接方式可分为共阳极数码管共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

生活中常见的数码管主要有1位数码管,两位数码管,三位数码管,四位数码管,五位数码管,六位数码管,八位数码管。

静态显示原理:LED显示器工作方式有两种:静态显示方式和动态显示方式。

二、数码的静态显示

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于检测可控制。缺点是硬件电路比较复杂,成本较高。

下面是一位数码管静态显示的仿真电路图,由于本次演示的是共阴极数码管,所以数码管右端的公共引脚接地。左端的八个引脚分别对应数码管的A,B,C,D,E,F,G,H。与单片机的P0口相连接。

下面的程序功能实现的是从0开始显示数字,每隔一秒切换一次,循环显示到F。

#include<reg51.h>//包含头文件unsigned char code tabl[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//定义数码管显示数字编码数组(这里采用的是共阴极数码管的编码)void delayms(unsigned int xms){//延时函数unsigned int i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(){//显示函数unsigned char i;for(i=0;i<16;i++){P0=tabl[i];//送入数码管需要显示的数字进行显示delayms(1000);//延时1秒}}void main(){//主函数while(1){//whlie大循环display();}}

仿真运行结果截图:

二、动态显示方式:

将所有的数码管的段选线并接在一起,用一个IO接口控制,公共端并不是直接接地(共阴极)或者电源(共阳极),而是通过相应的IO接口控制。以阴极为例假设4个数码管工作过程为:每个数码管的公共端与一根IO相连,第一步使最右边一个数码管的公共端为0,其余数码管公共端为1,同时在IO上 发送右边第一个数码管的字段码,这时候只有右边的第一个数码管显示,其余不显示;第二部使右边第二个数码管的公共端为0,其余的公共端为1,同时在上发送右边第二个数码管的字段码,这时候,只有右边第二个数码管显示,其余不显示,以此类推,直到最后一个,这样子4个数码管轮流显示相应的信息,一遍显示完毕,隔一段时间,又这样循环显示。从计算机角度,每个数码管隔一段时间才显示一次,但是由于人的视觉暂留效应,只要隔离时间足够短,循环的周期足够长,每秒达到24次以上,看起来数码管就一直稳定显示了,这就是动态显示原理。

下面的程序功能是利用数码管的动态扫描,实现四位数码管显示1234这四个数字

#include<reg51.h>sbit we1=P2^0;//定义数码管第一位的公共控制端,用来控制数码管的显示和关闭sbit we2=P2^1;sbit we3=P2^2;sbit we4=P2^3;unsigned char code tabl[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};void delayms(unsigned int xms){unsigned int i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(){we1=0;//给左边第一个数码管公共端一个低电平,使其进行显示P0=tabl[1];//送入数字1到数码管中delayms(5);//延时5ms we1=1;//给第一个数码管的公共端一个高电平,使其关闭显示P0=0xff;//消影处理,(这里非常重要,如果不进行消影,会使下一个数码管显示不正确,出现乱码的情况)we2=0;//这里是进行第二个数码管显示,原理和第一个显示原理一样P0=tabl[2];delayms(5);we2=1;P0=0xff;we3=0;P0=tabl[3];delayms(5);we3=1;P0=0xff;we4=0;P0=tabl[4];delayms(5);we4=1;P0=0xff;}void main(){while(1){display();}}

动态扫描显示仿真结果截图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。