51单片机程序设计,在6位LED数码管上显示时间,P1口控制显示器段码,P2口控制显示器位码

51单片机程序设计,在6位LED数码管上显示时间,P1口控制显示器段码,P2口控制显示器位码,第1张

你好,时间的话可以考虑使用时钟芯片DS3231,P1口控制段码的话,可以使用两颗595芯片搞定,P2口也可以使用595搞定,P口就扫描按键输入就行了。秒表的话,使用单片机内部的定时器,可以很精确的计时。。至于倒计时,什么的话,都一个道理使用单片机内部的定时器搞定。如果你还不懂的话,我们可以提供有偿服务。

这个问题可大可小,

用三种红绿蓝可以混合色各种颜色,这个程序是吧,每个颜色分成200级(实际是201级),所以值就是0到200,然后用PWM输出控制各色的亮度,混合出七彩,如R=200、G=200、B=200就是白色,但不是纯正的白。(纯白色时RGB的值是不相等的)

户外的超大LED广告屏就是这样的,每个像素点就是一个全色LED灯。

#include <reg52h>

#define uint unsigned int

#define uchar unsigned char

sbit cs1=P2^0; //段

sbit cs2=P2^1; //位

sbit wr =P2^2; //使能

uchar num =0; //T0计时

uchar mark=0; //显示数码管标志

uchar time[2]; //显示时间暂存

uchar code col_table[]={0xfe,0xfd}; //数码管的第一位和第二位

uchar code table[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

}; //共阳极数码管数字0-9的段码

/-----1ms延时函数-----/

void Delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=115;y>0;y--);

}

/-----主函数-----/

void main()

{

TMOD=0x01; //定时器工作在方式0

TH0=(65536-50000)/256; //装初值

TL0=(65536-50000)%256; //装初值

EA =1; //开总中断

ET0=1; //允许T0中断

TR0=1; //开T0

while(1) //死循环

{

P0=table[time[mark]]; //显示段数据

cs1=0;

wr =0;

wr =1;

cs1=1;

P0=col_table[mark]; //显示位数据

cs2=0;

wr =0;

wr =1;

cs2=1;

Delay(1); //延时1ms

mark++; //第一位和第二位间切换达到动态扫描显示

if(mark==2) mark=0;

}

}

/-----T0-----/

void Timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

num++;

if(num==2)

{

num=0;

time[0]++;

if(time[0]==10)

{

time[0]=0;

time[1]++;

if(time[1]==6) time[1]=0;

}

}

}

刚给你写的,你自己看看吧,希望对你有帮助~~~

#include<reg52h>

sbit led = P1^0;

void mian()

{

led = 0;//如果是LED阳极接在单片机上,则是--> led = 1;

while(1);

}

以上就是关于51单片机程序设计,在6位LED数码管上显示时间,P1口控制显示器段码,P2口控制显示器位码全部的内容,包括:51单片机程序设计,在6位LED数码管上显示时间,P1口控制显示器段码,P2口控制显示器位码、单片机驱动LED七彩灯程序、实现1~59秒的动态LED 循环显示 单片机89c51的程序 急急急!!!!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9285452.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存