标题:
求大佬,把这个单片机程序添上注释,实在看不懂,想学习
[打印本页]
作者:
孤独人话
时间:
2021-4-18 20:10
标题:
求大佬,把这个单片机程序添上注释,实在看不懂,想学习
* 标题: 三路抢答器 *
*
* *
* 实验说明:在10s的时间内,三位选手进行按键抢答,如果1号抢答,那么数码管将显示*
1号选手的号码。并且蜂鸣器响,以此类推。如果10s时间到,蜂鸣器响,选手
无法进行抢答 *
#include <reg52.h>
//IO口定义
#define GPIO_DIG P0
#define GPIO_SHOW P2
sbit LSA=P3^0;
sbit beep=P1^5;
sbit K1=P3^1;
sbit K2=P1^0;
sbit K3=P1^1;
sbit K4=P1^2;
//--定义全局变量--//
typedef unsigned int u16;
unsigned char code DIG_CODE[18]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned int Ge=0;
unsigned int Shi=1;
unsigned int num=0;
unsigned int Res=10;
unsigned int flag=0;
//全局函数
void DigDisplay();
void delay(u16 i)
{
while(i--);
}
void main()
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0x0B0;
EA = 1;
ET0 = 1;
TR0 = 1;
DigDisplay();
}
void DigDisplay()
{
unsigned char i;
unsigned int j;
while(1)
{
for(i=0;i<2;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;
GPIO_DIG=DIG_CODE[Shi];//发送段码
break;//显示第0位
case(1):
LSA=1;
GPIO_DIG=DIG_CODE[Ge];//发送段码
break;//显示第1位
}
/****************************************************************************/
/*消隐函数要在数码管更新频率很快的条件下,才起作用,手动更换数码管位选完全达不到这么快的速度,因此在这种情况下也是没必要用消隐的 */
j=10; //扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐
}
if(K1==0)
{
Res=10;
flag=0;
}
else if(K2==0)
{
GPIO_SHOW=~DIG_CODE[1];
while(1)
{
beep=~beep;
delay(10);
if(K1==0)
{
Res=10;
flag=0;
GPIO_SHOW=~DIG_CODE[17];
break;
}
}
}
else if(K3==0)
{
GPIO_SHOW=~DIG_CODE[2];
while(1)
{
beep=~beep;
delay(10);
if(K1==0)
{
Res=10;
flag=0;
GPIO_SHOW=~DIG_CODE[17];
break;
}
}
}
else if(K4==0)
{
GPIO_SHOW=~DIG_CODE[3];
while(1)
{
beep=~beep;
delay(10);
if(K1==0)
{
Res=10;
flag=0;
GPIO_SHOW=~DIG_CODE[17];
break;
}
}
}
}
}
void Int1() interrupt 1
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0x0B0;
num++;
if(num==20)
{
num=0;
flag++;
Res--;
Ge=Res%10;
Shi=Res/10;
}
if(flag==10)
{
while(1)
{
beep=~beep;
delay(10);
if(K1==0)
{
Res=10;
flag=0;
break;
}
}
}
}
复制代码
作者:
man1234567
时间:
2021-4-20 10:42
按照VIP的路径会很快有答案的
作者:
birdzhyli
时间:
2021-4-20 12:28
看了显示2个数据管还用个for 循环,程序结构不怎么样。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1