单片机课程设计
说明书
课题: 班级投票显示器
班级:指导老师:刘鹏
同组成员:赵庆栋、赵泽峰、张涛、钟伟宝、郭宁、吕义超、吴建科
烟台大学
机电汽车工程学院
目录
前 言...............................................................................3
第一章 绪 论.................................................................4
1.1 概述.......................................................................................4
1.2 设计目的...............................................................................4
1.3 设计任务和内容...................................................................4
第二章 总体设计及核心器件简介..............................6
2.1 总体设计...............................................................................6
2.2 MCS-51单片机....................................................................6
2.3 LED数码显示器..................................................................10
2.4 发光二级管...........................................................................13
第三章 投票显示系统电路设计与仿真.....................14
3.1 投票显示系统总体功能实现..............................................14
3.2 系统流程图..........................................................................15
3.3 程序编写..............................................................................17
3.4 仿真与调试..........................................................................19
前言
单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已渗透到
各种嵌入式系统中。毫不夸张地说:掌握单片机技术信息类学生就业的一个重要
条件。同时单片机技术又是一门实践性很强的学科。课程设计教学环节的设计和
实施,在很大程度上决定了我们对单片机的掌握程度。为了更好的完成课程设计
这一重要教学环节,我们采用Proteus软件与Keil软件整合构建单片机虚拟实
验平台。首先在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的
功能完成电路分析,系统调试和输出现实的硬件设计部分,同时在Keil软件中
编制程序,进行相应的编译和仿真,完成系统的软件设计部分。当系统的设计工
作完成后,就可以在PC上看到最终的运行效果。最后在通过Proteus设计PCB,
在完成真正硬件的调试。
采用以上方案具有以下优势:有利于促进课程和教育改革,更有利于人才的
培养;从经济性、可移植性、可推广性角度讲,建立这样的课程设计平台是非常
有意义的,利用仿真系统,可以节约开发时间和开发成本,利用仿真系统具有很
大的灵活性和可扩展性。
第一章 绪论
1.1 概述
目前投票显示系统电路的应用可以说非常广泛,班级投票,公司竞选,文娱
节目等许多不记名投票活动都经常会用到各式各样的投票器,虽然这些投票器外
观和样式都有所不同,功能可能也有多有少,但他们的原理都大同小异。因此现
将基本原理熟练掌握,以后再进行功能扩展就简单易行了。
本文论述了利用单片机制作投票系统的全过程,包括阐述该系统的基本工作原
理,利用WAVE软件进行程序编与调试和Proteus ISIS仿真软件进行电路模拟仿
真,实物制作与调试。
1.2 设计目的
(1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、
设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正应用。
(3)把理论知识好实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
1.3 设计任务和内容
1.3.1 设计任务
分组按照选定题目的设计任务,设计各种单片机应用系统,设计工作量至少
要包含:
(1) 用MCS-51单片机,12MHz时钟,常规的上电和手动复位电路;
(2) 3个以上的按键;
(3) LED或/和数码管或/和LCD显示及其接口;
(4) 至少2路输入信号,可以是模拟量或数字量。
1.3.2 设计要求
(1)设计一个投票系统,具有计票显示功能;
(2)可实现6人同时进行投票,累计票数在显示器上显示;
(3)主持人使用一个按键开关控制开始投票,终止投票和清零;
(4)投票开始后每人能且仅能投一次票,多投无效;
创新:(1)增加发光二极管显示有效性;
(2)增加LED显示器显示投票轮数;
1.3.3 设计内容
(1)编写项目功能说明书,确定应用系统的功能和具体参数;
(2)设计电路原理图;
(3)编写汇编语言或C语言源程序,程序中加注必要的注解说明;
(4)编写设计说明书。
第二章总体设计及核心器件简介
2.1 总体设计
整个设计以AT89C51单片机为核心,点触开关控制信号通过单片机I/O口,
单片机处理信号并将结果通过LED数码管显示。以发光二极管显示信号输入的有
效性,最终上电复位单片机。总体设计如下图。
2.2 MCS-51单片机
2.2.1 AT89C51单片机内部结构
AT89C51是一种低电压,高性能CMOS 8位单片机,采用ATMEL公司的高密度、
非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器
(CPU)和4K字节FLASH(FPEROM—Flash Programmable and Erasable Read Only
Memory)存储单元,功能强大AT89C51单片机可为您提供许多高性能比的应用场
合,可灵活应用在各种控制领域。
单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL
高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管
脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL
的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51
单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机的主要工作特性:
·内含4KB的FLASH存储器,擦写次数1000次;
·内含28字节的RAM;
·具有32根可编程I/O线;
·具有2个16位可编程定时器;
·具有6个中断源、5个中断矢量、2级优先权的中断结构;
·具有1个全双工的可编程串行通信接口;
·具有一个数据指针DPTR;
·两种低功耗工作模式,即空闲模式和掉电模式;
·具有可编程的3级程序锁定定位;
AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.
AT89C51各部分的组成及功能:
图2-1
还有,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工
作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断
系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有
部件工作直到出现下一个硬件复位。
2.2.2 AT89C51单片机的引脚说明
1. 引脚排列及功能
AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。
(1)I/O口线 ·P0位、漏极开路的双向I/O口。
当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在
编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口
也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置
1。P0口可驱动8个TTL负载。
·P1口 8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位
地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。
·口 8位、准双向I/O口,具有内部上拉电阻。
当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,
P2口接收高字节地址和某些控制信号。
·P3口 8位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/
校验时,P3口接收某些控制信号。它可驱动4个TTL负载。
图2-2 引脚位置
(2)控制信号线
·RST 复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。
·EA/VPP 外部程序存储器访问允许信号EA.
当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接VCC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。在编程时,该引脚可接编程电压5V或12V。在编程校验时,该引脚可接VCC。
·PSEN 片外程序存储器读选通信号PSEN器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM时,PSEN 无效。
·ALE/PROG 低字节锁存信号ALE.在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。此外,ALE端连续输出正脉冲,频率为晶振频率的1/6,可做外部定时脉冲使用。
(3)外部晶振引线
·XTAL1 片内振荡器反向放大器和时钟发生线路的输入端。使用片内振
荡器时,连接外部石英晶体和微调电容。
·XTAL2 片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。
2.2.3 AT89C51单片机复位方式
8051的复位方式可以是自动复位(左图),也可以是手动复位(右图),见下图 。此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据部丢失。
图2-2 图2-3
此投票器使用自动复位如图2-2
2.3 数码管
LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电
极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类, LED数码管有共阳极和共阴极两种结构。如下图
了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。共阴和共阳极数码管的内部电路发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图。 图2-3-1 这是一个7段两位带小数点 10引脚的LED数码管
图 2-3-1引脚定义
每一笔划都是对应一个字母表示 DP是小数点.
图 2-3-2 共阴极LED数码管的内部结构原理图
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
表1.1 显示数字对应的二进制电平信号
2.4 发光二级管
发光二极管正向导通,反向截止,当通入正向电时发光。
图2-5
第三章 投票显示系统电路设计与仿真
3.1 投票显示系统总体功能实现
利用单片机设计投票显示系统,应先掌握单片机的结构与功能,在设计中充分利用好单片机各管脚,并配合外部电路,坚持简单易懂,节约成本的原则来设计电路。
图3-1投票显示系统电路原理图
如图3-1所示,投票显示系统电路的核心是单片机AT89C51。单片机的P1.0口引脚接1个单刀单置开关,作为总控开关,控制投票系统的开始、停止和清零工作;单片机的P1.1口引脚接按键式开关,作为控制投票轮次的复位开关;P1.2
—P1.7接6个按键式开关,作为投票者的投票按键,并在总控开关上并联一发光二极管和非门串联的电路,当此发光二极管发红光时所有人投票有效,并在各投票按钮处设置蓝色发光二极管,发光时作为该投票的确认信号。单片机的P0.0—P0.6口7个引脚接LED共阴显示器的段选码(a、b、c、d、e、f、g)的引脚上,实现LED显示器的显示字符(即显示票数),电阻主要起限流作用。RST引脚接自动复位电路;XTAL1与XTAL2引脚接时钟电路。P2口与LED显示器相接,用于显示投票轮次。
3.2 系统流程图
为了简化程序的复杂度,使设计过程简单易懂,该系统将分成主程序和子程序设计,
具体流程如下图。
3.3 程序编写
按照上面流程图进行源程序编写,源程序如下: (1)主程序部分 #include "reg51.h" #include"stdio.h" sfr p2=0xa0; sfr p1=0x90; sfr p0=0x80;
sbit P10=P1^0; /*位定义*/ 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 disp() /*显示子程序*/ { num=num2+num +num4+num5+num6+num7; if(!p11) nu=1; p0=dis[num]; p2=dis[nu]; } main()
{ P1=0xff;P11=1; /*对P1口进行初始化*/
while(1) /*进入无限循环*/ {if(!P10) /*判断总控开关,按下则执行以下程序*/ {num=0;nu++;scan();} /*扫描按键,执行scan()子程序*/ else
{num2=0;num3=0;num4=0;num5=0;num6=0;num7=0;}
/*无按键输入则显示0*/ } }
这部分程序主要完成在总控开关控制下的开始投票、暂停投票和清零工作。 (2)子程序部分 scan() {
while(!P10) /*判断总控开关是否一直保持接通状态,接通则进行投
票过程循环,否则不执行程序,即投票按键无效*/
{ 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 仿真与调试
将源程序输入进111111软件中,保存为.hex文件并编译,无误后可以再烧进仿真软件Proteus ISIS文件中的单片机AT89C51中,方可运行仿真电路。单击仿真运行开始按钮
,我们能清楚地观察到每一个引脚的电频变化,红色代表高电
频,蓝色代表低电频。
a b
c
d
e f
g
仿真过程如图,接通总控开关,最高处发光二极管发红光,既此时所有人投票有效,并可看见票数显示器显示“0”,轮次显示器显示“1”投票第一轮开始,进入投票阶段,如图(a);然后任意按下一个投票按键如P3,同时可看到p3处发光二级管闪烁一次蓝光,即投票有效,此时票数显示器示数字变成“1”,轮次显示器“1”不变,如图(b);再按另一个P5,二极管闪烁蓝光后票数LED灯变成“2”,如图(c);此时再次按下第一次按过的按键P3,显示器仍保持数字“2”,如图(d);即可完成每个按键只能投票一次的功能。最后将总控开关断开,可看到显示器没有变化,可以继续显示投票结果,但红色发光二极管终止发光,此后在投票无效,
再次按任意投票按键,投票显示器无反映,即完成投票暂停功能。再次接通总控,可发现票数显示器又回到初始阶段“0”,轮次显示器显示“2”,即进入第二轮投票,如图(e),若此后有4人投票,则票数显示器显示“4”,而轮次显示器“2”不变。即票数完成清零并进入新一轮投票阶段,如图(f),所有投票结束后按下轮次复位按钮,则所有显示器回复初始状态,如图(g),最终出现这个过程就已经意味着系统仿真成功!
21
单片机课程设计
说明书
课题: 班级投票显示器
班级:指导老师:刘鹏
同组成员:赵庆栋、赵泽峰、张涛、钟伟宝、郭宁、吕义超、吴建科
烟台大学
机电汽车工程学院
目录
前 言...............................................................................3
第一章 绪 论.................................................................4
1.1 概述.......................................................................................4
1.2 设计目的...............................................................................4
1.3 设计任务和内容...................................................................4
第二章 总体设计及核心器件简介..............................6
2.1 总体设计...............................................................................6
2.2 MCS-51单片机....................................................................6
2.3 LED数码显示器..................................................................10
2.4 发光二级管...........................................................................13
第三章 投票显示系统电路设计与仿真.....................14
3.1 投票显示系统总体功能实现..............................................14
3.2 系统流程图..........................................................................15
3.3 程序编写..............................................................................17
3.4 仿真与调试..........................................................................19
前言
单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已渗透到
各种嵌入式系统中。毫不夸张地说:掌握单片机技术信息类学生就业的一个重要
条件。同时单片机技术又是一门实践性很强的学科。课程设计教学环节的设计和
实施,在很大程度上决定了我们对单片机的掌握程度。为了更好的完成课程设计
这一重要教学环节,我们采用Proteus软件与Keil软件整合构建单片机虚拟实
验平台。首先在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的
功能完成电路分析,系统调试和输出现实的硬件设计部分,同时在Keil软件中
编制程序,进行相应的编译和仿真,完成系统的软件设计部分。当系统的设计工
作完成后,就可以在PC上看到最终的运行效果。最后在通过Proteus设计PCB,
在完成真正硬件的调试。
采用以上方案具有以下优势:有利于促进课程和教育改革,更有利于人才的
培养;从经济性、可移植性、可推广性角度讲,建立这样的课程设计平台是非常
有意义的,利用仿真系统,可以节约开发时间和开发成本,利用仿真系统具有很
大的灵活性和可扩展性。
第一章 绪论
1.1 概述
目前投票显示系统电路的应用可以说非常广泛,班级投票,公司竞选,文娱
节目等许多不记名投票活动都经常会用到各式各样的投票器,虽然这些投票器外
观和样式都有所不同,功能可能也有多有少,但他们的原理都大同小异。因此现
将基本原理熟练掌握,以后再进行功能扩展就简单易行了。
本文论述了利用单片机制作投票系统的全过程,包括阐述该系统的基本工作原
理,利用WAVE软件进行程序编与调试和Proteus ISIS仿真软件进行电路模拟仿
真,实物制作与调试。
1.2 设计目的
(1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、
设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正应用。
(3)把理论知识好实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
1.3 设计任务和内容
1.3.1 设计任务
分组按照选定题目的设计任务,设计各种单片机应用系统,设计工作量至少
要包含:
(1) 用MCS-51单片机,12MHz时钟,常规的上电和手动复位电路;
(2) 3个以上的按键;
(3) LED或/和数码管或/和LCD显示及其接口;
(4) 至少2路输入信号,可以是模拟量或数字量。
1.3.2 设计要求
(1)设计一个投票系统,具有计票显示功能;
(2)可实现6人同时进行投票,累计票数在显示器上显示;
(3)主持人使用一个按键开关控制开始投票,终止投票和清零;
(4)投票开始后每人能且仅能投一次票,多投无效;
创新:(1)增加发光二极管显示有效性;
(2)增加LED显示器显示投票轮数;
1.3.3 设计内容
(1)编写项目功能说明书,确定应用系统的功能和具体参数;
(2)设计电路原理图;
(3)编写汇编语言或C语言源程序,程序中加注必要的注解说明;
(4)编写设计说明书。
第二章总体设计及核心器件简介
2.1 总体设计
整个设计以AT89C51单片机为核心,点触开关控制信号通过单片机I/O口,
单片机处理信号并将结果通过LED数码管显示。以发光二极管显示信号输入的有
效性,最终上电复位单片机。总体设计如下图。
2.2 MCS-51单片机
2.2.1 AT89C51单片机内部结构
AT89C51是一种低电压,高性能CMOS 8位单片机,采用ATMEL公司的高密度、
非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器
(CPU)和4K字节FLASH(FPEROM—Flash Programmable and Erasable Read Only
Memory)存储单元,功能强大AT89C51单片机可为您提供许多高性能比的应用场
合,可灵活应用在各种控制领域。
单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL
高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管
脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL
的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51
单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机的主要工作特性:
·内含4KB的FLASH存储器,擦写次数1000次;
·内含28字节的RAM;
·具有32根可编程I/O线;
·具有2个16位可编程定时器;
·具有6个中断源、5个中断矢量、2级优先权的中断结构;
·具有1个全双工的可编程串行通信接口;
·具有一个数据指针DPTR;
·两种低功耗工作模式,即空闲模式和掉电模式;
·具有可编程的3级程序锁定定位;
AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.
AT89C51各部分的组成及功能:
图2-1
还有,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工
作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断
系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有
部件工作直到出现下一个硬件复位。
2.2.2 AT89C51单片机的引脚说明
1. 引脚排列及功能
AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。
(1)I/O口线 ·P0位、漏极开路的双向I/O口。
当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在
编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口
也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置
1。P0口可驱动8个TTL负载。
·P1口 8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位
地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。
·口 8位、准双向I/O口,具有内部上拉电阻。
当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,
P2口接收高字节地址和某些控制信号。
·P3口 8位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/
校验时,P3口接收某些控制信号。它可驱动4个TTL负载。
图2-2 引脚位置
(2)控制信号线
·RST 复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。
·EA/VPP 外部程序存储器访问允许信号EA.
当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接VCC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。在编程时,该引脚可接编程电压5V或12V。在编程校验时,该引脚可接VCC。
·PSEN 片外程序存储器读选通信号PSEN器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM时,PSEN 无效。
·ALE/PROG 低字节锁存信号ALE.在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。此外,ALE端连续输出正脉冲,频率为晶振频率的1/6,可做外部定时脉冲使用。
(3)外部晶振引线
·XTAL1 片内振荡器反向放大器和时钟发生线路的输入端。使用片内振
荡器时,连接外部石英晶体和微调电容。
·XTAL2 片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。
2.2.3 AT89C51单片机复位方式
8051的复位方式可以是自动复位(左图),也可以是手动复位(右图),见下图 。此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据部丢失。
图2-2 图2-3
此投票器使用自动复位如图2-2
2.3 数码管
LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电
极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类, LED数码管有共阳极和共阴极两种结构。如下图
了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。共阴和共阳极数码管的内部电路发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图。 图2-3-1 这是一个7段两位带小数点 10引脚的LED数码管
图 2-3-1引脚定义
每一笔划都是对应一个字母表示 DP是小数点.
图 2-3-2 共阴极LED数码管的内部结构原理图
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
表1.1 显示数字对应的二进制电平信号
2.4 发光二级管
发光二极管正向导通,反向截止,当通入正向电时发光。
图2-5
第三章 投票显示系统电路设计与仿真
3.1 投票显示系统总体功能实现
利用单片机设计投票显示系统,应先掌握单片机的结构与功能,在设计中充分利用好单片机各管脚,并配合外部电路,坚持简单易懂,节约成本的原则来设计电路。
图3-1投票显示系统电路原理图
如图3-1所示,投票显示系统电路的核心是单片机AT89C51。单片机的P1.0口引脚接1个单刀单置开关,作为总控开关,控制投票系统的开始、停止和清零工作;单片机的P1.1口引脚接按键式开关,作为控制投票轮次的复位开关;P1.2
—P1.7接6个按键式开关,作为投票者的投票按键,并在总控开关上并联一发光二极管和非门串联的电路,当此发光二极管发红光时所有人投票有效,并在各投票按钮处设置蓝色发光二极管,发光时作为该投票的确认信号。单片机的P0.0—P0.6口7个引脚接LED共阴显示器的段选码(a、b、c、d、e、f、g)的引脚上,实现LED显示器的显示字符(即显示票数),电阻主要起限流作用。RST引脚接自动复位电路;XTAL1与XTAL2引脚接时钟电路。P2口与LED显示器相接,用于显示投票轮次。
3.2 系统流程图
为了简化程序的复杂度,使设计过程简单易懂,该系统将分成主程序和子程序设计,
具体流程如下图。
3.3 程序编写
按照上面流程图进行源程序编写,源程序如下: (1)主程序部分 #include "reg51.h" #include"stdio.h" sfr p2=0xa0; sfr p1=0x90; sfr p0=0x80;
sbit P10=P1^0; /*位定义*/ 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 disp() /*显示子程序*/ { num=num2+num +num4+num5+num6+num7; if(!p11) nu=1; p0=dis[num]; p2=dis[nu]; } main()
{ P1=0xff;P11=1; /*对P1口进行初始化*/
while(1) /*进入无限循环*/ {if(!P10) /*判断总控开关,按下则执行以下程序*/ {num=0;nu++;scan();} /*扫描按键,执行scan()子程序*/ else
{num2=0;num3=0;num4=0;num5=0;num6=0;num7=0;}
/*无按键输入则显示0*/ } }
这部分程序主要完成在总控开关控制下的开始投票、暂停投票和清零工作。 (2)子程序部分 scan() {
while(!P10) /*判断总控开关是否一直保持接通状态,接通则进行投
票过程循环,否则不执行程序,即投票按键无效*/
{ 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 仿真与调试
将源程序输入进111111软件中,保存为.hex文件并编译,无误后可以再烧进仿真软件Proteus ISIS文件中的单片机AT89C51中,方可运行仿真电路。单击仿真运行开始按钮
,我们能清楚地观察到每一个引脚的电频变化,红色代表高电
频,蓝色代表低电频。
a b
c
d
e f
g
仿真过程如图,接通总控开关,最高处发光二极管发红光,既此时所有人投票有效,并可看见票数显示器显示“0”,轮次显示器显示“1”投票第一轮开始,进入投票阶段,如图(a);然后任意按下一个投票按键如P3,同时可看到p3处发光二级管闪烁一次蓝光,即投票有效,此时票数显示器示数字变成“1”,轮次显示器“1”不变,如图(b);再按另一个P5,二极管闪烁蓝光后票数LED灯变成“2”,如图(c);此时再次按下第一次按过的按键P3,显示器仍保持数字“2”,如图(d);即可完成每个按键只能投票一次的功能。最后将总控开关断开,可看到显示器没有变化,可以继续显示投票结果,但红色发光二极管终止发光,此后在投票无效,
再次按任意投票按键,投票显示器无反映,即完成投票暂停功能。再次接通总控,可发现票数显示器又回到初始阶段“0”,轮次显示器显示“2”,即进入第二轮投票,如图(e),若此后有4人投票,则票数显示器显示“4”,而轮次显示器“2”不变。即票数完成清零并进入新一轮投票阶段,如图(f),所有投票结束后按下轮次复位按钮,则所有显示器回复初始状态,如图(g),最终出现这个过程就已经意味着系统仿真成功!
21