
char segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //共阳极七段码
char bitCode[]={0x01,0x02,0x04,0x08,0x10,0x20} //共阳极6位位码,高电平有效
/***在指定位显示数据***/
// m为待显示的七段码数据
// k为指定的位显示数据
void show(char m,char k)
{ char dat
dat = segCode[m] // m=0,1,2,3,4,5,6,7,8,9
HC573(dat,1) //输出段码
dat = bitCode[k] // k=0,1,2,3,4,5
HC573(dat,2) //输出位码
}
sbit segm = P2^6 //段锁存
sbit bitc = P2^7 //位锁存
/*** HC573 接收锁存数据***/
void HC573(char dat,char nub)
{
P0=dat
if(nub==1)
{ segm=1segm=0} //输出段锁存信号
if(nub==2)
{ bitc = 1bitc = 0} //输出位锁存信号
}
bit intflag
void main()
{ char times
intflag=0 times=5
P1=0xff
initime0() //初始化定时器0
while(1)
{ if(intflag)
{ intflag=0
show(times,0) // 因为仅有一位显示,不考虑位扫描问题
times--
if(times==0) { times=5P1=~P1}
}
}
}
#include <reg52.H> //STC头文件#define uchar unsigned char
#define uint unsigned int
#define timewe 3
sbit we = P2^7
sbit du = P2^6
unsigned long temp
uint jsms=0
uchar code duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}
void delay (uint a) // 1ms延时程序(12MHz 10倍于51单片机速度时)
{
uint i
while( --a != 0)
{
for(i = 0 i < 600 i++)
}
}
uchar disbuf[6]
void display()
{ uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}
static uchar a
if(a>=6)a=0
we=1
P0=0xff
we=0
du=1
P0=duan[disbuf[a]]
du=0
we=1
P0=wei[a]
we=0
a++
}
/**********************************************/
/* 主函数 */
/**********************************************/
void main(void)
{
temp=0
while(1)
{
if(++jsms>=1000){
if(++temp == 999999)
temp = 0
}
disbuf[0] = temp/100000
disbuf[1] = temp%100000/10000
disbuf[2] = temp%10000/1000
disbuf[3] = temp%1000/100
disbuf[4] = temp%100/10
disbuf[5] = temp%10
display()
delay(1)
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)