專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

74HC595驅(qū)動LCD1602程序

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2012年01月02日   【字體:

為了節(jié)約端口,1602液晶我也改為595來驅(qū)動了,一共有2個文件都在下面,程序本人測試通過,在你自己的應(yīng)用中只需要修改端口即可.

//////////////////////////////////////////////////////////////////////////
#include <LCD1602.H>
unsigned char code Text_1 []="0123456789abcdef";//16位字符
unsigned char code Text_2 []="0123456789ABCDEF";//16位字符
void LCD_MS(ms)
{
 unsigned int x,y;
 for(x=ms;x>0;x--)
  for(y=60;y>0;y--);
}
void Write_595(unsigned char Data)
{
 unsigned char j;
 SH_CP=0;
 ST_CP=1;
 for (j=0;j<8;j++)
 {
  Data=Data<<1; 
  DS_595=CY;
  SH_CP=1;
  LCD_MS(1);
  SH_CP=0;
 }
 ST_CP=0; 
 LCD_MS(1);
 ST_CP=1;
 LCD_MS(1);
 ST_CP=0 ;
}
void LCD_Write_Com(unsigned char LCD_Com)//LCD寫命令 
{  
 LCD_RS=0; 
 LCD_EN=1; 
 Write_595(LCD_Com); 
 LCD_MS(5);
 LCD_EN=0;
}
void LCD_Write_Data(unsigned char LCD_Data)//LCD寫數(shù)據(jù) 
{ 
 LCD_RS=1; 
 LCD_EN=1; 
 Write_595(LCD_Data); 
 LCD_MS(5);
 LCD_EN=0;
}
void LCD_INIT()//LCD初始化
{
 LCD_Write_Com(0x38);
 LCD_Write_Com(0x01); 
 LCD_Write_Com(0x06);
 LCD_Write_Com(0x0C);
 LCD_Write_Com(0x80);
}
void LCD_CLS()//LCD清屏
{
 LCD_Write_Com(0x0C);
 LCD_Write_Com(0x80);
}
void LCD_Glint(unsigned char LCD_Line, unsigned char Addess)//光標(biāo)閃爍位置
{
 unsigned char Line;
 if(LCD_Line==1)Line=0x80;
 if(LCD_Line==2)Line=(0x80+0x40);
 LCD_Write_Com(0x0d);
 LCD_Write_Com(Line+(Addess-1));
}
void LCD_Text()//顯示預(yù)設(shè)字符
{
 unsigned char num;
 LCD_CLS();
 for(num=0;num<16;num++)
 {
  LCD_Write_Data(Text_1[num]); //第一行
  LCD_MS(1);
 }
 LCD_Write_Com(0x80+0x40);
 for(num=0;num<16;num++)
 {
  LCD_Write_Data(Text_2[num]); //第二行
  LCD_MS(1);
 }
}
/////////////////////////////////////////////////////////
#ifndef __LCD1602_H__
#define __LCD1602_H__
#include <STC11.H>
sbit LCD_RS=P1^7; 
sbit LCD_EN=P1^6;
sbit LCD_BG=P1^2;//74HC595_P12
sbit SH_CP=P1^3;//74HC595_P11
sbit DS_595=P1^5;//74HC595_P14
sbit ST_CP=P1^4;//74HC595_P12

/* ISIS仿真
sbit LCD_RS=P0^0; 
sbit LCD_EN=P0^1;
sbit SH_CP=P0^2;//74HC595_P11
sbit DS_595=P0^3;//74HC595_P14
sbit ST_CP=P0^4;//74HC595_P12
*/
void LCD_Write_Com(unsigned char LCD_Com); /*LCD寫入命令*/ 
void LCD_INIT(); /*LCD初始化*/
void LCD_CLS();  /*LCD清屏*/
void LCD_Glint(unsigned char Line, unsigned char Addess);  /*光標(biāo)閃爍位置*/
void LCD_Text();  /*顯示預(yù)設(shè)字符*/
#endif
/////////////////////////////////////////////////////////////
關(guān)閉窗口

相關(guān)文章