• 大小: 15KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: 1602显示  1602光标  

资源简介

基于51单片机的1602显示及光标移动,光标移动位的数据修改

资源截图

代码片段和文件信息

#include 
#define uchar unsigned char
#define uint unsigned int

#define Data P0 //数据传输口

sbit RS  = P2 ^ 7 ;   //寄存器选择输入
sbit RW  = P2 ^ 6 ; //液晶读写控制
sbit EN  = P2 ^ 5 ; //使能端

sbit k1 = P3 ^ 2 ; //进入设置
sbit k2 = P3 ^ 3 ; //向右移位
sbit k3 = P1 ^ 1 ; //+ 1
sbit k4 = P1 ^ 0 ; //确认

uchar temp[16] = { 1  5 } ;   //数组

/***********LCD1602**************/
void delay(uchar ms)
{
uchar i ;
while(ms--)
for( i = 0 ; i < 250 ; i ++ ) ;
}

void lcd_busy() //检测忙信号
{
RS = 0 ;
RW = 1 ;
EN = 1 ;
while(Data & 0x80) ;
EN = 0 ;
}

void write_com(uchar com)  //写指令
{
lcd_busy() ;
RS = 0 ;
RW = 0 ;
Data = com ;
EN = 1 ;
EN = 0 ;
}

void write_data(uchar dat) //写字节
{
lcd_busy() ;
RS = 1 ;
RW = 0 ;
Data = dat ;
EN = 1 ;
EN = 0 ;
}

void LCD_Init() //初始化
{
write_com(0x38) ; //写显示指令
delay(1) ;
write_com(0x08) ;   //显示、光标、闪烁关闭
delay(1) ;
write_com(0x01) ;   //清屏指令
delay(1) ;
write_com(0x06) ;   //显示光标移动、画面移动方式(AC自增1)
delay(1) ;
write_com(0x0c) ;   //开显示,关闭光标
delay(1) ;
}

void display(uchar addr  uchar dat)  //往某一地址,显示一字节
{
delay(10) ; //延时,否则没有显示
write_com(addr | 0x80) ;    //写地址
write_data(dat + 0x30) ; //写数据
}

void key()
{
uint  i  j  x ;
if( !k1 )
{
for(j = 0 ; ; j ++ )   //进入for循环(无结束条件)
{
write_com(0x80 + x ) ; //指定光标位置
write_com(0x0f) ; //光标闪烁指令

if( !k2 )

while( !k2 ) ;
if ( x > 14 ) x = 0 ; //光标的位数大于14,光标归位
else x ++ ; //否则光标继续右移
delay(10) ;  //延时,否则光标会连续跳几个位
}

if( !k3 ) 
{
while( !k3 ) ;
temp[x] ++ ;     //temp[]数组中的第(x+1)个数据自增1
if ( temp[x] > 9 ) temp[x] = 0 ;  //若数据大于9,则清零
for( i = 0 ; i < 16 ; i++  ) //显示动态改动数据
display(i  temp[i]) ;
}

//display(0x41  x ) ; //显示光标位数
if( !k4 )  //跳出for循环
{
x = 0 ;     //光标归位
break ; 

}
//write_com(0x1c) ; //光标与字符向右移动
//write_com(0x18) ; //光标与字符向左移动
}
}

void main()
{
int i ;
LCD_Init() ;    //初始化1602
while(1)
{
key();    //扫描按键程序
for( i = 0 ; i < 16 ;i++  )   //显示temp[]数组
display(i  temp[i]) ;

}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-10-27 12:00  Move and Change\
     文件        5613  2013-10-27 12:00  Move and Change\M_C
     文件        2431  2013-10-27 12:00  Move and Change\M_C.c
     文件        1362  2013-10-27 12:00  Move and Change\M_C.hex
     文件          38  2013-10-27 12:00  Move and Change\M_C.lnp
     文件        6590  2013-10-27 12:00  Move and Change\M_C.LST
     文件        9400  2013-10-27 12:00  Move and Change\M_C.M51
     文件        6361  2013-10-27 12:00  Move and Change\M_C.OBJ
     文件        1021  2013-10-27 12:00  Move and Change\M_C.Opt
     文件        8589  2013-10-27 12:00  Move and Change\M_C.plg
     文件        2079  2013-10-26 11:58  Move and Change\M_C.Uv2
     文件        1020  2013-10-27 09:56  Move and Change\M_C_Opt.Bak
     文件        2046  2013-10-26 11:18  Move and Change\M_C_Uv2.Bak

评论

共有 条评论