永发信息网

为什么1602液晶屏全部在闪烁

答案:1  悬赏:60  手机版
解决时间 2021-02-24 17:42
为什么1602液晶屏全部在闪烁
最佳答案
#include
#define uchar unsigned char
#define uint unsigned int
uchar data a[ ]="xian zai shi ";
sbit key0= P2^0;//功能键,对位进行选择
sbit key1=P2^1;// 加位
sbit key2= P2^2;// 减位
sbit EN= P3^4; //读写段
sbit RS= P3^5; //使能端
uchar miao,fen,shi;
uchar gongleng;//功能键中间变量
uchar g,key0sum;
void xunhuan (uint x)
{
int y,z;
for (y=x;y>0;y--)
for (z=120;z>0;z--);
}

void write_e(uchar e ) //写密命
{
RS=0;
P1=e;
xunhuan(5);
EN=1;//给使能端一个高脉冲, 因为上升源完成指令
xunhuan(5);
EN=0; //芯片停止工作
}
void write_f(uchar f) //写操作
{
RS=1;
P1=f;
xunhuan(5);
EN=1;
xunhuan(5);
EN=0;
}

void write_wei(uchar wei, uchar shu ) //一个显示时间,一个现实在液晶屏那个位置
{
uchar shi,ge;
shi=shu/10; //显示两位数的高位
ge=shu%10; // 显示两位数的高低
write_e(0x80+0x40+wei);
write_f(0x30+shi);
write_f(0x30+ge);
}

void init ()
{
EN=0;//使能端
miao=0;
fen=0;
shi=0;
write_e(0x38);
write_e(0x0c);
write_e(0x06);
write_e(0x01);
//write_e(0x80+0x40);
for (g=0;g<16;g++) //显示现在时间
{
write_f(a[g]);
xunhuan(10);
}

write_e(0x80+0x40+6 ); //将要显示的位置
write_f(':');
xunhuan(5);
write_wei(4,shi);// 时的位置

write_e(0x80+0x40+9 );//将要显示的位置
write_f(':');
xunhuan(5);
write_wei(7,fen);//分的位置

TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}

void keysan() //按键功能端
{
if(key0==0) //判断功能键的按下
{
xunhuan(20);

if(key0==0)
{
(key0sum)++;
while(!key0) ;

if(key0sum==1)
{
TR0=0 ;//关闭定时器终段位
write_e(0x80+0x40+10 );//移动到秒
write_e(0x0f);//光标闪烁,
}
if(key0sum==2)
{
TR0=0 ;//关闭定时器终段位
write_e(0x80+0x40+7 );//移动到分
write_e(0x0f);//光标闪烁,
}

if(key0sum==3)
{
TR0=0 ;//关闭定时器终段位
write_e(0x80+0x40+4 );//移动到时
write_e(0x0f);//光标闪烁,
}
if(key0sum==4)
{
TR0=1 ;//关闭定时器终段位
key0=0 ;//移动到秒
write_e(0x0c);//取消光标闪烁,
}
}
}



if (key0!=0 )//判断功能键是否按下去
{
if(key1==0)
{
xunhuan(20);
if(key1==0) //按键的加位
{
while(!key1);
//秒
if(key0sum==1) //若功能键按下时一次,说明 光标移到秒
{
miao++;
if(miao==60)

miao=0;
write_wei(10,miao);// 将位和数送到秒
write_e(0x80+0x40+10);
}

//分
if(key0sum==2) //若功能键按下时一次,说明移到分
{
fen++;
if(fen==60)

fen=0;
write_wei(7,fen);// 将位和数送到fen
write_e(0x80+0x40+7);
}

//时
if(key0sum==3) //若功能键按下时一次,说明移到分
{
shi++;
if(shi==60)

shi=0;
write_wei(4,shi);// 将位和数送到fen
write_e(0x80+0x40+4);
}
}
}
}
}

void main()
{
uint m;
init();
write_e(0x80);
for(m=0;m<16;m++)
{
write_f(a[m]);
xunhuan(5);
}
while(1)
{

keysan();
}

}

void T0_timer () interrupt 1
{

TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
g++;
if(g==20)
{
g=0;
miao++;

if(miao==60)
{
miao=0;
fen++;

if(fen==60)
{
fen=0;
shi++;

if(shi==24)
{
shi=0;
}
write_wei(4,shi);
}
write_wei(7,fen);
}
write_wei(10,miao);

}

}

南京罗姆液晶给你专业的回答!!!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
月朗风清我想知道这个在什么地方
如何使用CAXA2011破解补丁DrawLib.dll?
大连旅顺南路轿车可以坐6个人吗?
(8分)为了观察植物的向性运动,将培植在琼
龙域西一路/龙域南街(路口)在哪里啊,我有事
有一首歌,其中一句歌词是“难道这就是你曾说
全新小米路由器绑定迅雷远程失败,求助
三国群英传6与5相比有什么不同
行车到十字路口 需要左拐 左拐是绿灯 对面有
大红大紫(荥经店)地址有知道的么?有点事想过
齐齐哈尔百花园有修表的吗
0.5小时等于多少分钟
山地自行车如何给加气
小米4手机怎么老是出现什么系统停止运行还有
哈姆雷特舞台的表现形式是?
推荐资讯
东风风行菱智3开门几个座
一直感觉想拉粑粑,,但是却拉不出来,有时候
康源大酒店(东门)地址在什么地方,想过去办事
米兰风情这个地址在什么地方,我要处理点事
奇瑞旗云启动烧保险怎么解决
已知对于任意实数X,均有f(派-x)=-f(x)与 f(2
他着急地说地里的庄稼都死了?年的还是地呀
邮储银行承认国家开放大学学历吗
为什么有的人明知道这样做不厚道,不仁义为什
子宫前位,三径约71 63 77mm,宫壁肌层回声分
小偷如果入室该如何保护自己
大连海事大学和大连理工大学在通信方面哪个好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?