89c51单片机动态扫描接口设计

发布者:代码漫游者最新更新时间:2023-03-27 关键字:89c51  单片机  动态扫描 手机看文章 扫描二维码
随时随地手机看文章

什么叫动态扫描显示

在单片机系统中动态扫描显示 接口是单片机中应用最为广泛的一种显示方式之一。其接口 电路 是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。


在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光 二极管 的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。


由 89c51 的P0口能灌入较大的电流,所以我们采用共阳的 数码管 ,并且不用限流 电阻 ,而只是用两只 1N4004 进行降压后给数码管供电,这里仅用了两只,实际上还能扩充。它们的公共端则由PNP型 三极管 8550 控制,显然,如果8550导通,则对应的数码管就能亮,而如果8550截止,则对应的数码管就不可能亮,8550是由P2.7,P2.6控制的。这样我们就能通过控制P27、P26达到控制某个数码管亮或灭的目的。


下面的这个单片机程序,就是用 实验板 上的数码管显示0和1。

FIRST EQU P2.7 ;第一位数码管的位控制

SECOND EQU P2.6 ;第二位数码管的位控制

DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH

ORG 0000H

AJMP START

ORG 30H

START:

MOV SP,#5FH ;设置堆栈

MOV P1,#0FFH

MOV P0,#0FFH

MOV P2,#0FFH ;初始化,所显示器, LED 灭

MOV DISPBUFF,#0 ;第一位显示0

MOV DISPBUFF+1,#1 ;第二握显示1

LOOP:

LCALL DISP ;调用显示程序

AJMP LOOP

;主程序到此结束

DISP:

PUSH ACC ;ACC入栈

PUSH PSW ;PSW入栈

MOV A,DISPBUFF ;取第一个待显示数

MOV DPTR,#DISPTAB ;字形表首地址

MOVC A,@A+DPTR ;取字形码

MOV P0,A ;将字形码送P0位(段口)

CLR FIRST ;开第一位显示器位口

LCALL DELAY ;延时1毫秒

SETB FIRST ;关闭第一位显示器(开始准备第二位的数据)

MOV A,DISPBUFF+1 ;取显示缓冲区的第二位

MOV DPTR,#DISPTAB

MOVC A,@A+DPTR

MOV P0,A ;将第二个字形码送P0口

CLR SECOND ;开第二位显示器

LCALL DELAY ;延时

SETB SECOND ;关第二位显示

POP PSW

POP ACC

RET

DELAY: ;延时1毫秒

PUSH PSW

SETB RS0

MOV R7,#50

D1: MOV R6,#10

D2: DJNZ R6,$

DJNZ R7,D1

POP PSW

RET

DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

END

从上面的单片机例程中能看出,动态扫描显示必须由CPU持续地调用显示程序,才能保证持续持续的显示。

上面的这个程序能实现数字的显示,但不太实用,为什么呢?这里仅是显示两个数字,并没有做其他的工作,因此,两个数码管轮流显示1毫秒,没有问题,实际的工作中,当然不可能只显示两个数字,还是要做其他的事情的,这样在二次调用显示程序之间的时间间隔就不一不定了,如果时间间隔比较长,就会使显示不连续。而实际工作中是很难保证所有工作都能在很短时间内完成的。况且这个显示程序也有点“浪费”,每个数码管显示都要占用1个毫秒的时间,这在很多合是不允许的,怎么办呢?我们能借助于 定时器 ,定时时间一到,产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了,这段时间能留给主程序干其他的事。到下一次定时时间到则显示下一个数码管,这样就很少浪费了。

Counter EQU 59H ; 计数器 ,显示程序通过它得知现正显示哪个数码管

FIRST EQU P2.7 ;第一位数码管的位控制

SECOND EQU P2.6 ;第二位数码管的位控制

DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH

ORG 0000H

AJMP START

ORG 000BH ;定时器T0的入口

AJMP DISP ;显示程序

ORG 30H

START:

MOV SP,#5FH ;设置堆栈

MOV P1,#0FFH

MOV P0,#0FFH

MOV P2,#0FFH ;初始化,所显示器,LED灭

MOV TMOD,#00000001B ;定时器T0工作于模式1(16位定时/计数模式)

MOV TH0,#HIGH(65536- 2000 )

MOV TL0,#LOW(65536-2000)

SETB TR0

SETB EA

SETB ET0

MOV Counter,#0 ;计数器初始化

MOV DISPBUFF,#0 ;第一位始终显示0

MOV A,#0

LOOP:

MOV DISPBUFF+1,A ;第二位轮流显示0-9

