单片机课程设计报告.docx

上传人:b****5 文档编号:3306892 上传时间:2022-11-21 格式:DOCX 页数:17 大小:170.01KB
下载 相关 举报
单片机课程设计报告.docx_第1页
第1页 / 共17页
单片机课程设计报告.docx_第2页
第2页 / 共17页
单片机课程设计报告.docx_第3页
第3页 / 共17页
单片机课程设计报告.docx_第4页
第4页 / 共17页
单片机课程设计报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告.docx

《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告.docx

单片机课程设计报告

课程设计报告

 

设计题目:

八路抢答器

设计作者:

廖进华

 

专业班级/学号:

10应用电子技术<3>班1006020125

 

指导教师:

王明文

 

设计时间:

2012年6月9号

 

目录

1.引言...........................................2

2.设计任务及要求..................................................................3

2.1设计任务.........................................3

2.2设计要求.........................................3

3.系统总体设计......................................................................3

3.1方案论证.........................................3

3.2系统结构框图设计及说明...........................3

4.软、硬件设计.......................................................................4

4.1系统硬件设计....................................4

4.2系统软件设计....................................4

5.安装与调试...........................................................................6

5.1安装调试过程......................................6

5.2调试与故障分析....................................6

6.结论、收获、体会................................................................7

7.参考文献................................................................................8

8.附录............................................9

引言

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

本设计是以八路抢答器为基本理念。

考虑到依需设定时间来作为抢答的依据,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用按钮开关来控制抢答开始和复位和选手的抢答。

同时系统能够实现:

在抢答中,只有抢答开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间课设可在1-99s设定;可以显示是哪位选手有效抢答,先对应的选手号的指示灯也会跟着亮起来,抢答时间以倒计时的方式显示,其中有有人抢答时,并抢答成功时,那么其他的选手再抢答就会无效;若时间倒计时到00s时都没任何人抢答,那么此时不管哪位选手再抢答都会无效;此时只有通过复位开关复位,这样才能进行下一轮的抢答。

同时也可以重新设定强大时间。

这次的课程设计主要是要对单片机的使用,以及结合一些芯片的使用,也就是对单片机这门课的巩固和应用,通过这次实践来帮助我们更好的掌握这门课。

 

2.设计任务与要求

2.1任务:

基于单片机设计一个八路抢答器

2.2要求:

(1)设计出硬件电路;

(2)设计出软件编程方法,并写出源代码;

(3)用protues进行仿真;

(4)报告格式按照规定完成,结构要符合逻辑。

3.系统总体设计

3.1方案论证:

该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。

由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。

整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。

MCS-51单片机特点如下:

(1)可靠性好:

单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。

(2)控制功能强:

单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

3.2系统结构框图(图1-1)设计及说明:

 

图1-1

4.1系统硬件设计.

如图1-2所示为硬件电路。

其工作原理为:

接通电源后,主持人按下“复位”开关,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。

定时器倒计时。

选手在定时时间内抢答时,抢答器完成:

优先判断、编号锁存、编号显示。

当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

如果再次抢答必须由主持人再次操作"开始、复位"状态开关。

图1-2

4.2系统软件设计

为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P2.2按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。

当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。

主程序流程图:

图1-3

5.1安装与调试

制作PCB电路板流程:

打印PCB——裁剪覆铜板——预处理覆铜板(打磨)——转印PCB——腐蚀电路板——电路板钻孔——电路板预处理(打磨、清洗、涂松香)——焊接电子元件。

表1器件选型方案的详细清单

器件名称

规格型号

数量

主要芯片

AT89C51

1

极性电容

0.1uF

1

电阻

10k排阻

2

电容

30PF

2

晶振

12MHZ

1

按钮

12

共阴4位7段数码管

SMGSM410561K

1

5.2调试与故障分析:

(1)开机:

按电源开关,显示屏左边的"复位"指示灯亮,数码管显示0-00。

(2)设定"抢答"倒计时时间

(3)设定"答题"倒计时时间

(4)测试各组抢答按键

  在调试的过程中发现有人按下的时候会不稳定,后来发现是有些是没去抖动的原因,后来就修改了。

