LCD字符型液晶显示器控制

合集下载

LCD1602液晶显示器

LCD1602液晶显示器

实验11:1602液晶显示屏显示(字符型液晶显示器)字符型液晶显示器用于数字、字母、符号并可显示少量自定义符号。

这类液晶显示器通常有16根接口线,下表是这16根线的定义。

字符型液晶接口说明编号符号引脚说明编号符号引脚说明1 Vss 电源地 9 D2 数据线22 Vdd 电源正 10 D3 数据线33 VL 液晶显示偏压信号 11 D4 数据线44 RS 数据/命令选择端 12 D5 数据线55 R/W 读/ 写选择端 13 D6 数据线66 E 使能信号 14 D7 数据线77 D0 数据线0 15 BLA 背光源正极8 D1 数据线1 16 BLK 背光源负极(本学习板配的内部已经接地)下图是字符型液晶显示器与单片机的接线图。

这用了P0口的8根线作为液晶显示器的数据线,用P20、P21、P22做为3根控制线。

字符型液晶显示器与单片机的接线图字符型液晶显示器的使用,字符型液晶显示器一般采用HD44780芯片做为控制器的。

1.字符型液晶显示器的驱动程序这个驱动程序适用于1602型字符液晶显示器,1) 初始化液晶显示器命令(RSTLCD)设置控制器的工作模式,在程序开始时调用。

参数:无。

2) 清屏命令(CLRLCD)清除屏幕显示的所有内容参数:无3) 光标控制命令(SETCUR)用来控制光标是否显示及是否闪烁参数:1个,用于设定显示器的开关、光标的开关及是否闪烁。

4) 写字符命令(WRITECHAR)在指定位置(行和列)显示指定的字符。

参数:共有3个,即行值、列值及待显示字符,分别存放在XPOS、YPOS和A中。

其中行值与列值均从0开始计数,A中可直接写入字符的符号,编译程序自动转化为该字符的ASCII值。

5) 字符串命令(WRITESTRING)在指定位置显示指定的一串字符。

参数:共有3个,即行值、列值和R0指向待显示字符串的内存首地址,字符串须以0结尾。

如果字符串的长度超过了从该列开始可显示的最多字符数,则其后字符被截断,并不在下行显示出来。

字符型液晶显示实验

字符型液晶显示实验

实验十二字符型液晶显示实验(1602C)一、实验目的与要求了解字符型液晶模块的控制方法;了解它与单片机的接口逻辑。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容1、1602C液晶显示器(1) 字符型液晶显示器,可以显示二行,每行最多16个字符(2) 采用8位数据总线并行输入输出和3条控制线。

(3) 指令简单,7种指令2、实验过程在1602C液晶上,第一行显示“STAR ES598PCIS”,第二行滚动显示“Shanghai Xingyan Electronics Co.,LTD.”。

四、实验原理图五、实验步骤1、主机连线说明:2、运行程序,验证显示结果。

六、流程图1主程序流程图①子程序延时15ms ②子程序延时5ms③子程序DL50ms ④子程序 DelayTime_Move⑤子程序:DL05S ⑥子程序:WrconNoBusy⑦子程序:写指令子程序:WR_Con⑧子程序:写数据子程序WR_Data⑨子程序:Clear_LCD 10子程序:Close_Cursor关光标子程序11:清行A:哪一行Clear_Line子程序12:设置光标A--光标位置子程序13:Set_DdramCursor设置光标A--光标位置A=00H~13H,光标在第一行;A=40H~53H,光标在第二行A=14H~27H,光标在第三行;A=54H~67H,光标在第四行Set_CgramCursor七、实验现象在1602C液晶上,第一行显示“STAR ES598PCIS”,第二行滚动显示“Shanghai Xingyan Electronics Co.,LTD.”。

单片机控制LCD液晶显示器(含程序)

单片机控制LCD液晶显示器(含程序)

液晶显示器一.实验目的:1.了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。

2.了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。

3.掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。

4.了解LCD字符生成软件的使用方法(见附录)。

二.实验内容:1.在LCD上显示Hello和中文字“南京工业大学”。

