问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

80C51单片机数码管的显示 C语言

发布网友 发布时间:2022-04-28 12:13

我来回答

4个回答

热心网友 时间:2023-10-09 00:08

用10个8段数码管动态扫描显示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
显示段码值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分别对应相应的数码管点亮,即位码
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取显示数据,段码
P2=seg[i];
//取位码
delay(20000);
//扫描间隙延时,时间太长会闪烁,太短会造成重影,自己调试
i++;
if(10==i)
//检测10位扫描完全?
i=0;
}
}

热心网友 时间:2023-10-09 00:09

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit C1=P2^7;
sbit B1=P2^6;
sbit A1=P2^5;
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//7段数码管段码表共阳
void display(uchar an,uchar wei);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}
/**************************************************************/
void display(uchar an,uchar we)
{
P0=tab[an];
A1=1;B1=1;C1=1; 开锁存器可以,不要的。
A1=0;B1=1;C1=1;
P0=wei[we];

}
/************************************************************************/
void main(void)
{

while(1)
{
unsigned long a;
uchar b;
for(a=0;a<99999999;a++)
for(b=0;b<1;b++)
{
display(a/10000000,0);
delay(200);
display((a%10000000)/1000000,1);
delay(200);
display((a%1000000)/100000,2);
delay(200);
display((a%100000)/10000,3);
delay(200);
display((a%10000)/1000,4);
delay(200);
display((a%1000)/100,5);
delay(200);
display((a%100)/10,6);
delay(200);
display(a%10,7) ;
delay(200) ;
}
}
}
这是动态显示的。

热心网友 时间:2023-10-09 00:10

#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
C1=P2^7;
sbit
B1=P2^6;
sbit
A1=P2^5;
uchar
code
wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar
code
tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//7段数码管段码表共阳
void
display(uchar
an,uchar
wei);
void
delay(uint
z)
{
uint
x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}
/**************************************************************/
void
display(uchar
an,uchar
we)
{
P0=tab[an];
A1=1;B1=1;C1=1;
开锁存器可以,不要的。
A1=0;B1=1;C1=1;
P0=wei[we];
}
/************************************************************************/
void
main(void)
{
while(1)
{
unsigned
long
a;
uchar
b;
for(a=0;a<99999999;a++)
for(b=0;b<1;b++)
{
display(a/10000000,0);
delay(200);
display((a%10000000)/1000000,1);
delay(200);
display((a%1000000)/100000,2);
delay(200);
display((a%100000)/10000,3);
delay(200);
display((a%10000)/1000,4);
delay(200);
display((a%1000)/100,5);
delay(200);
display((a%100)/10,6);
delay(200);
display(a%10,7)
;
delay(200)
;
}
}
}
这是动态显示的。

热心网友 时间:2023-10-09 00:10

用10个8段数码管动态扫描显示的:
#include<reg51.h>
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0123456789
unsigned char code seg[]={0,1,2,3,4,5,6,7,8,9};//分别对应相应的数码管点亮,即位码
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned char i;

while(1)
{

P0=dofly[i];//取显示数据,段码
P2=seg[i]; //取位码
delay(20000); //扫描间隙延时,时间太长会闪烁,太短会造成重影,自己调试
i++;
if(10==i) //检测10位扫描完全?
i=0;
}
}

热心网友 时间:2023-10-09 00:08

用10个8段数码管动态扫描显示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
显示段码值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分别对应相应的数码管点亮,即位码
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取显示数据,段码
P2=seg[i];
//取位码
delay(20000);
//扫描间隙延时,时间太长会闪烁,太短会造成重影,自己调试
i++;
if(10==i)
//检测10位扫描完全?
i=0;
}
}

