单片机课程设计报告五人表决器.docx

上传人:b****5 文档编号:7425492 上传时间:2023-01-23 格式:DOCX 页数:13 大小:115.42KB
下载 相关 举报
单片机课程设计报告五人表决器.docx_第1页
第1页 / 共13页
单片机课程设计报告五人表决器.docx_第2页
第2页 / 共13页
单片机课程设计报告五人表决器.docx_第3页
第3页 / 共13页
单片机课程设计报告五人表决器.docx_第4页
第4页 / 共13页
单片机课程设计报告五人表决器.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告五人表决器.docx

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

单片机课程设计报告五人表决器.docx

单片机课程设计报告五人表决器

目录

一、方案设计2

二、硬件电路设计2

三、软件设计说明6

四、程序清单7

五、制作调试说明12

六、操作使用说明13

七、总结13

 

单片机课程设计

一、方案设计

1、设计题目:

5人表决器

2、设计要求:

1)、可供5—7个人进行表决,每个人有一个“同意”和一个“反对”按键,故一个人需要两个按键,表决时两个键先按下的一个有效,同时按下则表示无效,每次表决每个按键只能是第一次按下的有效,多按无效,用单片机设计表决器是硬件电路与软件设计相结合的一种设计,因此在硬件电路只能实现按键的按下与释放,不能智能的实现检测按键被按下几次,则可用软件设计来实现其功能。

2)会议主持人可利用按键控制表决的开始与结束,点亮黄灯用于显示表决开始,熄灭黄灯表示结束,并将表决结果用红灯与绿灯显示。

当不相等时,“同意”多于“反对”点亮绿灯,“同意”少于“反对”点亮红灯。

3)在实现上述功能的基础上增加“同意”数和“反对”数的显示。

二、硬件电路设计

1、硬件设计思路:

此次设计的题目是5人表决器,分析得设计的硬件电路选用P1口与P2口作为同意与反对按键的输入端。

又表决的开始与结束是由主持人来控制的,因此需要两个按键来表示表决的开始与结束,因此可采用外部中断0与外部中断1来控制表决的开始于结束。

故设计总共需要按键12个。

设计要求中需要四盏灯,分变为一个黄灯,一个绿灯和二个红灯,三盏灯用于输出显示,因此也可以征用单片机的I/O口,由于P1口与P2口作为同意与反对按键的输入端且P0口当做输出端口时可以不用接上拉电阻,因此可将三个显示灯接在P0口用于显示表决的结果。

还有一盏红灯用来做电源指示灯。

2、元器件参数确定:

设计要求中需要三盏灯(黄灯,绿灯和红灯)用于输出显示,选用P0口的3个端口与显示灯相连接用于输出,由于输出端口输出的高电平一般为5V,而发光二极管允许的最大电流为5mA,因此需要用到限流电阻,发光二极管可降2V的电压,则限流电阻上的压降为3V,那么限流电阻的最小阻值为R=3V/5mA=600欧姆,由于输出的高电平不是5V,故用510欧姆的限流电阻。

然后将单片机的最小系统(最小系统中各元器件的参数可参考单片机课本中给出的值)加入电路中就是此次设计的硬件电路。

3、元件清单:

元件名称

元件数目

元件型号

元件参数

备注

按键开关

12个

一般

接对角线

电解电容

1个

一般

22uF

有正负之分

瓷片电容

2个

30PF

发光二极管

3个

普通

红、黄、绿灯

显示灯

晶振

1个

12M

内部时钟电路

电阻

3个

普通

510

用于限流

单机片芯片

一片

8051

40脚

电源插头

1个

/

/

/

各元器件的作用:

开关:

有十个开关用于分别用做5人的同意与反对按键;一个开关用于复位电路,另外两个按键用于主持人的开始与结束按键;电容:

用于单片机的最小系统;发光二极管:

黄灯用于显示表决的开始与结束,红灯与绿灯用于显示表决的结果;电阻:

