求3位LED显示的,0.0到59.9的单片机设计

2025-02-02 21:42:23
推荐回答(3个)
回答1:

//电路如下图

 #include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

code unsigned char tab[]=

                  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 

             //共阴数码管 0-9

sbit  A1=P2^0;

sbit  A2=P2^1;

sbit  A3=P2^2;

unsigned char Gewei,Baiwei,Shiwei;

static unsigned char second=0,count=0,i;

/******************************************************************/ 

/*                    延时函数                                    */

/******************************************************************/

void delay(unsigned int cnt)

 while(--cnt);

}

void xianshi(void)

{

Baiwei=~tab[second/10];

Shiwei=~(tab[second%10]|0x80);

Gewei=~tab[count/10];

}

/******************************************************************/

/*                    主函数                                      */

/******************************************************************/

  main()

{   

TMOD |=0x01;//定时器设置 10ms in 12M crystal,工作在模式1,16位定时 

TH0=0xd8;

TL0=0xf0;

IE= 0x82;  //打开中断

TR0=1;     //打开定时开关

 xianshi();

}

/******************************************************************/ 

/*                    定时器中断函数                              */ 

/******************************************************************/ 

void tim(void) interrupt 1 using 1 

{           

TH0=0xd8;             //重新赋值 

TL0=0xf0;

{

if(!A1)

delay(10000); //消抖

if(!A1)

i=1;

}

}

{      

if(!A2)

delay(10000);//消抖

{

if(!A2)

i=0;

}

}

{

if(i==1) 

count++;

 }

if(count==100)      //100x10ms=1S,大致延时时间 

{

count=0;

second++;

if(second==60) 

second=0;

}       

 xianshi();

  

 {

  

  P1=0x02;  //片选2

  P0=Baiwei;

  delay(300);

  P1=0x04;  //片选3

  P0=Shiwei;

  delay(300);

  P1=0x08; //片选4

  P0=Gewei;

  delay(300);

  P1=0x00;  //清屏

  P0=0x00;

  delay(300);

   }

 if(!A3)

 {

  second=0;

  count=0;

 }

}

回答2:

你老师认为“太贵了”是什么样子的?
你不公布出来,谁知道什么样是“便宜的”?

回答3:

试试,说说要求.邮箱