(5)启动抢答倒计时,开始抢答

  "0-00"状态下,当主持人宣布抢答开始时,马上按一下"抢答"键,屏幕显示所设定的抢答倒计时时间并开始倒计时。

倒计时到0以后,同时显示屏返回"0-00"待命状态。

在"抢答"倒计时中,如果有参赛组抢答,仪器屏幕立即显示该组的组别号。

需要返回"0-00"待命状态,按"复位"键即可。

(7)提前复位倒计时

  "抢答"的倒计时时间,需要提前退出,只要按一下"复位"键,即可返回到"0-00"待命状态。

(8)在程序完成的时候开始在验证程序的时候发现倒计时时间到还能继续抢答,后面经过调程序,发现导致这个原因是因为在倒计时时间到的时候没有把允许抢答标志位关了,经过修改就解决了这个问题。

6.结论、收获、体会

通过调试,结果完全符合抢答器设计要求。

这次课程设计老师给我们安排了一个比较长的时间,可以说是比较充裕的。

虽然如此,我还是很用心的做设计,利用了这段时间时间在宿舍思考本次的课程设计,一开始不知怎么下手,虽然这些知识以前都有接触过,但也只是分部分来接触,而这次的设计是要对前面几次实验的一个综合。

也翻阅了一些资料,并自己事先编写好了程序,在实验课上把自己写的程序烧进去芯片里面,发现不行,那些数字闪动得非常厉害,自己检查了好久好久,但还是发现不了问题,之后问了同学,才知是我把段码搞错了,我用的是共阴位选,但数据表的段码我却用了共阳的段码,所以不能在数码管上正常显示。

通过运用单片机设计八路抢答器课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。

对软件的使用比较不熟悉,在这段时间加强了学习,对自己选用的芯片原理进行仿真画图,一开始对芯片的功能不太明白,有些东西都看不太明白,都是通过自己一个个来慢慢琢磨,把仿真图画了出来,然后把写好的程序导入芯片,进行仿真,当看到程序正常运行的那一刻,心中真是有几分的喜悦。

生活就是这样,汗水预示着结果也见证着收获。

劳动是人类生存生活永恒不变的话题。

虽然这只是一次的较简单的课程制作(八路抢答器),可是平心而论,也耗费了我不少的心血。

通过这次课程设计,我想说:

为完成这次课程设计我们确实花时间了,和同学们相互帮助,大学里几年的相处还赶不上这几天来的实践,我感觉我和同学们之间的距离更加近了。

软硬件都成功时我们的心中就不免兴奋,不免激动。

以前种种艰辛这时就变成了最甜美的回忆!

这次学习给我留下了深刻的印象,使我受益匪浅。

而且对于论文的总体构思也有了很多经验,相信自己经过这一次的训练与学习,对于今后会更加努力,做得最好。

  对我而言,知识上的收获重要,精神上的丰收更加可喜。

让我知道了学无止境的道理。

我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。

挫折是一份财富,经历是一份拥有。

这次课程设计必将成为我人生旅途上一个非常美好的回忆!

7.参考文献

(1)彭伟,《c语言程序设计100例》电子工业出版社

(2)邵晓根,《微机原理与接口技术》,中国电力出版社

(3)冯博琴,《微型计算机原理及接口技术》,清华大学出版社

(4)艾德才,《微型计算机原理与接口技术》,高等教育出版社

(5)沈美明,《IBM-PC汇编语言程序设计》,清华大学出版社

(6)薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001

(7)谢筑森,张辉等,《单片机开发与典型应用设计》,中国科学技术大学出版社,

8.附录

1.主程序:

#include

sbitkai=P2^2;

sbitting=P2^3;

sbithao1=P1^0;

sbithao2=P1^1;

sbithao3=P1^2;

sbithao4=P1^3;

sbithao5=P1^4;

sbithao6=P1^5;

sbithao7=P1^6;

sbithao8=P1^7;

sbitLE1=P2^1;

sbitLE2=P2^0;

sbitP2_6=P2^6;

sbitP2_7=P2^7;

sbitkey1=P2^4;

sbitkey2=P2^5;

sbitK1=P2^5;

sbitK2=P2^4;

unsignedcharcodeTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