用于限制电流;8051芯片:

软件编程;电源接头:

用于接外接电源。

4、电路工作原理简述:

该电路是基于硬件电路,应用汇编语言来设计出其工作流程,硬件电路是用软件程序来检测表决器的开始按键是否被按下,如果开始键已按下,则利用软件程序来检测用于表决的按键是否被按下以及按下的按键是否有效,然后检测结束键是否被按下,如果按下则表决结束,并且显示最终的表决结果。

硬件电路只能够用于表征表决是否开始以及每个人按下的是同意按键还是反对按键。

工作流程:

当主持人按下开始表决的开始按键(在电路中用接在外部中断0上的按键来表示开始按键)后,5个人才开始表决,5个人分别按下同意按键或是反对按键,剩余的事情由软件来处理分析最终统计得到“同意”的人数和“反对”的人数,当主持按下结束按键后(在电路中用外部中断1上所接的按键来表示结束按键),软件中用外部中断1来表示结束(采用中断的方式),在中断程序中比较“同意”的人数与“反对”的人数的大小。

当“同意”的人数大于“反对”的人数时,应用软件程序点亮绿灯;当“同意”的人数小于“反对”的人数时,应用软件程序点亮红灯;当“同意”的人数等于“反对”的人数时,则应用软件程序将红灯与绿灯同时点亮。

图1单片机系统的时钟电路

图2实物电路板

三、软件设计说明

1、模块设计:

初始化模块:

对系统进行初始化,由于程序中有中断源,因此打开相应的中断也放在程序的初始化模块中;

检测开始按键:

检测开始按键是否被按下,按下则开始执行循环检测同意与反对按键,为消除按键抖动,此处需调用延时程序;

循环检测同意/反对按键:

循环检测同意与反对按键是否被按下,同时统计同意总数与反对总数,然后等待中断到来;

延时程序:

用于消除按键的机械抖动,调用0.5s的延时程序;

中断处理:

当中断源到来,首先熄灭黄灯,然后将同意总数与反对总数进行比较,并点亮对应的显示灯;

2、软件设计流程图

大于

等于

小于

3、软件总体功能:

软件的总体功能

1.用于检测开始按键是否被按下,按下则表决按键按下才有效,即开始表决;

2.开始表决后循环检测对应的同意与反对按键是否被按下,并统计同意总数与反对总数;

3.等待中断,即等待结束按键被按下,在中断处理中将同意与反对数进行比较,并点亮相应的显示灯,程序结束。

四、程序清单

ORG0000H

AJMPMAIN;//转主程序//

ORG0013H;//外部中断1的入口地址//

AJMPINT_1;//跳转到中断//

ORG0100H

MAIN:

MOVSP,#60H;//给地址指针赋初值//

MOVA,#0FFH

MOVP1,A;//给P1口赋初始值//

MOVP2,A;//给P2口赋初始值//

MOVP0,A;//给P0口赋初始值//

SETBEA;//开中断//

SETBEX1;//打开外部中断1//

SETBIT1;//设置外部中断1为边沿触发方式//

JBP3.2,$;//等待外部中断0上的按键按下//

LCALLDEL05S;//调用延时程序//

JNBP3.2,$;//等待按键弹起//

CLRP0.5;//点亮黄灯//

L10:

JBP1.4,L11;//判断按键P1.4口上的按键是否被按下//

JNBP1.4,$;//等待按键弹起//

JNBP2.0,L11;//检测对应的反对按键是否被按下//

LCALLDEL05S;//调用延时程序//

MOV21H,#00H;//将21H初始化//

MOVA,21H;//21H中存储第一个同意按键的按下数//

INCA;//对21H地址单元中的值加1//

MOVB,A

MOVA,#01H

CJNEA,B,L11;//将寄存器A中的值与1比较,保证只有第一次按下才有效//

