基于51单片机的六位十进制计数器论文教材.docx
- 文档编号:24919422
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:45
- 大小:384.28KB
基于51单片机的六位十进制计数器论文教材.docx
《基于51单片机的六位十进制计数器论文教材.docx》由会员分享,可在线阅读,更多相关《基于51单片机的六位十进制计数器论文教材.docx(45页珍藏版)》请在冰豆网上搜索。
基于51单片机的六位十进制计数器论文教材
序号:
学号:
10446234
实习报告
实习课程名称:
硬件综合设计
学生姓名:
朱京
学院(系):
信息科学与工程专业班级:
电子102班
校内指导教师:
周炯如专业技术职务:
高级实验师_
实习单位:
信息科学与工程学院实验中心
校外指导教师:
职务/职称:
实习时间:
2013年6月14日2013年6月28日
硬件实习任务书
1、设计题目
六位十进制计数器设计(LED显示计数值)
二、设计背景
七段LED显示屏在很多场合有着广泛的应用,LED显示产品的使用存在于社会的各个角落。
如银行利率电子显示屏,价格表电子显示屏,车站班次时刻表,安全天数电子显示屏等。
了解LED显示技术及其相关的电路组成和显示控制方法非常重要,在很多智能化仪表中,键盘和显示器是不可能缺少的一部分。
三、设计内容及目的
设计内容:
利用8255键盘显示接口电路,设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停.显示器由右向左为个,十,百,千,万。
1、C键:
清零.2、A键:
开始计数,3、D键:
停止计数,4、B键:
设置计数值。
5、E键:
程序退出。
设计目的:
1.进一步撑握8255键盘显示电路的编程方法。
2.进一步撑握定时器的使用和编程方法。
3.进一步撑握中断处理程序的编程方法。
四、进度安排
周次
工作内容
预定目标
第1周周一
选题,图书馆查阅相关资料
写出该题的过去、现在、未来及应用场合
第1周周二
系统硬件设计及软件设计
书面画出系统框图、软件框图并上交
第1周周三
设计成果检查及指导
组长汇报方案,完善设计方案
第1周周四、周五
完善硬件及软件设计;
画出系统硬件原理图、软件详细框图
第2周一至周二
完成硬件静态测试、软件调试
调试好系统,写出硬件实习报告
第2周三周至四
完成实习任务;
完善实习报告。
第2周五
答辩并验收实习报告
答辩并上交实习报告
五、设计时间:
12年4月20到12年6月20日
通信工程系指导教师:
周炯如
1.前言
1.1设计背景
七段LED显示屏在很多场合有着广泛的应用,LED显示产品的使用存在于社会的各个角落。
如银行利率电子显示屏,价格表电子显示屏,车站班次时刻表,安全天数电子显示屏等。
了解LED显示技术及其相关的电路组成和显示控制方法非常重要,在很多智能化仪表中,键盘和显示器是不可能缺少的一部分。
利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。
电子计数器是其他数字化仪器的基础。
在它的输入通道接入各种模-数变换器,再利用相应的换能器便可制成各种数字化仪器。
电子计数器的优点是测量精度高、量程宽、功能多、操作简单、测量速度快、直接显示数字,而且易于实现测量过程自动化,在工业生产和科学实验中得到广泛应用。
电子计数器可具有以下三种基本功能:
①频率测量
②周期或时间间隔测量
③累加计数
在这些功能的基础上再增加某些辅助电路或装置,计数器还可完成多周期平均、时间间隔平均、频率比值和频率扩展等功能。
电子计数器性能指标主要包括:
频率、周期、时间间隔测量范围、输入特性(灵敏度、输入阻抗和波形)、精度、分辨度和误差(计数误差、时基误差和触发误差)等。
电子计数器按功能可分三类:
①通用计数器:
可测频率、周期、多周期平均、时间间隔、频率比和累计等。
②频率计数器:
专门用于测量高频和微波频率的计数器,主要用于测频率。
③计算计数器:
一种带微处理器的具有计算功能的计数器,除了具有通用计数器的功能之外,还能进行数学运算,求解比较复杂的方程式,可靠程序控制进行测量计算和显示等全部工作。
2.设计要求
2.1设计内容
利用8255键盘显示接口电路,设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停。
显示器由左向右为个,十,百,千,万,十万。
1、C键:
清零.2、A键:
开始计数,3、D键:
停止计数,4、B键:
设置计数值。
4、E键:
程序退出。
2.2硬件实习的目的
(1)进一步撑握8255键盘显示电路的编程方法。
(2)进一步撑握定时器的使用和编程方法。
(3)进一步撑握中断处理程序的编程方法。
(4)进一步掌握8255多个七段码的动态显示方法。
3.硬件设计
3.1设计方案
本计数器系统以ATMEL公司生产的单片微处理器AT89C51为核心,外接扩展接口、晶振电路、复位电路、LED驱动电路、键盘接口,外部脉冲等构成,硬件结构框图如图2-6所示。
本系统利用单片机的内部振荡器外加石英晶体构成时钟源,为了工作可靠,晶体振荡频率选为11.0592MHz。
本系统的计数脉冲信号从外部获取,选用计数器0,T0(P3.4)接手动脉冲,高电平计数。
键盘扫描
图3-1六位十进制计数系统框图
3.2芯片介绍
3.2.1MCS-51芯片介绍
单片微型计算机简称为单片机,又称为微型控制器,是微型计算机的一个重要分支。
单片机是70年代中期发展起来的一种大规模集成电路芯片,是CPU、RAM、ROM、I/O接口和中断系统于同一硅片的器件。
80年代以来,单片机发展迅速,各类新产品不断涌现,出现了许多高性能新型机种,现已逐渐成为工厂自动化和各控制领域的支柱产业之一。
MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布如图3-2。
图3-2MCS-51芯片引脚图
按照引脚功能可分为电源引脚VCC与VSS;外接晶振引脚XTAL1与XTAL2;控制和复位引脚ALE,PSEN,EA,RST;32个I/O引脚。
其中P2与P0作为地址总线,P2作为地址线的高8位,P0作为地址线的低八位,P0还可以作为数据总线负责传出或传入数据,P1为用户自定义I/O引脚,P3主要作为控制总线,包括了串行输入与输出端,外部中断0,1触发端,定时器0,1外部脉冲计数端,允许读写信号端。
8051单片机内部有4KB的程序存储器,地址范围为0000H到0FFFH,当EA引脚为高电平时,程序存储空间的0000H到0FFFH在单片机内部,1000H到FFFFH在单片机外部;8051单片机内部有128B的数据存储器,地址范围为00H到7FH8051单片机内部地址范围从80H到FFH为特殊功能寄存区,单片机的输入输出端口,计数器/定时器,串行通信口,累加器以及一些控制寄存器等都在这个地址空间。
8051单片机有5个中断源,分别为外部中断0,外部中断1,时钟中断0,时钟中断1和串行通信中断,这些中断分为两个优先级,每个中断源的优先级都是可编程的8051单片机有两个16位定时/计数器,通过编程可以实现4中工作方式,内部RAM开设了4个通用工作寄存区,共32个通用寄存器,以适应多种中断或子程序嵌套的使用。
8051单片机有一个功能齐全的指令系统。
包括加、减、乘、除等算术运算指令,逻辑运算指令,位操作指令,数据传送指令及多种程序转移指令。
3.2.28255可编程芯片
8255A是目前应用最广的可编程并行接口电路。
不可编程并行接口电路的特点是电路简单,使用方便。
但是,它们在硬件连接好了之后,功能就很难改变。
可编程并行接口电路的特点就在于使用灵活,可以在不改变硬件的情况下通过软件编程来改变芯片的功能。
8255A可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。
其内部结构图及引脚图如下图3-3。
图3-38255内部结构与引脚图
⑴引脚介绍
由图可见,8255由以下几个部分组成:
数据端口A、B、C(其中,C口被分成C口上半部分和C口下半部分两个部分),A组和B组控制逻辑,数据总线缓冲器和读/写控制逻辑。
8255部包含3个8位的输入输出端口A、B和C,通过外部的24根输入输出线与外设交换数据或进行通信联络。
端口A和端口B都可以用作一个8位的输入口或8位的输出口,C口既可以作为一个8位的输入口或输出口用,又可作为两个4位的输入输出口(C口上半部分和C口下半部分)使用,还常常用来配合A口和B口工作,分别用来产生A口和B口的输出控制信号和输入A口和B口的端口状态信号。
⑵内部结构
8255A由数据总线缓冲器、读/写控制逻辑电路、A组和B组控制电路以及数据端口A、B和C组成。
数据总线缓冲器是8255A与系统数据总线的接口,CPU输入输出的数据、CPU输出的控制字和外设的状态信息都是通过这个缓冲器传送的。
读/写控制逻辑电路把CPU的控制命令或输出数据送至相应的端口,把外设的状态信息或输入数据通过相应的端口送至CPU。
数据端口PA和PB都包含一个8位输出锁存器/缓冲器和一个8位输入锁存器,PC口包含一个8位输出锁存器/缓冲器和一个8位输入缓冲器(不锁存输入信号)。
在工作方式1或方式2下,PC口分成高4位和低4位两个输入口作为PA和PB的控制信号输出或状态信号输入。
、A0、A1、
和
决定端口的地址。
⑶引脚功能
8255A的引脚功能如表3-1所示。
①数据总线(8条):
D0~D7,用于传送CPU和8255A间的数据、命令和状态字。
②控制总线(6条):
·RESET:
复位信号,高电平有效。
该信号有效时,将8255控制寄存器内容都清0,并将所有的端口(A、B和C)都置成输入方式。
·CS:
片选信号,低电平有效,由地址总线经I/O端口译码电路产生。
只有当该信号有效时,CPU与8255之间才能进行通信,也就是CPU可对8255进行读/写等操作。
·/RD、/WR:
/RD为读命令线,/WR为写命令线,皆为低电平有效。
·A0、A1:
用于选中PA、PB、PC口和控制寄存器中哪一个工作。
当A1A0=000时,选中端口A;A1A0=01时,选中端口B;A1A0=10时,选中端口C;A1A0=11时,选中控制字寄存器端口。
③并行I/O总线(24条):
用于和外设相连,共分A、B、C三组。
表3-18255引脚功能表
⑷8255A控制字
8222A有两类控制字,一类控制字用于定义各端口的工作方式,称为方式选择控制字;另一类控制字用于对C端口的任一位进行置位或复位操作,称为置位复位控制字。
对8255A进行编程时,这两种控制字都被写入控制字寄存器中。
但方式选择控制字的D7位总是1,而置位复位控制字的D7位总是0。
8255A正是利用这一位来区分这两个写入同一端口的不同控制字的,D7位也称为这两个控制字的标志位。
8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255A各端口的工作方式。
这3种基本工作方式是:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向总线I/O方式。
当系统复位时,8255A的RESET输入端为高电平,使8255A复位,所有的数据端口都被置成输入方式;当复位信号撤除后,8255A继续保持复位时预置的输入方式。
如果希望它以这种方式工作,就不用另外再进行初始化。
通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作。
其中,端口A可工作于3种方式中的任一种;端口B只能工作于方式0和方式1,而不能工作于方式2;端口C常被分成两个4位的端口,除了用作输入输出端口外,还能用来配合A口和B口工作,为这两个端口的输入输出操作提供联络信号。
方式选择控制字的格式如图3-4所示:
图3-4方式选择控制字格式
其中,D7位为标志位,它必须等于1;D6D5位用于选择A口的工作方式;D2位用于选择B口的工作方式;其余4位分别用于选择A口、B口、C口高4位和C口低4位的输入输出功能,置1时表示输入,置0表示输出。
3.2.374LS138译码器
当一个选通端(S1)为高电平,另两个选通端(/S2和/S3)为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
A2A1A0=110时,则Y6输出端输出低电平信号,引脚功能如表3-2.。
利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配。
图3-574LS138引脚图表3-2三八译码器真值表
3.2.474LS373锁存器
373为三态输出的八D透明锁存器,共有54S373和74LS373两种线路。
我们使用的是74LS373,其引脚图如下图3-6。
表3-374LS373真值表图3-674LS373引脚图
引出端符号:
D0~D7是数据输入端;/OE是三态允许控制端(低电平有效);LE是锁存允许端;Q0~Q7是输出端。
其引脚功能如表3-3所示。
当三态允许控制端/OE为低电平时,Q0~Q7为正常逻辑状态,可用来驱动负载或总线。
当/OE为高电平时,Q0~Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,Q随数据D而变。
当LE为低电平时,D被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
3.2.574LS04反相器
74LS04是反相器。
其结构图和真值表如图3-7。
图3-774LS04结构图和真值表
由真值表可知,当输入为高电平时,输出为低电平;当输入为低电平时,输出为高电平。
3.3硬件原理图设计
3.3.1并行I/O口扩展
8255A可以工作在3种工作方式,图3-8是其一种接口逻辑。
图3-8I/O接口扩展电路
单片机的P0口作数据总线,引到8255芯片的数据输入端D0~D7,用于传送CPU和8255A间的数据、命令和状态字。
P0经过锁存器用作地址总线,锁存器的Q0,Q1接到8255的口地址选择信号线A0,A1,用来选择8255的输出端口PA、PB和PC;锁存器的Q3、Q4、Q5接到译码器的地址端(A、B、C),译出Q3、Q4、Q5的编码信号;Q6和Q7接译码器的使能端/E2和/E3。
P2.7接译码器的使能端E1,高电平有效。
控制线有/RD、/WR、RESET、/CS。
3.3.2LED数码管驱动及显示设计
⑴LED数码管介绍
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接
到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
数码管的外形及其结构如图3-9及3-10。
图3-9数码管外形图图3-10数码管结构图
此次使用到的是共阳极数码管,低电平点亮,每个字符对应的编码如下图所示:
表3-4LED字符编码表
⑵驱动设计方案
①静态显示驱动
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动6个数码管静态显示则需要6×8=48根I/O端口来驱动。
实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动
动态驱动是将所有数码管的显示的每一段"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
需要点亮6个数码管,经以上论证分析,我们选用更为灵活的动态显示。
⑶LED驱动及显示
8255A的PA口用来段选,以控制每个数码管显示的字形。
PA后接反相器,所以当PA口输出高电平时LED被点亮,如图3-11所示。
图3-11LED驱动原理图
8255A的PC口的PC3~PC5后接3-8译码器用来位选,位选表3-5如下:
PC5
PC4
PC3
PC口
选中的数码管
0
0
0
00H
8(个位)
0
0
1
08H
7(十位)
0
1
0
10H
6(百位)
0
1
1
18H
5(千位)
1
0
0
20H
4(万位)
1
0
1
28H
3(十万位)
表3-5LED位选表
3.3.3键盘接口
如图3-12所示,8255A的PC口作扫描线,输出键盘的扫描信号,PB口作输入口,用来接收键盘读入的信号。
先给PC0赋值0,扫描键盘第一行,若PB口不全为高电平,则先延时10ms去抖动,然后接着读B口,若仍不全为高,说明确实有键按下,由B口的低电平可确定按键。
图3-12键盘接口电路
3.3.4最小系统图
图3-13最小系统图
4.软件设计
4.1程序流程图设计
(1)
调用start()函数,开外部中断,对外部脉冲计数
主程序
图4-1主程序流程图
(2)置数
转主程序
N
Y
Y
图4-2置数模块框图
4.2程序代码分析
4.2.1汇编程序代码分析
C8255EQU0F22BH;8255命令口地址
P8255AEQU0F228H;8255PA口地址
P8255BEQU0F229H;8255PB口地址
P8255CEQU0F22AH;8255PC口地址
ORG0000H
LJMPMAIN
ORG0020H
MAIN:
MOVSP,#60H
MOVTMOD,#05H;P3.4脉冲:
设定定时器T0为计数模式
MOVTH0,#00H
MOVTL0,#00H
MOV36H,#00H;存TL0,判断是否加1
MOV30H,#00H;个位
MOV31H,#00H;十位
MOV32H,#00H;百位
MOV33H,#00H;千位
MOV34H,#00H;万位
MOV35H,#00H;十万位
PANDUAN:
MOVDPTR,#C8255;写8255控制字
MOVA,#82H
MOVX@DPTR,A
MOVA,#01H;扫描键盘第二行
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR
CJNEA,#0FFH,KEYA;有键按下则判断功能
LJMPDISP;无键则显示当前计数值
KEYA:
CJNEA,#0FBH,KEYB
LCALLSTART;开始计数
LJMPDISP
KEYB:
CJNEA,#0F7H,KEYC
LJMPZHSH;置数
KEYC:
CJNEA,#0EFH,KEYD
LCALLCLEAR;清零
LJMPDISP
KEYD:
CJNEA,#0DFH,KEYE
LCALLENDING;停止计数
LJMPDISP
KEYE:
CJNEA,#0BFH,PANDUAN
LJMPEXIT;程序退出
;********************************************************************
START:
SETBTR0
RET
;--------------------------------------------------
ZHSH:
KEY_L0:
MOVA,#02H;键盘扫描第一行
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR
CJNEA,#0FFH,J_KEY_L0;判键是否按下,有键转J_KEY_L0
SJMPKEY_L1;无键扫描第二行
J_KEY_L0:
LCALLDELAY0;延时消抖
MOVDPTR,#P8255B;读键值
MOVXA,@DPTR
MOVR1,#00H;键值从0开始
SJMPKEYCAL;计算键值
KEY_L1:
MOVA,#01H;扫描第二行
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR
CJNEA,#0FFH,KEY8
LJMPXIANSHI;无按键则显示
KEY8:
CJNEA,#0FEH,KEY9
MOVR1,#08;给个位赋值8
SJMPCALC
KEY9:
CJNEA,#0FDH,PANDUAN
MOVR1,#09;给各位赋值9
LJMPCALC;读取键值
KEYCAL:
;计算键码
MOVR0,#08H;最多右移8次
SHIFT:
RRCA;A右移,最低位进入C
JNCCALC;C为0转CALC
INCR1;R1的值就是键值
DJNZR0,SHIFT
CALC:
;当前值左移,R1的值给个位
MOV35H,34H
MOV34H,33H
MOV33H,32H
MOV32H,31H
MOV31H,30H
MOV30H,R1
SJMPKEYWAIT
KEYWAIT:
MOVDPTR,#P8255B;等待键释放
MOVXA,@DPTR
CJNEA,#0FFH,KEYWAIT
XIANSHI:
MOVDPTR,#P8255C;位选
MOVA,#00H
MOVX@DPTR,A
MOVDPTR,#LED
MOVA,30H
MOVCA,@A+DPTR
MOVDPTR,#P8255A
MOVX@DPTR,A
LCALLDELAY0
MOVDPTR,#P8255C;位选
MOVA,#08H
MOVX@DPTR,A
MOVDPTR,#LED
MOVA,31H
MOVCA,@A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 十进制 计数器 论文 教材