这个实验将实现51控制数码管的动态显示.详细介绍见附件
平台:FDR51开发板
#include<AT89X52.H>
unsigned char code table[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90}; //LED段码
unsigned char code position[]={1,2,4,8}; //LED选位码
/********************延时函数******************************
延时t毫秒
********************************************************/
void delay_ms(unsigned char t)
{
unsigned char t2=126;
while(t--)while(t2--);
}
/************** 数码管显示函数 ************************************
参数:待显示的数据
*************************************************************/
void led_display(unsigned int dat )
{
unsigned int dat1=dat%10000; //四位数码管只能显示到一千,此处用于防止溢出
P0=table[dat1/1000]|position[0];
delay_ms(2);
P0=table[(dat1%1000)/100]|position[1];
delay_ms(2);
P0=table[dat1%100/10]|position[2];
delay_ms(2);
P0=table[(dat1%10)]|position[3];
delay_ms(2);
}
/**************************************************************************
主函数
******************************************************************************/
void main()
{
unsigned char t="0",time=90;
while(1)
{
t++;
t=t%100; //l令t为0~99;
time=90;
while(time--)
led_display(t);
}
}
文章评论(0条评论)
登录后参与讨论