INC A

LCALL DELAY

CJNE A,#10,LOOP

MOV A,#0

AJMP LOOP ;在此中间能按排任意程序,这里仅作示范。

;主程序到此结束

DISP: ;定时器T0的中断响应程序

PUSH ACC ;ACC入栈

PUSH PSW ;PSW入栈

MOV TH0,#HIGH(65536-2000) ;定时时间为2000个周期,约 2170 微秒( 11.0592M )

MOV TL0,#LOW(65536-2000)

SETB FIRST

SETB SECOND ;关显示

MOV A,#DISPBUFF ;显示缓冲区首地址

ADD A,Counter

MOV R0,A

MOV A,@R0 ;根据计数器的值取对应的显示缓冲区的值

MOV DPTR,#DISPTAB ;字形表首地址

MOVC A,@A+DPTR ;取字形码

MOV P0,A ;将字形码送P0位(段口)

MOV A,Counter ;取计数器的值

JZ DISPFIRST ;如果是0则显示第一位

CLR SECOND ;不然显示第二位

AJMP DISPNEXT

DISPFIRST:

CLR FIRST ;显示第一位

DISPNEXT:

INC Counter ;计数器加1

MOV A,Counter

DEC A ;如果计数器计到2,则让它回0

DEC A

JZ RSTCOUNT

AJMP DISPEXIT

RSTCOUNT:

MOV Counter,#0 ;计数器的值只能是0或1

DISPEXIT:

POP PSW

POP ACC

RETI

DELAY: ;延时130毫秒

PUSH PSW

SETB RS0

MOV R7,#255

D1: MOV R6,#255

D2: NOP

NOP

NOP

NOP

DJNZ R6,D2

DJNZ R7,D1

POP PSW

RET

DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

END

从上面的单片机程序能看出,动态显示和静态显示相比,程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就能显示更多位数了。


关键字:89c51  单片机  动态扫描 引用地址:89c51单片机动态扫描接口设计

上一篇:89C51单片机结构框图
下一篇:AD7751的典型应用

推荐阅读最新更新时间:2024-11-10 11:14

以AVR单片机为核心的全自动太阳能工程热水器控制器设计
引 言 随着人们生活水平的提高, 各种热水器的使用已相当普及, 与之相配套的控制仪也相继问世。然而, 目前市场上的各种热水器控制电路还与理想要求相差甚远。消费者需要真正的全自动 控制, 以实现使用的最简单化, 就像家用电视机、电冰箱一样, 接通电源、设定完毕就不用再操心了。鉴于国内太阳能热水器市场不断扩大, 而与其相配套的控制器却急需改进的情况, 研制了这套太阳能热水器控制器。本文设计的太阳能热水器是以AVR Meg a 32 单片机为检测控制核心,不仅实现了温度、水位两种参数的实时显示功能, 而且具有温度设定与控制功能。控制器可以根据天气情况利用辅助加热装置使蓄水箱内的水温达到预先设定的温度, 从而达到24 小时供应热水的目的。
[单片机]
以AVR<font color='red'>单片机</font>为核心的全自动太阳能工程热水器控制器设计
单片机中一些最基本的软硬件介绍
学好单片机并不是我们的主要目的,我们最终想要的是用好单片机,可以利用单片机实现各种你想实现的功能。除了对各种你程序语言,指令的了解与熟悉,对硬件的了解也是不可或缺的。 单片机是一门实践性很强、非常注重动手的课程。学习单片机最有效的方法是理论与实践并重,边学习,边演练,循序渐进,这样用不了几次就能将用到的指令理解、吃透。也就是说,当你学习完某几条指令后,接下去就该做实验了,通过实验,让你感受到指令产生的控制效果,如眼睛看得见的(灯光),耳朵听得到的(声音)等,这样在学习过程中更能深刻理解指令是怎样转化成信号去控制电子产品的。因此,边学习边实践的方法,效果特别好。为达到上述效果,我们在学习前必须做好一些准备工作,也就是应该了解学习
[单片机]
<font color='red'>单片机</font>中一些最基本的软硬件介绍
采用51单片机的共阳数码管流动显示数据实现
本程序是采用51单片机实现共阳数码管流动显示数据,蛮好看的,所以把程序写出来和大家一起分享一下!! 电路图在下面 下面是汇编程序代码: D0 BIT P2.0 D1 BIT P2.1 D2 BIT P2.2 D3 BIT P2.3 D4 BIT P2.5 ORG 0000H SJMP START ORG 0040H START:MOV SP,#60H MOV R0,#00H MOV R1,#20 MOV DPTR,#TABLE SETB D4 MOV A,R0 MOVC A,@A+DPTR //1 MOV P0,A CLR D0 LCALL DELAY MOV R
[单片机]
采用51<font color='red'>单片机</font>的共阳数码管流动显示数据实现
基于单片机的快速代码生成方法
随着软硬件技术的不断发展,系统的开发周期显得越来越重要,但开发的时间与系统安全性之间又有一定的冲突。假如依旧采用传统的编写代码的方式,显然企业将会失去很多的机会。文中介绍一种基于模型的快速代码生成的方法,可以满足这种高性能和快节奏研发的需求。MATLAB集成了各类应用领域的专用库函数和模块,用于数值计算、系统建模的软件包。 Simulink工具可以对分系统或单个仿真模型进行设计。RTW(Real Time Workshop)是MATLAB提供的自动化代码生成工具,将Simulink模型框图转化为标准的C语言代码。学会利用 MATLAB/Simulink创建仿真模型,利用MATLABRTW工具,通过这种方式在IAR环境中对Simuli
[单片机]
基于<font color='red'>单片机</font>的快速代码生成方法
基于单片机的智能温度预警系统的设计方案
  1.引言   随着社会的发展特别是工业的发展,人民生活的改善,安全问题变得更加重要。目前,在许多情况下,都需要对环境的温度进行限定,其中包括人的生活工作环境、仪器设备的工作环境以及动植物的生长环境等。   如果环境温度超过或低于限定值,必定对所处环境的人和设备造成影响,甚至给个人和社会造成巨大的损失。随着单片机技术的飞速发展,利用单片机设计温控系统成为控制技术发展的需要。本文提出了一种基于单片机的温度预警系统的设计方案,并采用PROTEUS进行了仿真。该系统不仅可以高精度的测量温度,同时对温度进行实时监控并做到超温报警,有较高的实用价值。   2.系统设计的总体方案   本设计方案总体框图如图1所示,它是由单片
