#include <reg51.h> // 引入51单片机头文件// 定义数码管段选引脚sbit S1 = P2^0;sbit S2 = P2^1;sbit S3 = P2^2;sbit S4 = P2^3;void delay() // 延时函数{ int i, j; for (i = 0; i < 100; i++) { for (j = 0; j < 1000; j++); }}void main(){ while (1) { S1 = 1; // 点亮数码管第一位 S2 = 0; S3 = 0; S4 = 0; delay(); // 延时一段时间 S1 = 0; // 点亮数码管第二位 S2 = 1; S3 = 0; S4 = 0; delay(); S1 = 0; // 点亮数码管第三位 S2 = 0; S3 = 1; S4 = 0; delay(); S1 = 0; // 点亮数码管第四位 S2 = 0; S3 = 0; S4 = 1; delay(); }}让这个单片机显示出数字
时间: 2024-01-07 20:05:31 浏览: 87
这份代码只是控制了数码管的位选,没有控制数码管的显示内容。你需要在每个位选时间段内,给对应的数码管段选引脚(P0口)赋值,以显示相应数字。可以参考下面的代码:
```
#include <reg51.h>
sbit S1 = P2^0;
sbit S2 = P2^1;
sbit S3 = P2^2;
sbit S4 = P2^3;
void delay() {
int i, j;
for (i = 0; i < 100; i++) {
for (j = 0; j < 1000; j++);
}
}
void display(int num) {
switch(num) {
case 0: P0 = 0x3f; break; // 显示0
case 1: P0 = 0x06; break; // 显示1
case 2: P0 = 0x5b; break; // 显示2
case 3: P0 = 0x4f; break; // 显示3
case 4: P0 = 0x66; break; // 显示4
case 5: P0 = 0x6d; break; // 显示5
case 6: P0 = 0x7d; break; // 显示6
case 7: P0 = 0x07; break; // 显示7
case 8: P0 = 0x7f; break; // 显示8
case 9: P0 = 0x6f; break; // 显示9
default: break;
}
}
void main() {
int num = 0;
while (1) {
S1 = 1;
S2 = 0;
S3 = 0;
S4 = 0;
display(num % 10); // 显示个位
delay();
S1 = 0;
S2 = 1;
S3 = 0;
S4 = 0;
display(num / 10 % 10); // 显示十位
delay();
S1 = 0;
S2 = 0;
S3 = 1;
S4 = 0;
display(num / 100 % 10); // 显示百位
delay();
S1 = 0;
S2 = 0;
S3 = 0;
S4 = 1;
display(num / 1000 % 10); // 显示千位
delay();
num++; // 数字加一
if (num >= 10000) num = 0; // 循环计数
}
}
```
这份代码可以循环显示从0到9999的数字。你可以根据自己的需求进行修改。
阅读全文