热心网友 时间:2023-10-09 00:09

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit C1=P2^7;
sbit B1=P2^6;
sbit A1=P2^5;
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//7段数码管段码表共阳
void display(uchar an,uchar wei);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}
/**************************************************************/
void display(uchar an,uchar we)
{
P0=tab[an];
A1=1;B1=1;C1=1; 开锁存器可以,不要的。
A1=0;B1=1;C1=1;
P0=wei[we];

}
/************************************************************************/
void main(void)
{

while(1)
{
unsigned long a;
uchar b;
for(a=0;a<99999999;a++)
for(b=0;b<1;b++)
{
display(a/10000000,0);
delay(200);
display((a%10000000)/1000000,1);
delay(200);
display((a%1000000)/100000,2);
delay(200);
display((a%100000)/10000,3);
delay(200);
display((a%10000)/1000,4);
delay(200);
display((a%1000)/100,5);
delay(200);
display((a%100)/10,6);
delay(200);
display(a%10,7) ;
delay(200) ;
}
}
}
这是动态显示的。

热心网友 时间:2023-10-09 00:10

#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
C1=P2^7;
sbit
B1=P2^6;
sbit
A1=P2^5;
uchar
code
wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar
code
tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//7段数码管段码表共阳
void
display(uchar
an,uchar
wei);
void
delay(uint
z)
{
uint
x,y;
for(x=z;x>0;x--)
for(y=121;y>0;y--);
}
/**************************************************************/
void
display(uchar
an,uchar
we)
{
P0=tab[an];
A1=1;B1=1;C1=1;
开锁存器可以,不要的。
A1=0;B1=1;C1=1;
P0=wei[we];
}
/************************************************************************/
void
main(void)
{
while(1)
{
unsigned
long
a;
uchar
b;
for(a=0;a<99999999;a++)
for(b=0;b<1;b++)
{
display(a/10000000,0);
delay(200);
display((a%10000000)/1000000,1);
delay(200);
display((a%1000000)/100000,2);
delay(200);
display((a%100000)/10000,3);
delay(200);
display((a%10000)/1000,4);
delay(200);
display((a%1000)/100,5);
delay(200);
display((a%100)/10,6);
delay(200);
display(a%10,7)
;
delay(200)
;
}
}
}
这是动态显示的。

热心网友 时间:2023-10-09 00:10

用10个8段数码管动态扫描显示的:
#include<reg51.h>
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0123456789
unsigned char code seg[]={0,1,2,3,4,5,6,7,8,9};//分别对应相应的数码管点亮,即位码
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned char i;

while(1)
{

P0=dofly[i];//取显示数据,段码
P2=seg[i]; //取位码
delay(20000); //扫描间隙延时,时间太长会闪烁,太短会造成重影,自己调试
i++;
if(10==i) //检测10位扫描完全?
i=0;
}
}
80c51的数时钟单片机程序

低电平有效,数码管的小数点与P2.7相连。/ include&lt;reg52.h&gt; include"intrins.h" //_nop_();延时函数使用声明 define uint unsigned int define uchar unsigned char define LED_data P0//P0口作为数码管显示的数据口 sbit RST_1302=P1^4; //时钟复位信号线 sbit IO_1302=P1^3; ...

