⑴ 用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();
}
}
(1)单片机数码管的代码扩展阅读:
51单片机的接口作用
P0口:可以被定义为桐坦数据/地址的低八位,能够用于外部程序/数据存储器。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:标准输入输出I/O,P1口管脚写入1后,被内部上拉为高,可用作输入。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:既困枣可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。
P3口:既可以做标准输入输出I/O,也可作为AT89C51的一些特殊功能口。
⑵ 单片机控制74LS164控制数码管显示怎么编程(汇编语言)
74LS164是串入并出转换芯片,可以借助串口来实现,也可以用普通IO口模拟实现。举例如下:
#include<reg51.h>
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit keyup=P3^6;
sbit keydn=P3^7;
void delay()
{
int i=1000;
while(i--);
}
main()
{
uchar i;
i=0;
SCON=0x00;
TI=1;
while(1)
{
SBUF=table[i];
while(TI==0);
TI=0;
delay();
if(keyup==0)
{
i++;
while(keyup==0);
}
if(keydn==0)
{
if(i>0)i--;
while(keydn==0);
}
i%=10;
}
}
⑶ 如何利用单片机让4位数码管显示
程序如下(用的是STC89C52芯片):
#include<reg52.h>//52系列单片机头文件
#defineucharunsignedchar
#defineuintunsignedint
uintx,y;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共阴极数码管编码
voiddisplay(uchar,uchar,uchar,uchar);//声明子函数
voiddelay(int);//声明子函数
voidmain()
{
while(1)
{
display(1,2,3,4);//主程序始终调用数码管显示子程序
}
}
voiddisplay(uchara,ucharb,ucharc,uchard)
{
P2=0xef;
P0=table[a];//给第一个数码管送"a"
delay(1);//延时1ms
P2=0xdf;
P0=table[b];//给第二个数码管送"b"
delay(1);//延时1ms
P2=0xbf;
P0=table[c];//给第三个数码管送"c"
delay(1);//延时1ms
P2=0x7f;
P0=table[d];//给第三个数码管送"d"
delay(1);//延时1ms
}
voiddelay(uintz)//延时子函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(3)单片机数码管的代码扩展阅读
led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。