1、一、课程设计目的-2二、课程设计任务及要求-22.1 原始数据及主要任务-22.2 技术要求-2 三、设计方案-2四、单元电路设计-3 4.1抢答信号显示和倒计时显示电路设计-3 4.2警报发生器电路-3 4.3按键电路-4 4.4指示灯电路-45、参考程序 -5 六、所用器材-12 七、课程设计总结-13 八、参考文献-14 九、评语及成绩-14十、附录 -15一、课程设计目的 通过长达两周的课程设计,加深对单片机课程所学理论知识的理解,运用所学理论知识解决实际问题。结合课程设计的内容,学会利用Protel软件绘制电路原理图和PCB图,掌握电路的设计与组装方法,进行软硬件联机调试。学会查阅相
2、关专业技术资料及设计手册,提高进行独立设计的能力并完成课程设计相关任务。二、课程设计任务及要求2.1 原始数据及主要任务 1.设计键盘输入电路; 2.设计显示输出电路; 3.掌握响应外部中断的原理; 4.编写程序; 5.利用Protel设计硬件电路原理图和PCB图; 6.软硬件联机调试; 7.书写设计报告。2.2 技术要求 1.设计四个抢答台和四个抢答成功指示灯,一个比赛主持人“开始”键和一个抢答指示灯以及一个LED显示器。 2.采用中断和查询结合的方法确定按键的动作。 3.主持人按下“开始”键后,若有人抢答,则抢答指示灯确认有人抢答,并用7段LED显示抢答者的号码(14),并同时点亮对应抢答
3、台上的抢答成功指示灯;若10秒内无人抢答,则发出超时报警声,此题作废,主持人可按下“开始”键开始下一题的抢答。三、设计方案设置4个按钮,其编号分别是1到4,按钮的编号与选手的编号相对应。初始时,4个按钮常开,只有当主持人按下开始按键时才可以进行倒计时抢答。当主持人按下开始按键后,开始倒计时10秒,当4个按钮只要有一个按下即只要有人抢答时,单片机收到信号,抢答成功指示灯点亮,选手前面的指示灯也一同点亮。通过74LS245进行段选使数码管置显示选手的序号,同时倒计时停止计时,在另一个数码管上显示。并且当有按键按下后其他选手按键无效。当选手答完后,由主持人将数码管清零,继续下次抢答。四、单元电路设计
4、4.1抢答信号显示和倒计时显示电路设计4.2警报发生器电路 4.3按键电路4.4指示灯电路五、参考程序#include#define unint unsigned int#define unchar unsigned charsbit wei1=P10;sbit wei2=P11;sbit Been=P12;sbit AN1=P33;sbit AN2=P34;sbit AN3=P35;sbit AN4=P36;sbit AN5=P37;sbit D1=P13;sbit D2=P14;sbit D3=P15;sbit D4=P16;sbit D5=P17;unchar table=0x3f, 0
5、x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f;int i,num=9,num1=0,t,t1,Person=0,flag=0,flag1=0,flag2=0,kz=0;void delay(unint z) unint x,y; for(x=z;x0;x-) for(y=55;yy-);void All_Init(void) /定时器的初始化 TMOD=0x01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; TR0=1; EA=1; ET0=1; void Display(int x,int y
6、) /数码管显示 wei1=0; P2=tablex; /显示选手 delay(20); wei1=1; wei2=0; P2=tabley; /显示倒计时 wei2=1;void Deal_Number(void) /数据处理 int ge; ge=num; Display(Person,ge);void AnJian(void) /按键检测/*选手按键*/ if(flag1=1) if(AN1=0) delay(15); if(AN1=0) while(!AN1); Person=1; TR0=0; TR1=1; flag=0; flag1=0; flag2=1; D1=0; D5=0;
7、if(AN2=0) if(AN2=0)AN2); Person=2; D2=0; if(AN3=0) if(AN3=0)AN3); Person=3; D3=0; if(AN4=0) if(AN4=0)AN4); Person=4; D4=0; /*主持人按键*/ if(AN5=0) delay(15); if(AN5=0) while(!AN5); Person=0; D1=1; D2=1; D3=1; D4=1; D5=1; if(flag1=1) if(flag2=1) flag2=0; if(flag=0)TR0=1; num=9; TH0=(65536-1000)/256; TL0=(65536-1000)%256; flag1=1; flag=1; Been=1; kz+;void BeenRing(void) /蜂鸣器处理 if(num=0) Been=0; delay(20);/*主函数*/void main() All_Init(); while(1) AnJian(); if(kz0) Deal_Number(); else Display(0,9); BeenRing();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1