LED数码管汇编程序

发布者:咖啡小熊最新更新时间:2018-01-06 来源: eefocus关键字:LED  数码管  汇编程序 手机看文章 扫描二维码
随时随地手机看文章

LED数码管汇编程序

DISPBUF EQU 50H   ;50H,51H,52H,53H是显示缓冲区 
LED1  EQU P2.0    ;第一位数码管的位控制 
LED2  EQU P2.1    ;第二位数码管的位控制

LED3  EQU P2.2    ;第三位数码管的位控制 
LED4  EQU P2.3    ;第四位数码管的位控制 
LED5  EQU P2.4 
LED6  EQU P2.5 
LED7  EQU P2.6 
LED8  EQU P2.7 
;============================================================== 
    org 0000h 
    LJMP MAIN 
    ORG 0003H 
    RETI 
    ORG 000BH 
    RETI 
    ORG 0013H 
    RETI 
    ORG 001BH 
    RETI 
    ORG 0023H 
    RETI 
MAIN: 
    MOV    R0,#50H 
    MOV    65H, #2 
    MOV    64H,  #3 
    MOV    63H,  #5 
    MOV    62H,  #9 
    MOV    61H,  #5 
    MOV    60H,  #9 
    MOV    59H,  #1 
    MOV    58H,  #2 

    ACALL    OUT 
LOOP1:ACALL DISP          ;调用显示程序 
       
      JNB   P3.2,K1 
      JNB   P3.3,K2 
       
      ACALL  TIME 
      AJMP  LOOP1 
K1:   LJMP   CLEAR 
K2:   LJMP   PAUSE 
TIME: 
      MOV    R0,#59H     ;指向毫秒计时单元 
      ACALL   ADD1        ;调用加1程序(加1毫秒操作) 
      MOV   A,R3          ;毫秒数据放入A(R3为2位十进制数组合) 
      CLR    C              ;清进位标志 
      CJNE     A,#60H,ADDS 
ADDS:  JC   OUT            ;小于60毫秒时中断退出 
      ACALL    CLR0        ;大于或等于60毫秒时对秒计时单元清0 
      MOV   R0,#61H        ;指向秒计时单元 
      ACALL   ADD1         ;调用加1程序(加1秒操作) 
      MOV   A,  R3         ;秒数据放入A(R3为2位十进制数组合) 
      CLR   C              ;清进位标志 
      CJNE     A,  #60H,ADDM 
ADDM:  JC   OUT             ;小于60秒时中断退出 
     ACALL    CLR0         ;大于或等于60秒时对秒计时单元清0 
      MOV    R0,#63H         ;指向分计时单元 
      ACALL   ADD1          ;分计时单元加1分钟 
      MOV    A,R3           ;分数据放入A 
      CLR   C               ;清进位标志 
      CJNE    A,#60H,ADDH 
ADDH:  JC   OUT              ;小于60分时中断退出 
      ACALL    CLR0          ;大于或等于60分时分计时单元清0 
      MOV    R0,#65H         ;指向小时计时单元 
      ACALL    ADD1          ;小时计时单元加1小时 
      MOV    A,R3             ;时数据放入A 
      CLR   C                 ;清进位标志 
      CJNE    A,#24H,HOUR 
HOUR:  JC   OUT             ;小于24小时中断退出 
       ACALL    CLR0          ;大于或等于24小时计时单元清零 
OUT: 
    MOV   DISPBUF,   65H 
    MOV   DISPBUF+1, 64H 
    MOV   DISPBUF+2, 63H 
    MOV   DISPBUF+3, 62H 
    MOV   DISPBUF+4,61H 
    MOV   DISPBUF+5, 60H 
    MOV    DISPBUF+6,59H 
    MOV    DISPBUF+7,58H 

    RETI 
;====================================================================== 
           ;清零程序 
;====================================================================== 
CLR0: 
    CLR   A            ;清累加器 
    MOV    @R0,A       ;清当前地址单元 
    DEC    R0          ;指向前一地址 
    MOV    @R0,A       ;前一地址单元清零 
    RET 

;====================================================================== 
                     ;加1子程序 
