用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次出现几个字母 用89c51单片机做一个八段共阳数码管上显示 HELLO!的...

作者&投稿:武柿 (若有异议请与网页底部的电邮联系)

在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去

代码如下:

#include; //用的是单独操作,没有用总线

sbit led1 = P1^0;

sbit led2 = P1^1;

sbit led3 = P1^2;

sbit led4 = P1^3;

sbit led5 = P1^4;

sbit led6 = P1^5;

sbit led7 = P1^6; //看清楚自己的管脚,不一定对应,这里采用P0对应段选

code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};// H E L L O

void delay(unsigned int um)//延时函数

{

int i,j;

for(i = 0;i < um;i++)

{

for(j = 0;j < 200;j++);

}

}

void display()

{

P0 = led_paly[0];//显示H

led2 = 0;

delay(50);

led2 = 1;

P0 = led_paly[1];//显示E

led3 = 0;

delay(50);

led3 = 1;

P0 = led_paly[2];//显示L

led4 = 0;

delay(50);

led4 = 1;

P0 = led_paly[3];//显示E

led5 = 0;

delay(50);

led5 = 1;

P0 = led_paly[4];//显示O

led6 = 0;

delay(50);

led6 = 1;

}

void main(void)

{

while(1)

{

display();

}

}

扩展资料:

51单片机的接口作用

P0口:可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:标准输入输出I/O,P1口管脚写入1后,被内部上拉为高,可用作输入。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:既可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。

P3口:既可以做标准输入输出I/O,也可作为AT89C51的一些特殊功能口。



将HELLO编码做成表,依次出现的话,用一个变量,查表里的第一个值也就是“H”送到数码管段选显示并用一个变量记录显示位置,假如在第一个数码管上显示,这个变量为0,然后500ms后前面查表用的变量加1,查第二个 也就是E 显示在第二个数码管上,然后依次类推

大概理解你的意思,是在数码管一次排列好这一句话,首先第一步需要做的是数码管的取模工作。
#include<reg51.h>
//这边为了让你看的更容易,用的是单独操作,没有用总线
sbit led1 = P1^0;
sbit led2 = P1^1;

sbit led3 = P1^2;

sbit led4 = P1^3;

sbit led5 = P1^4;

sbit led6 = P1^5;

sbit led7 = P1^6;

//看清楚自己的管脚,不一定对应,这里采用P0对应段选
code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};

// H E L L O
void delay(unsigned int um)//延时函数
{
int i,j;
for(i = 0;i < um;i++)
{
for(j = 0;j < 200;j++);
}
}
void display()
{
P0 = led_paly[0];//显示H
led2 = 0;
delay(50);
led2 = 1;

P0 = led_paly[1];//显示E
led3 = 0;
delay(50);
led3 = 1;

P0 = led_paly[2];//显示L
led4 = 0;
delay(50);
led4 = 1;

P0 = led_paly[3];//显示E
led5 = 0;
delay(50);
led5 = 1;

P0 = led_paly[4];//显示O
led6 = 0;
delay(50);
led6 = 1;
}
void main(void)
{
while(1)
{
display();
}
}
未验证,应该差不多,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去,可追问

用89c51单片机 数码管显示HELLO的程序 六段数码管上~

#include
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x76,0x79,0x38,0x38,0x3f};
uchar code table_2[]={0xfe,0xfd,0xfb,0xf7,0xef};
void delay(uint t)
{
uint x,y;
for(x=0;x<t;x++)
for(y=0;y<110;y++);
}

void main()
{
while(1)
{
uchar i;
while(1)
{
for(i=0;i<5;i++)
{
wela=1;
P0=table_2[i];
wela=0;
dula=1;
P0=table[i];
dula=0;
delay(1);
}
}

}

}

用C写了个 汇编纠结!

楼上正解,HELLO的码段可以自己编写,看数码管的7段结构图,也就是看看abcdefg在数码管中哪个位置,显示出HELLO该哪些段亮灭,编码。单片机开发问题或许我这可以帮助的。

用AT89C51单片机实现四位数码管显示数据!!用c语言程序实现!!例如显示...
答:P2 = _cror_(P2,1);} } } d = 0;//显示567- for(d = 0;d<20;d++){

用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次...
答://显示Eled5 = 0;delay(50);led5 = 1;P0 = led_paly[4];//显示Oled6 = 0;delay(50);led6 = 1; }void main(void){while(1){display();}}

...99 秒的汇编程序,要求有循环和暂停,用两个独立数码管显示...
答:SETB LATCH1 CLR LATCH1 MOV P0,#11111101B ;0代表选通该位数码管 SETB LATCH2 CLR LATCH2 CALL DELAY1 RET DELAY:MOV R5,#50 ;典型延时程序 D1: MOV R6,#40 D2: MOV R7,#248 CALL SCAN DJNZ R7,DJNZ R6,D2 DJNZ R5,D1 RET DELAY1:MOV R6,#4 ;扫描延时 D3: ...

单片机89c51一个6位LED数码管显示功能 程序,希望能准确点的程序,只显...
答://此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 //此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0x...

...通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间_百度...
答:程序设计思路:1.利用单片机内部定时器作为计时器,调用timer函数;2、设计一套按键子程序;(3)设计一套数码显示管子程序。下列提供一套程序供参考。include<iom16v.h> include <macros.h> define uchar unsigned char define uint unsigned int const uchar table[10]={0x3f,0x06,0x5b,0x4f,0x...

谁能告诉我用单片机AT89C51怎么制作一个3个共阴极的数码管,让十位...
答:3个数码管咋能同时显示0~8,我就纳闷了,直接用个8位共阴数码管,就可以用动态显示,同时显示0~7或者1~8,驱动的话,位选可以用NPN三极管,,段选能直接接单片机吧 下面是显示1~8的动态显示,以前应付考试写的。段选和位选都是直接接到单片机上的,要是用硬件焊接的话,最好还是用三极管做驱动 ...

STC 89c51单片机数码管 显示
答:有图就好说了,我简单的写了一个小程序,仅供参考显示结果如图所示 include <reg51.h> define uchar unsigned char define uint unsigned int uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa0,0x83,0xc6,0xa1,0x84,0x8e};void delay(uint z){ int x...

...串口调试软件发送一个数字(0-9),在数码管上显示该数字
答:打开电源打开串口调试程序,将波特率设置为9600,无奇偶校验,晶振11.0592MHz,发送和接收使用的格式相同,如都使用字符型格式,在发送框输入字符,在接收框中同样可以看到相同字符,当然数字也是可以的,至于在数码管中显示数字,你自己加几条语句就行了 include<reg51.h> //包含头文件,一般情况不需要...

用AT89C51单片机实现四位数码管显示数据!!用c语言程序实现!!例如显
答:uchar num;uchar led[]={0,4,1,2};void t0isr() interrupt 1 { TH0=(65536-5000)/256;TL0=(65536-5000)%256;switch(num){ case 0:P2=0x01;break;case 1:P2=0x02;break;case 2:P2=0x04;break;case 3:P2=0x08;break;default:break;} P0=~tab[led[num]];num++;num&=0x03;} ...

有关单片机89c51的一段程序
答:T0D T0F:RR A DEC R2 CJNE R2,#0,T0D MOV R2,#8 T0D:MOV P0,A PUSH ACC MOV DPTR,#TABLE MOV A,R2 MOVC A,@A+DPTR MOV P1,A POP ACC RETI TABLE: ; 共阴极数码管显示代码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6fh ;56789 END ...