音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)教1602 Lcd 程序,但為何沒(méi)顯示(分多次發(fā)送)。

作者:wealth210 欄目:單片機(jī)

請(qǐng)教以下1602 Lcd顯示程序?yàn)楹螞](méi)顯示,請(qǐng)教各位。

/*

     /*======注意:后8個(gè)字符的地址是從80+40開(kāi)始的=*/
/*===================================================================

            HD44780 16x2 字符液晶屏驅(qū)動(dòng)演示程序
=====================================================================
連接線圖:    LCM-------51     LCM-------51     LCM--------51
            DB0-----P2.0     DB4-----P2.4     RS-------P3.7
            DB1-----P2.1     DB5-----P2.5     RW-------P3.6
            DB2-----P2.2     DB6-----P2.6     E--------P3.5
            DB3-----P2.3     DB7-----P2.7     VLCD接10K電阻到GND

[注]:AT89C51的晶振頻率為8MHZ

*/

#include<reg51.h>
#include<intrins.h>
#define DPORT P2
const unsigned CHAR NoDisp=0;   //無(wú)顯示
const unsigned CHAR NoCur=1;    // 有顯示無(wú)光標(biāo)
const unsigned CHAR CurNoFlash=2; //有光標(biāo)但不閃爍
const unsigned CHAR CurFlash=3; //  有光標(biāo)且閃爍

void LcdPos(unsigned CHAR,unsigned CHAR);  //確定光標(biāo)位置
void LcdWd(unsigned CHAR);  //寫(xiě)字符
void LcdWc(unsigned CHAR);  // 送控制字(檢測(cè)忙信號(hào))
void LcdWcn(unsigned CHAR); // 送控制字子程序(不檢測(cè)忙信號(hào))
void mDelay(unsigned CHAR); // 延時(shí)
void WaitIdle();   //  正常讀/寫(xiě)操作之前檢測(cè)LCD控制器狀態(tài)
sbit RS=P3^7;
sbit RW=P3^6;
sbit E=P3^5;
sbit P00=P0^0;
sbit P01=P0^1;

2樓: >>參與討論
wealth210

續(xù)1:

void WriteChar(unsigned CHAR c,unsigned CHAR xPos,unsigned CHAR yPos) //在指定的行與列顯示指定的字符
{
LcdPos(xPos,yPos);
LcdWd(c);
}

void WriteString(unsigned CHAR *s,unsigned CHAR xPos, unsigned CHAR yPos) //顯示字符串
{
unsigned CHAR i;
if(*s==0)       //遇到字符串結(jié)束
    return;
for(i=0;;i++)
{
  if(*(s+1)==0)
  break;
  WriteChar(*(s+1),xPos,yPos);
  xPos++;
  if(xPos>=15)   //如果XPOS中的值未到15(可顯示的最多位)
  break;
}
}

void SetCur(unsigned CHAR Para)  //設(shè)置光標(biāo)
{
mDelay(2);
SWITCH(Para)
{
case 0:
{LcdWc(0x08);    //  關(guān)顯示
  break;
}
case 1:
{LcdWc(0x0c);    //  開(kāi)顯示但無(wú)光標(biāo)
  break;
}
case 2:
{LcdWc(0x0e);   //  開(kāi)顯示有光標(biāo)但不閃爍
  break;
}
case 3:
{LcdWc(0x0f);    //  開(kāi)顯示有光標(biāo)且不閃爍
  break;
}

default:
      break;
}
}

3樓: >>參與討論
wealth210

void ClrLcd()  // 清屏
{
LcdWc(0x01);

}

void WaitIdle()  //  正常讀/寫(xiě)操作之前檢測(cè)LCD控制器狀態(tài)
{
unsigned CHAR tmp;
RS=0;
RW=1;
E=1;
mDelay(1);
for(;;)
{tmp=DPORT;
tmp&=0xA0;
if(tmp==0)
   break;
}

E=0;
}

void LcdWd(unsigned CHAR c)  ?/寫(xiě)字符
{
WaitIdle();
RS=1;
RW=0;
DPORT=c;
E=1;
_nop_();

E=0;
}

void LcdWc(unsigned CHAR c) // 送控制字(檢測(cè)忙信號(hào)?
{
WaitIdle();
LcdWcn(c);
}

void LcdWcn(unsigned CHAR c) // 送控制字子程序(不檢測(cè)忙信號(hào))
{
RS=0;
RW=0;
DPORT=c;
E=1;
_nop_();
E=0;
}


void LcdPos(unsigned CHAR xPos,unsigned CHAR yPos)  //設(shè)置第(xPos,yPos) 個(gè)字符的地址
{
unsigned CHAR tmp;
xPos&=0x0f;
yPos&=0x01;
if(yPos==0)
   tmp=xPos;

else
   tmp=xPos+0x40;
   tmp|=0xA0;
   LcdWc(tmp);
}

void RstLcd()  //復(fù)位LCD控制器
{
mDelay(15);
LcdWc(0x38);//  顯示模式設(shè)置
LcdWc(0x08); // 顯示關(guān)閉
LcdWc(0x01); // 顯示清屏
LcdWc(0x06); //  顯示光標(biāo)移動(dòng)位置
LcdWc(0x0c); //  顯示開(kāi)及光標(biāo)設(shè)置
}


void mDelay(unsigned CHAR j)
{
unsigned int i=0;
for(;j>0;j--)
{for(i=0;i<124;i++)
   {;}
}
}

main()
{


unsigned CHAR xPos,yPos;
unsigned CHAR *s="why not DISPLAY 0";
xPos=0;
yPos=1;
RstLcd();
ClrLcd();
SetCur(CurFlash); //開(kāi)啟光標(biāo)顯示,閃爍
WriteChar(s,xPos,yPos);
P00=0;
for(;;){;}

}

全文完

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
我做的頻率計(jì)
[求助]
[求助]初學(xué) 請(qǐng)給小女各位指教
[原創(chuàng)]Intel Xscale PXA270嵌入式開(kāi)發(fā)板:EK-ROM-PXA2...
[求助]
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)