找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11942|回复: 10
收起左侧

51单片机控制LCD12864显示汉字

  [复制链接]
ID:368523 发表于 2018-7-11 21:42 | 显示全部楼层 |阅读模式
QQ图片20180711214129.jpg
程序:
#include <reg52.h>
#define DATA_PORT P0
sbit LCD12864_EN   = P1^2;
sbit LCD12864_RSET = P1^3;
sbit LCD12864_RS   = P1^0;
sbit LCD12864_RW   = P1^1;
sbit LCD12864_PSB  = P1^6;


void delay(unsigned int xms)  //延时//
{
        unsigned char i,j;
        for(j = 0; j < xms; j++)
        {
                for(i = 0;i < 110;i++);
        }
}
bit LcdBusyCheck(){
          bit result;
          LCD12864_RS = 0;
          LCD12864_RW = 1;
          LCD12864_EN = 1;
          result = (bit)(DATA_PORT&0x80);
          LCD12864_EN = 0;
          return result;
}

void WriteCmdToLCD(unsigned char cmd)
{
                //        while(LcdBusyCheck());
        delay(10);
          LCD12864_RS = 0;
          LCD12864_RW = 0;
          LCD12864_EN = 1;
          DATA_PORT = cmd;
          delay(5);
        LCD12864_EN = 0;
        delay(5);
        LCD12864_EN = 1;

}




void WriteDatToLcd(unsigned char dat)
{
                //while(LcdBusyCheck());
                delay(10);
                LCD12864_RS = 1;
          LCD12864_RW = 0;
          LCD12864_EN = 1;
          DATA_PORT = dat;
          delay(5);
        LCD12864_EN = 0;
        delay(5);
        LCD12864_EN = 1;

}


void WriteStrToLcd(unsigned char *str)
{
        while(*str != '\0')
        {
                WriteDatToLcd(*str++);
                delay(5);
        }
}





void LcdPos(unsigned char x,unsigned char y)
{
        unsigned char pos;
        if(x == 1)
        {
                x = 0x80;
        }else if(x == 2)
        {
                x = 0x90;
        }else if(x == 3)
        {
                x = 0x88;
        }else if(x == 4)
        {
                x = 0x98;
        }
        pos = x + y - 1;
        WriteCmdToLCD(pos);
}


void LcdInit()
{
        LCD12864_PSB = 1;
         LCD12864_RSET = 0;
         delay(10);
        LCD12864_RSET = 1;

        WriteCmdToLCD(0x30);
        delay(5);
        WriteCmdToLCD(0x30);
        delay(5);
        WriteCmdToLCD(0x18);
        delay(5);
        WriteCmdToLCD(0x10);
        delay(5);
        WriteCmdToLCD(0x01);

        delay(5);
        WriteCmdToLCD(0x06);
        delay(5);
         WriteCmdToLCD(0x0c);
        delay(5);


}
int main()
{
                P0 = 0xff;
                P1 = 0xff;
           LcdInit();
           while(1)
           {
                     LcdPos(1,1);
                         WriteStrToLcd("  榆林学院  ");
                        delay(5);

                LcdPos(2,1);
                         WriteStrToLcd("能源工程学院");
                        delay(5);
                LcdPos(3,1);
                         WriteStrToLcd("51控制LCD12864");
                        delay(5);
                LcdPos(4,1);
                         WriteStrToLcd("加油吧朋友们!!!");
                        delay(500);
           }
}




51单片机控制LCD12864.zip

14.36 KB, 下载次数: 278, 下载积分: 黑币 -5

评分

参与人数 2黑币 +55 收起 理由
YYQ@DIY + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:378263 发表于 2018-11-29 10:13 | 显示全部楼层
PSB 是什么角 我这有cs1
回复

使用道具 举报

ID:521143 发表于 2019-4-28 22:15 | 显示全部楼层
觉得对于初学者来说,这个真的跟有用,多多研究
回复

使用道具 举报

ID:521143 发表于 2019-4-28 22:16 | 显示全部楼层
对于刚刚学习的我,感觉真的很需要,很实用
回复

使用道具 举报

ID:649152 发表于 2019-11-26 09:00 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:649789 发表于 2019-11-26 11:46 | 显示全部楼层
谢谢分享,那如果我想让他滚动起来要怎么改
回复

使用道具 举报

ID:225536 发表于 2019-11-26 15:40 | 显示全部楼层
这尼玛能点起来 我和你姓
回复

使用道具 举报

ID:595359 发表于 2020-5-20 14:46 来自手机 | 显示全部楼层
psb是什么角
回复

使用道具 举报

ID:778067 发表于 2020-7-1 08:03 | 显示全部楼层
不错,值得下载
回复

使用道具 举报

ID:72649 发表于 2023-11-26 13:23 | 显示全部楼层
带字库吗?
回复

使用道具 举报

ID:1053359 发表于 2023-11-27 10:40 | 显示全部楼层
pkfpzf 发表于 2019-11-26 15:40
这尼玛能点起来 我和你姓

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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