数码管动态显示 汇编 60进制

发布者:SereneDreams最新更新时间:2018-05-11 来源: eefocus关键字:数码管  动态显示  汇编 手机看文章 扫描二维码
随时随地手机看文章

题目:用两个动态数码管从0显示到60,由89C51的P1口输出,不加译码器,直接连接数码管,注意是动态数码管,不是两个单独的静态数码管。

;=====================================
程序如下:
        ORG  0000H
        LJMP MAIN
        ORG  0100H
MAIN:                            ;开始初始化
        MOV  DPTR,#TAB           ;表首址送DPTR
        MOV  R1, #0
        MOV  R2, #0              
;-------------------------------------------------------
M1:
        MOV  R0, #50
LOOP:
        CALL DIS
        DJNZ R0, LOOP            ;循环显示80遍,约用1.6s
;-------------------------------------------------------
        MOV  A,  R3              ;这是计数值
        ADD  A,  #1
        DA   A                   ;变成 BCD 码,即:00~99H
        CJNE A, #60H, SSS
        CLR  A
SSS:
        MOV  R3, A               ;计数值分解.
        MOV  B,  #16
        DIV  AB                  ;分成高、低四位
        MOV  R2, A               ;准备去显示
        MOV  R1, B
        SJMP M1                  ;转到前面,显示80遍
;-------------------------------------------------------
DIS:                             ;显示程序.
        MOV  A,  R2              ;显示十位.
        MOVC A,  @A+DPTR
        CLR  P2.1
        MOV  P1, A
        SETB P2.0                ;十位的位选.
        CALL DLY

        MOV  A,  R1              ;个位显示.
        MOVC A,  @A+DPTR
        CLR  P2.0                ;关闭十位的显示.
        MOV  P1, A
        SETB P2.1                ;个位的位选.
        CALL DLY
        RET
;------------------------------
TAB:    DB  0xc0,0xf9,0xa4,0xb0,0x99  ;共阳极段码 0~4
        DB  0x92,0x82,0xf8,0x80,0x90  ;共阳极段码 5~9
;-------------------------------------------------------
DLY:    MOV  R6, #20            ;10ms延时.
D1:     MOV  R7, #248
        DJNZ R7, $
        DJNZ R6, D1
        RET
;-------------------------------------------------------
上述程序运行的效果图如下:

数码管动态显示 汇编 60进制 - 非著名博主 - 电子信息角落


关键字:数码管  动态显示  汇编 引用地址:数码管动态显示 汇编 60进制

上一篇:四个按键控制四个数字递增
下一篇:C51单片机的压缩BCD码相加程序

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

