单片机原理与接口技术课程设计报告格式Word格式.docx

上传人:b****2 文档编号:4959536 上传时间:2023-05-04 格式:DOCX 页数:19 大小:150.02KB
下载 相关 举报
单片机原理与接口技术课程设计报告格式Word格式.docx_第1页
第1页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第2页
第2页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第3页
第3页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第4页
第4页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第5页
第5页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第6页
第6页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第7页
第7页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第8页
第8页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第9页
第9页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第10页
第10页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第11页
第11页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第12页
第12页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第13页
第13页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第14页
第14页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第15页
第15页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第16页
第16页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第17页
第17页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第18页
第18页 / 共19页
单片机原理与接口技术课程设计报告格式Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机原理与接口技术课程设计报告格式Word格式.docx

《单片机原理与接口技术课程设计报告格式Word格式.docx》由会员分享,可在线阅读,更多相关《单片机原理与接口技术课程设计报告格式Word格式.docx(19页珍藏版)》请在冰点文库上搜索。

单片机原理与接口技术课程设计报告格式Word格式.docx

模式2为抢答时间调整模式,此时Start键为时间增加功能。

(时间为循环增加,最大60)

按键说明:

NO1---NO8:

选手抢答按键

Start:

模式1为抢答开始键,由主持人按下;

模式2为抢答时间调整键

Clear:

短期按下为模式1的抢答复位功能;

长期按下不放进入模式2,再次按下返回模式1。

2.方案设计

抢答器的基本工作原理:

在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。

在整个抢答器工作过程中,显

示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。

抢答器的工作流程分为:

系统复位、正常流程、显示流程等几部分。

抢答器的工作过程如下:

1、如果想调节抢答时间,长按clear键进入模式二调整。

2、主持人按"

抢答开始"

键,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会显示其号数并立显示倒计时剩余的时间,并且锁定其他的选手抢答无效,所以只有第一个按抢答的选手有效。

3、如果主持人未按“start”键,而有人按了抢答按键,抢答无效,不给予显示,并且开始下一轮的答题。

总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的工程设计。

系统的主要功能模块方框图如图2-1所示。

图2—1

3.硬件设计

振荡电路:

80C51内部有时钟电路,故而我们只需在外部链接一个12MHZ的晶振。

电容一般采用30PF,如图3—1所示。

图3-1

复位电路:

单片机的第9脚RST为复位端。

电容隔离电源和地,充电充满的时候流过的电流是0,所以接的是低电平,处于正常的状态,当按键按下的时候,电容被短路,电阻被接入到电路当中,5V电直接接到电阻R1上面,所以电阻R1上的压降就是5V,所以第九脚的电压为电源电压5V,实现按键复位,电容起的作用就是开机上电复位!

具体如图3—2所示

图3—2

按键电路:

简单来说,按键电路主要通过开关的通断来改变I/O口的状态,从而起到控制作用,按键按下去时会产生电压,为防止I/O口被破坏,我们需要接一个电阻,具体如图3—3所示

图3—3

显示电路及译码器电路:

显示电路使用四位七段数码管,它是共阴极。

译码器采用74LS245译码器,它是8路同相三态同向总线收发器,可双向收发信号,具体如图3—4所示

图3—4

发声电路:

图3-5

软件设计

硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。

由功能分析得到的软件结构图如4-1所示。

图4-1程序系统图

程序流程图:

源程序见附录

4.系统调试

硬件部分由于时间关系没有做成实物,主要在protues软件上仿真,具体的电路图见附录。

在软件部分的调试上遇到几个问题如下:

1.倒计时不准的问题。

由于采用51单片机内部定时器来实现,51单片机寄存器溢出很快,想要定时1S需要多次调用定时器中断服务程序。

考虑到中断服务程序中其他代码所需的运行时间,最终定时将会出现误差,对程序中的一些参数做出调整来降低误差,甚至消除误差。

2.数码显示问题。

在显示模块中锁存器会对显示内容进行锁存,但是对于多位数的显示就要用扫描的方式来显示倒计时的个位与十位。

这会使倒计时的显示时长难以控制并且在扫描的过程中会占用CPU,为解决这些矛盾,在扫描过程中进行安检扫描时得有按键按下来打断时间的显示转去显示按键按下的结果,这样就避免了显示时间安检无效的问题,提高了按键的灵敏度。

3.抢答成功屏蔽问题

当有选手抢答成功后,其他选手抢答无效。

解决方法是,当选手抢答成功后,程序立即跳出循环按键扫描程序,然后显示选手编号。

5.设计总结

本文研究与设计的八路多功能抢答器,采用了常用的通孔电子元器件,利用AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来。

理论联系实践,体现出大学生动手能力。

通过查资料和搜集有关的文献,培养了自学能力和动手能力。

并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。

在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过课程设计,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。

把握重点、攻克难关,学到用到、活学活用。

在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。

但在以后的工作中,我们会严格要求自己,追求完美。

整个设计通过了软件和硬件上的调试、仿真。

我想这对于自己以后的学习和工作都会有很大的帮助的。

在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。

而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。

它才是一个设计的灵魂所在。

因此在整个设计过程中大部分时间是用在程序上面的。

很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

但是,通过这次设计我也发现自己的很多不足之处。

在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。

而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!

6.附录A;

源程序

由于本设计源程序过于复杂,故采用模块化编程,这里只放置主程序代码,具体代码见电子版:

#include"

Key.h"

led.h"

#defineKEY_VALID_VALUE0//主持人按键有效电平

#defineMOD_TWO0x49//模式显示字符

#defineALARM_COUNT_TIME1000//选手回答时报警时间,10S

sbitKEY_START=P2^4;

sbitKEY_CLEAR=P2^5;

