单片机表决器实训报告文档格式.docx

上传人:b****6 文档编号:20081438 上传时间:2023-01-16 格式:DOCX 页数:13 大小:180.38KB
下载 相关 举报
单片机表决器实训报告文档格式.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

为设计的是5人表决器,参加表决的人总的需要10个按键,没人两个,“赞成”和“反对”,分

对应高电平和低电平,高电平的按键一端接单片机一端接VCC,低电平的按键一端接单片机,一端接地。

由于单片机内部的P1口语P2口都有上拉电阻。

所以一般选用P1口或P2口,再次我选用P2口做为输入端口。

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

设计中要求有三盏灯,分别为黄灯,绿灯和红灯,三盏灯用于输出显示,因此可以用单片机的I/O口输出,可以用P2口最为输出口,还需要一盏灯检测单片机是否上电接在单片机VCC处,所以总共需要4盏灯。

在扩展时加上了显示“反对”或“赞成”的票数,也属于输出显示,可以通过接上电阻在接上数码管显示

2.元件参数

设计中要求有4盏灯,一盏作输出显示,一盏作上电显示,有与接上的电压为+5V,二极管的压降2V,所以必须接上限流电阻,在此我选用510欧的限流电阻,再将单片机的最小系统加入电路,还需要接上数码管,由P0.0~P0.7分别送出LED的a-dp显示字段码,P2.7和P2.6则输出字位码,用来控制第几位显示。

LED共阳极。

3.电路图如图所示

4.电路的工作原理

此电路是基于硬件电路,应用汇编语言设计出它的工作流程,硬件电路时用软件程序来检测表决开始是否被按下,如果开始键被按下,则通过软件汇编来检测表决的按键是否赞成或反对或无效,然后再检测结束按键是否被按下,如果反对按键被按下,则表示表决技术,再通过P0口输出在数码管上显示投票结果。

5.元件明细

元件名称

元件数目

元件型号

元件参数

备注

按键开关

12个

接对角线

电容

3个

一个电解电容,两个瓷片电容

电解电容22uf,瓷片电容30uf

电解电容长脚为正,此片无正负之分

发光二极管

4个

一红,一绿,一黄,其他

显示灯

晶振

1个

12M

内部时钟电路

电阻

19

7个510欧,12个470欧,1个10K欧

用于限流

单片机芯片

1片

AT89S51

40脚

电源插头

数码管

10脚有两个com端

三极管

S9012

各元件的作用:

开关:

十个分别用于5个人的同意与反对按键,两个用于主持人的开始于结束按键。

电容:

用于单片机的最小系统中。

发光二级管:

用于显示表决开始,结束,赞成,反对和上电与否。

电阻:

用来限制电流。

单片机芯片:

实现软件的编程与烧写。

数码管:

显示赞成与反对票数。

电源插头:

用于接外接电源。

四.软件设计

1软件设计思路

在硬件电路中,由于硬件电路中显示灯是接在P2口的三个端口,用于输出,且二极管为共阳极的接法,则单片机的程序设计中要是灯亮必须为低电平有效,由于程序中用到中断源,所以要打开中断源;

模块设计时可用查询方式检测开始按键是否被按下,如果按下测黄灯点亮,开始此奥巨额,再用查询方式检测刻个按键是否被按下,如果按下则检测对应的反对按键是否被按下,则表示无效即为弃权,跳转到下一个按键检测程序继续检测,一次检测各个按键的情况,检测对应的同意或反对时,相应的同意数或反对数加一,数码管的初始显示设置为0,用外部中断1来表示结束按键,当中断来临时取出同意与反对的统计数进行比较,比较后点亮相应的显示灯。

2程序流程图

3总体框架结构介绍

初始化模块:

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

检测开始按键:

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

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

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

延时程序:

用于小穿件的机器抖动,调用的延时程序为0.5s;

中断处理:

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

4软件的总体

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

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

(3)等待中断,等待结束按键按键被按下,在中断处理中将同意与反对数进行比较,

(4)亮相应的显示灯,送入数码管显示出来。

5程序段事例

在此升序中关键是开中断,只有先开中断程序才能继续执行,否侧将进入死循环

SETBEA;

开中断

SETBEX1;

开外部中断1

SETBIT1;

设置外部中断1为边缘触发方式

JBP3.2,$

6程序清单

ORG0000H

AJMPMAIN;

转主程序

ORG0013H;

外部中断1的入口地址

AJMPINT_1;

跳转到中断

ORG0100H

MAIN:

MOVSP,#60H;

给地址指针赋初值

MOVA,#OFFH

MOVP1,A;

给P1口赋初值

MOVP2,A;

给P2口赋初值

MOVP0,A;

给P0口赋初值

JBP3.2,$;

等待外部中断0上的按键按下

LCALLDEL05S;

调用延时程序

JNBP3.2,$;

等待按键弹起

CLRP2.0;

点亮黄灯

L01:

JBP1.4,L11;

判断按键P1.4口上的按键是否被按下

JNBP1.4,$;

JNBP1.4,L11;

检测对应的反对按键是否被按下

MOV21H,#00H

