用74HC595把LCD1602改成串行数据接口

上传人:鲁** 文档编号:552732348 上传时间:2023-12-28 格式:DOCX 页数:9 大小:91.68KB
返回 下载 相关 举报
用74HC595把LCD1602改成串行数据接口_第1页
第1页 / 共9页
用74HC595把LCD1602改成串行数据接口_第2页
第2页 / 共9页
用74HC595把LCD1602改成串行数据接口_第3页
第3页 / 共9页
用74HC595把LCD1602改成串行数据接口_第4页
第4页 / 共9页
用74HC595把LCD1602改成串行数据接口_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《用74HC595把LCD1602改成串行数据接口》由会员分享,可在线阅读,更多相关《用74HC595把LCD1602改成串行数据接口(9页珍藏版)》请在金锄头文库上搜索。

1、精品资料,欢迎大家下载!用74HC595把LCD1602改成串行接口形式de案例LCD1602de接口形式是并行de,它有8条数据线、3条控制线.这样就需要11条线来控制它de正常工作.虽然它还可以工作在4位数据线de形式,最精简de形式是6条线.有位网友想要使用74HC595进行申并转换,想要用4条线来控制LCD1602.可见链接:0多用了一块芯片,省下了单片机de引脚,这也算是一种方法吧,在系统规模较大、资源紧张de条件下,还是值得应用de.74HC595是申入并出de移位存放器芯片,它需要用3条线控制数据de输入,才能正常de输出8位数据.有了8位数据,这时,LCD1602还需要至少两条

2、控制线.经过做而论道de精心设计,分时使用这些控制线,最终,仅仅使用了3条线,就完成了对74HC595和LCD1602de有效控制!这要比前面de网友提出de4条线de方案,还要更加精简,节省率提升了25%.精简后de电路图如下:以上资料仅供参考,如有侵权,留言第一时间删除!做而沦鱼LCP/6O3OpIX1llLliC211.0592MHZLS1:XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP

3、2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.0/RXDP1.1/T2EXP3.1/TXDP1.2P3.2/INT0P1.3P3.3/INTTP1.4P3.4rroP1.5P3.5/T1P1.6P3.6)WRP1.7P3.7/RD10UF2勺4修改完成SooSoSSoq74HC595DesignedbyZELDTiner:23:59:57CDQLUaCDQtuCOoZEpggz(XCtUQQQQQQQQ开始修改图中是一个数字钟,是为另一个网友编写de,可以参考下面de链接:D7%F6%B6%F8%C2%DB%B5%C0/blog/item/a0c99e2343b541844

4、423e865.html由于LCD1602de驱动电路发生了改变,所以数字钟de程序,也要相应de修改.那么,针对本电路de程序如下:/=#include#defineucharunsignedchar#defineuintunsignedint#defineKEY_IOP3sbitLCD_RS=P2A0;sbitLCD_EN=?2人2;sbitSCK=P2A0;sbitSDI=P2A1;sbitRCK=P2A2;sbitSPK=PW;sbitLED=P2A4;bitnew_s,modify=0;chart0,sec=50,min=59,hour=23;charcodeLCD_line1=De

5、signedbyZELD;charcodeLCD_line2=Timer:00:00:00charTimer_buf=23:59:50;/voiddelay(uintz)uintx,y;for(x=z;x0;X-)for(y=100;y0;y-);)/voidwrite_595(uchardate)/写入595uchari;for(i=0;i8;i+)SCK=0;SDI=date&0x80;SCK=1;date=1;)/voidW_LCD_Com(ucharcom)ll写指令write_595(com);LCD_RS=0;/写入指令RCK=1:RCK=0;/令595输出,并用EN输出一个高脉冲

6、)/voidW_LCD_Dat(uchardat)/写数据write_595(dat);LCD_RS=1;/写入数据RCK=1:RCK=0;/令595输出,并用EN输出一个高脉冲)/voidW_LCD_STR(uchar*s)II写字符串while(*s)W_LCD_Dat(*s+);)/voidW_BUFF(void)ll填写显示缓冲区Timer_buf7=sec%10+48;Timer_buf6=sec/10+48;Timer_buf4=min%10+48;Timer_buf3=min/10+48;Timer_buf1=hour%10+48;Timer_buf0=hour/10+48;W_

7、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=Oxbf)return1;elseif(x1=Oxdf)return2;elseif(x1=Oxef)return3;elseif(x1=0xf7)return4;)return255;)/voidlnit()

8、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;/TOTHO=0x4c;TRO=1;/PTO=1;/定时方式1启动TO高优先级,以保证定时精度ETO=1;EA=1;)/voidmain()uinti,j;ucharKey;lnit();while(1)/if(

9、new_s)/如果出现了新de一秒,修改时间new_s=0;sec+;sec%=60;if(!sec)min+;min%=60;if(!min)hour+;hour%=24;)W_BUFF();ll写显示/if(!sec&!min)/整点报时for(i=0;i200;i+)SPK=0;for(j=0;j100;j+);SPK=1;for(j=0;j100;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;/欢送到“做而论道de百度空间访问,这里有许多新奇实用de电路和程序.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号