标题:
超级简单程序 单片机三条线 控制八位数码管,带仿真!74HC595数码管
[打印本页]
作者:
Yin89c52
时间:
2020-3-9 21:13
标题:
超级简单程序 单片机三条线 控制八位数码管,带仿真!74HC595数码管
51hei.png
(32.27 KB, 下载次数: 57)
下载附件
2020-3-12 23:34 上传
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define date P0
#define count 50000
#define TH_0 (65536-count)/256
#define TL_0 (65536-count)%256
sbit ds=P0^1;
sbit sh_cp=P0^0;
sbit st_cp=P0^2;
uchar diss[8];
uchar code distab[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
uint sec=0,min=0,hour=0;
void delay(uint iii)
{
while(iii--);
}
void hc595(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
sh_cp=0;
_nop_();
_nop_();
ds=dat>>7;
dat=dat<<1;
sh_cp=1;
_nop_();
_nop_();
}
}
void ds_dat_txd()//锁存发送
{
st_cp=0;
_nop_();
_nop_();
st_cp=1;
_nop_();
_nop_();
}
void display()
{
uchar i=0,dat=0;
for(dat=0xfe;dat!=0xff;dat=dat<<1|0x01)
{
hc595(dat);//先发送位码
hc595(distab[diss[i++]]);//段码,
ds_dat_txd(); //发送
if(i==8)i=0;
delay(100);
hc595(0x00); //消隐
ds_dat_txd();
}
}
void disss()
{
diss[0]=hour/10;
diss[1]=hour%10;
diss[2]=16;
diss[3]=min/10;
diss[4]=min%10;
diss[5]=16;
diss[6]=sec/10;
diss[7]=sec%10;
}
void timer0_init()
{
TMOD=0x01;
EA=1;ET0=1;TR0=1;
TH0=TH_0;TL0=TL_0;
}
void main()
{
timer0_init();
while(1)
{
display();
disss();
}
}
void timer0() interrupt 1
{
static uchar j;
TH0=TH_0;TL0=TL_0;
if(++j==20)
{
j=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
复制代码
所有资料51hei提供下载:
三个IO控制八位数码管.zip
(127.8 KB, 下载次数: 68)
2020-3-9 21:12 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
sun5304
时间:
2020-3-29 09:08
新手正在学习,感谢楼主提供!谢谢!
作者:
3wjkdhus
时间:
2024-11-8 19:37
如若需要显示带小数点该怎么弄
作者:
cy009
时间:
2025-5-30 19:18
3wjkdhus 发表于 2024-11-8 19:37
如若需要显示带小数点该怎么弄
想要显示小数点,对于共阴数码管,需要向其dp端输送高电平,即置1。一般可有两种方法:
1.在程序读出代码表数据后,将数据跟0x80或运算,即可使dp端置1,点亮小数点。
2.在代码表中增加0-9带小数点的代码,排序为10-19,取数位后将数字+10即可显示小数点。
推荐第1种方法。
作者:
风158
时间:
2025-5-31 10:10
谢谢分享,论坛有你更精彩。
作者:
单片机重购
时间:
2025-6-3 17:24
这也是单片机的数码管位选和段选操作噢。我想必你中间肯定是有一个杠的符号对吧,然后分别对数码管的第一位第二位进行分和秒的操作,最后两位进行小时的操作。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1