专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

74HC595驱动LCD1602程序

作者:佚名   来源:本站原创   点击数:  更新时间:2012年01月02日   【字体:

为了节约端口,1602液晶我也改为595来驱动了,一共有2个文件都在下面,程序本人测试通过,在你自己的应用中只需要修改端口即可.

//////////////////////////////////////////////////////////////////////////
#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写数据 
{ 
 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)//光标闪烁位置
{
 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()//显示预设字符
{
 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);  /*光标闪烁位置*/
void LCD_Text();  /*显示预设字符*/
#endif
/////////////////////////////////////////////////////////////
关闭窗口

相关文章