『壹』 51單片機 不管怎麼驅動 1602隻顯示上面一排黑塊 如圖 如果我程序錯了請隨便發一個能驅動1
求驅圖液晶程序
請幫忙看看程序 ,LCD1602沒顯示,背光
##include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code tabel1[]="U:5V";
void delaynms(uint x);
void init();//液晶屏初始化
bit lcd_bz();//LCD忙檢測
void LCD_RegWrite(uchar Command);//寄存器進行寫操作
void LCD_DataWrite(uchar Data);//寫位元組顯示數據至 LCD
sbit LCD_RS =P3^4;
sbit LCD_RW =P3^5;
sbit LCD_E =P3^6;
void delaynms(uint x) //延1ms程序
{
uchar j;
while(x--)
{
for(j=0;j<120;j++);
}
}
void init()
{
delaynms(50);
LCD_RegWrite(0x38);//功能設置8位雙行顯示5*7點陣
delaynms(5);
LCD_RegWrite(0x38);//功能設置8位雙行顯示5*7點陣
delaynms(5);
LCD_RegWrite(0x38);//功能設置8位雙行顯示5*7點陣
delaynms(5);
LCD_RegWrite(0x08);//關閉顯示
LCD_RegWrite(0x01);//清屏
LCD_RegWrite(0x06);//輸入式設置游標左向右移顯示屏移
LCD_RegWrite(0x0C);//顯示顯示游標游標閃爍
}
bit lcd_bz()
{ // 測試LCD忙碌狀態
bit result;
P0=0xFF;
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 0;
delaynms(1);
LCD_E = 1;
result = (bit)(P0 & 0x80);
delaynms(5);
LCD_E = 0;
return result;
}
//*************寫命令***************
void LCD_RegWrite(uchar Command)
{
while(lcd_bz());
LCD_RS = 0; //RS 置低示意進行寄存器操作
LCD_RW = 0; //RW 置低示意進行寫入操作
LCD_E= 0;
P0=Command;
delaynms(5);
LCD_E= 1;
delaynms(5);
LCD_E = 0;
}
//**************寫數據**************
void LCD_DataWrite(uchar Data)
{
while(lcd_bz());
LCD_RS= 1; //RS 置高示意進行顯存數據操作
LCD_RW= 0; //RW 置低示意進行寫入操作
LCD_E = 0;
P0=Data; //裝載數據置匯流排
delaynms(5);
LCD_E= 1;
delaynms(5);
LCD_E= 0; //產效跳變沿
}
void LCDxianshi()
{
uchar i;
LCD_RegWrite(0x80+0x01);//設置第行第2列顯示
for(i=0;i<4;i++)
{LCD_DataWrite(tabel1[i]);
delaynms(10);
}
}
void main()
{
delaynms(400);
init();
delaynms(50);
LCDxianshi();
}
『貳』 51單片機編寫lcd1602顯示程序,第一行顯示自己的姓名,第二行顯示學號
1、首先我們打開Keil μVision編譯器,新建一個工程,然後保存在硬碟上的位置,然後選擇Atmel-AT89C51單片機為模型,並啟動器添加STARTUP.A51文件,然後在當前目錄下新建一個C文件,並將其添加入工作路徑。