;====================================================================== 
ADD1: 
   MOV    A,@R0        ;取当前计时单元数据到A 
   DEC   R0            ;指向前一地址 
   SWAP     A          ;A中数据高四位与低四位交换 
   ORL    A,@R0        ;前一地址中数据放入A中低四位 
   ADD   A,#01H        ;A加1操作 
   DA    A             ;十进制调整 
   MOV    R3,A         ;移入R3寄存器 
   ANL    A,#0FH       ;高四位变0 
   MOV    @R0,A        ;放回前一地址单元 
   MOV    A,R3         ;取回R3中暂存数据 
   INC   R0            ;指向当前地址单元 
   SWAP    A           ;A中数据高四位与低四位交换 
   ANL    A,#0FH       ;高四位变0 
   MOV    @R0,A        ;数据放入当前地址单元中 
   RET 
;====================================================================== 
             ;显示程序 
;====================================================================== 
DISP: 
    ;----------------------------------------------------------- 
    MOV     A,DISPBUF   ;取第一个待显示数 
    MOV     DPTR,#DISPTAB 
    MOVC    A,@A+DPTR   ;取字形码 
    CPL A ; 
    MOV     P0,A        ;将字形码送P0位(段口) 
    CLR     LED1       ;开第一位显示器位口 
    LCALL   DELAY       ;延时5毫秒 
    SETB    LED1       ;关闭第一位显示器(开始准备第二位的数据) 
    ;----------------------------------------------------------- 
    MOV     A,DISPBUF+1 ;取显示缓冲区的第二位 
    MOV     DPTR,#DISPTAB 
    MOVC    A,@A+DPTR 
    CPL A ; 
    MOV     P0,A        ;将第二个字形码送P0口 
    CLR     LED2      ;开第二位显示器 
    LCALL   DELAY       ;延时5毫秒 
    SETB    LED2      ;关第二位显示 
    ;----------------------------------------------------------- 
    MOV     A,DISPBUF+2   ;取显示缓冲区的第三位 
    MOV     DPTR,#DISPTAB 
    MOVC    A,@A+DPTR   ;取字形码 
    CPL A ; 
    MOV     P0,A        ;将第三个字形码送P0位(段口) 
    CLR     LED3       ;开第三位显示器位口 
    LCALL   DELAY       ;延时5毫秒 
    SETB    LED3       ;关闭第三位显示器 
    ;----------------------------------------------------------- 
    MOV     A,DISPBUF+3   ;取显示缓冲区的第四位 
    MOV     DPTR,#DISPTAB 
    MOVC    A,@A+DPTR   ;取字形码 
    CPL A ; 
    MOV     P0,A        ;将第四个字形码送P0位(段口) 
    CLR     LED4       ;开第四位显示器位口 
    LCALL   DELAY       ;延时5毫秒 
    SETB    LED4       ;关闭第四位显示器 
    ;----------------------------------------------------------- 
    MOV     A,DISPBUF+4    ;取显示缓冲区的第五位 
    MOV     DPTR ,#DISPTAB 
    MOVC    A,@A+DPTR     ;取字形码 
    CPL  A 
    MOV    P0,A           ;将第五个字形码送P0位(段口) 
    CLR    LED5           ;开第五位显示器位口 
    LCALL   DELAY         ;延时5毫秒 
    SETB    LED5          ;关闭第五位显示器 

    ;----------------------------------------------------------- 
    MOV     A,DISPBUF+5    ;取显示缓冲区的第六位 
    MOV     DPTR  ,#DISPTAB 
    MOVC    A,@A+DPTR      ;取字形码 
    CPL    A 
    MOV    P0,A            ;将第六个字形码送P0位(段口) 
    CLR    LED6            ;开第六位显示器位口 
    LCALL   DELAY          ;延时5毫秒 
    SETB    LED6           ;关闭第六位显示器 

    ;----------------------------------------------------------- 
    MOV    A,DISPBUF+6     ;取显示缓冲区的第七位 
    MOV    DPTR   ,#DISPTAB 
    MOVC   A,@A+DPTR       ;取字形码 
    CPL    A 
    MOV     P0,A           ;将第七个字形码送P0位(段口) 
    CLR     LED7           ;开第七位显示器位口 
    LCALL      DELAY       ;延时5毫秒 
    SETB     LED7          ;关闭第七位显示器 

    ;----------------------------------------------------------- 

    MOV    A,DISPBUF+7    ;取显示缓冲区的第八位 
    MOV     DPTR  ,#DISPTAB 
    MOVC    A,@A+DPTR     ;取字形码 
    CPL     A 
    MOV    P0,A           ;将第八个字形码送P0位(段口) 
    CLR     LED8          ;开第八位显示器位口 
    LCALL     DELAY       ;延时5毫秒 
    SETB     LED8         ;关闭第八位显示器 

    ;----------------------------------------------------------- 
    RET 
