《课程设计投票器设计说明书》由会员分享,可在线阅读,更多相关《课程设计投票器设计说明书(21页珍藏版)》请在金锄头文库上搜索。
1、单片机课程设计说明书 课题:班级投票显示器 专业:测控技术与仪器 班级:机122-1 姓名: 许铎 学号:201256502116 指导老师:王东兴 组员:贺茂森、段亚东、王向东烟台大学 机电汽车工程学院目录 第一章设计任务和内容 31.1 设计任务31.2 设计要求31.3 设计内容3第二章电路设计42.1 总体设计42.2 详细设计52.2.1 单片机引脚功能52.2.3时钟电路62.2.4复位电路72.2.5 数码管显示电路8第三章 程序设计与仿真103.1 投票显示系统总体功能实现102.2 系统流程图113.3 程序编写133.4 仿真与调试15第四章 总结和未来改进构想21 第一章
2、设计任务和内容 1.1 设计任务分组按照选定题目的设计任务,设计各种单片机应用系统,设计工作量至少要包含: (1) 用MCS-51单片机,12MHz时钟,常规的上电和手动复位电路; (2) 3个以上的按键; (3) LED或/和数码管或/和LCD显示及其接口;(4) 至少2路输入信号,可以是模拟量或数字量。1.2 设计要求 (1)设计一个投票系统,具有计票显示功能;(2)可实现6人同时进行投票,累计票数在显示器上显示;(3)主持人使用一个按键开关控制开始投票,终止投票和清零;(4)投票开始后每人能且仅能投一次票,多投无效; 1.3 设计内容 (1)编写项目功能说明书,确定应用系统的功能和具体参
3、数; (2)设计电路原理图;(3)编写C语言源程序,程序中加注必要的注解说明;(4)实物制作与调试; (5)编写设计说明书。第二章电路设计2.1 总体设计整个设计以AT89C51单片机为核心,点触开关控制信号通过单片机I/O口,单片机处理信号并将结果通过LED数码管显示,最终按键复位单片机。总体设计如下图。 信号源I/O口8051单片机LED数码管显示时钟电路 复位电路2.2 详细设计 2.2.1 单片机引脚功能 P0口 8位、漏极开路的双向I/O口。当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也
4、可做通用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外部程序存储器
5、访问允许信号EA.当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接VCC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。 PSEN 片外程序存储器读选通信号PSEN,低电平有效。在片外程序存储器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM时,PSEN 无效。 ALE/PROG低字节锁存信号ALE.在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。XTAL1 片内振荡器反向放大器和时钟发生线路的输入端。XTAL2 片内振荡器反相放大器和时钟
6、发生线路的输出端。 2.2.3时钟电路51系列单片机的时钟信号产生通常有两种方式,内部时钟方式和外部时钟方式 我们采用内部时钟方式,如图,引脚 XTAL是片内振荡器反向放大器和时钟发生线路的输入端。XTAL2是片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。 2.2.4复位电路 51系列单片机通常有上电复位和按键复位两种方式。我们采用了最简单的一种上电复位及按键复位电路如图所示,上电后,由于电容充电,使RESET持续一段时间的高电平,完成复位操作;当单片机处于运行中或死锁时,按下“复位”按钮,也可使单片机进入复位状态。通常选择C=1030uF, R=1001000。2
7、.2.5 数码管显示电路74LS2451Y1abcd efgdp1A11A21A31A42A12A22A32A4P1.1P1.01A21A11Y21Y11Y21Y31Y42Y12Y22Y32Y4aP1.21A31Y3fbP1.3 1A41Y4gP1.4 2A12Y11YecP1.52A22Y2dP1,6 2A32Y3dpP1,72A42Y41、数码管显示方式数码管有静态显示方式和动态显示方式,我们采用的共阴极七段数码管静态显示方式,如上图所示。就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。2、驱动电路74LS245芯片用作驱动的电路,用来驱动七段数码管,它是8路同相三态双向总
8、线收发器,可双向传输数据,8051单片机的P0口总线负载达到或超过P最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平时有效, AB接高电平时AB,低电平时BA第三章 程序设计与仿真 3.1 投票显示系统总体功能实现利用单片机设计投票显示系统,应先掌握单片机的结构与功能,在设计中充分利用好单片机各管脚,并配合外部电路,坚持简单易懂,节约成本的原则来设计电路。 2.2 系统流程图 为了简化程序的复杂度,使设计过程简单易懂,该系统将分成主程序和子程序设计,具体流程如下图。NY开始单片机P1口全置1P1.1=0?数码管显示不变,并不清零执行投票子程序,判断是否有键按下并显示票数
9、调用子程序 结束YP1.1=0?Y轮次置1P1.2=0?YN票数累加1,并此按键不再影响数据变化模仿上面步骤顺序判断P1.3P1.7口,并进行票数累加NP1.1=0?N退出投票子程序,但数据不清零3.3 程序编写按照上面流程图进行源程序编写,源程序如下:(1)主程序部分 #include reg51.h #includestdio.hsfr p2=0xa0;sfr p1=0x90;sfr p0=0x80;sbit P11=P11; /*位定义*/ sbit P12=P12;sbit P13=P13;sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=
10、P17;Unsigned; chardis11=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=disnum;p2=disnu; void main() P1=0xff; /*对P1口进行初始化*/ while(1) /*进入无限循环*/ if(!P11)
11、 /*判断总控开关,按下则执行以下程序*/ 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软件中,保存为.hex文件并编译,无误后可以再烧进仿真软件Proteus ISIS