您好,欢迎来到年旅网。
搜索
您的当前位置:首页一位数码管循环显示多个数字

一位数码管循环显示多个数字

来源:年旅网


一位数码管循环显示多个数字

大 | 中 | 小

2007/05/05 00:49 wentao

view plaincopy to clipboardprint?

 ;**************************************************************************

 ; 标题: 一位数码管循环显示多个数字(汇编)

 ; 作者: wentao http://blog.liuwentao.net

 ; http://wentao.programfan.com

 ; 日期: 2007.2.21

 ; 软件: Keil A51 V8.00

 ; 芯片: ATX51

 ; 说明: 实验板实测通过,数码管为8位共阳

 ; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!

;**************************************************************************

 org 0000h

 ajmp start

 org 0030h

start: mov 30h,#0 ;30单元为循环控制兼变址

 mov dptr,#table ;段码表首址

lop: mov a,30h ;30单元中取要显示的值(偏址)

 movc a,@a+dptr ;取段码表中元素值

 mov p0,a ;段码送入P0口

 mov p2,#0xfe ;选通P2.0口的数码管

 lcall d500ms ;延时500ms

 inc 30h ;循环变量(偏址)自加

 mov a,30h ;检测30h值是否到预定值

 cjne a,#16,lop ;未显示完全部继续

 ajmp start ;循环



d500ms: ;延时500ms子程序@12M(500.701ms)

 mov r5, #4 ;1+[1+(1+2*255)*244+2*244]*4+2*4=500701

temp1: mov r6, #244 ;1+(1+2*255)*244+2*244

temp2: mov r7, #255 ;1+2*255

 djnz r7, $

 djnz r6, temp2

 djnz r5, temp1

 ret

table: db 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8 ;段码表

 ; 0 1 2 3 4 5 6 7 对应内容

 db 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

 ; 8 9 a b c d e f

end

view plaincopy to clipboardprint?

/**************************************************************************

* 标题: 一位数码管循环显示多个数字(C51)

* 作者: wentao http://blog.liuwentao.net

 http://wentao.programfan.com

* 日期: 2007.2.19

* 软件: Keil C51 V8.02

* 芯片: ATX51

* 说明: 实验板实测通过,数码管为8位共阳

* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!

**************************************************************************/

#include

#define uchar unsigned char

void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255

uchar code dis_code[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //段码

 // 0 1 2 3 4 5 6 7 //对应内

 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

 // 8 9 a b c d e f

void main()

{

uchar i; // 循环控制变量兼偏移量

P2 = 0xfe; // 选通P2.0口数码管

while(1)

{

 for(i = 0; i < 16; i++)

 {

 P0 = dis_code[i]; // 段码表中取值送P0口

 delay_ms(250); // 延时500ms

 delay_ms(250);

 }

}

}

void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255

{

uchar i;

while(ms--)

 for(i = 0; i < 124; i++);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务