单片机动态扫描接口与程序设计

发布者:夜色迷离最新更新时间:2014-02-14 来源: dqjsw关键字:单片机  动态扫描  显示方式 手机看文章 扫描二维码
随时随地手机看文章
  在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的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

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

关键字:单片机  动态扫描  显示方式 引用地址:单片机动态扫描接口与程序设计

上一篇:单片机智能照明调光系统的研究
下一篇:自动定量水温控制器设计方案

推荐阅读最新更新时间:2024-03-16 13:35

以C8051F020单片机为系统控制器件的实时检测和记录车辆散热系统动态参数电路设计
1 引言 车辆的系统散热性是衡量其先进性的一个重要标志,因为车辆的各个部件和系统都存在一个最佳的工作温度区间,在此温度范围内零部件的各项性能指标才能得以保证。目前,我国车辆系统的研制已进入自行研制、自主创新的发展阶段,由于缺乏实车试验测试条件,加上车辆工作环境的复杂性,导致有效的实车试验数据严重缺乏,试验周期长,数据可复现性差,无法向工程设计部门提供准确有效的实车试验数据,严重影响车辆总体技术的进一步发展。因此,本文着重于在不改变车辆现有结构和性能的前提下,采用单片机控制系统、传感器技术、数据存储技术、实时时钟技术,研制一套能实时检测和记录车辆散热系统动态参数的电子电路。 2 系统总体构架设计 该散热系统参数测试电路由上位微型计算
[单片机]
以C8051F020<font color='red'>单片机</font>为系统控制器件的实时检测和记录车辆散热系统<font color='red'>动态</font>参数电路设计
如何正确的使用C51单片机中的位域
定义这样的结构: typedef struct { uchar DC0_ALA:1; //电源0告警 uchar DC1_ALA:1; //电源1告警 uchar AC_ALA:1; //停电告警 uchar UN_H_ALA:1; //同频信道机失锁告警 uchar UN_L_ALA:1; //异频信道机失锁告警 uchar FAR_ALA:1; //远端通讯故障告警 uchar OPEN_ALA:1; //门襟告警 uchar x:1; }ALARM;//系统告警结构定义 定义变量并初始化: idata ALARM old_alarm={0,0,0,0,0,0,0,0}; 在main()函数中这样应用位域: if(ol
[单片机]
一“芯”二用,MCU+DSP处理器大盘点
  近年来,越来越多的领域需要用到高性能,高集成度的DSP器件,功能日益增加的多媒体处理器对DSP的需求也日益剧增,于是,基于MCU+DSP架构的集成芯片也随之应运而生,更低的成本、更小的封装和更微的功耗所开辟的,是一条属于DSP或者MCU厂商们的“阳光大道“而未来,它们还将沿着这条新路继续前行。本系列文章将为你介绍市面上比较流行的基于MCU+DSP架构的处理器或者解决方案。    飞思卡尔DSP56800E   飞思卡尔在DSP与MCU领域深耕数年,为满足市场发展需求,公司率先在56800内核基础上又推出了新一代增强型内核56800E,该产品可在单一内核上提供DSP和MCU双重功能。56800E 系列DSP将为不断增长的工业、
[嵌入式]
一“芯”二用,<font color='red'>MCU</font>+DSP处理器大盘点
单片机编程入门基础知识(新手必看)
单片机不是一门技术,而是一个工具。 对于工具,我们的目的是会熟练地使用它。 如果你看懂这句话,会少走很多弯路。 下面我来讲一下使用这个工具时,会涉及到的一些知识点。 1. 单片机是什么? 2. 单片机编程需要掌握哪些知识? 一、单片机是什么? 简单来说就是一个可编程的芯片,它的特点可通过不同程序和不同的电路实现不同产品的功能,价格便宜,功耗也低,所以非常适合去做各种消费类、工业、医疗、航空等智能控制。 这里只要有基本概念就行了,它就是一个芯片,可以通过程序控制它就够了。 二、单片机编程需要掌握哪些知识? 很多人学不会单片机,学不会编程,主要有以下几点: 1. 学习方向不对 2. 学习过程太枯燥,没正确培养自
[单片机]
单片机逻辑电路与逻辑运算
在数字电路,我们经常会遇到逻辑电路,而在 C 语言中,我们则经常用到逻辑运算。二者在原理上是相互关联的,我们在这里就先简单介绍一下,随着学习的深入,再慢慢加深理解。 首先,在“逻辑”这个概念范畴内,存在真和假这两个逻辑值,而将其对应到数字电路或 C 语言中,就变成了“非 0 值”和“0 值”这两个值,即逻辑上的“假”就是数字电路或C 语言中的“0”这个值,而逻辑“真”就是其它一切“非 0 值”。 然后,我们来具体分析一下几个主要的逻辑运算符。我们假定有 2 个字节变量:A 和 B,二者进行某种逻辑运算后的结果为 F。 以下逻辑运算符都是按照变量整体值进行运算的,通常就叫做逻辑运算符: 逻辑运算符 说明 && 逻辑与 F =
[单片机]
<font color='red'>单片机</font>逻辑电路与逻辑运算
AVR单片机熔丝位设置技巧
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。 (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时
[单片机]
基于传感器技术的汽车挡风玻璃防雾系统研究
   挡风玻璃防雾的重要性   随着我国经济这几年来的迅速发展,一架汽车,对于我们老百姓来说,再也不是一件可望而不可求的事情了,根据统计,2008年我国汽车的销售量已经突破870万辆,但是在我国汽车工业高速发展,给人们带来方便和欢乐的同时,隐患也随之而来。2007年我国共发生道路交通事故327209起,造成81649人死亡,380442人受伤,直接财产损失12亿元,这样的道路事故发生率是远远超过了西方发达国家的平均水平,而在上面的道路事故发生的起因中,有相当一部分事故的发生是因为在冬天,或者下雨天的时候,由于挡风玻璃出现雾气造成司机视线模糊不清,从而引发了道路事故的发生。   当今,有很多型号的车都具备了“除雾档”按钮,对于
[嵌入式]
在进行单片机设计时需要注意哪些事项
1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,以8051单片机为例最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz微控制器产生的最有影响的高频噪声大约是时钟频率的3倍。 2.低噪声系列单片机 改进的技术将电源、地安排在两个相邻的引脚上,外部去耦电容在PCB设计上更容易安排。 3.时钟监测电路、看门狗技术与低电压复位 时钟监控有效与省电指令STOP是一对矛盾。只能使用其中之一。 看门狗技术是监测应用程序中的一段定时中断低电压复位技术是监测单片机电源电压,当电压低于某一值时产生复位信号。由于单片机技术的发展,单片机本身对电源电压
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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