
52单片机
粉末冶金材料-工会经费比例
2023年3月19日发(作者:如梦令格律)/**********LCD1602液晶屏显示:时-分-秒,D0-D7对应P0口P0_0-P0_7************/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitlcden=P3^4;//使能端:en=1,读取;en=下降沿,执行指令
sbitlcdrs=P3^5;//数据/指令选择端:rs=1,为数据;rs=0,为指令。
sbitlcdrw=P3^6;//读写控制端:rw=1,读;rw=0,写
intW1,W2,W3,W4,W5,W6,W7;
/***********延时函数******************/
voiddelayms(uinttime)
{
uinti;
for(;time>0;time--)
{
for(i=0;i<124;i++)
{;}
}
}
/*******************lcd写入指令子函数********************/
voidlcd_wcom(ucharcom)
{
lcdrs=0;//rs=0,指令
lcdrw=0;//rw=0,写入
P0=com;//把指令送入P0口
delayms(5);//延时一小会,让1602准备接收数据--------代替忙检测函数
lcden=1;//使能端下降沿,把指令送入1602的8为数据口
delayms(2);
lcden=0;
}
/************************lcd写入数据函数************************/
voidlcd_wdata(uchardat)
{
lcdrs=1;//RS=1,数据
lcdrw=0;//rw=0,写入
P0=dat;//把要显示的数据送入P0口
delayms(5);//延时一小会,让1602准备接收数据--------代替忙检测函数
lcden=1;//使能端下降沿,把指令送入1602的8为数据口
delayms(2);
lcden=0;
}
/******************LCD初始化子函数****************************/
voidlcd_init()//初始化,写入指令
{
lcdrw=0;//rw=0,写
lcden=1;
lcden=0;//下降沿,执行指令
lcd_wcom(0x38);//写指令,8位数据,双列
lcd_wcom(0x0c);//开启显示屏,关光标,光标不闪烁
lcd_wcom(0x06);//显示地址递增,即写一个数据后,显示位置右移一位
lcd_wcom(0x01);//清屏
}
/**********************LCD显示子函数****************************/
voidlcd_display(inti,intj)
{
lcd_wcom(0x80+i-1);
switch(j)
{
case0:lcd_wdata('0');delayms(2);break;
case1:lcd_wdata('1');delayms(2);break;
case2:lcd_wdata('2');delayms(2);break;
case3:lcd_wdata('3');delayms(2);break;
case4:lcd_wdata('4');delayms(2);break;
case5:lcd_wdata('5');delayms(2);break;
case6:lcd_wdata('6');delayms(2);break;
case7:lcd_wdata('7');delayms(2);break;
case8:lcd_wdata('8');delayms(2);break;
case9:lcd_wdata('9');delayms(2);break;
default:lcd_wdata(':');delayms(2);break;
}
}
/***************定时器T0初始化子函数**********************/
voidinitTimer0(void)
{
TMOD=0x01;//模式1,16位T0,定时10ms
TH0=0xD8;//初值
TL0=0xF0;
EA=1;//开总中断
ET0=1;//允许T0中断
TR0=1;//启动T0
}
/*****************************定时器T0中断子程序****************************/
voidTimer0(void)interrupt1
{
inttime;
inta;
time++;
a=time;
W1=a%10;a/=10;
W2=a%10;a/=10;
W3=a%6;a/=6;
W4=a%10;a/=10;
W5=a%6;a/=6;
W6=a%10;a/=10;
W7=a%10;a/=10;
}
/**************************主函数*******************************/
voidmain()
{
initTimer0();//初始化
lcd_init();
while(1)
{
//lcd_display(10,W1);
//lcd_display(9,':');
lcd_display(8,W2);
lcd_display(7,W3);
lcd_display(6,':');
lcd_display(5,W4);
lcd_display(4,W5);
lcd_display(3,':');
lcd_display(2,W6);
lcd_display(1,W7);
}
}