当前位置:首页 > 单片机 > 单片机
[导读] LCD1602的接口形式是并行的,它有8条数据线、3条控制线。这样就需要11条线来控制它的正常工作。虽然它还可以工作在4位数据线的形式,最精简的形式是6条线。有位网友想要使用74HC595进行串-并转换,想要

LCD1602的接口形式是并行的,它有8条数据线、3条控制线。这样就需要11条线来控制它的正常工作。虽然它还可以工作在4位数据线的形式,最精简的形式是6条线。


有位网友想要使用74HC595进行串-并转换,想要用4条线来控制LCD1602。

可见链接:http://zhidao.baidu.com/question/458604195.html。


多用了一块芯片,省下了单片机的引脚,这也算是一种方法吧,在系统规模较大、资源紧张的条件下,还是值得应用的。


74HC595是“串入并出”的移位寄存器芯片,它需要用3条线控制数据的输入,才能正常的输出8位数据。


有了8位数据,这时,LCD1602还需要至少两条控制线。


经过做而论道的精心设计,分时使用这些控制线,最终,仅仅使用了3条线,就完成了对74HC595和LCD1602的有效控制!


这要比前面的网友提出的4条线的方案,还要更加精简,节省率提高了25%。


精简后的电路图如下:



图中是一个数字钟,是为另一个网友编写的,可以参考下面的链接:

http://hi.baidu.com/do_sermon/item/c8d1161d40768f10e3f98682

http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/a0c99e2343b541844423e865.html

(百度空间在2012年8月,无聊的改版了,结果,把它自己的网站链接,都弄断了。因此,下面的链接,已经失效了。不删了,留作纪念吧。)


由于LCD1602的驱动电路发生了改变,所以数字钟的程序,也要相应的修改。

那么,针对本电路的程序如下:


//===================================================


#include

#defineucharunsignedchar

#defineuintunsignedint


#defineKEY_IOP3


sbitLCD_RS=P2^0;

sbitLCD_EN=P2^2;


sbitSCK=P2^0;

sbitSDI=P2^1;

sbitRCK=P2^2;


sbitSPK=P1^2;

sbitLED=P2^4;


bitnew_s,modify=0;

chart0,sec=50,min=59,hour=23;


charcodeLCD_line1[]="DesignedbyZELD";

charcodeLCD_line2[]="Timer:00:00:00";

charTimer_buf[]="23:59:50";

//---------------------------------------------------

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)for(y=100;y>0;y--);

}

//---------------------------------------------------

voidwrite_595(uchardate)//写入595

{

uchari;

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

SCK=0;SDI=date&0x80;

SCK=1;date<<=1;

}

}

//---------------------------------------------------

voidW_LCD_Com(ucharcom)//写指令

{

write_595(com);LCD_RS=0;//写入指令

RCK=1;RCK=0;//令595输出,并用EN输出一个高脉冲

}

//---------------------------------------------------

voidW_LCD_Dat(uchardat)//写数据

{

write_595(dat);LCD_RS=1;//写入数据

RCK=1;RCK=0;//令595输出,并用EN输出一个高脉冲

}

//---------------------------------------------------

voidW_LCD_STR(uchar*s)//写字符串

{

while(*s)W_LCD_Dat(*s++);

}

//---------------------------------------------------

voidW_BUFF(void)//填写显示缓冲区

{

Timer_buf[7]=sec%10+48;Timer_buf[6]=sec/10+48;

Timer_buf[4]=min%10+48;Timer_buf[3]=min/10+48;

Timer_buf[1]=hour%10+48;Timer_buf[0]=hour/10+48;

W_LCD_Com(0xc0+7);W_LCD_STR(Timer_buf);

}

//---------------------------------------------------

ucharread_key(void)

{

ucharx1,x2;

KEY_IO=255;

x1=KEY_IO;

if(x1!=255){

delay(100);

x2=KEY_IO;

if(x1!=x2)return255;

while(x2!=255)x2=KEY_IO;

if(x1==0x7f)return0;

elseif(x1==0xbf)return1;

elseif(x1==0xdf)return2;

elseif(x1==0xef)return3;

elseif(x1==0xf7)return4;

}

return255;

}

//---------------------------------------------------

voidInit()

