找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4159|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

lcd1602 液晶顯示單個(gè)字符 程序那里有錯(cuò)誤,顯示不了,大神賜教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:64512 發(fā)表于 2014-7-29 09:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
file:///c:/users/administrator/appdata/roaming/360se6/User Data/temp/223551r22qfrp2u46r4pc2.jpg.thumb.jpg
仿真電路如圖。程序仿真什么都不顯示。


#include <reg51.h>
#include <string.h>
#define lcddata P0 //p0口為數(shù)據(jù)輸入端


sbit busy=P0^7;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
void sysbegin(void); //顯示系統(tǒng)初始化函數(shù)聲明
void yanshi(unsigned int i); //延時(shí)子程序聲明
void redbusy(void); //讀忙子程序聲明,判斷l(xiāng)cd是否忙碌,是否可以輸入數(shù)據(jù)
void begin(void); //lcd1602顯示一般初始化過程子程序聲明
void writelcd(bit i,unsigned char value); //寫指令函數(shù)聲明 RS=L,R/W=L,D0-D7=指令碼,E=高脈沖
//寫數(shù)據(jù) RS=H,R/W=L,D0-D7=數(shù)據(jù),E=高脈沖




void main()
{
sysbegin(); //系統(tǒng)初始化程序
begin(); //lcd1602顯示初始化
writelcd(0,0x80);//寫指令 顯示地址設(shè)置
writelcd(1,*A*);//寫數(shù)據(jù) 顯示字符設(shè)置
while(1);
}


void sysbegin(void) //顯示系統(tǒng)初始化子程序
{
RS=1;
RW=1;
EN=0;
lcddata=0xFF; //這里P0為與LCD D0~D7相連的I/O口
}


void redbusy(void)//讀忙子程序,判斷l(xiāng)cd是否忙碌,是否可以輸入數(shù)據(jù)
{
lcddata=0xFF; //初始化,p0口為輸入。
RS=0;
RW=1;
EN=1;
while(busy==1); //判斷l(xiāng)cd D7位:為1-忙, 0-不忙 lcddata & 1xxx xxxx 為1一直等待,為0跳出循環(huán)。
EN=0; //讀狀態(tài)是EN為高脈沖變低脈沖
}


void writelcd(bit i,unsigned char value) //寫指令 RS=L,R/W=L,D0-D7=指令碼,E=高脈沖
// 寫數(shù)據(jù)函數(shù) RS=H,R/W=L,D0-D7=數(shù)據(jù),E=高脈沖
{
redbusy(); //寫指令寫數(shù)據(jù)前先讀忙
lcddata=value;
RS=i;
RW=0;
EN=1;
EN=0; //寫指令 寫數(shù)據(jù)EN為高脈沖變低脈沖
}


void begin(void) //lcd1602顯示一般初始化過程
{
yanshi(15000); //延時(shí)15ms
writelcd(0,0x28); //寫指令38H 設(shè)置液晶的顯示模式:設(shè)置為16*2顯示,5*10點(diǎn)陣,8位數(shù)據(jù)接口
yanshi(5000); //延時(shí)5ms
writelcd(0,0x28); //寫指令38H
yanshi(5000); //延時(shí)5ms
writelcd(0,0x28); //寫指令38H
yanshi(5000); //延時(shí)5ms


writelcd(0,0x28); //寫指令38H 顯示模式設(shè)置
//redbusy();
writelcd(0,0x08); //寫指令08H 關(guān)閉顯示
//redbusy();
writelcd(0,0x01); //寫指令01H顯示清屏
//redbusy();
writelcd(0,0x06); //寫指令06H光標(biāo)移動(dòng)設(shè)置
//redbusy();
writelcd(0,0x0C); //寫指令0CH顯示開及光標(biāo)設(shè)置
//redbusy();
}


void yanshi(unsigned int i)//延時(shí)子程序
{
while(--i);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

板凳
ID:58502 發(fā)表于 2014-8-17 21:13 | 只看該作者
本帖最后由 liaolinhui 于 2014-8-17 21:16 編輯

寫指令38H你用了0,0x28能用才怪,把所有的0,0x28改為0,0x38
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:64047 發(fā)表于 2014-8-17 10:03 | 只看該作者
可能是寫指令和寫數(shù)據(jù)子程序里的讀忙沒起效果,你把readbuly改為延時(shí)5MS試試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表