LCD1602工作原理
- 格式:doc
- 大小:528.00 KB
- 文档页数:10
图2-2 红外发射和接收器件示例红外一体化接收头内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。
红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。
注意输出的高低电平和发射端是反相的。
图2-3为红外发射和接收解码的示意图。
在发射部分设计一个38kHz的载波,在发射数据(全码)为高电平时输出载波,发射数据(全码)为低电平时输出低电平,二者实现了逻辑与的关系,得到的信号(红外发射)驱动红外发射二极管向空间发射红外线。
红外一体化接收头接收到红外信号后,解码出与发射数据(全码)逻辑相反的数据。
图2-3 红外发射和接收解码的示意图3系统硬件设计3.2红外遥控单元本设计中作为发射部分使用的遥控器为M5046AP机芯的电视机遥控器。
电视机遥控器应用的是红外收发原理,即遥控器前端侧面的红外发射管发射出红外信号,电路板上红外接收管接收到信号后送到单片机内部,经译码后变成相应的操作指令,以实现定时、遥控风扇的功能。
红外遥控器的内部关键电路和接收管电路如图3-1所示。
图3-13.3单片机控制单元本设计以AT89S51单片机为主控器,单片机控制电路设计如图3-2所示。
单片机的P1.2-P1.4口用于控制风扇的3个档次,设计中用继电器来模拟风扇换挡开关;P1.6和P1.7引脚控制时钟电路;P2口作为液晶显示的8位数据线;P3.0和P3.1口控制风扇工作状态指示灯,分为手动和自动2个状态;P3.2中断0用于接收红外遥控编码信号;P3.4接收温度数据;P3.5-P3.7三个引脚分别控制液晶显示器的控制端。
图3-2为单片机控制电路。
图3-23.4时钟单元3.4.1DS1307简介种低功耗、BCD码的8引脚实时时钟芯片。
基于单片机电子万年历-的设计毕业论文号:毕业设计(论文)说明书课题名称:基于单片机的电子万年历设计院(系):计算机工程系专业:通信工程班级:通信072班学生姓名:黄董学号: 200700402056指导教师:袁浩浩2011年 05月25日摘要电子万年历是一种应用非常广泛日常计时工具,对现代社会越来越重要。
此电子万年历在硬件方面主要采用STC89C52单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCD液晶显示屏显示。
STC89C52单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;对于数字电子万年历采用直观的数字显示,数字显示是采用的1602LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。
此外,该电子万年历还具有时间校准等功能。
在软件方面,主要包括日历程序、时间调整程序,显示程序等。
所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,烧写到单片机上进行测试。
此设计主要由时钟芯片DS1302和温度传感器DS18B20采集数据到单片机进行处理再通过LCD1602显示出来,本论文主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。
关键词:单片机;DS1302;DS18B20;LCD1602AbstractElectronic calendar is a widely used tool for the daily time, more and more important in modern society. The electronic calendar in terms of hardware as the main control mainly STC89C52 microcontroller core, provided by the DS1302 clock chip clock, 1602LCD LCD display. STC89C52 microcontroller by Atmel introduced, the power consumption, voltage can be selected 4 ~ 6V voltage power supply; DS1302 clock chip introduced in the United States DALLAS low-power real time clock chip, which can be year, month, day, week, hours, minutes and seconds time, but also has leap-year compensation, and other functions, and the DS1302's long life, small error; for digital electronic calendar using an intuitive digital display, digital display is used 1602LED LCD screen to display, you can also shows year, month, day, week, hours, minutes, seconds and other information. In addition, the electronic calendar is also a time calibration and other functions. In terms of software, including calendar, time to adjust procedures, display procedures. All programming is completed, the Keil software debugging, make sure that no problem, programmed into the microcontroller for testing.This design mainly by the clock chip DS1302 temperature sensor to the microcontroller DS18B20 collect data for processing and then through the LCD1602 display, this thesis, the liquid crystal display LCD and clock chip DS1302, temperature sensor and microcontroller DS18B20 interconnection and communication between the hardware on Several hardware connection scheme for a detailed comparison of algorithms in software on the calendar have also been discussed.Key words: SCM; DS1302; DS18B20; LCD1602目录摘要 (I)Abstract (II)第 1 章绪论 (1)1.1课题背景 (1)1.2 课题意义 (1)1.3国内外现状及水平 (1)第2章基于单片机万年历的方案研究 (2)2.1 系统基本方案选择和论证 (2)2.1.1 单片机芯片的选择 (2)2.1.2 显示模块选择方案和论证 (3)2.1.3 时钟芯片的选择方案和论证 (3)2.1.4 温度传感器的选择方案与论证 (3)2.2 电路设计最终方案决定 (4)2.3 DS1302,DS18B20和LCD1602的原理及说明42.3.1 LCD1602工作原理及说明 (4)2.3.2 DS1302原理及说明 (5)2.3.3 DS18B20工作原理及说明 (6)第3章系统的硬件设计与实现 (7)3.1电路设计框图 (7)3.2系统硬件概述 (7)3.3 主要模块电路的设计 (8)3.3.1 STC89C52单片机主控制模块的设计. 83.3.2时钟电路模块的设计 (10)3.3.3温度采集模块设计 (11)3.3.4 显示模块的设计 (11)3.4各模块电路原理图 (12)3.4.1电源电路 (12)3.4.2复位电路 (12)3.4.3振荡电路 (13)3.4.4温度采集电路 (13)3.4.5通信电路 (14)3.4.6显示电路 (15)3.4.7键盘电路 (15)第4章系统的软件设计 (16)4.1 程序流程框图: (16)第5章系统测试 (19)5.1 硬件测试 (19)5.2 软件测试 (19)结束语 (20)致谢 (21)参考文献 (22)附录1:程序 (24)第 1 章绪论1.1课题背景在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响,随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。
唐山学院《EDA技术》课程设计题目 LCD1602显示控制器设计系(部) 信息工程系班级 11电本3班姓名刘亮学号 4110218214指导教师郭耀华田丽欣柳延领2014 年6 月 30 日至 7月 4日共 1 周2014年 7月 4日课程设计成绩评定表目录1 引言 01.1 EDA技术的介绍 01。
2 EDA技术的发展 (1)2 VHDL/Quartus II简介 (2)2.1 VHDL语言介绍 (2)2。
2 界面介绍 (3)3 模块设计 (4)3。
1 LCD1602液晶模块 (4)3.2 矩阵键盘模块 (7)3。
3 设计思路 (8)4 系统设计方案一 (8)4.1 矩阵键盘模块设计 (9)4。
2 LCD1602液晶显示模块设计 (12)5 系统设计方案二 (14)5.1拨码开关控制的LCD1602显示模块 (14)5。
2拨码开关控制的LCD1602显示模块程序 (15)5。
3拨码开关控制的LCD1602显示模块仿真图 (18)6 设计总结 (18)参考文献 (19)1 引言1.1 EDA技术的介绍在电子设计自动化(英语:Electronic design automation,缩写:EDA)出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不及现在.工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带.到了1970年代中期,开发人员尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。
第一个电路布线、布局工具研发成功.设计自动化会议(Design Automation Conference)在这一时期被创立,旨在促进电子设计自动化的发展.电子设计自动化发展的下一个重要阶段以卡弗尔·米德(Carver Mead)和琳·康维于1980年发表的论文《超大规模集成电路系统导论》(Introduction to VLSI Systems)为标志。
标记辅助育种技术,培育出以5份水稻恢复系为遗传背景的32份Bph3导入系,13份含Bph3聚合系。
Liu Y L(2016)利用分子标记辅助育种技术,先培育了Bph27(t)导入系,再将其与Bph3聚合,培育出Bph3Bph27(t)聚合系。
本研究利用通过杂交、回交以及分子标记辅助选择,结合抗性鉴定,培育出以6个水稻恢复系为遗传背景的8份对褐飞虱表现为抗(R)且农艺性状优良的Bph3导入系,为培育抗褐飞虱品种进一步丰富材料基础。
[参考文献][1] Cheng X, Zhu L,He G.The Understanding of Molecular Interactionbetween Rice and Brown Planthopper[J].Molecular Plant,2013(6): 621-634.[2] Sogawa K,Liu G J,Shen J H. A review on the hyper-susceptibility ofChinese hybrid rice to insect pests[J].Chin J Rice Sci,2003(17):23-30.[3] Jairin J,Phengrat K,Teangdeerith S,et al.Mapping of a broad-spectrum brown planthopper resistance gene,Bph3,on rice chromosome 6[J].Mol Breeding,2007(19):35-44.[4] Liu Y,Chen L M,Liu Y Q,et al.Marker assisted pyramiding of twobrown planthopper resistance genes,Bph3 and Bph27 (t),into elite rice Cultivars[J].Rice,2016,9(1):1-7.[5] Liu Y,Wu H,Chen H,et al.A gene cluster encoding lectin receptorkinases confers broad-spectrum and durable insect resistance in rice[J].Nature Biotech,2014,33(3): 301-305.[6] 刘开雨,卢双楠,裘俊丽,等.培育水稻恢复系抗稻褐飞虱基因导入系和聚合系[J].分子植物育种,2011(4):410-417.[7] 阳海宁,韦绍丽,李孝琼,等.标记辅助培育水稻抗稻褐飞虱和稻白叶枯病基因聚合系[J].分子植物育种,2010(1): 11-19.农业温室大棚温湿度控制系统的设计杨金祥,章 海(浙江海洋大学,浙江 舟山 316022)[摘要]现代农业温室大棚使用基于智能控制的温湿度控制系统,用以增加农作物的产量和提高农作物的质量。
温度控制系统摘要 : 随着微机测量和控制技术的迅速开展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。
本设计论述了一种以STC89C52单片机为主控制单元,以 DS18B20为温度传感器的温度控制系统。
该控制系统可以实时存储相关的温度数据并记录当前的时间。
系统设计了相关的硬件电路和相关应用程序。
硬件电路主要包括STC89C52单片机最小系统,测温电路、实时时钟电路、 LCD 液晶显示电路以及通讯模块电路等。
系统程序主要包括主程序,读出温度子程序,计算温度子程序、 LCD 显示程序以及数据存储程序等。
关键词:STC89C52, DS18B20,LCDAbstract:Along with the computer measurement and control technology of the rapid development and wide application,based on singlechip temperature gathering and control system development and application greatly improve the production of temperature in life level of control. This design STC89C52 describes a kind ofmainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and recordrelated to the current time. System design related hardware circuit and related applications. STC89C52 microcontroller hardware circuit include temperaturedetection circuit smallest system, and real-time clock circuit, LCD displaycircuit, communication module circuit, etc. System programming mainly includemain program,read temperature subroutine,the calculation of temperature subroutines, LCD display procedures and data storage procedures, etc.Keywords: STC89C52, DS18B20,LCD目录1前言 (1)2总体方案设计 (2)方案设计 (2)方案论证 (3)方案选择 (3)3单元模块的设计 (4)单片机模块 . (4)18B20 温度模块 (5)显示器模块 . (6)4软件设计 (7)系统总框图 (7)温度采集子程序 (8)5系统功能与调试方法介绍 (9)系统功能 (9)系统指标 (9)系统调试 (9)6参考文献 (10)附录 1:相关设计图 (11)附录 2:元器件清单 (13)附录 3:源程序 (14)1前言工业控制是计算机的一个重要应用领域,计算机控制系统正是为了适应这一领域的需要而开展起来的一门专业技术,它主要研究如何将计算机技术、通过信息技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。
基于单片机的空气净化器设计【摘要】本文设计出一种多功能便捷式空气净化器,在检测空气质量的同时还可以利用负离子发生器改善人体吸入空气的质量,通过液晶屏显示模块将实时的空气质量显示出来。
本设计可根据环境空气质量开关空气净化器,具有能耗低,维护简单和可随身携带等优点。
实际应用价值高,市场前景广阔。
【关键词】空气质量传感器;负离子发生器;STM32单片机1、设计背景及意义空气污染无声无息地发生在我们的身边,无论是开门关门的瞬间,或是外出回来,或是朋友走访,都会在不知不觉间将空气中的污染颗粒带到我们生活的空间中。
对于长时间在室内的人们来说,空气净化器就显得尤为重要,它能使室内环境空气比外面更加清新和洁净,有益于人们精神集中、心情舒畅,更有益于健康。
本文设计的空气净化器使用方便、不受时间、空间的过多限制,可随时净化室内空气、清除有害气体,实际应用价值高,市场前景广阔。
2、空气质量传感器简介2.1 空气质量传感器工作原理空气质量传感器使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。
使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
该传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害的监测也很理想。
这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。
3、系统硬件设计3.1 STM32F103C8T6单片机主控电路采用STM32F103C8T6单片机作为主控模块,采用USB接口线5V电源供电:电脑、充电宝、电池接口等均能满足设计电源的需求。
该单片机具备64个I\O端口,每个I/0口驱动能力口等均能满足设计电源的需求。
在单芯片上,拥有灵巧的32位CPU 和在系统可编程Flash,使得STM32F103C8T6为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
3.2 电源模块整个空气净化器采用12V锂电池供电,锂电池的12V电压经芯片TPS7350,把12V直流电压转换成5V,给 STM32F103C8T6芯片供电,整个转压电路加入10uf钽电容和104电容进行滤波处理,过滤那些杂波,使得供电的电压更加地稳定。
数字身高体重测量仪设计方案1.1 选题背景及目的随着社会的发展,人们生活水平不断提升,与身体状况相关的方面越来越得到人们的关注。
而身高与体重的变化则是身体状况最为直接的表现,因此身高体重便成为必要的测量内容。
身高体重测量仪现以不止用于医疗、体检部门,而是可以广泛应用于大众的仪器,因此身高体重测量仪的研究和设计有非常广阔的前景。
本设计的身高体重一体化测量仪可以同时测量身高和体重数据,并实时的在屏幕上显示,大大提高了使用效率。
本设计的仪器系统功耗低,运行情况良好而可靠,能利用最少的资源进行高精度的测量,信息性能可靠,操作便利,可以方便的获取结果,在实际的使用中获得了理想的效果,有重要的研究意义。
身高的测量使用非接触式的超声波来完成。
超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因此超声波经常用于障碍物的距离测量。
由于超声波可做到无接触检测距离,这一特性用在人体或其它物体高度的测量上会变得非常方便。
而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。
因此本设计也是利用超声波来测量高度。
体重的测量采用应变式压力传感器做成电子称来测量重量。
和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实现,具有精度高、功能强等特点,因此电子称逐渐取代传统型的机械杠杆测量秤,成为测量领域的主流产品[1]。
本课题设计的电子秤具有基本称重、显示功能。
该电子秤的测量范围为0-200Kg,测量精度达到1kg,有高精度,低成本,易携带的特点。
1.2 总体方案设计与论证1.2.1 设计任务(1)题目:数字身高体重测量仪(2)测量要求:超声波测高精度±1cm,测量范围2cm-4m称重精度1kg,测量范围1kg-200kg要求测量准确,能同时在显示屏上显示出来。
1.2.2 设计内容外围设备:(1)51单片机最小系统开发板(2)STC89C52主芯片(3)超声波测距模块(4)压力传感器称重模块(5)AD转换模块(6)1602液晶显示模块1.2.3 方案论证与选择方案一:采用FPGA控制,超声波测距,电容式传感器称重,数码管显示数值。
基于单片机的LCD1602电子时钟设计一、设计任务和目的1.1、设计任务(1):用单片机设计基于LCD1602的电子时钟,显示时间和日期;(2):误差精度控制在1s/天;(3):具有时间和日期的校准功能;(4):能区分某年是闰年或平年,并对应显示2月份的天数;(5):根据月份的不同显示不同的最大日数;(6):搭建仿真电路图,模拟单片机要实现的功能;(7):焊接单片机开发板;(8):编写程序,下载并调试,实现要求的功能。
1.2、设计目的(1):熟练掌握KEIL软件的使用方法;(2):熟练掌握PROTEUS软件的使用方法;(3):掌握单片机I/O接口的工作原理;(4):掌握LCD显示器的工作原理及编程方法;(5):掌握独立式键盘的工作原理及编程使用方法;(6):掌握单片机的下载使用方法。
二、设计思路和方案论证2.1、设计思路电路总体上分为控制和显示部分。
以单片机最小系统作为核心控制电路,控制LCD显示,具体显示内容及方式由软件来完成;由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加1键、减1键三个按键完成,共需四个按键;计时功能由固定频率的晶振完成(采用11.0592MHz);显示部分主要采用LCD1602作为显示。
2.2、方案论证(1):时钟芯片的选择和论证方案一:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压2.5V~5.5V范围内,功耗也较低,但价格比较贵。
方案二:直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。
采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。
(2):显示模块选择方案和论证:方案一:采用点阵式图形LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864液晶显示屏。
1 引言1.1 探讨背景在社会经济飞速发展的今日,水在人们生活和生产中起着越来越重要的作用。
一旦断水,轻则给人民生活带来极大的不便,重则可能造成重大的生产事故及损失。
因此,对水位的自动检测及限制的探讨,有着极其重要的地位。
任何时候都能供应足够的水量,平稳的水压,合格的水质,是对供水系统的基本要求。
就目前而言,多数工业生活供水系统,都接受水塔,层顶水箱等基本储水设备,由一级二级水泵从地下市政水管补给,因此如何建立一个牢靠平安又利于维护的给水系统是值得我们探讨的课题。
现今社会,自动扮装置无所不在,在限制技术需求的推动下,限制理论本身也取得了显著的进步。
水塔水位的监测和限制,再也不须要人工进行操作。
实践证明,自动化操作,具有不行替代的应用价值。
在工农业生产以及日常生活应用中,常常会须要对容器中的液位(水位)进行自动限制。
比如自动限制水箱、水池、水槽、锅炉等容器中的蓄水量,生活中抽水马桶的自动补水限制、自动电热水器、电开水机的自动进水限制等。
虽然各种水位限制的技术要求不同,精度不同,但基本的限制原理都可以归纳为一般的反馈限制方式,就是利用传感器对于信号的供应通过单片机对数码显示、电机限制、报警限制部分的限制[1]。
本设计从分析水塔水位报警器的原理和设计方法入手,主要基于单片机的硬件电路和语言程序设计,实现一种能够实现水位自动限制、具有自动爱惜、自动声光报警功能的限制系统。
本限制系统由A/D转换部分、单片机限制部分、数码显示部分、电机驱动部分、电机限制部分等构成。
这是个简洁而灵敏的监测报警电路,操作简洁,接通电源即可工作。
因为大部分电路接受数字电路,所以本水位监测报警器还具有耗能低、精确性高的特点。
该系统设计新颖、简易,灵敏度高,工作稳定,能够自动检测和显示当前水位、凹凸水位报警等功能水位自动限制电路是通过水位传感器将水位高度转换为0~10V的直流电压,再经过A/D转换后,将转换所得的数字量送入单片机进行处理来达到对水位进行自动限制的目的。
1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光 的厚,是否带背光在应用中并无差别
1602LCD 主要技术参数: 显示容量:16×2 个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm 引脚功能说明 1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表 10-13 所示: 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 表 10-13:引脚接口说明表 第 1 脚:VSS 为地电源。 第 2 脚:VDD接 5V正电源。 第 3 脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对 比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信 号,当 RS 为高电平 R/W为低电平时可以写入数据。 第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7~14脚:D0~D7为 8 位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。 LCD寄存器的选择 E R/W RS 功能说明 1 0 0 写入命令寄存器 1 0 1 写入数据寄存器 1 1 0 读取忙碌标志及RAM地址 1 1 1 读取RAM数据 0 X 不动作
LCD指令表 指令功能 控制线 数据线 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 清除屏幕 0 0 0 0 0 0 0 0 0 1 清除屏幕,并把光标移至左上角 光标回到原点 0 0 0 0 0 0 0 0 1 x 光标移至左上角,显示内容不变
设定进入模式 0 0 0 0 0 0 0 1 I/D S I/D=1:地址递增,I/D=0:地址递减 S=1:开启显示屏,S=0:关闭显示屏
显示器开关 0 0 0 0 0 0 1 D C B D=1:开启显示幕 C=1:开启光标 B=1:光标所在位置的字符闪烁 移位方式 0 0 0 0 0 1 S/C R/L x x S/C=0、R/L=0:光标左移;S/C=0、R/L=1:光标右移 S/C=1、R/L=0:字符和光标左移;S/C=1、R/L=1:字符和光标右移 功能设定 0 0 0 0 1 DL N F x x DL=1:数据长度为8位,DL=0:数据长度为4位 N=1:双列字,N=0:单列字;F=1:5x10字形,F=0:5x7字形 CG RAM地址设定 0 0 0 1 CG RAM地址 将所要操作的CG RAM地址放入地址计数器 DD RAM地址设定 0 0 1 DD RAM地址 将所要操作的DD RAM地址放入地址计数器 忙碌标志位BF 0 1 BF 地址计数器内容 读取地址计数器,并查询LCM是否忙碌,BF表示LCM忙碌
写入数据 1 0 写入数据 将数据写入CG RAM或DD RAM 读取数据 1 1 读取数据 读取CG RAM或DD RAM的数据 图 10-57 1602LCD 内部显示地址 例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行 第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平 1 所以 实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的, 无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形, 如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名 等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B (41H), 显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A” 开始
结束判断LCD是否忙碌?rs=1;rw=0;ep=0;P1=dat;
延时4usep=1;延时4usep=0;
否是
图表 1写数据流程 开始
结束判断LCD是否忙碌?rs=0;rw=0;ep=0;P1=dat;
延时4usep=1;延时4usep=0;
否是
图表 2写命令流程 开始
结束rs=0;rw=1;ep=1;P1=dat;
延时4usresult = (bit)(P1 & 0x80);ep=0;
返回result
图表 3判断LCD是否忙碌,忙则返回1 #include #include
sbit rs= P3^5; //寄存器类型,1表示数据寄存器,2表示指令寄存器 sbit rw = P3^6; //读写选择,1表示读,0表示写 sbit ep = P3^7; //读写使能,下降沿使能
void delay(unsigned char ms) //延时n ms { unsigned char i; while(ms--) { for(i = 0; i<123; i++) { ; } } }
bit lcd_bz() //判断LCD是否忙碌,1忙碌 { bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P1 & 0x80); ep = 0; return result; }
void lcd_wcmd(unsigned char cmd) //写指令 { while(lcd_bz());//判断 LCD是否忙碌 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P1 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
void lcd_pos(unsigned char pos) //显示地址 { lcd_wcmd(pos | 0x80); } //写数据 void lcd_wdat(unsigned char dat) { while(lcd_bz());//判断 LCD是否忙碌 rs = 1; rw = 0; ep = 0; P1 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
void lcd_wstr(const unsigned char *s) //写字符串 { unsigned char i = 0; while(s[i] != '\0') { lcd_wdat(s[i]);// 显示字符 delay(1000); i++; } }
void lcd_init() //LCD初始化 { lcd_wcmd(0x38); //功能设定 delay(1); lcd_wcmd(0x0c); //显示器开关 delay(1); lcd_wcmd(0x06); //设定进入模式 delay(1); lcd_wcmd(0x01); //清除显示屏,把光标移至左上角 delay(1); }
void main(void) { lcd_init();// 初始化 LCD delay(10); lcd_pos(0x01);//设置显示位置 //i = 0; while(1){
lcd_wstr("abcdefg"); lcd_pos(0x42); lcd_wstr("abcdefg");
lcd_wcmd(0x01); delay(3); } }