閱讀809 返回首頁    go 京東網上商城


1602液晶靜態顯示

#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<stdio.h> //標準輸入輸出
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int


sbit RS = P2^4; //Pin4
sbit RW = P2^5; //Pin5
sbit E  = P2^6; //Pin6


#define Data  P0//數據端口


char data table1[]=" www.tlxmcu.com ";
char data table2[]="LCM1602 Test ok!";
/******************************************************************/
/*                    函數聲明                                    */
/******************************************************************/
/******************************************************************/
/*                    微秒延時函數                                */
/******************************************************************/
void DelayUs(unsigned char us)//delay us
{
 unsigned char uscnt;
 uscnt=us>>1;        /*12MHz頻率*/
 while(--uscnt);
}
/******************************************************************/
/*                    毫秒函數聲明                                */
/******************************************************************/
void DelayMs(unsigned char ms)
{
 while(--ms)
   {
     DelayUs(250);
     DelayUs(250);
DelayUs(250);
DelayUs(250);
   }
}
/******************************************************************/
/*                   寫入命令函數                                 */
/******************************************************************/
void WriteCommand(unsigned char c)
{
 DelayMs(5);//操作前短暫延時,保證信號穩定
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
}
/******************************************************************/
/*                   寫入數據函數                                 */
/******************************************************************/
void WriteData(unsigned char c)
{
 DelayMs(5);  //操作前短暫延時,保證信號穩定
 E=0;
 RS=1;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
 RS=0;
}


/******************************************************************/
/*                   初始化函數                                   */
/******************************************************************/
void InitLcd()
{
 DelayMs(15);
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x06); //顯示光標移動位置
 WriteCommand(0x0c); //顯示開及光標設置
 WriteCommand(0x01); //顯示清屏


}




/******************************************************************/
/*                   主函數                                       */
/******************************************************************/
void main(void)


{
uchar j;
InitLcd();         //初始化LCD
DelayMs(15);       //延時保證信號穩定
   WriteCommand(0x80);
for(j=0;j<16;j++)//顯示第一行
{
WriteData(table1[j]);
 _nop_();
}
   WriteCommand(0x80+0x40);  
for(j=0;j<16;j++) //顯示第二行
{
WriteData(table2[j]);
 _nop_();
}


  while(1);


}

最後更新:2017-04-03 19:06:48

  上一篇:go 三國之爭:公有雲VS.私有雲VS.混合雲
  下一篇:go DS18B20溫度傳感器測溫顯示在數碼管上(29.9℃)