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

51单片机显示八位数码管的C语言程序

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

我来回答

4个回答

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

1、最开始,我们先打开keil。

2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。

3、接着,我们加上一条循环语句。

4、最后,我们把先前定义的延时语句delayms写好。

5、最后,点击这里进行编译,生成一个hex文件。

6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以点亮动态数码管了。

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

这是按照郭天祥的实验板的电路画的仿真图吧,数码管的段码和位码用两片74HC573锁存这种电路,在实物电路板上是可以显示出来的,但是用proteus仿真,就不行了,不论程序怎么写,显示出来都是缺位的。在电路板上完全通过的程序,到proteus仿真就不对了。如果有实验板还是在实验板上做吧。如果非要用proteus仿真,那就不能用573锁存了,直接用P2口输出段码,用P0输出位,0有效,正好驱动8位共阴数码管。
下面是针对这个仿真图的程序,你试一下就知道显示缺位。但这个程序在实验板上是完全通过的。
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
uchar num[]={1,2,3,4,5,6,7,8};
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms();
void display();
void main()
{
while(1)
{
display();
}
}
void delayms()
{
uchar i,j;
for(i=150;i>0;i--)
for(j=150;j>0;j--);
}
void display()
{
uchar i,wei=0xfe;
for(i=0;i<8;i++)
{
wela=1;
P0=wei;
wela=0;
la=1;
P0=table[num[i]];
la=0;
wei=_crol_(wei,1);
delayms();
}
}

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

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^7;
sbit wela=P2^6;
uchar num[] = {1, 2, 3, 4, 5, 6, 7, 8};
uchar code table[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delayms()
{
uchar i, j;
for(i = 150; i > 0; i--) for(j = 150; j > 0; j--);
}
void display()
{
uchar i, wei = 1;
for(i = 0; i < 8; i++) {
P0 = ~table[num[i]]; la = 1; la = 0;
P0 = wei; wela = 1; wela = 0;
wei *= 2; delayms();
P0 = 0; wela = 1; wela = 0;
}
}

void main()
{
while(1) {
display();
}
}

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

#include<reg51.h>
unsigned char ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
unsigned char sec,min,hour,dat,scanled;
unsigned char key,time;
unsigned char disdat[8];
void dischg()
{
disdat[0]=sec/10;
disdat[1]=sec%10;
disdat[2]=min/10;
disdat[3]=min%10;
disdat[4]=hour/10;
disdat[5]=hour%10;
disdat[6]=dat/10;
disdat[7]=dat%10;
}
void t0isr() interrupt 1 //秒计时
{
TR0=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
time++;
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
hour++;
if(hour>23)
{
hour=0;
dat++;
if(dat>30)dat=0;
}
}
}
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TR1=0;
TH1=0xec;
TL1=0x78;
TR1=1;
switch(scanled)
{
case 0:
P2=0x01;
P0=ledtab[disdat[0]];
break;
case 1:
P2=0x02;
P0=ledtab[disdat[1]];
break;
case 2:
P2=0x04;
P0=ledtab[disdat[2]];
break;
case 3:
P2=0x08;
P0=ledtab[disdat[3]];
break;
case 4:
P2=0x10;
P0=ledtab[disdat[4]];
break;
case 5:
P2=0x20;
P0=ledtab[disdat[5]];
break;
case 6:
P2=0x40;
P0=ledtab[disdat[6]];
break;
case 7:
P2=0x80;
P0=ledtab[disdat[7]];
break;
default:break;
}
scanled++;
scanled%=8;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
EA=1;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
sec=0;
min=0;
hour=0;
dat=0;
scanled=0;
time=0;
while(1);
}

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

1、最开始,我们先打开keil。

2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。

3、接着,我们加上一条循环语句。

4、最后,我们把先前定义的延时语句delayms写好。

5、最后,点击这里进行编译,生成一个hex文件。

6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以点亮动态数码管了。

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

