51单片机12864液晶字符显示 下载本文

内容发布更新时间 : 2024/5/21 10:43:28星期一 下面是文章的全部内容请认真阅读。

51 单片机 12864 液晶字符显示

51 单片机的 12864 液晶字符显示,采用液晶的并行接法

#include#include#include#define uchar unsigned char#define uint unsigned int #define LCD_data P0 //定义数据口 sbit LCD_RS=P3 ; //数据命令选择端,高电 平为写数据,低电平写命令 sbit

LCD_RW=P3 ;//读写控制端,高电平读信息,低电平写信息 sbit

LCD_EN=P3 ; // 使能端 sbit LCD_PSB=P3 ; //拉高 ,选择并行 //单片机特殊功能位声明

uchar code dis1[]={“姓名:浩泉”};uchar code dis2[]={“性别:男”};uchar code dis3[]={“卡号:050817”};uchar code dis4[]={“szu.edu”};

void delay_1ms(uint x) //延时函数 1ms{ uint i,j; for(j=0;jvoid write_cmd(uchar cmd) //写命令函数,请参考 12864 液晶手册{ LCD_RS=0; //低电平,写入命令 LCD_RW=0; P0=cmd;

//

赋值

delay_1ms(5);

LCD_EN=1;//使能端拉高送入命令

delay_1ms(5); LCD_EN=0;}

void write_date(uchar date) //写数据{ LCD_RS=1; LCD_RW=0;

P0=date; delay_1ms(5); LCD_EN=1; //使能端拉高送入数据 delay_1ms(5); LCD_EN=0;}

void lcd_pose(uchar X,uchar Y) //液晶显示位置函数{ uchar S,pose; switch (X) { case 0: S=0x80; //液晶第一行显示 break; case 1: S=0x90; //第二行显示 break; case 2: //第三行显示 S=0x88; break;

case 3: //第四行显示 S=0x98; break;} pose=S+Y; write_cmd(pose);}

void lcd_init() //液晶初始化函数{

LCD_PSB=1; // 并行选择,请参考液晶指令表 write_cmd(0x01); delay_1ms(5); write_cmd(0x30);

delay_1ms(5);

write_cmd(0x0C);

delay_1ms(5);

write_cmd(0x06); delay_1ms(5);} main(){ uchar i; lcd_init();

lcd_pose(0,0);

//液晶第一行第一列的第一个字符显示

i=0;

while(dis1[i]!=/0)//查询没有到字符串末尾 { write_date(dis1[i]); //写入字符 i++; } lcd_pose(1,0);//第 2 行 i=0; while(dis2[i]!=/0) { write_date(dis2[i]); i++; } lcd_pose(2,0); //第 3 行 i=0; while(dis3[i]!=/0){ write_date(dis3[i]); i++; } lcd_pose(3,0); //第 4 行 i=0;while(dis4[i]!=/0){ write_date(dis4[i]); i++; } while(1); }

tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!