单片机数码管显示(两位学号)程序
时间: 2023-06-26 14:05:01 浏览: 421
以下是一段8051单片机数码管显示两位学号的程序。假设使用的是共阳数码管,且连接在P2口。
```
#include <reg52.h>
unsigned char code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 数码管显示表,0-9的编码
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 125; j++);
}
void main()
{
unsigned char shi, ge, i;
unsigned int num = 2018; // 学号
while (1)
{
shi = num / 10 % 10; // 十位
ge = num % 10; // 个位
for (i = 0; i < 50; i++) // 显示时间,50ms
{
P2 = 0xfe; // 第一位数码管,低电平有效
P0 = table[shi];
delay(1);
P2 = 0xfd; // 第二位数码管,低电平有效
P0 = table[ge];
delay(1);
}
}
}
```
程序中使用了一个显示表,将0-9的编码存储在其中,方便后面调用。主函数中先计算出学号的十位和个位,然后循环显示。每次循环先通过P2口控制哪个数码管显示,再通过P0口发送对应的编码,最后延时50ms,达到稳定显示的效果。
阅读全文