单片机1602液晶怎样移屏?怎样设置光标闪烁?谁有没有这样的C程序? 怎样让LCD1602的光标闪烁但不移动

作者&投稿:韩岭 (若有异议请与网页底部的电邮联系)
#include <reg52.h>
#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);

}

}

已发。请接收

看郭天祥的十天学会单片机视频 里面有介绍

51单片机液晶1602的C程序谁有,给个简单的显示一个字符A的~

#include "reg52.h"

sbit LED=P1^0;//LED锁存器
sbit SEG=P1^1;//数码管段选锁存器
sbit DIG=P1^2;//数码管位选锁存器
unsigned char t;

sbit LCDRS=P2^7;//数据指令控制
sbit LCDRW=P2^6;//读写控制
sbit LCDEN=P2^5;//液晶屏使能控制

//**********延时函数,延时n*1ms*********
void delay(unsigned char n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<100; j++)
;
}

//*************写命令***************
void Write_Cmd(unsigned char C)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=0;//指令寄存器选择
P0=C;
delay(5);
LCDEN=0;
}

//**************写数据**************
void Write_Data(unsigned char D)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=1;//选择数据寄存器
P0=D;
delay(5);
LCDEN=0;
}

//**********LCD初始化*****************
void LCD_Init()
{
LCDRS=0;//指令寄存器选择
Write_Cmd(0x01);//清屏
Write_Cmd(0x38);//功能设置8位双行显示5*7点阵
Write_Cmd(0x0F);//开关显示设置
Write_Cmd(0x06);//输入方式设置,光标从左向右移动,内容不移动
}

void main()
{
unsigned char Code1[]="I LOVE MCU!";
unsigned char m;

//LED,数码管锁存器片选设置
LED=0;
DUAN=0;
WEI=0;

LCDRW=0;//写选择

LCD_Init();

Write_Cmd(0x80+0x01);//写入显示缓冲区起始地址为1行2列

for(m=0;m<11;m++)
{
Write_Data(Code1[m]);
delay(3);
}

while (1)
;
}//end of main

其实就是一个简单的菜单程序,你可以很简单啊, 你按一下设置 键,则其标志位加1,然后判断是否进入参数设置,如果进入了参数设置,就首先定位一个光标到指定地点,其光标就是255-正常显示值。出现跳动的光标,具体查看LCD1602也是知道的。

...单片机用的ATmega16,液晶是1602,求详细代码
答:12、字符液晶1602LCD接口 采用接插件方式方便插拔(可显示两行 每行16个 共计32任意 ASCII码字符 它的功能应用比数码管丰富很多 显示的信息量更大 我们已经随板附赠了1602LCD 方便学习者开发1602LCD显示的程序) 13、图形点阵液晶12864接口 采用接插件方式方便插拔(可显示任意汉字和图形 是目前单片机 图文显示最常用...

这里面的p0=com是什么意思呢?整个程序执行的是什么命令呢,比如显示数 ...
答:p0=com是单片机控制1602液晶一般主要对其进行写操作,控制1602显示,很少从1602读数据。运算语句一般来说都表现了在存储器内的数据进行运算的行为,然后将结果存入存储器中以便日后使用。高阶命令式编程语言更能处理复杂的表达式,可能会产生四则运算和函数计算的结合。循环语句容许一些语句反复运行数次。循环...

原理图中LCD_TE是什么
答:LCD_TE是屏的一个控制脚,手机屏大多有这个脚,控制屏模式用的好像

1000元左右的数码相机能满足一般家庭拍照要求吗?
答:我可以肯定地回答你,目前1000元左右的数码相机足够你用的.因为我就是一直用卡片机拍片,拍人像拍风景,尤其是拍风景拍得较多.我目前使用的是450元的惠普CA350卡片机.拍照片还是用数码相机为好,从画质上来说目前的手机还不能取带数码相机的.现在的数码相机日系品牌是主流,预算充足你可以优先考虑佳能尼康...

尼康一千以下相机推荐哪个
答:5.液晶屏愈大越耗电,有取景器则可以节约电力6.光学防抖是通过物理位移的补充和控制来做到,电子防抖是后期处理,最好不考虑7.其他的电池看个人的喜好,是选长焦机还是一般的卡片机,或者单反相机和单电就看个人的选择了综合以上条件适当考虑性价比就可以选到好的相机型号京东价格焦距像素ccd尺寸视频屏幕微距PowershotA3100...