MOV21H,A;//26H中存储第一个反对按键的按下数//

MOV31H,#00H

MOVA,31H

INCA

MOV31H,A;//对31H中的同意数加1//

L11:

JBP1.3,L12;//检测按键是否被按下//

JNBP1.3,$;//等待按键弹起//

JNBP2.1,L12;//判断对应的反对建是否被按下//

LCALLDEL05S;//调用延时程序//

MOV22H,#00H

MOVA,22H;//同L10注释,下同//

INCA

MOVB,A

CJNEA,B,L12

MOV22H,A

MOVA,31H

INCA

MOV31H,A

L12:

JBP1.2,L13;//同上//

JNBP1.2,$

JNBP2.2,L13

LCALLDEL05S

MOV23H,#00H

MOVA,23H

INCA

MOVB,A

CJNEA,B,L13

MOV23H,A

MOVA,31H

INCA

MOV31H,A

L13:

JBP1.1,L14;//同上//

JNBP1.1,$

JNBP2.3,L14

LCALLDEL05S

MOV24H,#00H

MOVA,24H

INCA

MOVB,A

CJNEA,B,L14

MOVA,31H

INCA

MOV31H,A

L14:

JBP1.0,S0;//同上//

JNBP1.0,$

JNBP2.4,S0

LCALLDEL05S

MOV25H,#00H

MOVA,25H

INCA

MOVB,A

CJNEA,B,S0

MOV25H,A

MOV30H,A

MOVA,31H

INCA

MOV31H,A

S0:

JBP2.0,s1;//判断第一个反对建是否被按下//

JNBP2.0,$;//等待按键弹起//

JNBP1.4,s1;//判断对应的同意键是否被按下//

LCALLDEL05S;//调用延时程序//

MOV26H,#00H;//将26H初始化//

MOVA,26H;//将值送入对应的存储空间//

INCA;//寄存器A的内容加1//

MOVB,A

CJNEA,B,S1;//与1比较//

MOV26H,A

MOVA,32H

INCA;//对寄存器A的内容加1//

MOV32H,A;//将寄存器A的值赋值给32H//

S1:

JBP2.1,S2;//同上面的S0程序的注释//

JNBP2.1,$

JNBP1.3,S2

LCALLDEL05S

MOV27H,#00H

MOVA,27H

INCA

MOVB,A

CJNEA,B,S2

MOV27H,A

MOVA,32H

INCA

MOV32H,A

S2:

JBP2.2,S3;//同上//

JNBP2.2,$

JNBP1.2,S3

LCALLDEL05S

MOV28H,#00H

MOVA,28H

INCA

MOVB,A

CJNEA,B,S3

MOV28H,A

MOVA,32H

INCA

MOV32H,A

S3:

JBP2.3,S4;//同上//

JNBP2.3,$

JNBP1.1,S4

LCALLDEL05S

MOV29H,#00H

MOVA,29H

INCA

MOVB,A

CJNEA,B,S4

MOV29H,A

MOVA,32H

INCA

MOV32H,A

S4:

JBP2.4,RT;//同上//

JNBP2.4,$

JNBP1.0,RT

LCALLDEL05S

MOV30H,#00H

MOVA,30H

INCA

MOVB,A

CJNEA,B,RT

MOV30H,A

MOVA,32H

INCA

MOV32H,A

RT:

AJMPL10;//跳转到L0程序循环检测各个按键是否被按下//

DEL05S:

MOVTMOD,#10H;//定时器T1,方式1//

MOVTL1,#0DCH;//送计数初值,保证定时时间为125ms//

MOVTH1,#0BH

MOVR2,#4;//设置软计数器,使4*125ms=0.5s//

SETBTR1;//启动定时计数器//

LOOP:

JNBTF1,$;//等待1ms定时到//

MOVTL1,#0DCH;//再送计数初值,保证定时时间始终为125ms//

MOVTH1,#0BH