2.通过键盘控制Hello或者中文字符在LCD上左右、上下移动。

3.学会使用字符生成软件来实现任意字符代码的生成和显示。

4.其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。

三.实验原理:1.图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。

液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。

常用的液晶显示器可分成3类,分别是扭曲向列型(Twisted Nematic)、超扭曲向列型(Super TN)和彩色薄膜型。

字符点阵式属于扭曲向列型LCD。

典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7 点阵或5*10点阵组成。

一般结果如图一所示:图一 128x64 点阵图形液晶模块方框示意图此次实验所用的LCD型号是RT12864CT。

12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。

可完成图形显示,也可以显示8*4个(16*16)汉字。

管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/ R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明128x64 点阵图形液晶模块的内部结构可分为三个部分:LCD 控制器,LCD 驱动器,LCD 显示装置。

lcd1602的控制字符集

lcd1602的控制字符集

lcd1602的控制字符集
LCD1602的控制字符集包括以下部分:
ASCII码:LCD1602支持标准ASCII码,包括32个控制字符和95个可打印字符。

这些字符在LCD屏幕上可以显示出来。

扩展字符集:LCD1602还支持一个扩展字符集,包含128个字符,这些字符在标准ASCII码中没有定义。

这些扩展字符可以用于显示特殊符号、图形或者自定义的文本等。

在控制字符集方面,LCD1602有一些特定的命令和控制字符,用于控制LCD屏幕的显示方式和效果。

例如,清屏命令可以将LCD屏幕上的内容全部清除,光标移动命令可以将光标移动到指定的位置,等等。

这些命令和控制字符都是通过向LCD 写入特定的控制字节来实现的。

总的来说,LCD1602的控制字符集包括标准ASCII码和扩展字符集,以及一些特定的命令和控制字符,这些字符和命令用于控制LCD屏幕的显示方式和效果。

LCD1602使用手册-中文详细版

LCD1602使用手册-中文详细版

图1再来一张它的背面的,如图2所示:图2图3图4二.基本操作LCD1602的基本操作分为四种:1. 读状态:输入RS=0,RW=1,E=高脉冲。

输出:D0—D7为状态字。

2. 读数据:输入RS=1,RW=1,E=高脉冲。

输出:D0—D7为数据。

3. 写命令:输入RS=0,RW=0,E=高脉冲。

输出:无。

4. 写数据:输入RS=1,RW=0,E=高脉冲。

输出:无。

读操作时序图(如图5):图5写操作时序图(如图6):图6时序时间参数(如图7):图7三.DDRAM、CGROM和CGRAMDDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下(如图8):图8DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。

同样LCD1602共有80个字节的显存,即DDRAM。

但LCD 1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。

这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。

例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H地址处即可。

至于怎么写入,后面会有说明。

那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了(如图9)。

图9上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

从而显示出‘A’这个字形。

LCD液晶显示器控制原理

LCD液晶显示器控制原理

LCD液晶显示器控制原理液晶显示器(Liquid Crystal Display,LCD)是一种电子显示技术,使用液晶材料作为光学传感器,通过调整液晶分子的取向来控制其透光性,从而实现图像显示。

液晶显示器具有薄、轻、低功耗以及高清晰度等优点,广泛应用于电子产品领域。

液晶显示器的控制原理主要涉及以下几个方面的技术:液晶分子取向控制、背光源控制、数据传输和显示驱动。

下面将详细介绍每个方面的工作原理。

1.液晶分子取向控制:液晶分子是一种有机化合物,其分子结构可以按照电场中的作用而取向。

液晶显示器通常由两块平行的玻璃基板组成,中间夹有液晶层。

在每个玻璃基板上涂有透明电极,可以通过施加电场来调整液晶分子的取向。

液晶分子取向的调整主要依靠电场效应、电压调制效应和电容耦合效应来实现。

2.背光源控制:液晶显示器需要背光源来提供亮度。

传统的液晶显示器使用冷阴极灯管(CCFL)作为背光源,而现代液晶显示器通常采用LED背光。

背光源控制主要通过调整背光源的亮度来改变显示器的整体亮度。

