AVR单片机计分器
#include<iom16v.h>
#define Speaker_0 PORTD&=~ (1<<PD3)
#define Speaker_1 PORTD|=1<<PD3

const unsigned char LED_CC[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d, 0x07, 0x7f, 0x6f};
//共阴数码管段码,本例不用

const unsigned char LED_CA[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90};
//共阳数码管段码

const unsigned char LED_bit_CA[4]={0xef, 0xdf, 0xbf, 0x7f};
//共阴 数码管位码,本例不用

const unsigned char LED_bit_CC[4]={0x1f,0x2f, 0x4f, 0x8f};
//共阳数码管位码

/声明显示、延时、蜂鸣器3个函数/
void Display (signed int num) ;
void delay (unsigned int t) ;
void Buzzer (unsigned char n) ;

/主程序/
void main (void)
{
char i;
signed int num;
char key, key_temp;
num=1000; // 初始显示1000’
DDRC=0xff;
DDRD=0xff;
DDRA=0xf0;
SFIOR&=0xfb;
PORTA|=0x07;
Speaker_1; //1wei关闭蜂鸣器,避免上电即响
while (1)
{
key=PINA&0x07;
if (key!=0x07)//键盘去抖动
{
delay (25000) ; //延时25ms
key=PINA&0x07;//读取键盘保存在key
delay (25000) ;//延时25ms
while (key_temp !=0x07) //判断键盘有无抬起
key_temp=PINA&0x07; //若无,则继续读取,并存于key_ temp
}
if (key0x06)
{
Buzzer(60) ;
num+=10;
if (num>9900) num=0;
}
else if (key
0x05)
{
Buzzer (60) ;
num-=10;
if (num<0) num=9900;
}
else if (key==0x03)
{Buzzer (80) ;
num=0;
}
Display (num); //传入num,调用显示函数显示num
}
}

/延时函数定义/
void delay (unsigned int t) // 延时时间T=7*tus
{
t=t/7-1;//t=t/7-1, T用t迭代
while (t!=0)t–;
}

/显示函数定义/
void Display (signed int num)
{
unsigned char Temp3, Temp2, Temp1, Temp0;
/BCD码转换/
Temp3=num/1000; //取出千位0~9
Temp2=num%1000/100;//取出百位0~9
Temp1=num%1000%100/10; //取出十位0~9
Temp0=num%1000%100%10; //取出个位0~9
/显示千位/
PORTC=LED_CA[Temp3] ;//送段码
PORTD=LED_bit_CA[3] ;//送位码
delay(1000) ;//延时1约ms ( fosc=1Mhz)
PORTD=0xff;//关闭所有显示
/显示百位/
PORTC=LED_CA [Temp2] ;
PORTD=LED_bit_CA[2] ;
delay (1000) ;
PORTD=0xff;
/显示十位/
PORTC=LED_CA [Temp1] ;
PORTD=LED_bit_CA[1] ;;
delay (1000) ;
PORTD=0xff;
/显示个位/
PORTC=LED_CA [Temp0] ;
PORTD=LED_bit_CA[0] ;
delay(1000);
PORTD=0xff;
}

/蜂鸣 器函数定义/
void Buzzer (unsigned char n)
{
unsigned char Temp;
for (Temp=n;n>0;n–) //控制蜂鸣器声音长短
{
Speaker_0;//蜂鸣器输出0’
delay(1176); // 延时1.25ms ( 约850Hz )
Speaker_1; //蜂鸣器输出’1 "
delay(1176) ; //延时1.25ms ( 约850HZ )
}
}

关注微信公众号“伊斯电子编程”获取更多惊喜

相关文章:

  • 2022-12-23
  • 2022-01-20
  • 2021-06-25
  • 2021-06-27
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-09
  • 2021-05-13
  • 2021-10-22
  • 2022-12-23
  • 2022-12-23
  • 2021-05-18
相关资源
相似解决方案