单片机~~~~~~~~~~不可调lcd时钟显示
- 格式:docx
- 大小:31.84 KB
- 文档页数:6
课程设计课程名称_ 单片机原理与接口技术题目名称多功能数字时钟学生学院_ 材料与能源学院专业班级_ 电子材料及元器件方向学号_ _学生姓名_ ____________ 指导教师_2013 年 1 月16 日广东工业大学课程设计任务书题目名称多功能数字时钟学生学院材料与能源学院专业班级姓名学号一、课程设计的内容用AT89C52单片机制作一个时钟:1.设计并绘制硬件电路图;2.布置元件并焊接好元器件;3.编写程序并将调试好的程序固化到单片机中。
4.增加温度测试功能。
二、课程设计的要求与数据单片机采用STC89C52芯片,时钟芯片采用DALLAS 公司的DS1302,即涓流充电时钟芯片,它内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式,DS1302 与单片机之间能简单地采用同步串行的方式进行通信。
同时用选DS18B20 传感器将采集的室内温度显示于LCD上。
按此要求设计硬件和软件以实现这些功能。
三、课程设计应完成的工作1. 完成下载线的制作,为程序下载到单片机芯片中做好准备;2. 完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;3.撰写设计说明书。
四、课程设计进程安排摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的液晶显示温度和时钟设计,时间可由键盘调整。
主要用到的芯片有单片机STC89C52.液晶1602LCM模块.时钟芯片DS1302.温度传感器DS18B20等。
关键词:单片机STC89C52,1602LCM模块,DS1302.,DS18B20目录1 系统需求分析 (1)1.1 电子时钟研究的背景和意义 (1)1.2 系统实用功能分析 (1)2 设计要求与方案 (2)2.1 设计要求 (2)2.1.1 基本要求 (2)2.1.2发挥部分 (2)2.2 系统基本方案选择 (2)2.2.1 芯片的选择 (2)2.2.2 显示模块选择方案 (2)2.2.3 时钟信号的选择方案 (3)2.3 电路设计最终方案决定 (3)3 系统的硬件设计与实现 (3)3.1 数字钟电路设计框图 (3)3.2 系统硬件概述 (4)3.3 硬件电路结构的设计 (4)3.3.1 单片机主控制模块的设计 (4)3.3.2 显示模块的设计 (4)3.3.3 LCD原理说明 (5)3.3.4 开关模块说明 (6)4 系统的软件设计 (7)4.1 程序流程框图 (7)4.2 LCD的初始化与及显示程序 (7)5 系统调试 (9)5.1软件调试 (9)5.2硬件调试 (9)参考文献 (10)附录 (11)1 系统需求分析1.1 电子时钟研究的背景和意义20实际末,电子技术获得了飞速的发展。
毕业设计课题名称:基于单片机的数字钟设计院系名称专业班级学生姓名学号指导教师完成日期:摘要多功能数字钟的应用非常普遍,由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。
本设计具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LCD显示器动态显示“时”、“分”、“秒”、“年”、“月”、“日”的现代计时装置。
另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。
关键词:多功能、AT89C51、LCDAbstractThe application of multi-function digital clock very general, by single chip microcomputer as the core controller, digital clock through its clock signal timing function, will realize its time data SCM outputs, using monitors displayed. This design has the timing, reset function of digital clock, is single-chip microcomputer AT89C51 as the core element also adopts LCD display dynamic display "hour"" minutes" and "second", "year", "month", "day" modern timing device. Another is reset function, stopwatch function, and timer function, using the microcomputer digital clock with programming flexible, facilitate function expansion, etc.Keywords: multi-function, AT89C51, LCD目录摘要 (2)Abstract (2)目录 (3)一、设计意义和方案 (3)1.1 任务要求 (3)1.2 设计意义 (4)1.3 设计方案 (4)二、硬件设计 (4)2.1 单片机的介绍及特点 (4)2.2 单片机选择 (5)2.1.1 单片机的引脚说明 (6)2.1.2 定时/计数器 (9)2.2 显示方案 (9)2.3 时钟电路 (10)2.4 复位电路 (10)三、软件设计 (11)四、仿真原理图 (12)五、系统测试 (12)5.1 硬件测试 (12)5.2 软件测试 (13)六、总结 (13)参考文献 (14)附录 (14)程序完整代码 (14)一、设计意义和方案1.1 任务要求⑴通过单片机内定时器控制走时,准确持续走时,调时不影响走时。
基于单片机的LCD电子时钟设计随着科技的不断发展,单片机已经成为现代电子设备中的重要组成部分。
其中,LCD电子时钟的设计与应用更是受到广泛。
基于单片机的LCD电子时钟设计具有精度高、稳定性好、体积小、耗电量低等优点,被广泛应用于家居、办公、交通运输等领域。
一、设计原理基于单片机的LCD电子时钟设计主要由单片机、时钟电路和LCD显示模块组成。
其中,单片机作为主控制器,负责读取时钟信号并控制LCD显示模块。
时钟电路则产生一个高精度的实时时钟信号,LCD显示模块则负责将时间信息显示出来。
二、硬件设计1、单片机选择:单片机是整个系统的核心,负责读取时钟信号、处理数据并控制LCD显示模块。
常见的单片机型号包括STM32、PIC、AVR等。
根据实际需求,选择合适的单片机型号。
2、时钟电路:时钟电路是整个系统的核心部分,它产生高精度的实时时钟信号。
常见的时钟电路包括石英晶体振荡器、GPS模块等。
根据实际需求,选择合适的时钟电路。
3、LCD显示模块:LCD显示模块负责将时间信息显示出来。
常见的LCD显示模块包括字符型LCD和图形型LCD。
根据实际需求,选择合适的LCD显示模块。
三、软件设计软件设计是整个系统的重要组成部分,它需要实现读取时钟信号、处理数据并控制LCD显示模块的功能。
具体的软件设计流程如下:1、初始化:初始化单片机、时钟电路和LCD显示模块。
2、读取时钟信号:通过时钟电路读取实时时钟信号。
3、处理数据:对读取的时钟信号进行处理,提取出年、月、日、时、分、秒等信息。
4、控制LCD显示模块:将处理后的时间信息通过LCD显示模块显示出来。
5、循环执行:重复执行上述步骤,实现LCD电子时钟的实时更新。
四、调试与优化完成硬件和软件设计后,需要对系统进行调试和优化。
具体的调试和优化步骤如下:1、通电测试:将系统通电,检查各部分是否正常工作。
2、精度测试:检查时钟电路的精度是否满足要求。
3、LCD显示测试:检查LCD显示模块是否能正确显示时间信息。
单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用3个功能键操作来设置当前时间。
功能键K1~K4功能下。
K1—设置小时。
K2—设置分钟。
K3—设置秒。
程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。
2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。
3、参考电路硬件设计电路图如下图所示:硬件电路原理图单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用3个功能键操作来设置当前时间。
功能键K1~K4功能下。
K1—设置小时。
K2—设置分钟。
K3—设置秒。
程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。
2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。
3、参考电路硬件设计电路图如下图所示:硬件电路原理图基于AT89C51单片机的电子时钟设计报告一、设计要求与目的1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。
2)、使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
3)、用3个功能键操作来设置当前时间。
4)、熟悉掌握proteus编成软件以及keil软件的使用二、本设计原理本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。
单片机--电子时钟(LCD显示)单片机综合实验报告题目:电子时钟(LCD)显示班级: 0310405班学号: 031040514学生姓名:张金龙指导老师:高林2013年 6 月 17 日一、实验内容:以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:●使用字符型LCD显示器显示当前时间。
●显示格式为“时时:分分:秒秒”。
●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。
功能键K1~K4功能如下。
●K1—进入设置现在的时间。
●K2—设置小时。
●K3—设置分钟。
●K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。
二、实验电路及功能说明1)单片机主控制模块以AT89C51单片机为核心进行一系列控制。
2)时钟显示模块用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用初始化程序对其进行简单的功能测试。
测试成功后即可为实验所用,如图:3)时间调整电路用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。
功能键K1~K4功能如下。
K1—进入设置现在的时间。
K2—设置小时。
K3—设置分钟。
K4—确认完成设置。
如图:三、实验程序流程图:主程序:时钟主程序流程子程序:保护设置计1S (40H )0 (40H )+1(41H )+1 (46H )0 ()恢返N N中 断 服 务 流 程 图(41H )0 (43H )0 (43H )+1(44H )+1 (44H )0(46H )+1(47H )(46H )+1NN(46H )0 (47)+1NN四、实验结果分析实验结果及分析:单片机的晶振可以根据要求设定。
6MHZ为和现实时间显示相同。
实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。
当烧入程序后开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为23:59:50 运行后显示,K1为进入现在设置时间,当按下K1后显示,和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。
单片机控制LCD显示电子时钟设计方案基于单片机控制LCD显示电子时钟设计摘要本设计使用11.0592MHZ晶振与单片机AT89C52相连接,以AT89C52芯片为核心,采用1602的并行操作方式显示。
通过使用该单片机,实现把时间和温度显示在1602液晶上,并且按秒实时更新。
STC89C52单片机是由深圳宏晶科技公司推出的,功耗小,电压可选用4~6V电压供电。
通过板子上的按键可随时调节时钟的年、月、日、星期、时、分、秒,按键设计3个有效按键,分别有功能选择键、数值增大键、数值减小键。
在每次的按键按下时,蜂鸣器有“滴”的提示声。
再利用DS12887设计实现断电自动保护显示数字的功能,当下次上电时会接着上次上电前的时间继续运行。
本设计的+5V电源采用LM1117电压转换元件,将电源适配器转换得到的12V电压直接变成5V电压供系统使用。
通过软硬件结合达到最终目的。
关键词:单片机AT89C52。
1602液晶。
电子时钟。
DS12887芯片1 / 32AbstractThe design uses a 11.0592MHz crystal with AT89C52 microcontroller is connected to the AT89C52 chip as the core, and 1602 parallel operation. Byusing the microcontroller, the time is displayed in 1602, and updated in real time in seconds. STC89C52 microcontroller is launched by the Shenzhen-Hong Crystal Technology, Inc., low power consumption, voltage can be used to 6V voltage power supply. Through the keys on the board can always adjust theclock of the year, month, day, week, when, minutes, seconds, button design 3 effective keys, function selection key, increase the value of the key, key decreases the value. Each time the button is pressed, the buzzer tone \the display number, then the last time before the power to continue running whenthe next power. The design of the 5V power supply using LM1117 voltage conversion device, power adapter converted directly into 12V voltage 5Vvoltage for system use. Through a combination of hardware and software to achieve the ultimate objective.Keywords:Microcontroller AT89C52。
基于单片机的lcd电子时钟设计随着科技的发展,电子产品逐渐成为人们生活中必不可少的部分。
其中,电子时钟是人们生活中经常使用的一种电子产品。
电子时钟通过精准的电子元件来测量时间,比传统时钟计时更为准确、实用。
在这篇文档中,我将介绍一种基于单片机的LCD电子时钟设计。
一、设计原理该电子时钟的核心是单片机AT89C51,其运行频率为12MHz。
另外,该时钟使用4位7段LCD显示器来显示时间。
由于该LCD显示器需要保持常电流状态,因此电子时钟配备了LM324运算放大器,用于调整电流并实现显示。
当单片机初始化时,它会将当前的时间读取到内部存储器中,至此时钟启动。
单片机读取内部存储器将获取到各种时间信息,包括秒、分、时、日、月和年。
接下来,单片机通过CPU时钟中断,每秒钟更新一次时间,同时在LCD显示区域更新时间数据。
二、硬件设计该电子时钟需要一些硬件设备才能正常运行。
我们需要以下电子设备:1. 单片机AT89C512. 4位7段LCD3. 若干电容4. 数量不定的电阻5. LM324运算放大器6. 晶体7. LED灯通过以上硬件部件的搭配,我们可以实现一个完整的电子时钟设备。
三、软件设计在开发电子时钟硬件之后,我们需要写一些软件来控制它的运行。
在本例中,我们使用C语言编写时钟控制程序。
基本的程序控制框架如下:1. 初始化单片机,设置相关校准参数2. 读取系统时间,并将其存储到内部存储器中3. 每秒钟更新时间信息4. 对时钟时间进行格式化,以便在LCD显示屏幕上显示5. 在LCD显示区域显示格式化数据6. 不断循环执行上述步骤以上步骤需要编写正确的代码才能正常工作。
在编写C程序时,需要注意单片机的内部存储器、寄存器、I/O端口等的使用,同时还需要考虑程序执行速度、指令优化以及机器资源分配等各个方面。
四、总结在本文中我们介绍了基于单片机的LCD电子时钟的设计,并分别阐述了其硬件和软件设计的基本原理。
作为一种基于电子、精准、实用的时间计算设备,电子时钟在现代社会中得到了广泛应用。
基于单片机控制LCD显示电子时钟设计电子时钟可以说是现代社会不可或缺的电子产品之一,准确显示时间,为人们提供时间信息,是人们日常生活的重要组成部分。
本文将介绍一种基于单片机控制LCD显示电子时钟设计的方法。
该电子时钟设计基于单片机芯片,并通过LCD显示屏来实现时间的显示。
其主要原理是通过单片机芯片内部的定时器,不断进行时间的计时,然后将计时结果通过串行通信协议发送给LCD显示屏,LCD显示屏将计时结果显示出来。
具体设计步骤如下:1.硬件设计:a.选择适合的单片机芯片:根据设计要求选择适合的单片机芯片,一般选择具有定时器功能的芯片,如51系列单片机。
b.连接LCD显示屏:将单片机与LCD显示屏连接,一般是通过串行通信协议,如I2C或SPI协议来进行数据传输。
c.添加电源模块:为单片机和LCD显示屏提供合适的电源,一般是通过稳压电源芯片来提供稳定可靠的电源。
d.添加按键模块:添加按键模块可以实现对时间的设置和调整功能,一般通过矩阵按键的方式来实现。
2.软件设计:a.初始化单片机芯片:在程序开始时,进行单片机的初始化,初始化定时器、串行通信模块等相关硬件。
b.设置时间计时器:通过定时器模块来进行时间的计时,可以选择合适的时钟频率和计时周期,从而实现精确计时。
d.实现按键功能:通过检测按键状态来进行按键功能的触发,如修改时间、调整亮度等功能。
以上就是基于单片机控制LCD显示电子时钟的设计方法。
通过单片机芯片的计时功能和串行通信协议实现时间的显示,通过按键模块实现对时间的设置和调整功能。
设计好电路和编写好相应的程序后,就能够实现一个简单而准确的电子时钟。
设计总说明这次课程设计的任务是是利用MCS51系列单片外加必要的辅助电路从而设计一个带有LCD显示的定时闹钟。
该闹钟应具有的功能是:当定时闹钟到了人为设定好的时间后,它就发出声音,并且在LCD显示器上显示出你所设定的闹钟时间以及当前时间,并能够随时调整时间。
本课设所用器件有:AT89C52单片机、LCD显示器(LM016L)、上拉电阻(Respack-8)、晶振电路、复位电路(带有复位键)以及四个控制键。
1、在控制时分电路设计中,分别设置了四个键:K1键-用来设置当前时间以及在设置中用来设置时钟K2键-显示闹钟时间以及在设置中用来设置分钟K3键-设置闹钟时间K4键-控制闹铃的开关2、在控制时分秒电路的设计中,分别设置了五个键,即在1的基础上增加了一个控制秒的按键。
当然本课程设计中所用到的元器件还可以应用其他的一些器件。
比如AT89C52完全可以用AT89C51来代替,LM016L型号的LCD显示器可以用LM017L型号的LCD显示器来代替(其他一些显示器也可以用),上来电阻也可以用分电阻来表示。
初次做课程设计,肯定会有许多不足之处,希望老师们指点!关键字: AT89C52单片机 LCD显示器闹钟目录1、主要内容 (3)2、目的和意义 (3)3、基本要求 (3)3.1、显示时-分功能 (3)3.2、显示时-分-秒功能 (3)4、系统设计4.1 AT89C52单片机简介 (4)4.2 电路总体设计 (6)4.3 主程序流程图 (7)5、详细设计5.1 设计电路图 (7)5.2 程序代码 (12)5.2.1 时-分程序代码 (12)5.2.2 时-分-秒程序代码 (23)6、结论6.1 结果分析 (33)6.2 心得体会 (33)7、设计总结 (34)8、参考文献 (34)1、主要内容:本次课程设计的内容为设计一个以MCS51单片机为核心的带有LCD显示的定时闹钟,完成原理图设计,软件编制及设计报告。
#include<reg51.h> //包含单片机寄存器的头文件#include<stdlib.h> //包含随机函数rand()的定义文件#include<intrins.h> //包含_nop_()函数定义的头文件#include "LCD1602.h"unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字unsigned char code string[ ]={"BeiJing Time:"}; //定义字符数组显示提示信息unsigned char count; //定义变量统计中断累计次数unsigned char s,m,h; //定义变量储存秒、分钟和小时/******************************************************************************函数功能:显示小时******************************************************************************/ void Display_Hour(){unsigned char i,j;i=h/10; //取整运算,求得十位数字j=h%10; //取余运算,求得各位数字Write_Addr(0x44); //写显示地址,将十位数字显示在第2行第5列Write_Data(digit[i]); //将十位数字的字符常量写入LCDWrite_Data(digit[j]); //将个位数字的字符常量写入LCD}/******************************************************************************函数功能:显示分钟******************************************************************************/ void Display_Minute(){unsigned char i,j;i=m/10; //取整运算,求得十位数字j=m%10; //取余运算,求得各位数字Write_Addr(0x47); //写显示地址,将十位数字显示在第2行第8列Write_Data( digit[i] ); //将十位数字的字符常量写入LCDWrite_Data(digit[j]); //将个位数字的字符常量写入LCD}/******************************************************************************函数功能:显示秒******************************************************************************/ void Display_Second(){unsigned char i,j;i=s/10; //取整运算,求得十位数字j=s%10; //取余运算,求得各位数字Write_Addr(0x4a); //写显示地址,将十位数字显示在第2行第11列Write_Data(digit[i]); //将十位数字的字符常量写入LCDWrite_Data(digit[j]); //将个位数字的字符常量写入LCD}/*********************************************************************main 主函数***********************************************************************/ void main(void){unsigned char i;Init_LCD1602(); //调用LCD初始化函数TMOD=0x01; //使用定时器T0的模式1TH0=(65536-50000)/256; //定时器T0的高8位设置初值TL0=(65536-50000)%256; //定时器T0的低8位设置初值EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0count=0; //中断次数初始化为0s=0; //秒初始化为0m=0; //分钟初始化为0h=0; //小时初始化为0Write_Addr(0x03); //写地址,从第1行第4列开始显示i=0; //从字符数组的第1个元素开始显示while(string[i]!='\0') //只要没有显示到字符串的结束标志'\0',就继续{Write_Data(string[i]); //将第i个字符数组元素写入LCDi++; //指向下一个数组元素}Write_Addr(0x46); //写地址,将第二个分号显示在第2行第7列Write_Data(':'); //将分号的字符常量写入LCDWrite_Addr(0x49); //写地址,将第二个分号显示在第2行第10列Write_Data(':'); //将分号的字符常量写入LCDwhile(1) //无限循环{Display_Hour(); //显示小时Delay(5); //给硬件一点反应时间Display_Minute(); //显示分钟Delay(5); //给硬件一点反应时间Display_Second(); //显示秒Delay(5); //给硬件一点反应时间}}/*******************************************************函数功能:定时器T0的中断服务函数********************************************************/void Time0( ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器{count++; //每产生1次中断,中断累计次数加1if(count==20) //如果中断次数计满20次{count=0; //中断累计次数清0s++; //秒加1}if(s==60) //如果计满60秒{s=0; //秒清0m++; //分钟加1}if(m==60) //如果计满60分{m=0; //分钟清0h++; //小时加1}if(h==24) //如果计满24小时{h=0; //小时清0}TH0=(65536-50000)/256; //定时器T0高8位重新赋初值TL0=(65536-50000)%256; //定时器T0低8位重新赋初值}lcd1602.h:#ifndef _LCD1602_H_#define _LCD1602_H_sbit RS=P1^0; //寄存器选择位,将RS位定义为P1.0引脚sbit RW=P1^1; //读写选择位,将RW位定义为P1.1引脚sbit EN=P1^2; //使能信号位,将E位定义为P1.2引脚sbit Busy=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms***************************************************/ void Delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/***************************************************** 函数功能:延时若干毫秒入口参数:n***************************************************/ void Delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)Delay1ms();}/***************************************************** 函数功能:判断液晶模块的忙碌状态返回值:result。
result=1,忙碌;result=0,不忙***************************************************/ void Busy_Test(){P0=0xff;do{RS=0;RW=1;EN=0;EN=1;}while(Busy==1);EN=0;}/***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/ void Write_Cmd (unsigned char Dictate){Busy_Test(); //如果忙就等待EN=0;P0=Dictate;RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_(); //空操作两个机器周期,给硬件反应时间//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间EN=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间EN=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/void Write_Data(unsigned char x){Busy_Test();EN=0;P0=x;RS=1; //RS为高电平,RW为低电平时,可以写入数据RW=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"//将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间EN=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间EN=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/void Write_Addr(unsigned char x){Write_Cmd(x|0x80); //显示位置的确定方法规定为"80H+地址码x"}/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void Init_LCD1602(){Delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间Write_Cmd(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口Delay(5); //延时5msWrite_Cmd(0x0c); //显示模式设置:显示开,有光标,光标闪烁Delay(5);Write_Cmd(0x06); //显示模式设置:光标右移,字符不移Delay(5);Write_Cmd(0x01); //清屏幕指令,将以前的显示内容清除Delay(5);}#endif。