这可以通过PWM (脉冲宽度调制)实现,即通过控制背光源的通电时间来控制其亮度,从而达到调节显示器亮度和能效的目的。

3.数据传输:液晶显示器需要将图像信号从电子设备(如电脑、手机)传输到屏幕上。

这通常需要使用图像处理器和控制器。

图像处理器用于对输入图像信号进行分辨率适配、修正和处理等操作,将其转换成液晶显示器可以接受的信号格式。

控制器用于接收、检测和解码处理器输出的信号,并将其传输给液晶显示屏。

4.显示驱动:液晶显示器使用一个叫做「行列扫描驱动」的技术来控制每个像素的亮度变化。

在液晶显示器中,每个像素由液晶分子的排列方式决定。

通常,每个像素对应一个液晶分子。

显示驱动器会根据输入的图像信号,控制每个像素的液晶分子取向,以调整其透光性,从而形成图像。

在液晶显示器中,每个像素都由一个小型的电容器组成,被驱动器逐行地激活。

驱动器会依次选择每一行,并将对应行的数据加载到行驱动器上的电容器中。

1602使用说明中文版

第一节:了解LCD液晶显示屏一:字符型点阵式LCD液晶显示屏:LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。

在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。

本站要介绍的LCD为字符型点阵式LCD模块(liquid Crystal Display Module)简称LCM,或者是字符型LCD。

字符型液晶显示模块是一类专门用于显示字母,数字,符号等的点阵式液晶显示模块。

在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。

每一个点阵字符位都可以显示一个字符。

点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。

目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。

这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。

本章将以WINTECH 16*2字符型液晶显示模块WM-C1602N为例,详细介绍字符兴高采烈晶显示模块的应用技术。

一般字符LCD模块的控制器为日本日立新华通讯社司的HD44780及其替代集成电路,驱动器为HD44100及其替代的集成电路以下将会略做介绍。

一般初学者由字符型LCD入手比较简单,学完之后,再进一步控制图案型LCD模块。

图1.1所示为16*2地的外观,表1.2为LCM的接脚及功能。

看她的样子在太酷爱,现在我拿她作为讲解实例。

字串8图1.1a:液晶显示模块WM-C1602N背后图1.1b: 液晶显示模块WM-C1602N丰姿图1.1c:液晶显示模块WM-C1602N规格字串4表1.2:液晶显示模块WM-C1602N的接脚及功能应用液晶显示模块WM-C1602N那得先对她的内部结构有所了解,下一节我将会带大家进一步的了解液晶显示模块WM-C1602N。

第二节:LCD液晶显示屏的内部结构液晶显示模块WM-C1602N的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图示2.1所示:字串1图2.1:LCM内部方块图字串1目前大多数的LCD液晶显示器的控制器都有采用一颗型号为HD44780的集成电路作控制器。

LCD液晶显示器简介

LCD1602液晶显示器简介一概述液晶(Liquid Crystal)是一种高分子材料,因其特殊的物理、化学、光学特性,广泛应用轻薄显示器上。

