《单片机应用》_拓展项目:8路抢答器控制系统设计C语言).docxVIP

  • 0
  • 0
  • 约1.38千字
  • 约 2页
  • 2026-01-22 发布于广东
  • 举报

《单片机应用》_拓展项目:8路抢答器控制系统设计C语言).docx

拓展项目:8路抢答器控制系统设计

项目要求:利用C语言编写程序,控制单片机及数码管来模拟8路抢答器。数码管采用共阳极LED数码管,静态接在P1口上,8个按键接在P0口上分别代表8个参赛小组。开始抢答后,哪个小组先按下的按键,数码管就显示该组的号码,后面再按下来的就无效不显示。

#includereg51.h//包含头文件reg51.h,定义51单片机的专用寄存器

voiddelay(unsignedinti);//延时函数声明

voidmain()//主函数

{

unsignedcharbutton;//保存按键信息

unsignedcharcodedisp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xbf};

//定义数组disp,依次存储包括0~7和“”的共阳极数码管显示码

P0=0xff;//读引脚状态,需先置1

P1=disp[8];//显示“_”

while(1)

{

button=P0;//第一次读按键状态

delay(1200); //延时消抖

button=P0;//第二次读按键状态

switch(button)//根据按键的值进行多分支跳转

{

case0xfe:P1=disp[0];delay(10000);while(1);break;//0按下,显示0,待机

case0xfd:P1=disp[1];delay(10000);while(1);break;//1按下,显示1,待机

case0xfb:P1=disp[2];delay(10000);while(1);break;//2按下,显示2,待机

case0xf7:P1=disp[3];delay(10000);while(1);break;//3按下,显示3,待机

case0xef:P1=disp[4];delay(10000);while(1);break;//4按下,显示4,待机

case0xdf:P1=disp[5];delay(10000);while(1);break;//5按下,显示5,待机

case0xbf:P1=disp[6];delay(10000);while(1);break;//6按下,显示6,待机

case0x7f:P1=disp[7];delay(10000);while(1);break;//7按下,显示7,待机

default:break;

} }

}

//函数名:delay

//函数功能:实现软件延时

//形式参数:无符号整型变量i,控制空循环的循环次数

//返回值:无

voiddelay(unsignedinti) //延时函数

{

unsignedintk;

for(k=0;ki;k++);

}

文档评论(0)

1亿VIP精品文档

相关文档