问答文章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单片机驱动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...

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

P0口作为数码管的位控(这里只用到了P0.0、和P0.1两根口线),P1口作为数码管的段控,P3口作为输入部分(这里用到了P3.0、P3.1、P3.2口线),控制数码管的显示情况和二极管的亮灭情况。 当交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。 当按下启动按钮K1并释放后,数码管显示将会从“60...

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

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

用80c51汇编语言编写倒计时程序倒计时时间用数码管显示开始时间为1分...

可以的,开机就将时间设成1分30秒.主要是计算好定时器的计数周期 12个时钟周期一个计数.一般都用12Mhz晶振好算一些.使用工作方式1 ,20ms一个周期,记50次就一秒

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

50RMB,帮你完成.

求助:关于80C51单片机简易计算器设计的程序,要求是汇编语言。谢谢哈

MOV 79H,A ;十位送显示缓存 MOV A,41H JZ RETURN ;结果是二位数,返回LOOP MOV 7AH,A ;百位数送显示缓存RETURN:LJMP LOOP;动态显示子程序DIR:MOV DPTR,#TAB ; 数码管译码表首址 MOV R0,#78H ;待显缓冲区个位地址 MOV A,#0FEH ; 个位位选信号 MOV R1,ALD1:MOV A,@R0 MOVC A,@A+DPTR ;查...

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;...

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

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

51单片机8位数码管显示 c51单片机数码管显示 单片机数码管显示0到9 单片机数码管显示原理 单片机控制数码管显示 单片机动态数码管显示 51单片机按键控制数码管0~9 单片机中数码管代码 51单片机驱动数码管
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网页制作中,鼠标经过使导航条颜色变了,怎么办 心律不齐注意事项 心律不齐怎么调养 青岛东泰工程检测有限公司怎么样? 青岛东泰拍卖有限公司怎么样? Excel表格中用函数随机挑选人名,回答用排序解决的的不予采纳,谢谢! 青岛有哪些大型购物超市 精子活力不足能生育吗 青岛东泰瑞祥工贸有限公司怎么样? 珠海香洲附近那里好玩?最好是购物、游览 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语言程序点亮数码管 镜像法的依据是什么?镜像电荷位于什么区域中 怎么画出镜像电荷的位置 高中物理镜像电荷的问题 物理电学中电像法电像法的原理是什么 求镜像电荷及导体平面上方的电位函数 如何求镜像电荷个数 镜像电荷位于什么区域中