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<reg52.h> 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的数据,都是读引脚,...