找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5999|回复: 0
打印 上一主题 下一主题
收起左侧

lcd1602显示程序源码-51单片机

[复制链接]
跳转到指定楼层
楼主
ID:75263 发表于 2015-3-24 23:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                                                                                                 #include<reg51.h>

/*************LCD COMMAND*************/

#define Twoline_8bit                 56       //0x38
#define CLEAR                        1       //0000 0001  CURSOR  指针
#define CURSOR_HOME                  2        //0000 0010
#define CURSOR_LEFT                  4       //0000 0100
#define CURSOR_RIGHT                 6       //0000 0110
#define CURSOR_OFF                   12            //0000 1100
#define CURSOR_ON                    14       //0000 1110    BLINK  闪烁
#define CURSOR_BLINK                 15        //0000 1111
#define GOTO_LINE_2                  192     //    GOTO  转到
#define GOTO_LINE_1                  126

/*************LCD CONTROL LINE***********/

#define ENABLE                       1
#define DISABLE                      0
#define READ                         1
#define WRITE                        0
#define COMMAND                      0                   //  COMMAND  指令
#define DATA                         1
#define rs                           P2_6
#define rw                           P2_5
#define enable                       P2_4
sbit              P2_6=P2^6;
sbit              P2_5=P2^5;
sbit              P2_4=P2^4;
void delay100us();
void write_lcd_command(unsigned);       //   输入指令寄存器
void write_lcd_data(unsigned);        //   输入数据寄存器
void init_lcd(void);          //   初始化LCD
void clear_lcd(void);          //    LCD 清屏
void diplay_lcd_string(char *P);        //    显示字符串函数
void gotoxy(unsigned,unsigned);            //    设置光标到第X行第Y列
void display_lcd_number(char);            //    显示单个数字
               

char code int2charlcd[]="0123456789";
void delay100us()            //延时函数
{  unsigned char i,j;
  for(i=0;i<=10;i++)
     for(j=0;j<=10;j++)
  ;
}
void write_lcd_command(unsigned command)       //写入指令寄存器函数
{
  rw=WRITE;                //rw为写状态
  rs=COMMAND;                //rs指向指令寄存器
  enable=ENABLE;               //使能
  P1=command;               //P1口送指令码
  delay100us();
  enable= DISABLE;
  rw=1;
}
void write_lcd_data(unsigned lcddata)
{
  rw=WRITE;                 //rw为写状态
  rs=DATA;                //rs指向数据寄存器
  enable=ENABLE;               //使能
  P1=lcddata;
  delay100us();
  enable=DISABLE;
  rw=1;
}
void init_lcd(void)
{
  write_lcd_command(Twoline_8bit);                        // 0b00111000
  write_lcd_command(CURSOR_OFF);                             // 0b00001100
  write_lcd_command(CURSOR_RIGHT);                     // 0b00000110
}
void clear_lcd(void)
{
  write_lcd_command(CLEAR);
  write_lcd_command(CURSOR_HOME);
}
void display_lcd_string(char *P)       //显示字符串函数
{
  while(*P)            //例如display_LCD_string(“Hello")
  {
    write_lcd_data(*P);
P++;
   }
}
void display_lcd_number(char number)      //显示数值变量函数
{
  unsigned char x,y;          //例如isplay_LCD_number(变量)
  x=number/10;
  y=number-10*x;           //变量在函数里进行处理在送数据寄存器显示
  write_lcd_data(int2charlcd[x]);
  write_lcd_data(int2charlcd[y]);
}
void gotoxy(unsigned x,unsigned y)         //光标跳转函数X表示第几行,Y表示第几列。
{
  if(x==1)
    write_lcd_command(GOTO_LINE_1+y);
  else
    write_lcd_command(GOTO_LINE_2+y);
}
void main(void)
{
  init_lcd();
  clear_lcd();
  display_lcd_string("jjjtangxiaojin");
  gotoxy(2,1);
  display_lcd_string("jjjjtiancai");
  while(1);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表