一及毛片_将夜免费神马影院日本_日韩丰满少妇无吗视频激情内射_国产情侣酒店自拍_日本激情在线看免费观看视频

文章詳情

清達光電SPI液晶模塊與8051單片機應用實例

日期:2024-10-31 17:20
瀏覽次數:2208
摘要:

清達光電SPI液晶模塊與8051單片機應用實例

1,SPI液晶時序介紹:

    SPI是一種時序,液晶模塊時序是指對LCD顯示模塊進行讀寫時電路的時序要求和狀態。

主要分為以下幾種時序:8080并口,6800并口,SPI串口,I2C串口,UART串口,RS232串口,USB等幾種類型。

清達光電SPI液晶模塊HC1624時序圖如下:

 

 

 

 

2,SPI液晶HC1624主要參數:

HC1624為清達光電生產的16*2字符液晶模塊(資料參考http://www.chinalcdmodule.com/character-lcm-hc1624.html

 

尺寸規格

 

 

 

 

 

 

原理結構圖

 

 

模塊外形圖

 

 

接口定義:

編號  符號 電平 功能 

1 VSS 0V 接地 

2 VDD +5.0V 邏輯電壓 

3 V0 - LCD驅動電壓 

4 RS H/L H: 數據  L: 指令 

5~11 NC - 空腳位 

12 /CS L 低片選有效 

13 SCLK H/L 串行時鐘輸入 

14 SID H/L 串行數據輸入 

15 LEDA +5.0V 16 LEDK 0V LED背光源輸入電壓

 

 

 

3, SPI液晶模塊HC1624控制器介紹

 


西文字庫表

 


4,SPI液晶模塊與8051單片機硬件及軟件應用實例

 

硬件接口圖

 

 

軟件應用實例:

#include<reg51.h> 

#include<string.h>

 #include<stdio.h> 

#include <intrins.h> 

#define uchar unsigned char

 #define uint unsigned int  

sbit SID=P3^4; 

sbit SCK=P3^3; 

sbit CS=P3^1; 

sbit RS=P3^0; 

 

/*********************

延時子程序

********************/

void delayus(uchar m)

{

while(--m);

}

void delayms(uchar m)

{

uchar i,j;

for(i=0;i<102;i++)

for(j=0;j<m;j++)

delayus(1);

}

/****************

液晶屏寫入程序

********************************************/

void SendByte(unsigned char Dbyte)

{

     unsigned char i ;

    // CS = 0;

     for(i=0 ;i< 8 ;i++)

     {

           SCK = 0 ;

           delayus(1);

           Dbyte=Dbyte<< 1 ;      //左移一位

           delayus(1);

           SID = CY ;            //移出的位給SID

           delayus(1);

           SCK = 1 ;

           SCK = 0 ;

     }

}

void WriteCommand( unsigned char Cbyte )

{

       CS = 0;

     delayus(1);

     SendByte(Cbyte) ;

     delayus(1);

}

 

void WriteData( unsigned char Dbyte)

{

         CS = 0;

     WriteCommand(0x3c);

     SendByte(0x80) ;

     SendByte(Dbyte) ;

}

/***********************

液晶屏初始化

************************/

void lcd_init()

{

 RES=0;

 delayus(10);

 RES=1;

 delayus(10);

 delayms(60);

 WriteCommand(0x38);//8位數,2行顯示,外部功能關

  delayms(60);

 WriteCommand(0x38);//8位數,2行顯示,外部功能關

  delayms(60);

 WriteCommand(0x38);//8位數,2行顯示,外部功能關

  delayus(60);

 WriteCommand(0x0e); //開顯示,光標,2行顯示

  delayus(60);

 WriteCommand(0x01); //**

  delayus(60);

 WriteCommand(0x02); //歸零

   delayus(60);

 WriteCommand(0x14); //光標右移

 WriteCommand(0x06); //模式進入

}

void goto_lcd(uchar x,uchar y)

{

  WriteCommand(0x38);

  WriteCommand(0x80+x+y*0x40);

}

void write_string(uchar x,uchar y,uchar *s)

{

  goto_lcd(x,y);

  while(*s>0)

  {WriteData(*s); s++;}

}

void ringt_lcd()

{

uchar i;

for(i=0;i<16;i++)

{WriteCommand(0x1c);delayms(4000); };

}

void left_lcd()

{

uchar i;

for(i=0;i<16;i++)

{WriteCommand(0x18);delayms(4000); };

}

int main(void)

{

uchar i;

lcd_init();

write_string(0,0,"012456789ABCDEFG");

write_string(4,1,"Tsingtek");

while(1);

}