求教 51单片机 c语言 动态显示

来源:百度知道 编辑:UC知道 时间:2024/05/02 19:58:32
静态的部分我大部分会了
只是动态的不会
看程序也不理解(网上找了很多,都不够详细)
谁可以给我一个4位数码管的动态显示程序(用C写的)
注明解释(要很详细)

我知道我的要求有点过分
但是。。。
希望你们可以帮帮我

谢谢
首先谢谢各位大师的热心解答
但是
感觉还不是很理想

其实
原理我知道
但是要用自己想法写的话

很长
而且很乱

我估计有专门的动态显示编码的

只求各位师傅们
可以写个完整的 4 位数码管显示程序

例如
实现24小时显示】 像时钟一样的
本人只是略懂皮毛
希望好心人可以
对程序中用到的语句,和关键字
给予详细的解释

谢谢你们
再次谢谢

/* ×××××××××××××××××××××
led 显示程序
×××××××××××××××××××××××*/
void display(void)
{ uint i;

for(i=0;i<4;i++) //4位数码管
{
P2=shu[tm[3-i]]; //送段码
P0=~(0x01<<i)|0x80; //一次显示一位

delay(2); //显示一位,延时2MS
}

P0=0x0f; //四位显示完,关闭位选码

}

动态显示的是有固定格式的,赋值,开显示,延时,关显示,假设P0口接数据显示位,P2口低4位接片选,
P0=TAB[1]; //赋值
P2_0=0; //开第一位显示
FOR(I=0;I<200:I++);//延时
P2_0=1; //关第一位显示

P0=TAB[2];
P2_1=0; //开第二位显示
FOR(I=0;I<200:I++);
P2_1=1;
这个程序就是让两个数码管分别显示1和2,其它的一样复制,改一下片选端就可以实现了,注意程序开头包含头文件regx52.h,如果是包含reg52.h编译不了的

应该网上的就可以看懂啊

静态的会了,那动态的也就好办了。
动态其实是利用人眼的暂留效应。时间小于0.02s
时,人眼就分不出来了。其实一次只有一个数码
管在显视,只是你眼睛分不出来而已。

你先写个点亮第一个数码管的,
延时
再点亮第二个

#ifndef _led_h_
#define _led_h_

#include<reg52.h>
#include<intrins.h>

unsigned char ucDigit[] = {0x0E, 0x0D,