首页 > 编程知识 正文

51单片机驱动液晶屏,51单片机液晶显示数字

时间:2023-05-04 06:11:14 阅读:216526 作者:700

lcd12864液晶屏,有点复杂,只有基本的显示。

#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit LCD12864_READ = P0^7;sbit LCD12864_RS = P3^5;sbit LCD12864_RW = P3^6;sbit LCD12864_EN = P3^4;sbit LCD12864_RD = P3^7;//void Delay_Ms(uchar z){uchar x,y;for(x=z;x>0;x--) for(y=120;y>0;y--);}/*******************LCD12864LCD检查忙*********************/void LCD12864_busy(){ LCD12864_RS = 0;LCD12864_RW = 1;LCD12864_EN = 1;Delay_Ms(1);P0 = 0xff;while(1){LCD12864_EN = 1;if(LCD12864_READ == 0) break;}LCD12864_EN = 0;}/*******LCD12864WriteCommand要写入的命令********************/void LCD12864_Write_Cmd(unsigned char Cmd){LCD12864_busy();LCD12864_RS = 0;LCD12864_RW = 0;LCD12864_EN = 0;Delay_Ms(1);P0 = Cmd;Delay_Ms(1);LCD12864_EN = 1;Delay_Ms(1);LCD12864_EN = 0; } /**************LCD12864WriteByte要写入的字节*************/void LCD12864_Write_Date(unsigned char date){LCD12864_busy();LCD12864_RS = 1;LCD12864_RW = 0;LCD12864_EN = 0;P0 = date;Delay_Ms(1);LCD12864_EN = 1;Delay_Ms(1);LCD12864_EN = 0;}// *******************void LCD12864_init(){ LCD12864_RD = 1; //并口方式 LCD12864_Write_Cmd(0x34); //扩充指令操作 LCD12864_Write_Cmd(0x30); //基本指令操作 LCD12864_Write_Cmd(0x0C); //显示开,关光标 LCD12864_Write_Cmd(0x01); //清除LCD的显示内容}//void gotoxy(uchar x,uchar y){ if(x==1) {LCD12864_Write_Cmd(0x80+y-1);}else if(x==2) {LCD12864_Write_Cmd(0x90+y-1);}else if(x==3) {LCD12864_Write_Cmd(0x88+y-1);}else if(x==4) {LCD12864_Write_Cmd(0x98+y-1);}}//void LCD_write_zifu(uchar *p){while(*p!=0){LCD12864_Write_Date(*p);p++;}}/*****主程序*****************************/void main(){LCD12864_init();gotoxy(1,1);LCD_write_zifu("LCD 液晶,带字库");gotoxy(2,1);LCD_write_zifu("LCD 液晶,带字库");gotoxy(3,1);LCD_write_zifu("LCD 液晶,带字库");gotoxy(4,1);LCD_write_zifu("LCD 液晶,带字库");while(1);}

个人见解,感谢阅读。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。