单片机课程设计报告

发布 2022-10-06 08:00:28 阅读 2956

1)、可供5—7个人进行表决,每个人有一个“同意”和一个“反对”按键,故一个人需要两个按键,由于单片机的4个i/o口中只有三组的端口全部可用,p3口中的部分端口可用,且p0口内部无上拉电阻,需在外部接上拉电阻,使得硬件电路复杂化,因此除去两组i/o口后可用的只有16个端口,且三个显示灯也接在p2口,因此此次设计的是5人表决器,因此需要5个按键表示同意,5个按键表示反对;表决时两个键先按下的一个有效,同时按下则表示无效,每次表决每个按键只能是第一次按下的有效,多按的次数无效,由于是用单片机设计表决器,而单片机是硬件电路与软件设计相结合的一种电路设计,因此在硬件电路只能实现按键的按下与释放,不能智能的实现检测按键被按下几次,因此该部分可用软件的汇编设计来实现其功能。

2)会议主持人可利用按键控制表决的开始与结束,该功能可用两个外部中断端口接按键来实现,按下外部中断0的按键表示表决开始,点亮黄灯用于显示表决开始,按下外部中断1表示表决结束,熄灭黄灯表示结束,并将表决结果用红灯与绿灯显示,由于有弃权和同时按下按键无效的情况,则表决结果有可能相等,也有可能不相等。当不相等时,“同意”多于“反对”点亮绿灯,“同意”少于“反对”则点亮红灯,当表决结果相等时,即“同意”等于“反对”时,绿灯与红灯都被点亮。

3)在实现上述功能的基础上增加“同意”数和“反对”数的显示。但由于设计时i/o端口不够用且没有译码器,因此该功能可省略。

根据设计题目的要求与分析,最终确定设计题目为5人表决器。该表决器主要功能必须由硬件电路与软件设计共同工作才能将表决器的功能完美的体现出来。

此次设计的题目是表决器,要求设计的是5—7人的表决器,因此选择设计的题目为5人表决器;因此需要5个按键表示同意,5个按键表示反对,且应将各按键与单片机的输入端口相连接,因此可选用单片机的四个i/o口,由于单片机内部的p1口与p2口均有上拉电阻,而p0口内部没有上拉电阻,因此需要在p0口的外部接上拉电阻。在此次设计中为使设计电路简单化,由于当采用p0口时且把该组i/o口当做输入端时须在其外部接上拉电阻,因此选用p1口与p2口作为同意与反对按键的输入端。又表决的开始与结束是由主持人来控制的,因此需要两个按键来表示表决的开始与结束,因此可采用外部中断0与外部中断1来控制表决的开始于结束。

又由于此次单片机的最小系统中采用的是手动复位也需要一个按键;故设计总共需要按键13个。设计要求中需要三盏灯,分变为黄灯,绿灯和红灯,三盏灯用于输出显示,因此也可以征用单片机的i/o口,由于p1口与p2口作为同意与反对按键的输入端且p0口当做输出端口时可以不用接上拉电阻,因此可将三个显示灯接在p0口用于显示表决的结果。

设计要求中需要三盏灯,分变为黄灯,绿灯和红灯,三盏灯用于输出显示,因此也可以征用单片机的i/o口,由于是5人表决器,即p2口的8个端口只占用了其中的5个,而p0口的输出端输出的高电平一般为5v左右,因此可选用其中的3个端口用于输出,与显示灯相连接,但由于输出端口输出的高电平一般为5v的电压,由于发光二极管对电流有一定的限制,即最大电流为5ma,因此需要用到限流电阻,而发光二极管可认为降2v的电压,则限流电阻上的压降为3v,那么限流电阻的最小阻值为r=3v/5ma=600欧姆,但是由于外接电阻太大时会影响输出端口输出的电平,从而使得输出电平小于5v,则发光二极管的发光将不太明显,因此选用与计算值相接近阻值且偏小的电阻,我选用的电阻为560欧姆的限流电阻。然后将单片机的最小系统(最小系统中各元器件的参数可参考单片机课本中给出的值)加入电路中就是此次设计的硬件电路。

各元器件的作用:

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

电容:用于单片机的最小系统;

发光二极管:黄灯用于显示表决的开始与结束,红灯与绿灯用于显示表决的结果;

电阻:用于限制电流;

8051芯片:软件编程;

电源接头:用于接外接电源。

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

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

最终达到设计的基本目标,设计完成其所要求的电路的基本功能。

1)、软件初始化:

