电工电子技术实训”项目之一为“简易计算器”。其中的数字显示模块要求使用8个共阴极数码管作为计算结果显示,并将任意3位数显示在数码管上。试使用C51编写程序实现上述功能。
时间: 2024-03-14 22:43:21 浏览: 13
好的,这是一个关于数字显示的C51程序示例:
```c
#include <reg52.h> // 引入STC单片机头文件
#define uchar unsigned char // 定义unsigned char类型的宏uchar
#define uint unsigned int // 定义unsigned int类型的宏uint
// 数码管共阴极连接方式,定义各位数码管对应的端口
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
void delay(uint i) // 延时函数
{
uint j;
while(i--)
{
for(j = 0; j < 125; j++);
}
}
void main()
{
uint i = 0;
while(1)
{
wela = 0; // 打开位选锁存器
P0 = 0x01; // 选中第一位数码管
wela = 1; // 关闭位选锁存器
dula = 0; // 打开段选锁存器
P0 = table[i / 100]; // 显示百位
dula = 1; // 关闭段选锁存器
delay(1); // 延时1ms
wela = 0; // 打开位选锁存器
P0 = 0x02; // 选中第二位数码管
wela = 1; // 关闭位选锁存器
dula = 0; // 打开段选锁存器
P0 = table[i / 10 % 10]; // 显示十位
dula = 1; // 关闭段选锁存器
delay(1); // 延时1ms
wela = 0; // 打开位选锁存器
P0 = 0x04; // 选中第三位数码管
wela = 1; // 关闭位选锁存器
dula = 0; // 打开段选锁存器
P0 = table[i % 10]; // 显示个位
dula = 1; // 关闭段选锁存器
delay(1); // 延时1ms
i++; // 计数器加1
if(i > 999) // 计数器循环计数
{
i = 0;
}
}
}
```
这个程序可以让三个数码管显示从0到999的数字。你可以根据需求修改程序中的数字显示内容。