历史上的今天
返回首页

历史上的今天

今天是:2025年08月11日(星期一)

正在发生

2021年08月11日 | 51单片机——八段数码管

2021-08-11 来源:eefocus

在对LED灯的应用有了一定的了解之后,我开始学习了一些关于数码管的应用。


在我的开发板上,有独立共阳管和八位共阴管 。数码管从高位到低位的段码依次是h(dp),g,f,e,d,c,b,a共八位。共阴管是“1”表示亮,“0”表示灭,而共阳管则是相反的。顺便提一句,若是要检测数码管是否完好,可以用数码管“8”来检测。


若是要在数码管上显示0~F,则可以用一套固定的十六进制数表示,可以放在数组中,为{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。这一个数组是用来表示共阴管的亮的,而若是共阳管的时候,需要在前面加上“~”。


独立共阳管显示0-F


自己写的几个延时函数


void DelayUs2X(unsigned char t)//微秒级延时

{

while(t--);

}

void DelayMs(unsigned char t)//毫秒级延时

{

while(t--)

{

DelayUs2X(245);

DelayUs2X(245);

}

}

void DelayS(unsigned char t)//秒级延时

{

while(t--)

{

DelayMs(245);

}

}

段码和位码的用数组存放


unsigned char code Seg_Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 

//段码,显示器现实的数字对应0~15 

unsigned char code Bit_Code[]={0xfe,0xfd,0xfb,0xf7,0xef,0x0df,0xbf,0x7f};

//位码,对应8个数码管

unsigned char code LOVE[]={0x06,0x00,0x38,0x3f,0x3e,0x79,0x00,0x3e};

//                           I         L    O    V    E         U


单个数码管从0——15的显示,因为板子上的单个数码管是共阳极的,所以需要给代码去反


void main()//单个数码管零到16的显示

{

    while(1)

    {

    if(i==16)

{

i=0;

}

P1 =~Seg_Code[i];

i++;

DelayS(5);//相当于1秒的延迟

    }

}


八位数码管一次显示从1到15,每次位选一个数码管 


void show_0_15()//0到15的八位数码管一次显示

{

DataPort = 0;//清除数据,防止重影

for(i=0;i<16;i++,j++)//先送位码,再选段码

{

if(j==8)

{

j=0;

}

DataPort =Bit_Code[j];//送位码确定哪个数码管显示

Bit_Latch = 1;//开门

Bit_Latch = 0;//关门

// Delay();

DataPort = Seg_Code[i];//送段码,确定显示的数字

Seg_Latch = 1;//开门

Seg_Latch = 0;//关门

Delay();

}

}


Display显示函数,用来确认需要从第几码管显示以及显示几位数码管


void DisPlay(unsigned char FirstBit,unsigned char Num)//显示几位数码管以及各自上面的数字

{

unsigned char i;

for(i=0;i {

DataPort =0;

Seg_Latch=1;

Seg_Latch=0;

DataPort=Bit_Code[i+FirstBit];

Bit_Latch=1;

Bit_Latch=0;

DataPort=TempData[i];//显示数据//需要在对应的数码管现实的数字

Seg_Latch=1;//位锁存

Seg_Latch=0;

DelayUs2X(255);

}

}


8位累加器,从0到99999999


void leijiaqi()//累加器8位

{

unsigned long int num=0;

unsigned int j;

while(1)

{

j++;

if(j==24)//延时空跑24圈,num+1;这24圈只是为了跑亮八个灯

{

j=0;

num++;

if(num==10000000)

num=0;

}

TempData[0]=Seg_Code[num/10000000];

TempData[1]=Seg_Code[(num%10000000)/1000000];

TempData[2]=Seg_Code[(num%1000000)/100000];

TempData[3]=Seg_Code[(num%100000)/10000];

TempData[4]=Seg_Code[(num%10000)/1000];

TempData[5]=Seg_Code[(num%1000)/100];

TempData[6]=Seg_Code[(num%100)/10];

TempData[7]=Seg_Code[(num%10)/1];

DisPlay(0,8);

}

}


在八位数码管上动态显示11位的手机号码,将上一位空格共12位


void main()

{

unsigned long int num=0;

unsigned int j;

while(1)

{

j++;

if(j==40)//延时空跑24圈,num+1;这24圈只是为了跑亮八个灯

{

temp%=1000;

temp++;

j=0;

}

//temp%=8;

for(i=0;i<8;i++)

{

TempData[i]=PhoneNumber[(i+temp)%12];

}

DisPlay(0,8);

}

}

推荐阅读

史海拾趣

超霸(GP)公司的发展小趣事

绿索超容深知品质是企业生存的根本。因此,公司从原材料采购到生产制造,再到成品检验,都实施了严格的质量控制措施。此外,公司还通过了ISO9001体系认证,进一步提升了其产品质量管理水平。这些努力不仅保证了绿索超容产品的优良品质,也为其赢得了客户的信任和好评。

ERNI公司的发展小趣事

进入21世纪,ERNI继续深耕连接器技术。他们成功研发出世界上第一个DIN连接器,并随后发展了各种电路板连接器和输入/输出连接器。其中,2mm连接器成为ERNI的明星产品之一。凭借其优越的性能和可靠的品质,ERNI的2mm连接器在国内军工领域得到广泛应用,并赢得了广大客户的信赖和好评。

宝乘(baocheng)公司的发展小趣事

在激烈的市场竞争中,宝乘公司始终坚持质量为本的原则。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品测试等各个环节都严格把关。正是这种对质量的执着追求,让宝乘的产品赢得了客户的信赖和好评。许多知名企业都成为了宝乘的长期合作伙伴,共同推动电子行业的发展。

Defender Security公司的发展小趣事

物联网技术的快速发展为网络安全带来了新的挑战和机遇。Defender Security公司积极应对这一变化,加大了对物联网安全领域的投入。他们与多家物联网企业合作,共同研发了适用于物联网设备的安全防护方案。通过不断优化和升级产品,Defender Security成功帮助物联网企业解决了安全问题,同时也为自己带来了新的增长点。

Cree(科瑞)公司的发展小趣事

进入21世纪,Cree在功率器件领域取得了重大突破。2004年,Cree开始大范围采用氮化镓(GaN)材料,并成功将其应用于大功率RF器件产品设计。这些GaN射频器件主要服务于美国军工领域,如“萨德”导弹防御系统,其超宽的频率覆盖和大功率射频功率技术无人能及。这一技术的成功应用,不仅提升了Cree的技术实力,也为其打开了新的市场空间。

灿科盟(Ckmtw)公司的发展小趣事

为了提升产品质量,增强客户信任,灿科盟在2008年成功通过了ISO9001:2000版质量管理体系认证。这一认证标志着公司在质量管理方面达到了国际标准,也为公司赢得了更多客户的青睐。此后,公司继续加强质量管理体系建设,不断提升产品质量和服务水平。

问答坊 | AI 解惑

谁有CXA1019M最简单的FM部分电路图

谁有CXA1019M最简单的FM部分电路图…

查看全部问答>

反对用标准实验板的学习方法?

从0开始教你学单片机-反对用标准实验板的学习方法? geyin 闲来无事,准备学学单片机.... 寻找试验板和书籍 发现这本书有个这种观点,吃惊不小啊:) ===============================    定价:25元 作者:赵星寒 刘小波 王庚兰 ...…

查看全部问答>

控制思想交流

水温控制程序-PID思想多交流…

查看全部问答>

微软研发神奇臂带让胳膊变成触摸屏

Skinput能够解决MP3等小玩意儿触摸屏越来越小的问题 Skinput能够识别在手上敲打出来的电话号码 研究人员表示,我们的皮肤是一个完美的显示面,能够永远伴随着我们 与MP3播放器结合在一起的Skinput原型,可用于改换歌曲和调整音量 Ski ...…

查看全部问答>

请问哪位有《运算放大器应用技术手册》

这本书太贵了  没米买  只能问各位大哥上传个PDF看看    谢谢…

查看全部问答>

请问什么地方有嵌入式LINUX的介绍?(音频或视频)

请问什么地方有嵌入式LINUX的介绍?(音频或视频)…

查看全部问答>

Wince中为什么文件内存映射读写时会占用程序内存空间

      hFile = CreateFileForMapping();       hMap = CreateFileMapping(hFile,);       pHead = MapViewOfFile(hMap);       BYTE * pData = new BYTE[nSiz ...…

查看全部问答>

6410开发板(ARM1176JZF-S内核)+摄像头,能实时采集视频,并进行图像处理吗?

主要是对采集到的视频进行实时图像处理,如边缘检测,二值化等等。请大家指点,谢谢。…

查看全部问答>

CE5.0 电源属性 系统定时挂起问题

在WINCE5.0 系统中,控制面板--电源--电源属性--方案, 当我在电源使用方案中选电池电源时,将状态切换为挂起的时间不准(即是系统定时睡眠的时间不准), 请高手指点应该怎么样修改,谢谢!…

查看全部问答>

急请高手帮助!!!!

我有一个内部测试机器的系统,有两只表:一只电能表,一只热能表.热能表有RS232接口,已经有软件支持了,接入电脑后运行软件就可以读取数据了,而电能表 只有RS485接口.现欲将两个表的软体整合成一个软件,并要求达到如下功能:     将测试的负 ...…

查看全部问答>