历史上的今天
今天是:2024年11月27日(星期三)
2019年11月27日 | 基于51单片机的八路抢答器仿真设计
2019-11-27 来源:51hei
首先,裁判在右方按下开始按钮,蜂鸣器响起,抢答开始,初始时间为20s,若1-8位选手按下按钮,即抢答成功,由显示屏显示该选手号码,如果超过时间(20s)没人认抢答,则时间重置为20s,并此题作废,答题结束后,按下重置按钮,这时时间重置,下次抢答开始。
创新功能(*)在没有按下开始键时,按下修改时间按钮,则时间会减少1s,由于默认时间为20s,所以这个功能可以实现20s内时间的调整
仿真原理图如下
单片机源程序如下:
#include #define uchar unsigned char #define uint unsigned int #define max 20 uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit d1=P2^4; sbit d2=P2^5; sbit x1=P2^6; sbit x2=P2^7; sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit k5=P1^4; sbit k6=P1^5; sbit k7=P1^6; sbit k8=P1^7; sbit zk1=P2^0; sbit zk2=P2^1; sbit buz=P2^2; uchar d_num,cnt; uchar x_flag; void jianpan(); void init(void) { TMOD=0X01; TL0=0XB0; TH0=0X3C; // TR0=1; ET0=1; EA=1; d_num=max; } void delay(uint xms) { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } void display() { d1=0; //位选端; P0=tab[d_num/10];//显示倒计时 delay(5); d1=1; d2=0; P0=tab[d_num%10]; delay(5); d2=1; x1=0; //位选端 P0=tab[x_flag/10];//显示选手号 delay(5); x1=1; x2=0; P0=tab[x_flag%10]; delay(5); x2=1; } void main() { init(); while(1) { jianpan(); display(); } } void timer0(void) interrupt 1 { TL0=0XB0; //重装初值 TH0=0X3C; cnt++; if(cnt==20)//1 秒时间到 { cnt=0;//计数清零 d_num--; if(d_num==0) { d_num=max; TR0=0; //关闭所有操作 } buz=0; delay(20); buz=1; } } void jianpan() { if(zk1==0&&x_flag==0) { delay(5); x_flag=0; TR0=1; } if(zk2==0&&TR0==0) { delay(5); if(zk2==0&&TR0==0) { if(x_flag==0) { d_num--; //设置倒计时 buz=0; delay(20); buz=1; } if(d_num==5) d_num=max; if(x_flag!=0) //选手显示清零 { x_flag=0; d_num=max; TR0=0; buz=0; delay(20); buz=1; } while(!zk2) display(); } } if(k1==0&&TR0==1) { delay(5); if(k1==0&&TR0==1) { x_flag=1; TR0=0; } } if(k2==0&&TR0==1) { delay(5); if(k2==0&&TR0==1) {x_flag=2;TR0=0;} } if(k3==0&&TR0==1) { delay(5); if(k3==0&&TR0==1) {x_flag=3;TR0=0;} while(!k3) display(); } if(k4==0&&TR0==1) { delay(5); if(k4==0&&TR0==1) {x_flag=4;TR0=0;} } if(k5==0&&TR0==1) { delay(5); if(k5==0&&TR0==1)
史海拾趣
|
我有一块ARM7 S3C44B0的开发板,我最近买了一个320X240的液晶屏。 商家提供了320X240.bin的驱动,但是我不知道怎么把驱动加载到开发板的系统中。 我刚开始学这个,我想检验一下这块屏能不能正常使用。哪位高人能不能详细解释一下??… 查看全部问答> |
|
我向请教下一个问题: 我想对PC机并口进行操作,操作步骤是这样的; 先用ioperm(0x378,3,1);取得控制权,然后 _outp(0x378,0x55); 但是用_inp(0x378)读出的数据是255,是我哪地方用的不对的吗? … 查看全部问答> |
|
Cortex-M3与ARM7TDMI-S内核MCU运算性能比较 还是21IC人气旺,转一篇我在EDN的博文:http://blog.ednchina.com/htjgdw/140162/message.aspx自从STM32推出后,我对它很感兴趣,由于它采用了ARM的Cortex-M3内核,所以很想了解一下其性能和ARM7相比究竟如何?很巧的机会知道了EDNCHINA,参加了EDN ...… 查看全部问答> |