[单片机]
基于<font color='red'>单片机</font>的智能温度预警系统的设计方案
MMC与PIC单片机接口电路和代码设计
1 概述 Sandisc公司推出的大大容量串行Flash存储器产品——MultiMediaCard(MMC),通常叫作多媒体卡。它的体积比SmartMedia还要小, 不怕冲击,可反复读写记录30万次,驱动电压2.7~3.6V,可变时钟频率范围为0~20MHz,目前常见的容量为64MB/128MB。ATP EleCTRionICs公司已经率先推出了1GB的高容量MMC。除了体积小、寿命长、容量大等特性外,还具备存储区纠错能力;低功耗;5ms内没有接收到命令字后,自动转入休眠状态;支持热插拔等优点。MMC可以格式化为FAT文件系统,便于上位机读写。 2 MMC简介 2.1 引脚排列及功能 根据存储容量的不同,MMC有SMDB和SDM
[单片机]
MMC与PIC<font color='red'>单片机</font>接口电路和代码设计
使用STM32微控制器系列中的DAC生成音频和波形之应用实例
《使用DAC生成正弦波形》 1、说明 本示例分步说明如何生成正弦波形。 正弦波形也称作单频正弦波音,它是一种纯音或绝对音。在确定听觉系统的各种响应时,正弦音一般用作刺激源。 2、准备数字模式的正弦波形 要准备数字模式的波形,需要进行一些数学运算。这里的目标是产生正弦波的 10 个数字模式数据(采样),变化范围为 0 到 2*PI。 采样间隔为 (2*PI)/ ns (采样数)。 sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。 经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。 各 DAC 通道
[单片机]
使用STM32<font color='red'>微控制器</font>系列中的DAC生成音频和波形之应用实例
“得寸进尺”:赢得MCU市场需三板斧
随着市场的发展,对MCU能力的要求也一直“得寸进尺”:一方面,处理器必须在不怎么增加主频和功耗的条件下实现更多的功能。另一方面,处理器之间的互连包括串口、USB、以太网等不断加深,支持这些数据通道必须在片上集成更多的外设。以ARM架构的MCU正在大行其道,大有一统32位MCU之势。在“同核”竞争之下,意味着一定要在产品的定位和差异化设计上有亮点,这对MCU厂商在市场定位、设计技术、应用开发、客户服务上都提出了更高的要求。   一是要有丰富的产品线,比如要有面向工业控制、家电领域等传统市场的低功耗MCU,也要有面向医疗电子、新能源、物联网应用的高性能和高安全性方案,通过集成不同外设来满足不同应用需求。 二是要有众多的合作伙伴
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved