历史上的今天
今天是:2024年12月22日(星期日)
2020年12月22日 | 基于普中科技51单片机的四路抢答器
2020-12-22 来源:51hei
在普中科技开发板上实验成功了。下面附上代码,由于都有注释,就不废话了,如果看不懂,可以连线调试一下(这是作为一个硬件生应该掌握的基本技能。
单片机源程序如下:
#include #define uchar unsigned char #define uint unsigned int #define WHO P0 sbit player1=P1^0; sbit player2=P1^1; sbit player3=P1^2; sbit player4=P1^3; sbit Ensure=P3^7; sbit beep=P1^6; sbit LSA=P3^2; sbit LSB=P3^3; sbit LSC=P3^4; uchar state=0; uchar ssec=0; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar OUT[]={0x71,0x77,0x38,0x38}; void delay(uint time) { uint x,y ; for(x=time;x>0;x--) for(y=130;y>0;y--); } void Delay2(uint i) { while(i--); } void Show(uchar content[]) { uchar i; for(i=0;i<4;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 } P2=content[i];//发送段码 Delay2(100); //间隔一段时间扫描 P2=0x00;//消隐 } } void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0D8; TL0 = 0x0F0; EA = 1; ET0 = 1; TR0 = 1; } void main() { Ensure=1; while(1) { if(player1==0) //玩家1进入抢答状态 { delay(10); //延时,按键消抖 if(player1==0) //再次判断是否进入抢答状态 { if(state==0) //前方无人抢答状态 { InitTimer0(); state=1; //将抢答状态置为1,防止其他玩家抢答 while(!player1) //抢答成功,蜂鸣器发声 { beep=~beep; delay(1); } WHO=table[1]; //数码管显示抢答成功的玩家编号 } } } if(player2==0) //以下结构类似于玩家1 { delay(10); if(player2==0) { if(state==0) { InitTimer0(); state=1; while(!player2) { beep=~beep; delay(1); } WHO=table[2]; } } } if(player3==0) { delay(10); if(player3==0) { if(state==0) { InitTimer0(); state=1; while(!player3) { beep=~beep; delay(1); } WHO=table[3]; } } } if(player4==0) {
上一篇:单片机TDS水质检测源程序
下一篇:单片机微波炉控制系统
史海拾趣
|
请问大家用C开发AVR时使用的是哪个开发环境,哪个更好用. 刚刚从C51转到AVR我这里有三个开发环境,AVR Studio | ICCAVR | cvavr | 其中,AVR Studio是买仿真器自带的,现在准备用Mega64做个。产品不知哪个开发环境好用更适合开发呢? 请大家指点 ...… 查看全部问答> |
|
FPGA可综合性对初学着的一些建议一、HDL不是硬件设计语言 过去笔者曾碰到过不少VHDL或Verilog HDL的初学者问一些相似的问题,诸如如何实现除法、开根号,如何写循环语句等等。在这个论坛上,也时常能看到一些网友提出这一类的问题。 对于这些问 ...… 查看全部问答> |
|
有哪位弄过ES56031混响吗? 我按照datasheet的时序,采用UCOM模式,依次发送D4,D3,D2,D1,SHEEP = 10110,但是就是得不到正确的延时啊,总是得到最小的那个延时12MS,我怀疑是一个初始值,也就是说我没有设置成功。… 查看全部问答> |
|
“外包在线”网络技术有限公司CEO喻烜为大家讲述了她鲜为人知的创业经历,从初识“外包”到立志创业,从寻求投资到初有成就,借由这朵铿锵玫瑰坚韧不拔的毅力和非凡的智慧,国内首家外包服务网络平台终于问世,自此“外包”服务更加平民化,从 ...… 查看全部问答> |
|
地址总线A15—A0(低),存储器地址空间为3000H-67FFH,按字节编址。其中3000H-4FFH为ROM区,选用EPROM芯片(4K*2b/片);5000H-67FFH为RAM区,选用DRAM芯片(2K*4位/片) 解释3000H是如何推出(A15A14为00),而 4FFFH又是如何推出(A15A14为01) ...… 查看全部问答> |
|
国内站点: 华恒公司的主页,里面有很多的相关资料,有待大家去发现 http://www.hhcn.com/chinese/embedlinux-res.html SkyEye嵌入式硬件仿真项目 www.skyeye.org http://gro.clinux.org/projects/skyeye/ 公社的SkyEye项目专栏 http://www.linuxfa ...… 查看全部问答> |