CLRTF1;//清除溢出标志位,以便下次判断//

DJNZR2,LOOP;//等待0.5S延时到//

CLRTR1;//关闭定时器1//

RET;//延时程序返回//

INT_1:

SETBP0.5;//熄灭黄灯//

MOVA,31H;//将同意数赋值给寄存器A//

MOVB,A

MOVA,32H

CLRP0.0

CJNEA,B,LP;//比较同意数与反对数的大小//

MOVP0,#00H;//三个显示灯同时点亮//

SJMPOUT;//跳转到OUT程序//

LP:

JCGREEN;//判断溢出标志位Cy//

CLRP0.0;//点亮绿灯//

SJMPOUT;//跳转到OUT程序//

GREEN:

CLRP0.2;//点亮红灯//

OUT:

NOP;//空操作指令//

RETI;//中断返回//

END

五、制作调试说明

1、制作与程序设计思路:

将所设计的硬件电路焊接好,然后根据硬件电路的基本接法画出软件编程的流程图,然后根据流程图中的各个模块编写相应模块的程序,最后将各个模块综合起来构成说设计的程序。

2、调试过程与结果:

程序的编写过程:

1)、根据软件的流程图中的各个模块的基本要求,先编写出模块程序,使其实现模块功能;然后根据流程图中各个模块之间的箭头方向将各个模块联系在一起,最后对对整体程序进行调节,直至调试运行后没有逻辑错误与警告;

2)、将运行没有错误的程序导入模拟软件中进行仿真调试,首先发现不能实现预期的功能,于是对程序进行修改,直至调试成功,通过仿真能够实现预期的功能,则程序编写成功,可进行硬件电路的调试。

调试过程中出现的问题:

1)、将所编程的的程序烧写在单片机8051芯片中,然后将其加入硬件电路中,然后进行调试,发现不能实现其功能。

2)调整后继续进行调试,结果还是不能实现预期的功能,当按下的同意键大于反对建时,绿灯被点亮;但当按下的反对建大于同意键时,仍然显示绿灯,同意键等于反对建是也显示绿灯,也不能达到预期的功能;进一步对程序进行调试,但仍然不能解决问题。

然后对硬件电路进行检测发现有一个管脚虚焊,红灯也不能正常工作,于是将坏掉的元器件换掉后再进行调试后猜成功实现理想的功能。

六、操作使用说明

1、将汇编语言程序烧写进单片机8051芯片中,然后把芯片连接到硬件电路中;

2、按下开始按键(外部中断0)后开始表决,P1口上的按键为同意按键,P2口上的按键为反对按键,表决后按下结束按键(外部中断1),点亮相应的显示灯,绿灯表示同意大于反对总数,点亮红灯表示反对大于同意同意数。

七、总结

这次实训,主要实习任务是根据以前所学知识,设计单片机硬件电路,制作电路,自己编写汇编程序;并通过调试硬件电路和程序使其实现预期的功能。

这次实训让我真正的了解了单片机设计的基本设计理念,以及设计所需要掌握的一些基本概念。

同时更加巩固了我们所学习的知识,并将所学习的理论知识真正的应用于实践中。

我认为此次的实习对我是受益匪浅的,让我更加有了学习的动力。

当我所设计的电路经调试能够实现预期效果时,我的内心是无比的愉悦,虽然此次在调试过程中遇到了很多的问题,最终的结果页并不是那么理想,但我还是感觉很欣慰,因为这次实训让我了解到了平时学习中的不足,让我更谦虚的学习更多的知识。

虽然有很多地方是借鉴别人的,但我能够在调试过程中学到很多以前没有弄明白的问题以及相关知识点。

在这实训的二周里,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。

总之通过这次单片机实训,我们不但复习了过去所学,并且学到了一些新东西。

更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。

通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。

而这些才是我们作为一名工科学生最宝贵的财富。

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

当前位置:首页 > PPT模板 > 商务科技

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

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