74HC595驱动LCD1602程序

发布者:糖果龙猫最新更新时间:2015-07-23 来源: 51hei关键字:74HC595  LCD1602 手机看文章 扫描二维码
随时随地手机看文章
为了节约端口,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
/////////////////////////////////////////////////////////////
关键字:74HC595  LCD1602 引用地址:74HC595驱动LCD1602程序

上一篇:STC12C5A60S2单片机PWM程序
下一篇:HOLTEK单片机-秒表

推荐阅读最新更新时间:2024-03-16 14:26

51单片机之IO口扩展——74HC595芯片串行转并行实验
我们都知道通信从大的方面有两种:串行和并行。串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来),有并入串出的(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示 那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型 16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。这个时候就需要
[单片机]
51单片机之IO口扩展——<font color='red'>74HC595</font>芯片串行转并行实验
AVR单片机通过74HC595驱动数码管显示
一个很简单的avr单片机的仿真,用74hc595芯片来驱动单个数码管显示数字,下面是仿真原理图 源程序: #include iom16v.h #include macros.h void delay(int k){ int i=0,j=0; for(i=0;i k;i++){ for(j=0;j 6;j++){ ; } } } void InputData(unsigned char data){ unsigned char i; unsigned char k; for(i=0;i 8;i++){
[单片机]
AVR单片机通过<font color='red'>74HC595</font>驱动数码管显示
基于51单片机+DS18B20温度测温器+LCD1602显示
DS18B20特性 1.独特的单总线接口,就需一条线则可实现双向通信(测温) 2.测温范围:-55℃~+125℃,可通过编程设定9—12位分辨率,对应分辨温度分别为0.5、0.25、0.125、0.0625℃。 3.支持多点组网(可连接多个DS18B20温度传感器),多个DS18B20可以并联(3或2线)实现多个组网测温,但注意超过8个要解决好供电问题,否则电压过低会导致传输不稳定,从而数据不准确。 4.工作电压:3.0~5.5V (寄生电源方式下可由数据线供电) 5.在使用过程中不需要外围电路,全部传感元件及转换电路都在芯片内了。(上拉电阻) 6.测温结果直接是数字量输出,单总线串行传送方式,同时可传送CRC校验码(校验数据采集
[单片机]
基于51单片机+DS18B20温度测温器+<font color='red'>LCD1602</font>显示
基于51单片机的温度报警系统
功能: 设计一个温度报警系统,可以设定温度上、下限的值,到达设定值时,蜂鸣器响;按键设定有设置、确定、取消、减少与增加功能,LCD1602实时显示相关温度信息 设定界面: 温度超过设定值,蜂鸣器响: 温度超过设定值,蜂鸣器响:温度超过设定值 温度低于设定值,蜂鸣器响: 部分程序: #include reg52.h #include SETTEM.h //设置报警的上下限值头文件 #include Lcd1602.h //LCD显示模块功能头文件 #include DS18B20.h //DS18B02模块功能头文件 #include IntToChar.h //存放整型数转换为字符串头文件 #include Alar
[单片机]
自制51单片机常用头文件(LCD1602)
/*-------------------------------------------------------------------------- LCD1602.H The user function is C51. Copyright (c) 1988-2004 Keil Elektronik GmbH sum zhaojun All rights reserved. --------------------------------------------------------------------------*/ #ifndef __LCD1602_H__ #define __LCD1602_H__ /*连接线
[单片机]
Atmega32A驱动LCD1602显示屏
对于初学者来说,最烦躁的可能就是调试程序,往往小小一个问题,要找个一个小时,甚至几个小时才能解决,这个程序是刚调试完的,整整九个多小时啊,现在看着挺简单的,没调试好前根本不敢肯能调得好.高手别笑,初学者参考 编程环境Atmel Studio 7.0 和Proteus 8仿真,说明:仿真和真实电路是有点区别的,仿真Proteus 8只能用内部晶振,最大8MHz,我的DIY板是16M,所以实际电路总是比仿真的跑快好多 单片机源程序: /* * LCD1602_AVR.h * * Created: 2017/3/19 23:07:51 * Author: lyl *LCD1602的基本操作时序 1,读状态,输入:RS=L
[单片机]
Atmega32A驱动<font color='red'>LCD1602</font>显示屏
51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示
原理图如下: 源代码如下: #include reg52.h #include intrins.h #include define.h #include delay.h #include LCD1602.h #include DS18B20.h #include HL_alarm.h sbit KEY3 = P3^5; //定义开始/停止 void zhuan(); unsigned char timer1; //***********************************************************************/ void main() { if(
[单片机]
51单片机温度+pwm控制风扇转速,且温度在<font color='red'>LCD1602</font>上显示
单片机 实时时钟电路(LCD1602、PCF8563)
一、简介 此电路主要有51单片机、LCD1602模块、PCF8563芯片和按键组成组成,通过LCD1062显示当前时间,按键可设置时间。 二、运行效果 三、部分代码 /*想要更多项目私wo!!!*/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int void init() { uchar num; lcden=0; write_com(0x38); //0011 1000B,功能模式设置,设置为8为数据口,两行显示,5*7点阵 write_com(0x0c)
[单片机]
单片机 实时时钟电路(<font color='red'>LCD1602</font>、PCF8563)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved