运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序

运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序,第1张

#include<reg52h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

uchar

count;

uint

disnum;

sbit

dula=P2^6;

sbit

wela=P2^7;

uchar

code

tabledu[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

display(uchar,uchar,uchar);

delay(uchar);

void

main()

{

EA=1;

ET1=1;

TMOD=0x10;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

TR1=1;

while(1)

{

if(count==20)

{

count=0;

//

if(disnum==1000)

//

disnum=0;

disnum++;

}

display(disnum/100,disnum%100/10,disnum%100%10);

}

}

void

tim1()

interrupt

3

using

3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

count++;

}

display(uchar

bai,uchar

shi,uchar

ge)

{

P0=tabledu[bai];

dula=1;

dula=0;

P0=0xfe;

wela=1;

wela=0;

delay(1);

P0=tabledu[shi];

dula=1;

dula=0;

P0=0xfd;

wela=1;

wela=0;

delay(1);

P0=tabledu[ge];

dula=1;

dula=0;

P0=0xfb;

wela=1;

wela=0;

delay(1);

}

delay(uchar

x)

{

uchar

a,b;

for(a=x;a>0;a--)

for(b=255;b>0;b--);

}

//你自己看一下,有不对的就改点别忘了给分啊

一、LedNumVal%10000/1000

%是模,取余数的意思,%10000,得到的数最大是四位数。

/是整除的意思不带小数,如8/3=2

一个小于10000的数,整除1000结果一定是0到9之间的一个数

二、Disp_Tab

以及LedOut,

dispbit都是数组,根据相应的数可得到对应的字符数据,达到位选的功能。

#include<reg52h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

code unsigned char tab[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴数码管 0-9

unsigned char Dis_Shiwei;//定义十位

unsigned char Dis_Gewei; //定义个位

//

/ 延时函数 /

//

void delay(unsigned int cnt)

{

while(--cnt);

}

//

/ 主函数 /

//

main()

{

TMOD |=0x01;//定时器设置 10ms in 12M crystal,工作在模式1,16位定时

TH0=0xd8;

TL0=0xf0;

IE= 0x82; //打开中断

TR0=1; //打开定时开关

while(1)

{

P0=Dis_Shiwei;//显示十位

P2=0;

delay(300); //短暂延时

P0=Dis_Gewei; //显示个位

P2=1;

delay(300);

}

}

//

/ 定时器中断函数 /

//

void tim(void) interrupt 1 using 1

{

static unsigned char second,count;

TH0=0xd8; //重新赋值

TL0=0xf0;

count++;

if (count==100) //100x10ms=1S,大致延时时间

{

count=0;

second++; //秒加1

if(second==100)

second=0;

Dis_Shiwei=tab[second/10];//十位显示值处理

Dis_Gewei=tab[second%10]; //个位显示处理

}

以上就是关于运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序全部的内容,包括:运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序、关于单片机数码管的C语言代码,高分求详解,先谢过、电路如下图请问单片机动态数码管显示C语言程序怎么写呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9495293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存