根据硬件电路的开关与显示灯的接法对单片机进行初始值的设计,由于硬件电路中显示灯接在p0口的三个端口,用于输出,且二极管为共阳的接法,则在单片机的程序设计中要想点亮显示灯需将显示灯的对应端口置0,即低电平有效;由于除了复位按键以外的所有按键的一端接i/o口,另一端都接地,因此也为低电平有效;因此对单片机进行初始化时可以不对i/o口进行初始化;程序中用到中断源,因此要打开总中断源和相应的中断源。

2)、模块设计思路与各模块之间的联系:

用查询的方式检测开始按键是否被按下,如果按下则点亮黄灯,开始表决,用查询的方式检测各个同意按键是否按下,如果按下则检测对应的反对按键是否也被按下,是则无效,跳转到下一个按键的检测程序进行检测,就这样依次检测各个按键的情况;否则给对应的同意数或是反对数加一;简单检测完一遍各个按键后再跳转到第一个监测程序进行循环检测,直至中断到来才停止检测,因此为确保只有第一次按下的按键有效,用比较指令将寄存器中的值与1比较,确保只有第一次按下的按键有效。最终将同意的个数存在31h中,将反对的统计个数存在32h中。用外部中断1(采用中断方式)来表示结束按键,当中断到来时取出同意与反对的统计个数并进行比较,比较后点亮对应的显示灯。

3)、设计模块:

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

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

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

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

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

软件的总体功能是:1.用于检测开始按键是否被按下,按下则表决按键按下才有效,即开始表决;2.

开始表决后循环检测对应的同意与反对按键是否被按下,并统计同意总数与反对总数;3.等待中断,即等待结束按键被按下,在中断处理中将同意与反对数进行比较,并点亮相应的显示灯,程序结束。

大于。等于。

小于。org 0000h

ajmp main转主程序//

org 0013h外部中断1的入口地址//

ajmp int_1跳转到中断//

org 0100h

main: mov sp,#60h给地址指针赋初值//

mov a,#0ffh

mov p1,a给p1口赋初始值。

mov p2,a给p2口赋初始值//

mov p0,a给p0口赋初始值//

setb ea开中断//

setb ex1打开外部中断1//

setb it1设置外部中断1为边沿触发方式//

jb p3.2等待外部中断0上的按键按下//

lcall del05s调用延时程序//

jnb p3.2等待按键弹起//

clr p0.5点亮黄灯//

l10: jb p1.4,l11判断按键p1.4口上的按键是否被按下//

jnb p1.4等待按键弹起//

jnb p2.0,l11检测对应的反对按键是否被按下//

lcall del05s调用延时程序//

mov 21h,#00h

mov a,21h21h中存储第一个同意按键的按下数//

inc a ;/对21h地址单元中的值加1//

mov b,a

mov a,#01h

cjne a,b,l11 ;/将寄存器a中的值与1比较,保证只有第一次按下才有效//

mov 21h,a26h中存储第一个反对按键的按下数//

mov 31h,#00h

mov a,31h

inc a

mov 31h,a对31h中的同意数加1

l11: jb p1.3,l12 ;/检测按键是否被按下//

jnb p1.3等待按键弹起//

jnb p2.1,l12 ;/判断对应的反对建是否被按下//

lcall del05s调用延时程序//

mov 22h,#00h

mov a,22h同l10注释,下同//

inc amov b,a

cjne a,b,l12

mov 22h,a

mov a,31h

inc amov 31h,a

l12: jb p1.2,l13 ;/同上//

jnb p1.2,$

jnb p2.2,l13

lcall del05s

mov 23h,#00h

mov a,23h

inc amov b,a

cjne a,b,l13

mov 23h,a

mov a,31h

inc amov 31h,a

l13: jb p1.1,l14 ;/同上//

jnb p1.1,$

jnb p2.3,l14

lcall del05s

mov 24h,#00h

mov a,24h

inc amov b,a

cjne a,b,l14

mov a,31h

inc amov 31h,a

l14: jb p1.0,s0同上//

jnb p1.0,$

jnb p2.4,s0

lcall del05s

mov 25h,#00h

mov a,25h

inc amov b,a

cjne a,b,s0

mov 25h,a

mov 30h,a

mov a,31h

inc amov 31h,a

s0: jb p2.0,s1判断第一个反对建是否被按下//

jnb p2.0等待按键弹起//

单片机课程设计报告

单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....

单片机课程设计报告

韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...

单片机课程设计报告

南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...