MOVA,21H;

21H中存储第一个同意按键的按下数

INCA;

对211地址单元中的值加1

MOVB,A

MOVA,#01H

CJNEA,B,L11;

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

MOV21H,A;

21H中存储第一个反对按键的按下数

MOV31H,#00H

MOVA,31H

对31H中的同意数加1

MOV31H,A

L11:

JBP1.3,L12;

检测按键是否被按下

JNBP1.3,$;

JNBP1.3,L12;

LCALLDEL05S

MOV22H,#00H

MOVA,22H

INCA

CJNEA,B,L12

MOV22H,A

MOV31H,A

L12:

JBP1.2,L13

JNBP1.2,$

JNBP2.2,L13

MOV23H,#00H

MOVA,23H

CJNEA,B,L13

MOV23H,A

MOVA,31H

L13:

JBP1.1,L14

JNBP1.1,$

JNBP1.1,L14

LCALLDEL05S

MOV24H,#00H

MOVA,24H

CJNEA,B,L14

MOV24H,A

L14:

JBP1.0,S0

JNBP1.0,$

JNBP1.0,S0

MOV25H,#00H

MOVA,25H

 

CJNEA,B,S0

MOV25H,A

MOV31H,A

S0:

JBP1.4,S1

JNBP1.4,$

JNBP1.4,S1

MOV26H,#00H

MOVA,26H

CJNEA,B,S1

MOV26H,A

MOV32H,#00H

MOVA,32H

MOV32H,A

S1:

JBP1.3,S2

JNBP1.3,$

JNBP1.3,S2

MOV27H,#00H

MOVA,27H

CJNEA,B,S2

MOV27H,A

S2:

JBP1.2,S3

JNBP1.2,S3

MOV28H,#00H

MOVA,28H

CJNEA,B,S3

MOV28H,A

S3:

JBP1.1,S4

JNBP1.1,S4

MOV29H,#00H

MOVA,29H

CJNEA,B,S4

MOV29H,A

S4:

JBP1.0,RT

JNBP1.0,RT

MOV30H,#00H

MOVA,30H

CJNEA,B,RT

MOV30H,A

RT:

AJMPL10;

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

DEL05S:

MOVTMOD,#10H;

定时器T1,方式1

MOVTL1,#0DCH;

送计数初值,保证定时时间为125ms

MOVR2,#4;

设置软计数器,使4*125ms=0.5s

SETBTR1;

启动定时计数器

LOOP:

JNBTF1,$;

等待1ms定时到

MOVTL1,#0BH

CLRTF1;

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

DJNZR2,LOOP;

等待0.5s延时到

CLRTR1;

关闭定时器1

RET;

延时程序返回

INT_1:

SETBP2.0;

熄灭黄灯

CLRP0.0

CJNEA,B,LP;

比较同意数与反对数的大小

MOVP0,#00H;

三个显示灯同时点亮

SJMPOUT;

跳转到out程序

LP:

JCGREEN;

判断溢出标志位Cy

CLRP0.0;

点亮绿灯

GREEN:

CLRP0.2;

点亮红灯

OUT:

NOP;

空操作指令

RETI;

中断返回

END

数码管显示程序清单:

ORG0000HLOOP:

MOVR2,#0MOVR7,#13L0:

MOVR4,#7FHMOVDPTR,#TABL1:

MOVA,R2MOVCA,@A+DPTRMOVP0,AMOVA,R4MOVP2,AACALLDEL1SINCR2JNBACC.4,L0RRAMOVR4,ADJNZR7,L1SJMPLOOPTAB:

DB0C0H,0F9H,0A4H,0B0HDB99H,92H,82H,0F8HDB80H,90H,88H,83HDB0C6H,0A1H,86H,8EH,0FFHDEL1S:

MOVR3,10DEL1:

MOVR4,#50DEL2:

MOVR5,#60DEL3:

DJNZR5,DEL3NOPDJNZR4,DEL2DJNZR3,DEL1RETEND

五.制作调试

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

应当注意当按下开关时,接的是低电平,因此在编辑程序时不要弄反以免出现错误。

六.心得体会

通过此单片机课题的选定,编程,调试,仿真到最后完成论文,心情是喜悦并且激动的,觉得做好一件事情并不是那么容易,关键是要看你对这件事情的态度问题,通过这次课题实验,我也对单片机这门课有了更加深刻的认识,它的用途,它的功能,它的方便之处,都通过这几天的研究得到了体会,而且对知识的巩固也起到了一定的作用。

这次论文课题的编写,还有一个重要的认识就是,要学好一门课很容易,但是要真正能把它运动到实际中就难了,掌握一定的理论知识并且会做题还不够,关键是要怎么样去利用,所以,在今后的学习生活中,我要学会学以致用。

另外,单片机是建立在C语言的基础之上,因此可知大学所学的课程时相互关联的,学好每一门课是非常重要的,作为物理专业的同学,我们更应该熟练操作并且掌握好这门功课,这对以后的不管是毕业论文还是所学知识都是很有帮助的。

七.参考文献

《单片机原理及接口技术》胡键主编机械工程出版社

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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