八路抢答器论文(5)

2019-05-17 18:27

参考文献

[1] 彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009年 [2] 吴运昌.模拟电子线路基础.广州:华南理工大学出版社,2004年 [3] 阎石.数字电子技术基础.北京:高等教育出版社,1997年 [4] 张晓丽等.数据结构与算法.北京:机械工业出版社,2002年 [5] 马忠梅等. ARM&Linux嵌入式系统教程.北京:北京航空航天大学出版社,2004年

[6] 李建忠.单片机原理及应用.西安:西安电子科技大学,2002年 [7] 韩志军等.单片机应用系统设计[M].机械工业出版社,2004

[8] 周润景等. Proteus在MCS-51&ARM7系统中的应用百例[M].电子工业出版社,2006

[9] 马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2006

[10] 刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,2007

21

系统整体原理图

附录

1

系统PCB设计图 3440393837363555121110484039383749543635343332103111305312295013281427152616251724182352192251202142434445464741 系统源程序 //**************************************************** //抢答器设计

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

//使用说明:本程序为8位抢答器的设计程序具体要求如下: // 要求有违例抢答的判别,即在主持人未发出可 // 以抢答的指令前进行抢答的,要能给出违例抢 // 答的声音提示;当参赛者成功抢答之后,能用 // 五寸以上的数码管显示抢答成功的组别,并给 // 出抢答成功的提示音;主持人发出可以开始抢 // 答指令30秒以后,如果无人进行抢答,能发出 // 与抢答成功不同的声音进行提示,并同时用两 // 位数码管显示倒计时的情况。 #include

//**************************************************** //端口函数说明

//**************************************************** sbit seg_1 = P1^0; //显示选手的数码管

1

sbit seg_2 = P1^3; //显示倒计时的时位 sbit seg_3 = P1^2

; //显示倒计时的个位

sbit key_9 = P1^7; //主持人的按键 sbit beep = P1^4; //蜂鸣器 #define dat P0

#define OPEN 0 //对于共阴和共阳的数码管,他们需要51提供不同的电平来选通,现在是高电平选通

#define OFF 1 //低电平关闭。

#define Key_port P2 //八个选手的案件 P1.0~7分别对应选手1~8

unsigned int T0count=0; //计数器计数 unsigned char Time_Left = 30; //倒计时时间 bit flag1 = 0; //当主持人按下按键时,标志位置1 bit flag2 = 0; //当有选手按下按键时,标志位置1

const unsigned char code seg_dat[]={//实测的数码管的显示,对应数字0~f 0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff };

unsigned char key_scan(void); //键盘扫描函数,返回值为按下的键的序号

void buzzer(unsigned char t); //蜂鸣器发声函数

void dis_1(unsigned char num1); //1个数码管的显示函数 显示的是哪一位选手按下了

void dis_2(unsigned char num2); //2个数码管的显示函数 显示的是倒计时时间

void delayms(unsigned int i); //延时大约ims void delayus(unsigned int i); //延时大约ius

//**************************************************** //子函数

//**************************************************** unsigned char key_scan(void) //键盘扫描函数 ,返回值为按下的键的序号 {

unsigned char get_port = 0; //每次都清0 Key_port = 0xff; //每次扫描前,先将接键盘的引脚口拉高

1

key_9 = 1; //主持人按键,每次扫描前先拉高 get_port = Key_port; //从端口采回值 if(get_port != 0xff) //如果检测到有键按下 { delayms(10); //延时10ms,进行消抖操作。 get_port = Key_port; //再次采回端口值 if(get_port != 0xff) { get_port = Key_port; switch (Key_port) //标志位置位 并返回相应的值 { case 0xfe:flag2 = 1;return 1; case 0xfd:flag2 = 1;return 2; case 0xfb:flag2 = 1;return 3; case 0xf7:flag2 = 1;return 4; case 0xef:flag2 = 1;return 5; case 0xdf:flag2 = 1;return 6; case 0xbf:flag2 = 1;return 7; case 0x7f:flag2 = 1;return 8; } while(!Key_port); //松手检测 } }

if(key_9 == 0) //如果主持人按下按键 { delayms(10); //延时10ms if(key_9 == 0) //再次判断是否确实按下按键,进行消抖操作。 { flag1 = 1; //标志位置1 return 9; //返回值为9 } while(!key_9); //松手检测 }

return 0; }

1


八路抢答器论文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:水污染事件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: