课程设计投票器设计说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计
说明书
课题:班级投票显示器
专业:测控技术与仪器
班级:机122-1
:许铎
学号:201256502116
指导老师:王东兴
组员:贺茂森、段亚东、王向东
烟台大学
机电汽车工程学院
目录
第一章设计任务和内容 (3)
1.1 设计任务 (3)
1.2 设计要求 (3)
1.3 设计内容 (3)
第二章电路设计 (4)
2.1 总体设计 (4)
2.2 详细设计 (5)
2.2.1 单片机引脚功能 (5)
2.2.3时钟电路 (6)
2.2.4复位电路 (7)
2.2.5 数码管显示电路 (8)
第三章程序设计与仿真 (10)
3.1 投票显示系统总体功能实现 (10)
2.2 系统流程图 (11)
3.3 程序编写 (13)
3.4 仿真与调试 (15)
第四章总结和未来改良设想 (21)
第一章设计任务和内容
1.1 设计任务
分组按照选定题目的设计任务,设计各种单片机应用系统,设计工作量至少要包含:
〔1〕用MCS-51单片机,12MHz时钟,常规的上电和手动复位电路;
〔2〕 3个以上的按键;
〔3〕 LED或/和数码管或/和LCD显示及其接口;
〔4〕至少2路输入信号,可以是模拟量或数字量。

1.2 设计要求
〔1〕设计一个投票系统,具有计票显示功能;
〔2〕可实现6人同时进行投票,累计票数在显示器上显示;
〔3〕主持人使用一个按键开关控制开始投票,终止投票和清零;
〔4〕投票开始后每人能且仅能投一次票,多投无效;
1.3 设计内容
〔1〕编写项目功能说明书,确定应用系统的功能和具体参数;
〔2〕设计电路原理图;
〔3〕编写C语言源程序,程序中加注必要的注解说明;
(4)实物制作与调试;
〔5〕编写设计说明书。

第二章电路设计
2.1 总体设计
整个设计以AT89C51单片机为核心,点触开关控制信号通过单片机I/O 口,单片机处理信号并将结果通过LED 数码管显示,最终按键复位单片机。

总体设计如下列图。

2.2 详细设计
2.2.1 单片机引脚功能
·P0口 8位、漏极开路的双向I/O口。

当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。

在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。

P0口也可做通用I/O口使用,但需加上拉电阻。

作为普通输入时,应输出锁存器配置1。

·P1口 8位、准双向I/O口,具有内部上拉电阻。

P1口是为用户准备的I/O双向口。

在编程和校验时,可用作输入低8位地址。

用作输入时,应先将输出锁存器置1。

·P2口 8位、准双向I/O口,具有内部上拉电阻。

当使用外存储器或外扩I/O口时,P2口输出高8位地址。

在编程和校验时,P2口接收高字节地址和某些控制信号。

·P3口 8位、准双向I/O口,具有内部上拉电阻。

P3口可作为普通I/O口。

用作输入时,应先将输出锁存器置1。

在编程/校验时,P3口接收某些控制信号。

·RST 复位输入信号,高电平有效。

·EA/VPP外部程序存储器访问允许信号EA.当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接VCC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。

·PSEN 片外程序存储器读选通信号PSEN,低电平有效。

在片外程序存储器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM 时,PSEN 无效。

·ALE/PROG低字节锁存信号ALE.在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。

·XTAL1 片内振荡器反向放大器和时钟发生线路的输入端。

·XTAL2 片内振荡器反相放大器和时钟发生线路的输出端。

2.电路
51系列单片机的时钟信号产生通常有两种方式,内部时钟方式和外部时钟方式我们采用内部时钟方式,如图,引脚 XTAL是片内振荡器反向放大器和时钟发生线路的输入端。

XTAL2是片内振荡器反相放大器的输出端。

当使用片内振荡器时,外接石英晶体和微调电容。

2.复位电路
51系列单片机通常有上电复位和按键复位两种方式。

我们采用了最简单的一种上电复位及按键复位电路如下图,上电后,由于电容充电,使RESET持续一段时间的高电平,完成复位操作;当单片机处于运行中或死锁时,按下“复位”按钮,也可使单片机进入复位状态。

通常选择C=10~30uF, R=100~1000Ω。

2. 数码管显示电路
1、数码管显示方式
数码管有静态显示方式和动态显示方式,我们采用的共阴极七段数码管静态显示方式,如上图所示。

就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。