PAUSE:                     
   ACALL DISP 
   JNB    P3.2,K3 
   AJMP PAUSE 
  K3:    acall CLEAR 
CLEAR:                      
         MOV   58H, #0 
         MOV   59H, #0 
         MOV   60H, #0 
         MOV   61H, #0 
         MOV   62H, #0 
         MOV   63H, #0 
         MOV   64H, #0 
         MOV   65H, #0 
         LJMP LOOP1 
         RETI 
  
       
         
      
;====================================================================== 
                ;延时程序 
;====================================================================== 
DELAY: 
    MOV     R6,#20H  ;延时约5mS 
D1: MOV     R7,#10H 
D2: DJNZ    R7,D2 
    DJNZ    R6,D1 
    RET 
;====================================================================== 
DISPTAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0ffh 


关键字:LED  数码管  汇编程序 引用地址:LED数码管汇编程序

上一篇:单片机串口通讯程序
下一篇:LED电子屏字符显示器程序

推荐阅读最新更新时间:2024-03-16 15:51

顶级PWM——集创ICN2053引领小间距LED“芯”标准
小间距LED显示屏最需要什么样的驱动芯片?显示效果好、调试简单、不限定外围电路 这无疑反映了当今市场上普遍存在的需求。为了帮助用户迎接小间距LED显示屏的设计挑战,北京集创北方科技股份有限公司推出了最新一代ICN2053驱动芯片,它具有极佳的低灰显示效果,简洁的调试界面,可以与任何行电路搭配,帮助您轻松做出高品质的小间距显示屏。 ICN2053是专为小间距LED显示屏应用设计的16位PWM恒流驱动芯片,内置16KB数据存储SRAM。在具备传统PWM芯片的高刷新、高灰阶优点的同时,能够做到低至0.5mA的恒流输出,在亮度300cd以下时仍有优秀的低灰度显示效果。ICN2053能够解决小间距显示屏的六大基础问题,也能够对传统PWM芯
[电源管理]
顶级PWM——集创ICN2053引领小间距<font color='red'>LED</font>“芯”标准
白色LED的恒流驱动
摘要:用白色LED为显示器或其他照明设备做背光源时,需要对其进行恒流驱动,主要原因是: 避免驱动电流超出最大额定值,影响其可靠性。 获得预期的亮度要求,并保证各个LED亮度、色度的一致性。 本文描述了典型LED的参数范围和恒流驱动电路。 图1给出了六只随机挑选的白光LED (其中三只来自两家顶级产商)的正向电流随正向电压的变化关系曲线,这种情况下,如果用3.4V驱动这六只LED,相应的正向电流差别较大:10mA至44mA。 图1. 六只随机挑选的白光LED (其中三只来自两家顶级产商)其正向电流与正向导通电压的对应关系曲线。注意,对于任一给定电压,正向电流变化范围较大―10mA至44mA (3.4V电压下)。 为保证可靠性
[嵌入式]
白色<font color='red'>LED</font>的恒流驱动
3D LED液晶电视设计方案
  一、引言   近年3D LED显示技术不断的深化发展,在电影《阿凡达》的引爆下,3D LED电视越来越普及,成为当今客厅显示的主流。另外,蓝光DVD也逐步替代了传统的DVD ,蓝光DVD提供了更为清晰的高清片源,尤其是3D片源,蓝光DVD的接口由HDMI1.3 发展到了支持3D格式信源设计的HDMI1.4标准。本文着重介绍了一种实现能够播放3D片源,还可以将2D信号转成3D信号播出的液晶电视解决方案。   二、硬件系统设计介绍   图1是MST6E48+ECT223H+MST6M30QS的3D液晶电视方案的系统框图。 图1 3D LED液晶电视系统框图   我们省略了该系统其它非3D通道的框图,重点描述3D处理的