液晶显示器(Liquid Crystal Display,LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。

各种型号的液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名。

例如,1602表示每行显示16个字符,一共可以显示两行。

这类液晶通常称为字符型液晶,只能显示ASCII码字符。

12232表示液晶显示画面由122列、32行组成,共有122*32个点来显示各种图形。

用户可以通过程序控制这些点中任何一个点显示或不显示,从而构成各种图形画面。

因此,12232称为图形型液晶。

液晶体积小,功耗低,显示操作简单。

但其有致命的弱点,即使用温度范围很窄。

通用型液晶工作温度为0到+55摄氏度,存储温度为-20到+60摄氏度。

二 LCD16021 1602的外形尺寸(毫米)2 主要技术参数3接口信号说明4 基本操作时序4RAM地址映射图控制器内部带有80B的RAM缓冲区。

对应关系如下图所示。

向图中的00~0F、40~4F地址中的任意处写入显示数据时,液晶可立即显示出来;当写入到10~27或50~67地址时,必须通过移屏指令将他们一移入可显示区域方可正常显示。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示。

这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

6状态字说明说明:原则上每次对控制器进行读写操作前,都必须进行读写检测,确保STA7为0。

实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行检测,或只进行简短的延时即可。

16X2字符型液晶显示模块的驱动

表2.4CCM-162B型液晶显示器引脚说明注:读写使能引脚E,在高电平时可读写数据,在下降沿时读写数据结束,数据处于锁定状态;在底电平时不能读写。

②CCM-162B型液晶显示器基本参数特性:⏹工作电流:2.0mAmax⏹工作电压(VDD):+4.5~+5.5⏹LCD驱动电压(VDD-VO):+4.5V~+13.0V⏹显示为16字符×2行,字符为5×7点阵⏹内置字符生成ROM(CGROM)8320位,字符生成RAM(CGRAM)512位,显示RAM(DDRAM)80×8位⏹显示字符格式有三种(5×7点阵、5×10点阵、用户自己定义)⏹可实现字符移动,闪烁等显示功能。

第一行DDRAM的首地址为0x80,第二行DDRAM的首地址为0xC0。

向LCM送显示字符数据时,先向命令寄存器送入字符的地址,即DDRAM的值。

再向数据寄存器送入显示字符的ASCII码即可。

图2.8 CCM-162B的初始化流程图初始化子程序段如下:void initlcm(void){//液晶显示器初始化delay30ms();//延时30ms,等待Vdd上升到 > +4.5V c_send(0x38);//设置显示模式:两行、8字符、5×8点阵c_send(0x06);//输入模式设置:光标增量移动、显示不移位c_send(0x0f);//显示开关控制:开显示、开光标、光标闪烁c_send(0x01);//清屏}注:c_send()为传送命令子程序,内部已经设置延时30us。

//////////////初始化程序//////////////////void c_send(unchar a){//液晶显示器写命令RS=0; //RS=0数据/指令寄存器选择,数据与指令寄存器通信RW=0; //R/W=0 读写选择,写E=1; //E=1 读写使能,高电平有效P0=a; //命令或数据E=0; //E=0 下降沿锁定数据dnms(2);}void cls(void){//液晶显示器初始化、清屏c_send(0x38); //功能设置:8位数据接口、两行显示、5*8点阵c_send(0x06); //输入方式设置:光标由左向右移动且AC自动加一.整体显示不移动c_send(0x0f); //显示开关控制:整体显示打开.光标显示开.光标闪烁c_send(0x01); //送20H(空代码)到所有的DDRAM中,并将DDRAM地址计数器(AC)清零,光标返回至原始状态,设置DB=1}16X2字符型液晶显示模块的驱动液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

实验9__字符型LCD液晶显示广告牌控制

实验9 字符型LCD液晶显示广告牌控制一、实验目的1、学习字符型LCD的显示原理。

2、学习掌握字符型LCD显示字符的用法。

二、实验预备知识LCD本身不发光,是通过借助外界光线照射液晶材料而实现显示的被动显示器件。

可以显示各种文字、数字、图形。

LM016L为字符型液晶显示器LCD,其图形符号、引脚及属性如图所示。

引脚说明如下:①数据线D7~D0②控制线(有3根:RS、RW、E)③1根地线Vss④两根电源线(V DD、V EE)LM016L的属性设置如下:①每行的字符数为16,行数为2;②时钟为250KHz;③行1的字符地址为80H~8FH④行2的字符地址为C0H~CFH 图5-61 LCD图形符号和引脚三、实验内容字符型LCD液晶显示器的接口电路原理图使用LCD显示两行字符,第一行正中间显示字符为“SHEN ZHEN”,第二行显示字符为“Tel0123456”。

四、程序设计步骤1、PROTEUS电路设计字符型LCD液晶显示器电路原理图如图5-62所示,设计在PROTEU ISIS平台中进行。

(1)新建设计文件菜单【file】/【New Design】,出现选择模板窗口,选中”DEFAULT”模板,再单击”OK”按钮,在文件名框中输入文件名,单击”保存”按钮,则保存新建设计文件,其后缀自动为.DSN。

(2)从PROTEUS库中选取元器件单击“P”按钮,在其左上角“Keywords”(关键字)一栏中输入以下元器件的关键字,将以下元器件添加到对象选择器中。

①AT89C51:单片机②RES:电阻③LM0160L:16×2字符LCD显示器④CAP、CAP-ELEC:电容、电解电容⑤POT-HG:电位器⑥CRYSTAL:晶振(3)放置元器件:按照原理图合理放置元器件。

(4)放置电源和地(终端)单击工具栏中的终端按钮,在对象选择器中选取电源(POWER)、地(GROUND),用上述放置元器件方法分别放置于编辑区中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LCD字符型液晶显示器控制实现功能:在实验平台上扩展一块LCD点阵字符型液晶显示器,要求:设计接口电路并编程使液晶显示器显示“当前时间”;并用按键输入与或修改时间。

工作原理及设计思路:点阵字符型液晶显示器是专门用于显示数字、字母图形符号及少量自定义字符的显示器。

在zks-03实验仪上有一标准的LCD液晶显示器接口J4,标注为DS1602。

它与P87C52X2单片机以总线方式连接,其硬件连接如图1所示。

图1由此可以看出LCD的命令寄存器的地址为:0xf800而数据寄存器的地址是:0xf801。

实验箱上的J4接口如图4所示:J4 J5DS1602(SIP16) LCD_L从左到右对应的管脚分别为:1:GND2:VCC3:V0接0〜5V电压,调节LCD的对比度(实验箱上让它接地,使对比度达到最大) 4:RS寄存器选择:“ 0”选指令寄存器;“1”选数据寄存器5: R/W“ 1”读操作;“ 0”写操作6: EN使能信号7〜14: DBSDB 八位双向数据信号线15-16: LCD背光电源将液晶显示器与J4接口对应连接好,编写读写程序,便对液晶显示器进行控制。

DO〜D7:数据总线。

用于与单片机数据总线连接。

RS:〔 Register Select、寄存器选择信号)。

RS为1时,选择数据寄存器;RS为0时,选择控制寄存器或状态寄存器。

R/W:读写信号。

R/W为1时,表示从LCD的控制器读取数据;R/W为0时,表示数据写入LCD的控制器。

E:芯片使能信号。

VDD、VSS:分别为电源线和地线° LCD电源为+5V OV0:字符明暗对比度调节引脚.可以接一只可变电阻, 调节该脚的输入电压,从而调节明暗对比度。

此脚接地时,将得到最大的明暗对比度。

字符型液晶显示模块的操作主要是通过管脚E、R/W、RS的不同电平组合来完成的o电路仿真#define er 0x80+0x40 // 第一仃初始位置//sbit cs 仁P3A7;//sbitledk=P2A5; sbitdula=P2A6; sbitwela=P2A7;sbit wr=P1Al;sbit rs=P1A0; // 6 P1.1sbit IO=P2A0; // 7 P1.0sbit RST=P2A4; // 时钟 5 P1.2sbit ACC0=ACCA0;sbit ACC7=AC"7;sbit key=P3A 7;sbit key1=P3A0; sbit key2=P3A1;sbit key3=P3A2;uchar code tab1[]={"2009- - THU"};uchar code tab2[]={" : : "};T u I I K1 F Y SJU-12 卜K5L1 J nvxa ■, FIFkr L<D 1 Current T i ne lgi32;55 PC1JXKDD K1W1 PCJi'MiiPC 讯岁也 KTfflDT •2 ¥■ PIS RJ& FiLl*Ai^i.sr1 门 M«fE2^Me| pIKM 站>1 腼 加鬓泛 dli ■斷貝I bjiJ M\| 程序#in clude<reg52.h> #define uint un sig ned int #define uchar un sig ned char uchar a,miao,shi,fe n,ri,yue ,nian, week,flag,temp,key1 n;#define yh 0x80 //第一行的初始位置 I>21JH Q 九4料PZ101I1 p^OnillP? 5^.13P : EUAHm:F2.1.^KD盯:.trTi>^rrJ J 1巴帀■ttfl L h%0void delay(uint xms)// 延时函数{uint x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}**************** 液晶写入**********************write_1602com(uchar com)// 液晶写入指令函数{rs=0;// 置为写入命令P0=com;// 送入数据delay(1);en=1;// 拉高使能端delay(1);en=0;// 完成高脉冲} write_1602dat(uchar dat) {rs=1;// 置为写入数据P0=dat;// 送入数据delay(1);en=1;delay(1);en=0;} void write_byte(uchar dat)*******************over************************************** *ds1302 ************************** {ACC=dat;RST=1; for(a=8;a>0;a--) {IO=ACC0;SCLK=0;SCLK=1;ACC=ACC>>1;}}uchar read_byte(){RST=1; for(a=8;a>0;a--) {ACC7=IO;SCLK=1;SCLK=0;ACC=ACC>>1;}return (ACC);}void write_1302(uchar add,uchar dat){RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;}uchar read_1302(uchar add){uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);}uchar BCD_Decimal(uchar bcd){uchar Decimal;Decimal=bcd>>4;return(Decimal=Decimal*10+(bcd&=0x0F));}void ds1302_init(){RST=0;SCLK=0;write_1302(0x80,miao|0x00);// 允许写}void write_sfm(uchar add,uchar dat)// 写时分秒{ uchar gw,sw; gw=dat%10; sw=dat/10;write_1602com(er+add); write_1602dat(0x30+sw);write_1602dat(0x30+gw);}void write_nyr(uchar add,uchar dat){ uchar gw,sw; gw=dat%10; sw=dat/10;write_1602com(yh+add); write_1602dat(0x30+sw);write_1602dat(0x30+gw);}void write_week(uchar week)// 写星期函数{ write_1602com(yh+0x0d); switch(week){case 1:write_1602dat('M');//delay(5);write_1602dat('O');//delay(5);write_1602dat('N'); break;case 2:write_1602dat('T');//delay(5);write_1602dat('U');//delay(5);write_1602dat('E'); break;case 3:write_1602dat('W');//delay(5);write_1602dat('E');//delay(5);write_1602dat('D'); break;case 4:write_1602dat('T');//delay(5);write_1602dat('H');//delay(5);write_1602dat('U'); break;case 5:write_1602dat('F');//delay(5);write_1602dat('R');//delay(5);write_1602dat('I'); break;case 6:write_1602dat('S');//delay(5);write_1602dat('T');//delay(5);write_1602dat('A');break;case 7:write_1602dat('S');//delay(5);write_1602dat('U');//delay(5);write_1602dat('N');break;}}lcd_init()// 液晶初始化函数{ wr=0;write_1602com(0x38);// 设置液晶工作模式write_1602com(0x0c);// 开显示不显示光标write_1602com(0x06);// 整屏不移动,指针加一write_1602com(0x01);write_1602com(yh+2);// 字符写入的位置for(a=0;a<14;a++){write_1602dat(tab1[a]);//delay(3);}write_1602com(er+4);for(a=0;a<8;a++){write_1602dat(tab2[a]); //delay(3);}void keyscan(){key=0;if(key1==0)//key1 为功能键{delay(5);if(key1==0){while(!key1);key1n++;if(key1n==9)key1n=1;switch(key1n){case 1: TRO=O;〃关闭定时器//TR1=0;write_1602com(er+0x0b);// 写入光标位置write_1602com(0x0f);// 设置光标为闪烁temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00);write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80);break;case 2: write_1602com(er+8);//fen//write_1602com(0x0f);break;case 3: write_1602com(er+5);//shi//write_1602com(0x0f);break;case 4: write_1602com(yh+0x0f);//week //write_1602com(0x0f);break;case 5: write_1602com(yh+0x0b);//ri //write_1602com(0x0f);break;case 6: write_1602com(yh+0x08);//yue //write_1602com(0x0f);break;case 7: write_1602com(yh+0x05);//nian//write_1602com(0x0f);break;case 8:write_1602com(0x0c);// 设置光标不闪烁TR0=1;// 打开定时器temp=(miao)/10*16+(miao)%10;write_1302(0x8e,0x00);write_1302(0x80,0x00|temp);//miaowrite_1302(0x8e,0x80);break;}}if(key1n!=0)// 当key1 按下以下。

相关文档
最新文档