2、驱动电路
74LS245芯片用作驱动的电路,用来驱动七段数码管,它是8路同相三态双向总线收发器,可双向传输数据,8051单片机的P0口总线负载到达或超过P最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平时有效,AB
接高电平时A→B,低电平时B→A
第三章程序设计与仿真
3.1 投票显示系统总体功能实现
利用单片机设计投票显示系统,应先掌握单片机的结构与功能,在设计中充分利用好单片机各管脚,并配合外部电路,坚持简单易懂,节约成本的原则来设计电路。

2.2 系统流程图
为了简化程序的复杂度,使设计过程简单易懂,该系统将分成主程序和子程序设计,
具体流程如下列图。

3.3 程序编写
按照上面流程图进行源程序编写,源程序如下:
〔1〕主程序部分
#include "reg51.h"
#include"stdio.h"
sfr p2=0xa0;
sfr p1=0x90;
sfr p0=0x80;
sbit P11=P1^1; /*位定义*/ sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
Unsigned; char
dis[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x00};
/*定义字型表*/ unsigned char num,num2,num3,num4,num5,num6,num7;
char nu=0;
void scan();
void disp() /*显示子程序*/ { num=num2+num3+num4+num5+num6+num7;
p0=dis[num];
p2=dis[nu];
}
void main()
{ P1=0xff; /*对P1口进行初始化*/
while(1) /*进入无限循环*/
{if(!P11) /*判断总控开关,按下则执行以下程序*/
{num=0;nu++;scan();} /*扫描按键,执行scan()子程序*/ else
{num2=0;num3=0;num4=0;num5=0;num6=0;num7=0;}
/*无按键输入则显示0*/
}
}
void scan()
{
while(!P11) /*判断总控开关是否一直保持接通状态,接通则进行投票过程循环,否则不执行程序,即投票按键无效*/
{ if(!P12)
{ num2=1;while(!P12);} /*对投票按键P1进行判断,按下则累加1并维持不变*/
if(!P13)
{ num3=1;while(!P13);}
if(!P14)
{ num4=1;while(!P14);}
if(!P15)
{ num5=1;while(!P15);}
if(!P16)
{ num6=1;while(!P16);}
if(!P17)
{ num7=1;while(!P17);}
disp();
}
} 子程序部分完成投票判断、票数累加工作。

3.4 仿真与调试
将源程序输入进Keil软件中,保存并编译,无误后可以再烧进仿真软件Proteus ISIS文件中的单片机AT89C51中,方可运行仿真电路。

单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。

仿真过程如下
1、接通总控开关,此时所有人投票有效,并可看见票数显示器显示“0”,轮次显示器显示“1”投票第一轮开始,进入投票阶段,如图
2、任意按下一个投票按键如P3,此时票数显示器示数字变成“1”,轮次显示器“1”不变,如图
3、按另一个P5,票数LED灯变成“2”,如图
4、此时再次按下第一次按过的按键P3,显示器仍保持数字“2”,即完成每个按键只能投票一次的功能。

如图
5、最后将总控开关断开,可看到显示器没有变化,可以继续显示投票结果,再次接通总控,可发现票数显示器又回到初始阶段“0”,轮次显示器显示“2”,即进入第二轮投票,如图
6、假设此后有4人投票,则票数显示器显示“4”,而轮次显示器“2”不变。

即票数完成清零并进入新一轮投票阶段,如图
7、所有投票结束后按下轮次复位按钮,则所有显示器回复初始状态,仿真成功。

第四章总结和未来改良设想
总结:
通过本次课程设计不仅加强了对我们所学的单片机知识的认识,还掌握了Proteus电路图仿真软件和Keil编程软件等专业软件的应用。

通过实物制作,还很好的锻炼了我们的动手能力和团队合作的能力,在课设过程中,我们遇到了一些问题,比方仿真时P0口接的数码管不亮,经过我们的讨论和几次试验,我发现是上拉电阻阻值过大,我们及时改正,解决了这个问题。

还有在中期答辩时,我们忽略了驱动电路的问题,导致数码管显示电路出现错误,亮度不够,后来在老师的指导和我们对课本上的知识深入学习后修改了电路,解决了这一问题。

我觉得我们要扎实的掌握所学的知识的同时还要学会查资料,同时还要及时与老师交流,注重团队合作,这样才能把事情做得更好。

未来改良设想:
我们在课程设计的过程中也做了创新,增加LED显示器显示投票轮数;我们觉得还可以在每个投票环节上增加投票状态〔可以发光用二极管〕确认是否投票成功,以及是否可以投票。

还可以设计上计时功能,以保证在规定时间内完成投票。

21。

相关文档
最新文档