sbitALARM_OUT=P2^6;

constuchardisplayMode=0x04;

uintalarmCountTemp;

//选手抢答报警计时

ucharclockCountLTemp=0x00;

//抢答时间原始值,为BCD码式的

ucharclockCountHTemp=0x03;

uchardisplayBuff[4]={'

0'

'

0x7e,'

};

//数码管显示缓冲区,低两位为时间,最高位为抢答号

ucharmusicFre[4]={0x10,0x20,0x30,0x40};

ucharmusicFreTemp;

ucharmusicFreCount;

ucharalarm_can_out;

//允许报警输出

uchargame_is_ok;

//抢答器状态变量,0x01为抢答开始

uchartime_is_over;

//抢答时间计数到变量

ucharkey_is_press;

ucharclockCountL;

//抢答时间计数值低位

ucharclockCountH;

//抢答时间计数值高位

uchartimer0Temp;

//tiemr0中断计数变量

ucharworkMode;

//抢答器工作模式,0为抢答模式,1为时间调整模式

voidinit_timer0(void)//定时10ms

{

TMOD|=0x01;

//GATE=0,TR=1运行;

C/T=1,counter,0,timer;

01十六进制

TH0=0xdc;

TL0=0x00;

TR0=1;

//timer0控制位,为1时启动timer0

ET0=1;

//timer0中断使能

}

voidmain()

uchargameKeyScan;

init_led();

init_key();

init_timer0();

clockCountL=clockCountLTemp;

clockCountH=clockCountHTemp;

displayBuff[S_H]=clockCountH+'

;

displayBuff[S_L]=clockCountL+'

gameKeyScan=0x00;

game_is_ok=0x00;

timer0Temp=0x00;

musicFreTemp=0x00;

time_is_over=0x00;

key_is_press=0x00;

workMode=0x00;

alarm_can_out=0x00;

alarmCountTemp=0x00;

sei();

while

(1)

{

ledSweepDisplay(displayBuff,displayMode,4);

if(KEY_START==KEY_VALID_VALUE)

if(workMode==0x00)//模式1

if(game_is_ok!

=0x01)

clockCountL=clockCountLTemp;

displayBuff[S_H]=clockCountH+'

displayBuff[S_L]=clockCountL+'

displayBuff[NO]='

game_is_ok=0x01;

//抢答开始

}

else//模式2

while(KEY_START==KEY_VALID_VALUE);

if(clockCountLTemp<

0x09)

clockCountLTemp++;

else

{

clockCountLTemp=0x00;

if(clockCountHTemp<

0x05)

clockCountHTemp++;

else

clockCountHTemp=0x00;

}

}

elseif(KEY_CLEAR==KEY_VALID_VALUE)

if(workMode!

=0x00)

workMode=0x00;

displayBuff[SET_MOD]=0x7e;

}

if(game_is_ok!

{

delay(100);

if(KEY_CLEAR==KEY_VALID_VALUE)

if(KEY_CLEAR==KEY_VALID_VALUE)

{

delay(100);

while(KEY_CLEAR==KEY_VALID_VALUE)

workMode=0x01;

//进入模式2

displayBuff[SET_MOD]=MOD_TWO;

ledSweepDisplay(displayBuff,displayMode,4);

}

}

game_is_ok=0x00;

time_is_over=0x00;

alarm_can_out=0x00;

if(game_is_ok==0x01)

if(time_is_over!

gameKeyScan=get_key_value();

if(gameKeyScan!

musicFreCount=musicFre[1];

alarm_can_out=0x02;

if(KEY_ONE==gameKeyScan)

displayBuff[NO]=0x01+'

if(KEY_TWO==gameKeyScan)

displayBuff[NO]=0x02+'

if(KEY_THREE==gameKeyScan)

displayBuff[NO]=0x03+'

if(KEY_FOUR==gameKeyScan)

displayBuff[NO]=0x04+'

if(KEY_FIVE==gameKeyScan)

displayBuff[NO]=0x05+'

if(KEY_SIX==gameKeyScan)

displayBuff[NO]=0x06+'

if(KEY_SEVEN==gameKeyScan)

displayBuff[NO]=0x07+'

if(KEY_EIGHT==gameKeyScan)

displayBuff[NO]=0x08+'

else//抢答开始后时间到

musicFreCount=musicFre[0];

alarm_can_out=0x01;

voidtimer0_overflowing()interrupt1using1//timer0溢出中断,10ms

if((alarm_can_out!

=0x01)&

&

(alarm_can_out!

=0x02))

ALARM_OUT=0;

else

if(alarm_can_out==0x01)

if(musicFreTemp<

musicFreCount)

musicFreTemp++;

ALARM_OUT=~ALARM_OUT;

elseif(alarm_can_out==0x02)

if(alarmCountTemp<

ALARM_COUNT_TIME)

alarmCountTemp++;

if(musicFreTemp<

alarmCountTemp=0x00;

if(timer0Temp<

99)//检测1S是否到

timer0Temp++;

if(clockCountL>

0x00)

clockCountL--;

if(clockCountH!

clockCountL=0x09;

clockCountH--;

time_is_over=0x01;

7.附录B:

电路图

8.参考文献

[1].王静霞.单片机应用技术(C语言版)[M].北京:

电子工业出版社,2009年.

[2].蔡朝阳.单片机控制实习与专题制作[M].北京:

北京航空航天大学出版社,2006年.

[3].杨凌霄.微型计算机原理及应用[M].江苏:

中国矿业大学出版社,2004年.

[4].丁建伟.抢答器电路设计[J].兰州工业高等专科学校学报,2008,(04).

[5].胡学海.单片机原理及应用系统设计[M].北京:

北京电子工业出版社,2005年.

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2