单片机C51编程(C语言):用数码管实现学号的显示,直接显示。学号从704193101到704193146。

来源:百度知道 编辑:UC知道 时间:2024/05/23 02:24:56

自己做吧,数码管逐个扫描,应该不难,这算是比较基本的,难道不会?

首先想问:要用到9个数目管吗?我觉得用后几位数字意思一下就可以了,毕竟写出来就证明你会了。
这里就用后8个数字吧,刚好使用一个I/O口
假设数目管共阴,用P0口控制7个段,用P1口控制8个位。
//这里我只给出重点,简单的初始化操作你自己也可以写
unsigned char led7_seg[10] = {写入0到9对应7段码值};
unsigned char led_dis[8] = {0,4,1,9,3,1};
unsigned char led_end=1,position,time;
void led_display();
void main()
{
P0和P1口都初始化为输出;
PORT0 = 0x0;
PORT1 = 0xff;
while(1)
{
if(time >= 40)
{
time = 0;
led_end++;
if(led_end == 47)
{
led_end = 1;
}
}
if(position == 8)
{
time++;
position = 0;
}
led_dis[7] = led_end % 10;
led_dis[6] = led_end / 10;
led_display();
delay_ms(3);//这里用的是延时,如果你要精度更高一些可以用定时中断

}
}
void led_display()
{
PORT0 = 0;
PORT1 = 0xff;
PORT0 = led7_seg[led_dis[7-position]];
PORT1 = ~(1<<position);
position++;
}<