分享一下嵌入式编程的感受
个人认为在嵌入式编程领域掌握三门语言应该就无敌了,汇编,C,C++,精力有限掌握前两个也凑合,再不行C一定要精通,否则只有当老大了,呵呵,进入这个行业一年多时间了,有些感受,学到了很多,也走了不少弯路,在这里想跟大家分享一下,主要是帮助初学者。 嵌入式编程最难的两部分就是interrupt和MM(memory manage),有些人可能感觉不到,那是因为太多数情况下芯片制造商都帮你写好了,但是如果你本身就在为芯片制造商工作,那你就必须自己会写配置文件了,这两个东西之所以比较难是因为要用汇编或类C来写,属于比较低层的东西,中断有外部中断和内部中断,外部中断有两种实现模式,硬件中断模式和软件中断模式,相对来说比较简单,属于应用层面的,相
[单片机]
AVR数码管扫描
#include avr/io.h #define uchar unsigned char #define uint unsigned int uchar display = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar slice = { 0x70,0xb0,0xd0,0xe0}; int main(void) { uchar temp=0,tempb; uint i; DDRD &= ~(1 7); PORTD |= (1 7);//打开上啦电阻 D
[单片机]
跑马灯实验用汇编语言和C51语言做出的不同效果
当前开发单片机应用系统程序主要应用汇编语言和C51语言,采用汇编语言编写可直接操纵系统的硬件资源,能编写出高效运行的程序代码,程序运行速度快。而采用C51语言编写可改善程序的可读性和可移植性,利于产品的更新换代,大大加快了单片机应用程序的开发速度。下面通过一个简单的实验--跑马灯实验来分析一下这两种语言的差别。用AT89C5l实现的跑马灯实验的原理图如xia 图所示。 跑马灯实验的原理图用汇编语言编写程序来实现,程序如下: ORG 0 000H LJP START//转入主程序 ORG 0040H START:MOV SP,#60H//设置 堆栈指针 OV A,# 0 F EH / /送A 11111110 ROTATE =
[单片机]
跑马灯实验用<font color='red'>汇编</font>语言和C51语言做出的不同效果
STC12C5410AD单片机的AD程序两位数码管显示
/*用的是主程序中转换AD,在以后的使用中要用中断的方法才能节约CPU的使用率,本程序中是用P1.0为输入,用的是单片机本身的10位AD,最大1024分辨率,除以10后最大为102,用两位的数码管,所以只能在99以内,在程序中大于99的数,就只能显示99,也可用三位数码管显示.*/ #include reg52.h #define uchar unsigned char #define uint unsigned int #define duan P1 //数码管段码输出端 sfr ADC_CONTR = 0xc5; sfr ADC_DATA = 0xc6; sfr ADC_LOW2 = 0xbe; sfr P1M0 =0x
[单片机]
串行口通信 单片机在数码管显示AD采集值
一. 程序功能 单片机上电后等待从上位机串口发送来的命令(波特率为9600bps),同时在数码管的前三位以十进制显示 AD采集来的数值。 1)当收到以十六进制发送来的01后,向上位机发送字符串 Turn on ad! ,同时间隔 一秒读取AD的值,然后把AD转换过来的数表示成实际电压值(浮点数),并且从串口发 送给上位机,形式如 The voltage is 3.398438V 发送周期也是一秒一次。 2)当收到02时,向上位机发送 Turn off ad! 并停止发送电压值 3)收到其他数时显示 Error! 二. 程序源码 1)法1 #include reg52.h #include intrins.h
[单片机]
单片机0-9数字秒表实验汇编程序
用一条8芯线,一端连接到P1口上,另一端连接到数码管的字段A-DP上(A连接p1.0,B连接p1.1, .),将第一个数码管的公共端X1接地GND 用T0定时50MS,定时初始值为3CB0H T0中断定时,中断20次,约一秒 ORG 0000H AJMP START ORG 000BH AJMP QQ1 START:MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH MOV R4,#14H SETB EA SETB ET0 SETB TR0 MOV 50H,#00H ACALL DISP QQ1:MOV 20H
[单片机]
单片机中级项目13丨矩阵按键数码管移位显示
单片机中级项目13丨矩阵按键数码管移位显示 /******************************************************************************* * 实 验 名 : 动态显示数码管实验 * 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1 * 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。 * 注 意 : *******************************************************************************/ #include reg51.h #def
[单片机]
第11章 栈(X86汇编教程)
栈,是什么呢?其实啊,栈,就是一种数据放进内存和从内存读取出来的方法.用栈来操作数据,几乎无需自己操心数据会被保存在内存的什么地方(不出意外的话.....) 栈操作内存的方法是写入的时候把数据一个一个推进去,写一次推一个数据.而提取数据当然也是一个一个提取出来.注意:提取过的数据就会消失(实际上没有消失,可以再次提取,但....那还不如直接用正常方式操作内存呢..).不像普通内存操作可以反复读取.栈提供了一种 后进先出 的数据操作方法.把最后放进内存的数据最先拿出来.这种内存操作方法在某些方面会有巨大的用处. 使用栈来操作内存,先在内存中定义一个位置,作为 栈顶 ,这个定义的方法也没啥,直接把你要作为栈顶的内存地址写进
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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