基于单片机的八位数码管秒表计数设计.docx
《基于单片机的八位数码管秒表计数设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的八位数码管秒表计数设计.docx(29页珍藏版)》请在冰点文库上搜索。
基于单片机的八位数码管秒表计数设计
绪论·······························································1
第一节Proteus仿真软件简介····································3
1.1概述···························································3
1.2Proteus软件的优点··············································4
第二节电路结构··················································4
2.1实验要求························································4
2.289c51系列单片机件简介··········································4
2.2.1.单片机的基本组成····················································4
2.3数码管·························································4
2.3.1数码管的特点·························································4
2.3.2数码管的驱动方式····················································5
2.3.3数码管的主要参数····················································5
2.3.4数码管的应用·························································5
第三节Proteus软件绘制原理图·································6
3.1进入ProteusISIS···············································6
3.2工作界面·······················································6
3.3选择课题所需要的材料·············································7
3.4程序流程图·····················································10
3.5程序的设计与修改···············································16
第四节Proteus仿真·············································17
4.1仿真设置·······················································17
4.2程序调入······················································18
4.3仿真结果······················································19
第五节XL600实验板设计验证····································20实训小结·············································24
绪论
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
数码管是一种显示屏,可以通过对其不同的管脚输以相对的电流,并使其发亮,发光从而显示出数字能够显示出的时间,日期,温度等有可用数字表示的参数,由于它的价格便宜,使用简单,在电器,特别是家电领域应用极为广泛,在空调,热水器冰箱等等绝大多数电器产品用的都是数码管,其它家电也用,液晶屏与显示屏等等。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
51单片机能够展示8位数码管的动态应用,本课题也意在利用单片机来显示8位数码管的动态显示以下为本本课题的研究过程。
第一节Proteus仿真软件简介
1.1概述
Proteus是一种功能强大的电子设计自动化软件,提供智能原理图设计系统、SPICE模拟电路、数字电路及MCU器件混合仿真系统和PCB设计系统功能。
其不仅可以仿真传统的电路分析实验、模拟电子线路实验、数字电路实验等,而且可以仿真嵌入式系统的实验,其最大的特色在于可以提供嵌入式系统(单片机应用系统、ARM应用系统)的仿真实验,这也是其它任何仿真软件无力所及的。
例如,其支持单片机和周边设备,可以仿真51系列、AVR、PIC、Motorola的68系列等常用的MCU,并提供周边设备的仿真,例如373、led、示波器等。
Proteus提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件等。
在编译方面,它也支持Keil和MPLAB等多种编译器。
Proteus的构成见图1-1。
图1-1
1.2Proteus软件的优点
1.智能原理图设计(ISIS)
2.完善的电路仿真功能(Prospice)
3.独特的单片机协同仿真功能(VSM)
4.实用的PCB设计平台
第二节电路结构
2.1实验要求
基于89c51系列单片机设计8位数码管秒表
2.289c51系列单片机件简介
2.2.1.单片机的基本组成
图2-1单片机51组成
2.3数码管
2.3.1数码管的特点
数码管是一种半导体发光器件,其基本单元是发光二极管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
2.3.2数码管的驱动方式‘
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2.3.3数码管的主要参数
8字高度:
8字上沿与下沿的距离。
比外型高度小。
通常用英寸来表示。
范围一般为0.25-20英寸。
长*宽*高:
长——数码管正放时,水平方向的长度;宽——数码管正放时,垂直方向上的长度;高——数码管的厚度。
时钟点:
四位数码管中,第二位8与第三位8字中间的二个点。
一般用于显示时钟中的秒。
数码管使用的电流与电压电流:
静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:
查引脚排布图,看一下每段的芯片数量是多少?
当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。
2.3.4数码管的应用
数码管是一类显示屏,通过对其不同的管脚输入相对的电流,会使其发亮从而显示出数字能够显示、时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜使用简单在电器特别是家电领域应用极为广泛(空调热水器冰箱等等)。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
第三节Proteus软件绘制原理图
3.1进入ProteusISIS
双击桌面上的ISIS7Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,出现如图3-1所示屏幕,表明进入ProteusISIS集成环境。
图3-1启动时的屏幕
3.2工作界面
ProteusISIS的工作界面是一种标准的Windows界面,如图3-2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图3-2ProteusISIS的工作界面
3.3选择课题所需要的材料
3.3.1根据本课题的要求和Proteus软件所提供材料库(如下图3-1所示)选择以下几种材料供课题使用和研究。
元件类型
元件名称
元件所在库
子库
矩阵键盘
KEYPAD-SMALLCALC
Switches&Relays
1602液晶显示器
ML016L
Optoelectronics
1位数码管(共阳)
7SEG-COM-AN-BLUE
Optoelectronics
7SEG-COM-AN-GRN
Optoelectronics
7SEG-COM-ANODE
Optoelectronics
1位数码管(共阴)
7SEG-COM-CAT-BLUE
Optoelectronics
7SEG-COM-CAT-GRN
Optoelectronics
7SEG-COM-CATHODE
Optoelectronics
2位数码管(共阳)
7SEG-MPX2-CA
Optoelectronics
2位数码管(共阴)
7SEG-MPX2-CC
Optoelectronics
6位数码管(共阳)
7SEG-MPX6-CA
Optoelectronics
6位数码管(共阴)
7SEG-MPX6-CC
Optoelectronics
8位数码管(共阳)
7SEG-MPX8-CA
Optoelectronics
8位数码管(共阴)
7SEG-MPX8-CC
Optoelectronics
单片机
80C51/80C51-BUS
MicroprocessorICs
80C52/80C52-BUS
MicroprocessorICs
电阻
MINRES*
Resistors
按键
BUTTON
Switches&Relays
电容
CAP
Capacitors
电解电容
CAP-ELED
Capacitors
晶振
CRYSTAL
Miscellaneous
蜂鸣器
SOUNDER
Speakers&Sounders
步进电机驱动器
ULN2003A
AnalogICs
步进电机
MOTOR-STEPPER
Electromechanical
图:
材料库3-1
3.3.2根据要求所选择的材料如下图3-2所示
、
元件类型
元件名称
元件所在库
8位数码管(共阴
7SEG-MPX6-CC
Optoelectronics
单片机
80C51/80C51-BUS
MicroprocessorICs
电阻
MINRES*
Resistors
按键
BUTTON
Switches&Relays
电容
CAP
Capacitors
电解电容
CAP-ELED
Capacitors
晶振
CRYSTAL
Miscellaneous
图3-2
3.3.3.在如图3-3所示的元件库中添加表1中的元件。
图3-3元件库
3.3.4整理选中原件如图3-4
图3-4
3.3.5元件完全添加后,在ProteusISIS的编辑区域中画出如图3-5所示的原理图。
图3-5原理图
3.4绘制程序流程图
3.5课题程序的编写及修改
标题:
xl系列单片机实验仪演示程序数码管秒表计时
描述:
数码管显示秒表,分辨率0.01s
;K1---控制按钮
第一次按下时,启动开始计时
第二次按下时,停止
第三次按下时,归零
引用资源:
数码管数据p1口,数码管控制p2口控制按钮p3.2口
秒单位,寄存器与数码管对应关系:
秒单位----------数码管端口----缓冲区---------计时BCD码值寄存器*
;*十万位P20dis_buf[7]sec_bcd[7]*
;*万位P21dis_buf[6]sec_bcd[6]*
;*千位P22dis_buf[5]sec_bcd[5]*
;*百位P23dis_buf[4]sec_bcd[4]*
;*十位P24dis_buf[3]sec_bcd[3]*
;*个位(1.s)P25dis_buf[2]sec_bcd[2]*
;*十分位(0.1s)P26dis_buf[1]sec_bcd[1]*
;*百分位(0.01s)P27dis_buf[0]sec_bcd[0]
;******************************************************************
secequ20h
sec01Hequ21h
sec02Hequ22h
sec03Hequ23h
sec04Hequ24h
sec05Hequ25h
sec06Hequ26h
sec07Hequ27h
dis_bufequ30h
dis_buf01Hequ31h
dis_buf02Hequ32h
dis_buf03Hequ33h
dis_buf04Hequ34h
dis_buf05Hequ35h
dis_buf06Hequ36h
dis_buf07Hequ37h
KEY_Sequ28h
KEY_Vequ29h
DIS_DIGITequ2ah
DIS_INDEXequ2bh
;秒计数值,BCD码
KEY_TIMESequ2ch;K1按下次数
可
K1BITP3.2
;==================================================================
org0000H
LJMPMAIN
org0000BH
LJMPttt0
org0001BH
LJMPttt1
;==================================================================
MAIN:
MOVSP,#40h
MOVp1,#0FFH;初始化端口
MOVP2,#0FFH
MOVTMOD,#011H;
MOVTH1,#0DCH
CLRA
MOVTL1,A
MOVTH0,#0FCH
MOVTL0,#017H
LCALLCLR_TIME;清零计时值
MOVDIS_DIGIT,#07FH;上电时选通P27数码管
CLRA
MOVDIS_INDEX,A
MOVKEY_TIMES,A
MOVKEY_V,#01H
MOVIE,#08AH;使能timer0,timer1中断
SETBTR0
CLRTR1
MAIN_LP:
LCALLSCAN_KEY;键扫描
JZMAIN_LP;无键返回
MOVR7,#10;延时10ms
LCALLDELAYMS;延时去抖动
LCALLSCAN_KEY;再次扫描
JZMAIN_LP;无键返回
MOVKEY_V,KEY_S;保存键值
LCALLPROC_KEY;键处理
SJMPMAIN_LP;调回主循环
;==================================================================
CLR_TIME:
CLRA
MOVSEC,A;清零所有计时值
MOVsec01H,A
MOVsec02H,A
MOVsec03H,A
MOVsec04H,A
MOVsec05H,A
MOVsec06H,A
MOVsec07H,A
LJMPUPDATE_DISBUF;更新显示缓冲区
;==================================================================
SCAN_KEY:
CLRA
MOVKEY_S,A
MOVC,K1;读按键状态
RLCA
ORLKEY_S,A
MOVA,KEY_S
XRLA,KEY_V;
RET
;==================================================================
PROC_KEY:
MOVA,KEY_V
JBACC.0,END_PROC_KEY
INCKEY_TIMES
MOVA,KEY_TIMES
CJNEA,#01H,PROC_KEY1
SETBTR1;KEY_TIMES=1,第一次按下K1,启动开始计时
RET
PROC_KEY1:
MOVA,KEY_TIMES
CJNEA,#02H,PROC_KEY2
CLRTR1;KEY_TIMES=2,第二次按下K1,停止计时
RET
PROC_KEY2:
LCALLCLR_TIME;第三次按下K1,清零计时值
CLRA
MOVKEY_TIMES,A;清零KEY_TIMES
END_PROC_KEY:
RET
;==================================================================
ttt0:
;定时器0中断服程序,用于数码管的动态扫描
;DIS_INDEX---显示索引,用于标识当前显示的数码管和缓冲区的偏移量
;DIS_DIGIT---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,
;选通P2.0口数码管
;DIS_BUF---显于缓冲区基地址
PUSHACC
PUSHPSW
PUSH00h
MOVTH0,#0FCH
MOVTL0,#017H
MOVP2,#0FFH;先关闭所有数码管
MOVA,#DIS_BUF;获得显示缓冲区基地址
ADDA,DIS_INDEX;获得偏移量
MOVR0,A;R0=基地址+偏移量
MOVA,@R0;获得显示代码
MOVp1,A;显示代码传送到p1口
MOVP2,DIS_DIGIT;
MOVA,DIS_DIGIT;位选通值右移(P20<-P27),下次中断时选通下一位数码管
RRA
MOVDIS_DIGIT,A
INCDIS_INDEX;DIS_INDEX加1,下次中断时显示下一位
ANLDIS_INDEX,#07h;当DIS_INDEX等于8(00001000)时,清0
POP00h
POPPSW
POPACC
RETI
;==