单片机两位数码管显示数字

单片机两位数码管显示数字用proteus 软件和keil软件,用一个两位LED数码管显示数字29,要仿真图和程序

#include<reg51.h>

#define uchar unsigned char;

uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //0到f

uchar number,dat=29;

void t0isr() interrupt 1

case 0:P2=0x02;P0=distab[dat/10];

break;

case 1:P2=0x01;P0=distab[dat%10];

TMOD=0x01;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TR0=1;

ET0=1;

EA=1;

while(1);

}

分类

数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

以上内容参考:百度百科-数码管

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-05-26

#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //0到f
uchar number,dat=29;
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
break;
default:break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

追问

谢谢了!

你好,做完后显示的是静态显示

本回答被网友采纳

用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。display子程序中,先...

单片机用汇编写两个数码管显示0到99循环的程序
1. 新建一个项目,确保硬件环境和开发工具准备就绪。2. 为数码管设置段选表,根据数码管的段码定义一组映射关系,便于控制每个数码管的显示字符。3. 实现延时函数,以确保字符的稳定显示,通常通过定时器或中断来实现延时控制。4. 声明变量uchar i,并初始化一个标志wk为1,用于控制数码管位选线。开...

如何在单片机上显示数码管的数字和颜色?
可以用仿真图来实现,用两位共阳数码管,分别接在P0,P2口,组成两位静态显示电路。先做加法计数,计数到99,自动改为减法计数,计数到0,再变为加法计数。由此循环。仿真图 程序如下 include<reg51.h> unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void...

单片机控制两位共阳极数码管显示数字20
连接错误。在使用的单片机控制两位共阳极数码管时,连接错误会导致显示数字20,提醒使用者进行更改。数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。

单片机用汇编写两个数码管显示0到99循环的程序
以确保每个数字的显示有足够的时间。为了实现0到99的循环效果,你需要确保变量i在每次循环中更新,同时限制它的值范围,这样可以依次显示各个数字。通过这样的步骤,你将能够编写出一个单片机汇编程序,实现数码管0到99的循环显示。每个数字的显示都是通过控制位选和段选,以及适时的延时来完成的。

单片机用汇编写两个数码管显示0到99循环的程序
2、数码管段选表。 3、延时函数。 4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。 5、while(1) \/\/死循环效果{} 。 6、dk = 1;\/\/打开段选,P0 = leddata[i];,dk = 0;\/\/关闭段选,delay(100);\/\/延时效果。 7、选择效果,限制i值的循环...

单片机两位数码管显示两位数
单片机两位数码管显示两位数 20 按一下key1,一位数码管显示1再按一下key2,另一位数码管显示2。汇编,c51都可以 零_冰 | 浏览1802 次 |举报 我有更好的答案推荐于2017-12-16 14:47:37 最佳答案 数码管是直接驱动的,还是动态扫描的? 数码管是共阴极还是共阳极的? 数码管控制数据准备从哪2个口输出?

51单片机数码管怎样才能同时在两个数码管上面显示不同的数字??
是因为人眼的视觉暂留效应,实际上两个数码管是交替显示的,但是因为交替的速度十分快,所以会有因为视觉暂留效应而看到两个数码管都是同时现实的。视觉暂留现象即视觉暂停现象(Persistence of vision,Visual staying phenomenon,duration of vision)又称“余晖效应”,1824年由英国伦敦大学教授皮特.马克....

求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99_百度知 ...
两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。给你提供一个两位数码管00~99循环加法计数的CC语言程序。程序中,采用了软件延时的方法,每半秒自动加1。include<reg52.h> unsigned char count=0;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,...

单片机用汇编写两个数码管显示0到99循环的程序
1、新建项目,做好准备。2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) \/\/死循环效果{} 。6、dk = 1;\/\/打开段选,P0 = leddata[i];,dk = 0;\/\/关闭段选,delay(100);\/\/延时...

相似回答