用Keil 软件编写程序,使3 个数码管静态显示,采用软件译码,循环显示“123- 456-789-ABC-DEF”
时间: 2023-08-21 17:04:15 浏览: 125
下面是基于Keil软件的8051单片机代码,实现3个数码管静态显示“123- 456-789-ABC-DEF”:
```
#include<reg52.h> //头文件
#define uint unsigned int //定义无符号整型
#define uchar unsigned char //定义无符号字符型
sbit DULA = P2^6; //段选锁存器控制端口
sbit WELA = P2^7; //位选锁存器控制端口
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80}; //数字0~F的编码表
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar i,j,k;
while(1)
{
for(i=1;i<=3;i++) //逐个显示
{
DULA = 1; //段选锁存器输出高电平
P0 = 0xff; //清空P0口
DULA = 0; //段选锁存器输出低电平,锁存
P0 = table[i]; //将编码表中第i个数码的编码送入P0口
DULA = 1; //段选锁存器输出高电平,显示第i个数码
delay(5); //延时5ms
}
for(j=4;j<=6;j++)
{
WELA = 1; //位选锁存器输出高电平
P0 = 0xff; //清空P0口
WELA = 0; //位选锁存器输出低电平,锁存
P0 = table[j]; //将编码表中第j个数码的编码送入P0口
WELA = 1; //位选锁存器输出高电平,显示第j个数码
delay(5); //延时5ms
}
for(k=7;k<=9;k++)
{
DULA = 1; //段选锁存器输出高电平
P0 = 0xff; //清空P0口
DULA = 0; //段选锁存器输出低电平,锁存
P0 = table[k]; //将编码表中第k个数码的编码送入P0口
DULA = 1; //段选锁存器输出高电平,显示第k个数码
delay(5); //延时5ms
}
for(i=10;i<=12;i++)
{
WELA = 1; //位选锁存器输出高电平
P0 = 0xff; //清空P0口
WELA = 0; //位选锁存器输出低电平,锁存
P0 = table[i]; //将编码表中第i个数码的编码送入P0口
WELA = 1; //位选锁存器输出高电平,显示第i个数码
delay(5); //延时5ms
}
}
}
```
注:代码中的数字0~F编码表可能需要根据不同的数码管型号进行修改。
阅读全文