[电源管理]
3D <font color='red'>LED</font>液晶电视设计方案
夏俊峰:LED灯具散热设计的讨论
对于 LED 灯具的散热,有人说温差大,散热量大,所以散热器表面温度高好。这种说法对,也不对。为什么会有这样一种答案,究其原因是因为,对此不能一概而论,现实中灯具散热的环境多种多样,需要根据具体情况做出具体分析,而后才能确定散热是否真的好。   散热的原因不外乎两种。一种是,将热源的热量传递给环境,对环境加热使环境温度升高,比如供暖系统;一种是,将热源的热量传递出去,使热源的热量传递出去,使热源的温度尽可能降低。比如LED的散热。   对于供暖系统,需要将周围环境加热到足够高的温度。由于暖气管道中热载体是流动的,流体单位时间与某处管道的接触时间有限,要在单位时间内能尽量多地将热量传递给暖气片,就必须通过提高流体的温度,即需要散
[电源管理]
夏俊峰:<font color='red'>LED</font>灯具散热设计的讨论
中国LED照明市场速度高于全球市场增长速度
  据中国国家半导体照明工程研发及产业联盟统计,2005~2009年间,中国LED封装产业产值年平均增长率达12%,应用产品产值增长率达50%,LED行业整体产值的增长率达35%以上。中国半导体照明市场增长速度远高于全球市场增长速度。    日前,中国《半导体照明节能产业发展意见》指出:到2015年,半导体照明节能产业产值年均增长率在30%左右;产品市场占有率逐年提高,功能性照明达到20%左右,液晶背光源达到50%以上,景观装饰等产品市场占有率达到70%以上;企业自主创新能力明显增强,大型MOCVD装备、关键原材料以及70%以上的芯片实现国产化,上游芯片规模化生产企业3-5家;产业集中度显著提高,拥有自主品牌、较大市场影响力的
[电源管理]
把握LED设计关键 实现情调照明
   一、LED的出现打破了传统光源的设计方法与思路,目前有两种最新的设计理念。   1.情景照明:是2008年由飞利浦提出的情景照明,以环境的需求来设计灯具.情景照明以场所为出发点,旨在营造一种漂亮、绚丽的光照环境,去烘托场景效果,使人感觉到有场景氛围。   2.情调照明:是2009年由凯西欧提出的情调照明,以人的需求来设计灯具。情调照明是以人情感为出发点,从人的角度去创造一种意境般的光照环境。情调照明与情景照明有所不同,情调照明是动态的,可以满足人的精神需求的照明方式,使人感到有情调;而情景照明是静态的,它只能强调场景光照的需求,而不能表达人的情绪,从某种意义上说,情调照明涵盖情景照明。情调照明包含四个方面:一是环保节能,二
[电源管理]
揭秘LED优点及LED产业短板--结构设计严重滞后
LED 产业短板——结构设计严重滞后 LED产品价格高是普及化障碍,价格因数决定性价比,灯具的优势和价格能否让大众所接受,是影响 LED灯具 替代传统灯具重要因数之一。    LED芯片 随工艺、数量增长采用更大尺寸LED晶圆片制作工艺,会不断的降低成本,近年来每年在20%速度降低,LED芯片价格因数中,要将 光效 的提升也计入价格降低中,同样的价格购买了更好的产品。LED芯片占15%比重还是很合理的,今后还会继续维持在这个水平。    LED封装 成本占相当的价格比重,大概在50%,我们必须要选择更合适的封装结构。 Cree 、Lumileds、OSRAM现有封装均不符合灯具设计需要,设计成本会高
[电源管理]
单片机AT89C51--3.点亮LED
1. 什么是LED灯 LED:半导体发光二极管。直接将电能,转化为光能 2. LED的工作参数 普通发光二极管工作压降为:1.6-2.1 工作电流为:1-20mA 电流大概为3mA,I=(5-2)/1K 3. 原理图分析 J9表示跳线 控制LED的亮暗,通过P1的高低电平控制。 编程是给P1口赋值0 4. C语言知识 #include reg52.h //引用89c51的头文件 sbit LED1 = P1^0; //定义一个位。把P1.0用LED1代替 void main() { LED1 = 0; //让LED1输出0,LED1就会量,具体看电路图 } sbit 位
[单片机]
单片机AT89C51--3.点亮<font color='red'>LED</font>灯
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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