单片机
返回首页

74HC595驱动LCD1602程序

2015-07-23 来源:51hei

为了节约端口,1602液晶我也改为595来驱动了,一共有2个文件都在下面,程序本人测试通过,在你自己的应用中只需要修改端口即可.
//////////////////////////////////////////////////////////////////////////
#include 
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 
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
/////////////////////////////////////////////////////////////
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 开关电源的基本组成及工作原理

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章