这是按照郭天祥的实验板的电路画的仿真图吧,数码管的段码和位码用两片74HC573锁存这种电路,在实物电路板上是可以显示出来的,但是用proteus仿真,就不行了,不论程序怎么写,显示出来都是缺位的。在电路板上完全通过的程序,到proteus仿真就不对了。如果有实验板还是在实验板上做吧。如果非要用proteus仿真,那就不能用573锁存了,直接用P2口输出段码,用P0输出位,0有效,正好驱动8位共阴数码管。
下面是针对这个仿真图的程序,你试一下就知道显示缺位。但这个程序在实验板上是完全通过的。
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
uchar num[]={1,2,3,4,5,6,7,8};
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms();
void display();
void main()
{
while(1)
{
display();
}
}
void delayms()
{
uchar i,j;
for(i=150;i>0;i--)
for(j=150;j>0;j--);
}
void display()
{
uchar i,wei=0xfe;
for(i=0;i<8;i++)
{
wela=1;
P0=wei;
wela=0;
la=1;
P0=table[num[i]];
la=0;
wei=_crol_(wei,1);
delayms();
}
}

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

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^7;
sbit wela=P2^6;
uchar num[] = {1, 2, 3, 4, 5, 6, 7, 8};
uchar code table[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delayms()
{
uchar i, j;
for(i = 150; i > 0; i--) for(j = 150; j > 0; j--);
}
void display()
{
uchar i, wei = 1;
for(i = 0; i < 8; i++) {
P0 = ~table[num[i]]; la = 1; la = 0;
P0 = wei; wela = 1; wela = 0;
wei *= 2; delayms();
P0 = 0; wela = 1; wela = 0;
}
}

void main()
{
while(1) {
display();
}
}

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

#include<reg51.h>
unsigned char ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
unsigned char sec,min,hour,dat,scanled;
unsigned char key,time;
unsigned char disdat[8];
void dischg()
{
disdat[0]=sec/10;
disdat[1]=sec%10;
disdat[2]=min/10;
disdat[3]=min%10;
disdat[4]=hour/10;
disdat[5]=hour%10;
disdat[6]=dat/10;
disdat[7]=dat%10;
}
void t0isr() interrupt 1 //秒计时
{
TR0=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
time++;
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
hour++;
if(hour>23)
{
hour=0;
dat++;
if(dat>30)dat=0;
}
}
}
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TR1=0;
TH1=0xec;
TL1=0x78;
TR1=1;
switch(scanled)
{
case 0:
P2=0x01;
P0=ledtab[disdat[0]];
break;
case 1:
P2=0x02;
P0=ledtab[disdat[1]];
break;
case 2:
P2=0x04;
P0=ledtab[disdat[2]];
break;
case 3:
P2=0x08;
P0=ledtab[disdat[3]];
break;
case 4:
P2=0x10;
P0=ledtab[disdat[4]];
break;
case 5:
P2=0x20;
P0=ledtab[disdat[5]];
break;
case 6:
P2=0x40;
P0=ledtab[disdat[6]];
break;
case 7:
P2=0x80;
P0=ledtab[disdat[7]];
break;
default:break;
}
scanled++;
scanled%=8;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
EA=1;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
sec=0;
min=0;
hour=0;
dat=0;
scanled=0;
time=0;
while(1);
}
51单片机显示八位数码管的C语言程序

1、最开始,我们先打开keil。2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以...

51单片机,8个数码管循环显示1-9的C语言程序。

假设8个数码管公共端均接地,同时显示1-9\x0d\x0a#include\x0d\x0a#include\x0d\x0a#defineucharunsignedchar\x0d\x0a#defineuintunsignedint\x0d\x0aucharcodeDSY_CODE[]=\x0d\x0a{\x0d\x0a0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff\x0d\x0a}...

51单片机0999循环显示(数码管)

includereg51.h includeINTRINS.h defineu16unsignedint defineu8unsignedchar u8ds[4];//数码管显示缓存 codeu8w[]={0x01,0x02,0x04,0x08,};//位码 codeu8d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//断码 voiddispaly(){//显示函数 staticu8a;a++;if(a3)a...

51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的...

sbit k_add = P3^1;sbit k_sub = P3^4;unsigned char code SEG7[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};unsigned char DISP_BUFF[] = { 10, 10, 10, 10, 10, 10, 10, 10,1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,10, 10,...

基于51单片机利用八个数码管花样显示如下

C语言)或者表里(汇编语言查表法),在P0口和P2口接上8个7段数码管,P2口做位选,P0口做段选,每次从表中查询你要显示的数据的编码写到P0口,再把你要在哪一个数码管上显示写到P2口(比如位选为低电平有效,向P2口写入0xFE就能显示在P2.0对应的数码管上)。

51单片机驱动八位数码管电子钟

P2=0X00; //八个数码管显示全为0 TR0=0;TR1=0;while(1){ gongzuo();} } void delay(uint z)//延时程序 { uint i,j;for (i=z;i&gt;0;i--)for (j=110;j&gt;0;j--);} void display1() //P2为位选,P0为段选,显示格式为 23小时59分59.99秒 { uchar s,g;s=shi/10;g=...

