四路抢答器的文档文档格式.doc
- 文档编号:8433519
- 上传时间:2023-05-11
- 格式:DOC
- 页数:12
- 大小:178.50KB
四路抢答器的文档文档格式.doc
《四路抢答器的文档文档格式.doc》由会员分享,可在线阅读,更多相关《四路抢答器的文档文档格式.doc(12页珍藏版)》请在冰点文库上搜索。
2、protues仿真图
2)程序设计:
程序清单(附件一):
五、元器件清单:
元器件名称
规格
数量
AT89S52
1
底座
3
晶振
12MHZ
发光二极管
9
单排插
40脚
三极管
9012
蜂鸣器
小按键
下载口座子
十芯
18b20温度传感器
六脚开关
USB电源线加接口
电阻
200Ω
4.7KΩ
1KΩ
470Ω
24
电解电容
220uF
瓷片电容
33pF
2
排阻
10KΩ
短路帽
杜邦线8p
PCB板子
电源黄色插座
五、设计感想:
通过本次参与竞赛,我们获得不少。
首先,从知识积累和技术提高方面来讲。
无论是对硬件电路的设计、调试以及检查错误还是对电路的工作原理的都需要我们运用自己已有的知识以及自己掌握一些自己不熟悉的知识。
需要我们较强的学习能力和较强的领悟能力,和理解分析能力。
对于程序的设计方面,让我更加熟练的运用自己已学的C语言,对于自己提高C语言和更加熟练的掌握C语言有很好的巩固作用。
其次,对于仿真电路的设计以及调试工作让我更加对电路的原理以及工作方式有更明确的理解。
对使用Protues、multisim以及keil的调试,让我们更加熟悉它们的使用和调试。
更加有助于我们的学习和实践相结合。
再次,对于自己的一些综合素质提高也很有帮助。
当问题出现时,我们可能会有点不开心,但是这个时候我们需要更加坚定自己的信念和决心。
我们需要自己学会分析和解决问题,有自己的独立见解。
同时,我们学会更加懂得分析的重要性。
七、参考文献:
[1]康华光.电子技术基础数字部分.北京:
高等教育出版社,2006
[2]王彦朋.大学生电子设计与应用.北京:
中国电力出版社,2007
[3]张钦双.实用电子电路200例.北京:
机械工业出版社,2003
[4]李光弟朱月秀单片机基础.北京:
北京航空航天大学出版社,2006
[5]马忠梅.单片机的C语言应用程序设计.北京航空航天大学出版社,2006
[6]常华.仿真软件教程.北京:
清华大学出版社,2006
附件一:
程序清单
/********************************************************************项目名称:
四路抢答器的设计
设计者:
刘军
设计日期:
2010年11月11日
*********************************************************************
功能要求:
(1)显示系统提示符“P.”。
(2)设计一个四路抢答器。
键功能:
S2:
抢答开始;
S3:
抢答结束;
S4、S5、S6、S7为四路抢答按键;
S8:
抢答器复位。
指示灯:
LED0:
抢答开始指示;
LED1:
抢答结束指示;
LED2:
违规指示;
LED3:
超时指示;
LED4、LED5、LED6、LED7为四路位置指示;
要求:
在抢答开始键S2按下之前,有S4、S5、S6、S7键按下,视为违规,违规指示灯LED2亮,蜂鸣器报警,数码管显示违规回路号;
抢答开始键S2键按下后,抢答开始指示灯LED0亮,蜂鸣器报警;
如20秒之内无人抢答,抢答结束指示灯LED1亮,蜂鸣器报警;
抢答开始键S2键按下后,如20秒之内有人抢答,则相应回路指示灯亮,蜂鸣器报警,数码管显示回路号并开始倒计时,计时初值20秒:
如在20秒内没有回答完毕,则超时指示灯LED3亮,蜂鸣器报警;
如在20秒内回答完毕,则需按抢答结束键S3,抢答结束指示灯LED1亮,蜂鸣器报警;
按下S8键抢答器复位,重新开始抢答。
***********************************************************
LED数码管显示器设定;
P0.7---P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a
P2.0---P2.7位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
独立式键盘设定;
8个按键S2至S9分别依次接在P1.0至P1.7口线
/**********************************************************
宏定义
数组区
共阳数码管字型码
P.显示序号
***********************************************************函数区
voidDelayX1ms(uintcount) 延时函数
voidfind_code_auto_flush(void) 显示缓冲区更新函数
voidtimer0(void) 定时器t0中断服务函数
voidput_on_leds(void) 显示输出函数
voidinit_sys(void) 定时器初始化函数
keychuli() 键值处理函数
key() 键盘扫描函数
voidmain() 主函数
变量定义
ucharsec 计时变量
ucharpos 段码序号数组下标
uchardmask 位控码
uchark 返回键值
ucharkeyzhi,keyzhii 键盘按键值临时存放
ucharbiaozhi 标志位
位变量定义
bitbiaozhi0=biaozhi^0;
超时标志位
bitbiaozhi1=biaozhi^1;
抢答标志位
bitbiaozhi2=biaozhi^2;
开始标志位
*/
#include"
reg52.h"
#include<
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
/*定义定时器TO时间常数和方式控制字*/
#definev_th00x3c
#definev_tl00xb0
#definev_tmod0x01
ucharsec;
//定义计时变量
/*共阳数码管字型码*/
/*0,1,2,3,4,5,6,7,8,9,p.,灭*/
charcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff};
/*"
P."
显示代码序号*/
charfind_code[8]={10,11,11,11,11,11,11,11};
/********************************************************/
//函数名:
voidDelayX1ms(uintcount)
//功能:
延时时间为1ms
//调用函数:
//输入参数:
count,1ms计数
//输出参数:
//说明:
总共延时时间为1ms乘以count,crystal=12Mhz
voidDelayX1ms(uintcount)
{
uintj;
while(count--!
=0)
{
for(j=0;
j<
80;
j++);
}
}
/***********显示缓冲区更新函数**************/
voidfind_code_auto_flush(void)reentrant
{
find_code[7]=sec/10;
//获得秒十位
find_code[6]=sec%10;
//获得秒个位
}
/**********定时器t0中断服务函数***********************/
voidtimer0(void)interrupt1using2//选用定时器0工作方式为1
{
staticucharclick=0;
//定时器0定时中断次数
TH0=v_th0;
TL0=v_tl0;
//设置初始值50ms为循环20次为1ms,12MHz
++click;
if(click>
=20)
{
click=0;
if(--sec<
=0)
{
TR0=0;
P3=0x77;
DelayX1ms(30);
}
}
find_code_auto_flush();
//LED显示缓冲区时间值更新
}
/***************显示输出函数******************/
voidput_on_leds(void)
uchardmask=0xFE;
//位控码初始化
ucharpos;
for(pos=0;
pos<
8;
pos++)
{
P2=dmask;
//位控码输出到位控口
P0=dispcode[find_code[pos]];
//取显示段码并输出到段控口
DelayX1ms
(1);
//延时
dmask=_crol_(dmask,1);
//修改位控码
}
/*********************************************************
*函数原型:
voidinit_sys(void);
*功能:
对系统进行初始化并接受用户的初始化时间设置。
************************************************************************/
voidinit_sys(void)
TMOD=v_tmod;
TH0=v_th0;
TL0=v_tl0;
//设置时间初值
TR0=0;
EA=1;
ET0=1;
//开启中断,关闭定时器
}
keychuli();
处理与键盘相连的P1口的内容,作为键值。
***********************************************************ucharkeychuli()
uchark;
k=P1;
//P1口内容送K
k=~k;
//取反
return(k);
//返回键值
key();
键盘扫描函数,函数返回值即键值。
***********************************************************ucharkey()
ucharkeyzhi,keyzhii;
//键盘按键键值临时存放
keyzhi=keychuli();
//调P1口处理函数
if(keyzhi!
=0)//有键动作延时去抖动,否则函数返回
put_on_leds();
keyzhi=keychuli();
//再次调P1口处理函数
if(keyzhi!
=0)//真正有键按下,取键值并暂存
{
keyzhii=keyzhi;
while(keyzhi!
=0)//判按键是否释放,没有释放延时去抖动等待释放
{
put_on_leds();
put_on_leds();
keyzhi=keychuli();
}
keyzhi=keyzhii;
//按键释放后恢复按键键值
}
}
return(keyzhi);
//返回按键键值
/*主函数*/
voidmain()
ucharkeyzhiii;
//定义键值变量
ucharbiaozhi;
//定义标志位
bitbiaozhi0=biaozhi^0;
//定义超时标志位
bitbiaozhi1=biaozhi^1;
//定义抢答标志位
bitbiaozhi2=biaozhi^2;
//定义开始标志位
biaozhi0=0;
biaozhi1=0;
biaozhi2=0;
sec=20;
//赋计时初值
init_sys();
//定时器初始化
find_code[0]=10;
find_code[6]=11;
find_code[7]=11;
while
(1)
{
put_on_leds();
DelayX1ms
(2);
if(sec>
0) //超时标志位处理
biaozhi0=0;
else
{
biaozhi0=1;
if(biaozhi1==0)
P3=0xfd;
//有人抢答则LED3亮
else
P3=0xf7;
//无人抢答则LED1亮
}
keyzhiii=key();
//调键盘扫描函数得到按键键码
switch(keyzhiii) //按键功能控制
{
case0:
//没有键按下,则返回
put_on_leds();
DelayX1ms
(2);
break;
case1:
//S2按下开始抢答
TR0=1;
P3=0xfe;
biaozhi2=1;
find_code[0]=11;
TR0=1;
find_code_auto_flush();
put_on_leds();
break;
case2:
//S3按下,结束抢答
biaozhi0=1;
TR0=0;
find_code_auto_flush();
case4:
//S4按下,一号抢答
if(biaozhi2==0) //判断是否开始
{
P3=0x7b;
find_code[0]=1;
} //违规抢答、显示一号,蜂鸣器叫
if(biaozhi0==1||biaozhi1==1)break;
//判断是否超时或已有其他选手抢答
else
{
find_code[0]=1;
//显示一号
P3=0xef;
//LED4亮,置计时初值
sec=20;
biaozhi1=1;
//抢答标志位
}
case8:
if(biaozhi2==0)
find_code[0]=2;
}
if(biaozhi0==1||biaozhi1==1)break;
find_code[0]=2;
P3=0xdf;
case16:
if(biaozhi2==0)
find_code[0]=3;
find_code[0]=3;
P3=0xbf;
case32:
find_code[0]=4;
}
find_code[0]=4;
P3=0x7f;
}
case64:
//S8键按下复位
TR0=0;
//关定时器
P3=0xff;
//等灭
biaozhi0=0;
//标志位清零
biaozhi1=0;
biaozhi2=0;
sec=20;
find_code[0]=10;
find_code[6]=11;
find_code[7]=11;
put_on_leds();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四路 抢答 文档