✅ 操作成功!

52单片机

发布时间:2023-06-16 作者:admin 来源:文学

52单片机

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);

}

}

👁️ 阅读量:0