charhao,a,num,shi,ge,aa=10,qiangda,c,d;

voidxianshi();

voiddelay(intx);

voidkey_ts();

voidkeyscan();

voidxuanshou();

main()

{

TMOD=0X01;

EA=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

TR0=1;

P2_6=0;

while

(1)

{

key_ts();

keyscan();

if(qiangda==1)

{

xuanshou();

}

xianshi();

}

}

voidkeyscan()//启动/复位

{

if(kai==0)

{

delay(5);

if(kai==0)

{

while(!

kai);

{

TR0=1;//开中断

qiangda=1;

xuanshou();

P2_7=0;

P2_6=1;

P3=0xff;

}

}

}

if(ting==0)

{

delay(5);

if(ting==0)

{

while(!

ting)

{

num=c;

hao=0;

TR0=0;

qiangda=0;

P2_6=0;

P2_7=1;

P3=0xff;

}

}

}

}

voidxuanshou()//选手号函数

{

if(hao==0&&hao1==0)

{delay(5);

if(hao1==0)

{while(hao1==0)

{P2_6=1;

P2_7=1;

hao=1;

TR0=0;

P3=0xfe;

}

}

}

if(hao==0&&hao2==0)

{delay(5);

if(hao2==0)

{while(hao2==0)

{P2_6=1;

P2_7=1;

hao=2;

TR0=0;

P3=0xfd;

}

}

}

if(hao==0&&hao3==0)

{delay(5);

if(hao3==0)

{while(hao3==0)

{P2_6=1;

P2_7=1;

hao=3;

TR0=0;

P3=0xfb;

}

}

}

if(hao==0&&hao4==0)

{delay(5);

if(hao4==0)

{while(hao4==0)

{P2_6=1;

P2_7=1;

hao=4;

TR0=0;

P3=0xf7;

}

}

}

if(hao==0&&hao5==0)

{delay(5);

if(hao5==0)

{while(hao5==0)

{P2_6=1;

P2_7=1;

hao=5;

TR0=0;

P3=0xef;

}

}

}

if(hao==0&&hao6==0)

{delay(5);

if(hao6==0)

{while(hao6==0)

{P2_6=1;

P2_7=1;

hao=6;

TR0=0;

P3=0xdf;

}

}

}

if(hao==0&&hao7==0)

{delay(5);

if(hao7==0)

{while(hao7==0)

{P2_6=1;

P2_7=1;

hao=7;

TR0=0;

P3=0xbf;

}

}

}

if(hao==0&&hao8==0)

{delay(5);

if(hao8==0)

{while(hao8==0)

{P2_6=1;

P2_7=1;

hao=8;

TR0=0;

P3=0x7f;

}

}

}

}

voidtimer0(void)interrupt1//定时器中断函数

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

a++;

if(a==20)

{

a=0;

num--;

if(num<=0)

{

num=0;

TR0=0;

qiangda=0;

}

}

}

voidxianshi()//显示函数开始

{

shi=num/10;

ge=num%10;

P0=0xff;

LE1=1;

P0=0xfe;

LE1=0;

P0=0;

LE2=1;

P0=TAB[hao];

LE2=0;

delay(5);

P0=0xff;

LE1=1;

P0=0xfd;

LE1=0;

P0=0;

LE2=1;

P0=TAB[aa];

LE2=0;

delay(5);

P0=0xff;

LE1=1;

P0=0xfb;

LE1=0;

P0=0;

LE2=1;

P0=TAB[shi];

LE2=0;

delay(5);

P0=0xff;

LE1=1;

P0=0xf7;

LE1=0;

P0=0;

LE2=1;

P0=TAB[ge];

LE2=0;

delay(5);

}

voiddelay(intx)//延时函数开始

{

inti,j;

for(i=0;i

for(j=0;j<120;j++);

}

voidkey_ts()//调时子程序

{

if(key1==0)

{

delay(10);

if(key1==0)

{

while

(1)

{

if(kai==0)

{

while(kai==0);

num++;

}

if(ting==0)

{

while(ting==0);

num--;

}

if(key2==0)

break;

c=num;

xianshi();

}

}

}

}

2.protel电路原理图和PCB电路图:

电路原理图

PCB电路图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1