{

W_LCD_Com(0x38);delay(50);

W_LCD_Com(0x38);delay(50);

W_LCD_Com(0x0c);

W_LCD_Com(0x06);

W_LCD_Com(0x01);delay(50);

W_LCD_Com(0x80);W_LCD_STR(LCD_line1);

W_LCD_Com(0xC0);W_LCD_STR(LCD_line2);


TMOD=0x01;//T0定时方式1

TH0=0x4c;

TR0=1;//启动T0

PT0=1;//高优先级,以保证定时精度

ET0=1;

EA=1;

}

//---------------------------------------------------

voidmain()

{

uinti,j;

ucharKey;

Init();


while(1){

//-------------------------------

if(new_s){//如果出现了新的一秒,修改时间

new_s=0;sec++;sec%=60;

if(!sec){min++;min%=60;

if(!min){hour++;hour%=24;}

}

W_BUFF();//写显示

//-------------------------------

if(!sec&&!min){//整点报时

for(i=0;i<200;i++){

SPK=0;for(j=0;j<100;j++);

SPK=1;for(j=0;j<100;j++);

}}

}

//-------------------------------

Key=read_key();//读出按键

switch(Key){//分别处理四个按键

case0:modify=1;break;

case1:if(modify){min++;min%=60;W_BUFF();break;}

case2:if(modify){hour++;hour%=24;W_BUFF();break;}

case3:modify=0;break;

}}

}

//---------------------------------------------------

voidtimer0(void)interrupt1//T0中断函数,50ms执行一次

{

TH0=0x4c;

t0++;t0%=20;//20,一秒钟

if(t0==0){new_s=1;LED=~LED;}

if(modify)LED=0;

}

//===================================================


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

全新的专有模型导入功能让客户更轻松地将其专属模型导入到Amazon Bedrock中,从而充分利用Amazon Bedrock的强大功能。全新的模型评估功能使客户能够广泛且便捷地选择完全托管模型,包括RAG优化的新版Am...

关键字: 生成式AI 基础模型 数据

2024年4月17日,中国 – 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)将在2024年4月25日欧洲证券交易所开盘前公布202...

关键字: 半导体 数据

数据占满我们的电子设备已成常态,为了满足广大用户的需求,NAS应运而生。然而,对于许多普通用户来说,NAS设备的设置和使用却常常令人望而却步。不过,铁威马TOS 6的出现,不仅功能强大,而且操作简便,即使是初次接触NAS...

关键字: 数据 电子设备 NAS

机器学习作为人工智能领域的重要组成部分,其过程涉及到多个核心环节。本文将详细阐述机器学习的四个主要步骤:数据准备、模型选择、模型训练与评估,以及模型部署与应用,以揭示机器学习从数据到应用的完整流程。

关键字: 数据 人工智能 机器学习

机器学习算法是人工智能领域中的核心技术之一,它通过对大量数据进行学习,自动发现数据中的规律和模式,从而实现对新数据的预测、分类、聚类等任务。本文将深入探讨机器学习算法的基本过程,包括数据准备、模型选择、训练与评估等关键步...

关键字: 数据 人工智能 机器学习

随着科技的飞速发展,电子产品在我们日常生活中扮演着越来越重要的角色。而在这些电子产品中,接口作为连接设备与外部设备的桥梁,其重要性不言而喻。其中,Type-C接口作为一种新型的接口标准,因其独特的优势,逐渐成为了众多电子...

关键字: 电子产品 Type-C 接口

随着人工智能(AI)技术的迅速发展,人们对于通用人工智能(AGI,即Artificial General Intelligence)的期待也日益高涨。通用人工智能指的是具备像人类一样全面智能的计算机系统,能够执行各种复杂...

关键字: 人工智能 计算机 数据

随着电动汽车的普及,充电桩作为电动汽车的重要基础设施,越来越受到人们的关注。然而,对于许多电动汽车用户来说,直流充电桩和交流充电桩的接口和区别仍然是一个令人困惑的问题。本文将从接口和区别两个方面,详细探讨直流充电桩和交流...

关键字: 电动汽车 接口 充电桩

在数字化时代,数据的数量和价值飞速增长,如何安全、有效地存储和管理这些数据成为了一个重要的问题。刻录机,作为一种同时具有数据存储和备份功能的设备,在这方面发挥着越来越重要的作用。本文将向大家介绍刻录机的定义、工作原理以及...

关键字: 刻录机 数据

在数字时代,数据已经成为企业的重要资产。随着云计算技术的快速发展,云服务器已成为企业和个人存储数据的重要平台。然而,数据的存储和处理也面临着多种安全威胁。本文将探讨如何使用云服务器确保存储数据的安全性。

关键字: 数据 云服务
关闭
关闭