基于单片机8路抢答器论文 - 图文(3)

2019-03-27 20:03

sbit speaker=P3^6;//报警 sbit start=P3^4;

uchar count=0;//用于产生1秒的时间

uchar dsy_time=0x3c; //用于显示抢答时间 uchar dsy_buffer[]={0,0,0};//显示缓冲

uchar code leddata[]= //共阴数码管的段码 {

0x3F, //\ 0x06, //\ 0x5B, //\ 0x4F, //\ 0x66, //\ 0x6D, //\ 0x7D, //\ 0x07, //\ 0x7F, //\ 0x6F, //\ };

uchar code state[]=//抢答时的8种按键情况 {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // //延时 //

void DelayMS(uint ms) {

uchar t; while(ms--)

for(t=0;t<120;t++); } // //报警 //

void speak(void) {

uchar i=10; while(i--) { speaker=~speaker; DelayMS(2); } } //

//主程序 //

void main()

{

//初始化

uchar i,m=0x04; P0=0xff; P1=0x00; P2=0x00; P3=0xb7;

TMOD=0x01;//选择工作方式

TH0=0x3c;//定时器T0初始值的高八位 TL0=0xaf;//定时器T0初始值的低八位

IE=0x83;//开总中断,定时器中断,外部中断0 while(1) { if(rst==0)//系统复位 { dsy_buffer[0]=0; TR0=0; dsy_time=0x3c; } if(dsy_time==0x00)//在设定的时间到,而无人抢答时关闭定时器中断 { TR0=0;//关闭定时器中断 P1=0x00;//禁止抢答 } for(i=0;i<3;i++)//用数码管显示抢答序号和抢答时间 { P2=m; m=_cror_(m,1);//循环移位实现数码管的动态显示 dsy_buffer[2]=dsy_time;//抢答时间的个位 dsy_buffer[1]=dsy_time/10;//抢答时间的十位 P0=leddata[dsy_buffer[i]];//数码管显示抢答者的序号和抢答时间 DelayMS(5);

} m=0x04;//实现下轮的循环显示 for(i=0;i<8;i++) { if(P1==state[i])//判断有按键按下 { DelayMS(10); //延时防止按键抖动引起的误操作 if(P1<=state[i]) //再次判断有按键按下 {

dsy_buffer[0]=i+1; P1=0x00;//通过硬件实现优先抢答 TR0=0; //关闭定时器0 speak(); } } } } } //

//实现定时时间1S //

void key_inter() interrupt 1 {

TH0=0x3c;//50MS初始值 TL0=0xaf;//50MS初始值 if(++count==20) { count=0; dsy_time--;//实现计数器的减法计数 } } //

//抢答开始 //

void start_inter() interrupt 0 {

P1=0xff;

TR0=1;//定时器0开始计数 speak(); }

第四章:仿真分析

4.1仿真

测试数据及结果如下:

总开关按下情况下,开始按键按下,数码管显示倒数三秒,仿真电路如图

抢答倒计时完后,若有选手进行抢答,显示其号码,并让选手对应的led灯亮,显示仿真电路如图

4.2系统的调试

系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。

硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。 软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成


基于单片机8路抢答器论文 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:金属腐蚀理论及腐蚀控制

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

马上注册会员

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