80c51单片机定时器中断问题,单个数码管间隔1秒一次显示0到9。(汇编...

RETI TABLE: ; 共阴极数码管显示代码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6fh ;56789 END

80c51单片机驱动LED显示。。。急急急

I/O并行口直接驱动LED显示 1.实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。2.电路原理图 图4.7.1 3.系统板上硬件连线 把“单片机系统”区域中的P0.0/AD0-P0.7/...

80c51单片机用汇编语言4个独立按键如何分别控制4个数码管从0到9到0...

你这没有给出原理图,数码管和按键是怎么接的?是仿真实现吗,下图是仿真图,用了四位一体的共阴数码管,4个按键在P3.4~P3.7上。仿真结果,你要是仿真,就按这个仿真图画,程序就完全适用。如果是实物开发板,就是根据开发板,适当修改程序了。汇编程序如下 S1 BIT P3.4 S2 BIT P3.5 S3...

用单片机设计制作一个模拟的十字路口交通信号灯控制系统。

本实验主要是利用单片机AT89S52、数码管和发光二极管组成,整个电路结构比较简单,它能实现以下几个功能:  时间的显示。  红黄绿灯的发光与熄灭。 具体操作说明如下: 当交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。当按下启动按钮K1并释放后,数码管显示将会从“60”开始倒计时,每隔...

如何用单片机让数码管显字

数码管工作在静态显示方式时,共阴极(共阳极)的公共端COM连接在一起接地(电源)。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O接口片(例如80C51的P1端口、8155和8255的I/O端口等),也可以采用串行...

80c51单面机c语言时钟控制器编程

sbit ge=P2^0;sbit shi=P2^1;sbit beep=P2^5; //蜂鸣器接口 uchar code dispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void init();void delayms(uchar t);uint i,j,tem;main(){ TMOD=0x01;TL0=(65535-50000)%256;TH0=(65535-50000)/256;TR0=1;...

谁能帮我用C语言编一个80C51的小程序

50RMB,帮你完成.

有关单片机读端口、读引脚的问题

80C51单片机有P0-P3四个P口,以P0为例说明:要搞清这个问题,就要明白p0口的内部结构。P0口是由锁存器经两个驱动场效应管和外部引脚相连的。读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。两者不同。一般来说,读取P0的数据,都是读引脚,...

单片机考题,求好心人帮忙

21、若(R0)=20H,(20H)=30H,则执行指令MOV A,R0后,A= 20H ,若执行指令MOVA,@R0后,A=30H 。22、AT89C51单片机片内RAM可分为工作寄存器、位寻址空间、用户RAM区共三个功能区。23、数码管的显示方式一般有两种 静态方式 、动态方式 。24、异步串行通信的帧格式由起始位、数据位 、奇偶...

51单片机8位数码管显示 c51单片机数码管显示 单片机数码管显示0到9 单片机数码管显示原理 单片机控制数码管显示 单片机动态数码管显示 51单片机按键控制数码管0~9 单片机中数码管代码 51单片机驱动数码管
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我用银行卡网购了。怎么被注销了? 装电线的时候,不同区域该用什'么规格的电线? SY0401-98《输油输气管道线路工程施工及验收规范》废止后,用什么规范... 汇率一直变动,对中国工业品出口竞争力产生了影响,但是应该用什么... ...整个盘面流出资金大于流入资金,但是股票仍然升.. 请问股市或个股资金的流入与流出是什么意思啊? 股市之中的"资金流入"和"资金流出"分别是什么意思? 什么是股市中的资金流入和流出现象,如何理解 耕升gtx titan x 显卡怎么样 gtxtitanx是游戏显卡吗 C语言单片机代码 数码管动态显示 请求一段单片机控制数码管的C语言编程 51单片机显示八位数码管的C语言程序 运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序 单片机数码管显示0到999c语言程序怎么编 51单片机c语言版,编写程序:单片机控制八位LED数码管显示20220204间隔两秒后显示2022_百度问一问 单片机8位数码管依次显示0到7,要求用c语言实现 融创望江府附近的公交站 佛山季华园到融创望江府坐什么公交车? 沥滘地铁到融创望江府怎么走? 冯如小学招生地段范围 【融创望江府】小区属于哪个版块?附近连接哪些地方,有什么潜力? css里图片半透明怎么写 高一地理气候类型分布图 世界气候,气压带风带,分布图,要图(需要表识纬度) 初一地理世界的所有气候(带图) 七年级上册地理之世界主要气候类型及分布【精选】 世界气候类型的特点及图 怎么记忆地理中的世界各地气候分布和特征 初一上册地理图册《气候的分布》图 在单片机中任何用c语言程序点亮数码管 关于单片机数码管的C语言代码,高分求详解,先谢过 求单片机0~99共阳数码数码管显示用C语言编写的程序?谢谢! 用C语言编制一个在8个数码管上轮流显示1~8的程序(单片机8051) 镜像电荷的原理 简单的单片机LED数码管C语言程序,求指导 镜像电荷的介绍 关于镜像电荷 51单片机 c语言 按键和数码管显示 引入镜像电荷后,必须把有界空间变为无界空间对吗? 51单片机用c语言编写一个程序,数码管显示从10到30,再从30到10。 镜像电荷电荷量是否等于导体上感应出的电荷量,为什么? 51单片机数码管,下面是数码管原理图,求简单的C语言程序点亮数码管 镜像法的依据是什么?镜像电荷位于什么区域中 怎么画出镜像电荷的位置 高中物理镜像电荷的问题 物理电学中电像法电像法的原理是什么 求镜像电荷及导体平面上方的电位函数 如何求镜像电荷个数 镜像电荷位于什么区域中