请问谁能给我一个c52单片机控制8位共阴数码管显示,ds18b20的测温程序...

Init_DS18B20(void); //初始化函数 ReadOneChar(void); //读一个字节 WriteOneChar(unsigned char dat); //写一个字节 ReadTemperature(void); //读取温度 void display(unsigned char i); //温度显示函数 unsigned char c=0,x=0;void main(void){ unsigned char temp;while(1)...

51单片机如何控制八个数码管,进行动态扫描

动态扫描就是给各个数码管依次显示,任意时间只有一个数码管亮,但闪烁的太快了,人眼分辨不出,给人的感觉就是每个数码管都在亮。一般过程就是赋值,开显示,延时,关显示,这是我以前写过的程序 include &lt;REGX52.H&gt; main(){unsigned int i;while(1){P0=0x3f;//个位赋值 P1_0=0;//开显示 ...

51单片机,4*4矩阵键盘,八位数码管

51单片机,4*4矩阵键盘,八位数码管,仿真实例可以参考一下。include&lt;reg51.h&gt; define uchar unsigned char uchar temp;int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x...

51单片机数码管显示的程序是什么?

#include //52系列单片机头文件\x0d\x0a#define uchar unsigned char //宏定义\x0d\x0a#define uint unsigned int\x0d\x0asbit dula=P2^6; //申明u1锁存器的锁存端\x0d\x0asbit wela=P2^7; // u2\x0d\x0auchar num1,num2;\x0d\x0auchar code table...

51单片机数码管静态显示程序 51单片机8位数码管时钟程序 51单片机2位数码管显示 c51单片机数码管显示 在单片机8个数码管显示数字 51单片机数码管动态显示 单片机数码管显示0到9 单片机点亮数码管程序 单片机数码管显示原理
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
近代史鸦片战争 《坎巴拉太空计划》教程高级建造尾翼:学习高级建造技巧:坎巴拉太空计... 苏州会计从业资格证2011年培训,规模,师资最强当属新科。培训科目初级... 颁结婚证纪念册多少钱 禹州市去那里办理准生证? 2020年禹州市办理离婚手续流程,需要预约吗? 常熟2011会计从业资格考试成绩已经出来,为什么苏州市区的还没有出来... 下列说法正确的是( )A.卢瑟福a粒子散射实验中,产生大角度散射的主要原因... 怎样跟女领导搞好关系? 试解释一个中性原子吸收一个电子通常要放出能量的现象. 运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序 单片机数码管显示0到999c语言程序怎么编 51单片机c语言版,编写程序:单片机控制八位LED数码管显示20220204间隔两秒后显示2022_百度问一问 单片机8位数码管依次显示0到7,要求用c语言实现 融创望江府附近的公交站 佛山季华园到融创望江府坐什么公交车? 沥滘地铁到融创望江府怎么走? 冯如小学招生地段范围 【融创望江府】小区属于哪个版块?附近连接哪些地方,有什么潜力? css里图片半透明怎么写 高一地理气候类型分布图 世界气候,气压带风带,分布图,要图(需要表识纬度) 初一地理世界的所有气候(带图) 七年级上册地理之世界主要气候类型及分布【精选】 世界气候类型的特点及图 怎么记忆地理中的世界各地气候分布和特征 初一上册地理图册《气候的分布》图 地理世界主要气候类型 怎样巧记世界气候分布及其特点 vivo手机没声音音量开满还是没有声音 请求一段单片机控制数码管的C语言编程 C语言单片机代码 数码管动态显示 80C51单片机数码管的显示 C语言 在单片机中任何用c语言程序点亮数码管 关于单片机数码管的C语言代码,高分求详解,先谢过 求单片机0~99共阳数码数码管显示用C语言编写的程序?谢谢! 用C语言编制一个在8个数码管上轮流显示1~8的程序(单片机8051) 镜像电荷的原理 简单的单片机LED数码管C语言程序,求指导 镜像电荷的介绍 关于镜像电荷 51单片机 c语言 按键和数码管显示 引入镜像电荷后,必须把有界空间变为无界空间对吗? 51单片机用c语言编写一个程序,数码管显示从10到30,再从30到10。 镜像电荷电荷量是否等于导体上感应出的电荷量,为什么? 51单片机数码管,下面是数码管原理图,求简单的C语言程序点亮数码管 镜像法的依据是什么?镜像电荷位于什么区域中 怎么画出镜像电荷的位置 高中物理镜像电荷的问题 物理电学中电像法电像法的原理是什么