找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1673|回复: 0
收起左侧

LCD12864显示程序

[复制链接]
ID:932911 发表于 2021-6-12 20:13 | 显示全部楼层 |阅读模式
#include <reg51.h>
#define lcd_data      P0
  sbit RS      = P2^0;
  sbit RW      = P2^1;
  sbit E       = P1^6;
  sbit PSB     = P2^2;


void delay(unsigned int k)
{  
      unsigned int i;
      unsigned char j;
      for(i=0;i<k;i++)
      {
           for(j=0;j<10;j++);
       }
}
//********************************************************
//延时1ms函数
//********************************************************
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
    unsigned int x,y;
    for(x=k;x>0;x--)
         for(y=121;y>0;y--);
}
//********************************************************
//写命令函数
//********************************************************
void LcdWcom(unsigned char WCom)
{
      delay(1);
      RS=0;  //指明操作对象为指令寄存器
      RW=0; //指明为写操作
      E=1;
      lcd_data=WCom; //将命令写入总线
      E=0;
}
//********************************************************
//写数据函数
//********************************************************
void LcdWdata(unsigned char WData)
{
     delay(1);
     RS=1; //指明操作对象为数据寄存器
     RW=0; //指明为写操作
     E=1;
     lcd_data=WData; //将数据写入总线
     E=0;
}
//********************************************************
//显示初始化函数
//********************************************************
void Display_Init(void)
{
      delay_ms(45); //延时45ms
      PSB=1; //8位并行口
   
      //功能设定
      LcdWcom(0x30); //设置为8位并行口,基本指令集
      delay(10);
      LcdWcom(0x30); //再次设置为8位并行口,基本指令集
      delay(5);
//    //显示开关控制
//    LcdWcom(0x0c); //游标显示关,正常显示,整体显示开
//    delay(10);
      //清除显示
      LcdWcom(0x01);  
      delay_ms(12); //延时12ms
      //进入点设置
      LcdWcom(0x06); //设置为游标右移,DDRAM位地址加1,画面不移动
      delay(5);
      LcdWcom(0x0C); //开显示
}
  //********************************************************
//设置光标函数
//参数说明:x为行号,y为列号
//********************************************************
void Set_Cursor(unsigned char x, unsigned char y)
{
    unsigned char i;
    switch(x)//确定行号
    {
        case 0x00: i=0x80; break;//第一行
        case 0x01: i=0x90; break;//第二行
        case 0x02: i=0x88; break;//第三行
        case 0x03: i=0x98; break;//第四行
        default : break;
    }
    i = y+i;//确定列号
    LcdWcom(i);//写地址
}
//********************************************************
//显示字符函数
//********************************************************
void Display_Char(unsigned char Alphabet)
{
      delay(1);
      LcdWdata(Alphabet); //写入需要显示字符的显示码
}
/**********************显示单个字符*************************/
void main()
{
    while(1)
    {
     Set_Cursor(0,0); //光标地址设定
Display_Char(0x21); //显示字符!
    }
}


01.7z

15.72 KB, 下载次数: 16, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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