LCD1602液晶显示器设计

合集下载

LCD1602显示控制器设计

LCD1602显示控制器设计

LCD1602显示控制器设计一、LCD1602显示控制器的基本原理1. LCD1602显示屏通过16个引脚与Arduino开发板相连接,其中8个引脚用于数据通信,另外8个引脚包括RS、RW和E等信号引脚,用于控制显示模式和数据写入。

2.通过设置每个引脚的高低电平状态,可以实现对LCD1602显示屏的各种操作,例如清屏、光标位置设置、字符显示和图标显示等。

二、LCD1602显示控制器的硬件设计1. Arduino开发板的选择在设计LCD1602显示控制器时,首先需要选择一个合适的Arduino开发板,常用的有Arduino Uno、Arduino Nano等。

这些开发板一般都提供了多个IO口,可以满足与LCD1602显示屏的连接需求。

2.连接电路设计根据LCD1602显示屏和Arduino开发板的引脚对应关系,设计连接电路。

一般情况下,将LCD1602显示屏的VSS引脚与Arduino开发板的GND引脚相连接,将VDD引脚与5V电源引脚相连接。

将LCD1602显示屏的RS、RW和E等信号引脚与Arduino开发板的相应IO口相连接。

将LCD1602显示屏的D0-D7引脚与Arduino开发板的相应IO口相连接。

三、LCD1602显示控制器的软件设计1. 引入LiquidCrystal库在Arduino的开发环境中,打开“Sketch”菜单,选择“包含库”,再选择“添加库”,“LiquidCrystal”,将其添加到项目中。

然后在代码中引入LiquidCrystal库,以便使用其提供的函数和方法。

2. 初始化LiquidCrystal对象初始化一个LiquidCrystal对象,指定其构造函数的参数为相应的引脚号,表示与LCD1602显示屏的连接关系。

3.设置显示模式和光标位置使用LiquidCrystal对象的setCursor(函数设置光标的位置,使用display(函数打开显示,并使用noDisplay(函数关闭显示。

LCD1602液晶显示实验

LCD1602液晶显示实验

实验报告实验名称: [LCD1602液晶显示实验]姓名:学号:指导教师:实验时间: [2013年6月15日]信息与通信工程学院LCD1602液晶显示实验1.实验原理1.1 基本原理1.1.1 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

1.1.2 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图1-2所示:图1-2 1602LCD尺寸图1.1602LCD主要技术参数:显示容量: 16×2个字符芯片工作电压: 4.5~5.5V工作电流: 2.0mA(5.0V)模块最佳工作电压: 5.0V字符尺寸: 2.95×4.35(W×H)mm2.引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表:表1-3引脚接口说明表编符号引脚说明编号符号引脚说明号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 背光源负极1.1.3 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表1-4所示:表1-4 控制命令表序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清显示0 0 0 0 0 0 0 0 0 12 光标返回0 0 0 0 0 0 0 0 1 *3 置输入模式0 0 0 0 0 0 0 1 I/D S4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1 S/C R/L * *6 置功能0 0 0 0 1 DL N F * *7 置字符发生存贮器地址0 0 0 1 字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址0 1 BF 计数器地址10 写数到CGRAM或DDRAM)1 0 要写的数据内容11 从CGRAM或DDRAM读数1 1 读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

lcd1602课程设计

lcd1602课程设计

lcd1602课程设计一、课程目标知识目标:1. 学生能理解LCD1602液晶显示屏的基本结构、工作原理及功能。

2. 学生能掌握LCD1602液晶显示屏与微控制器(如Arduino)的连接方法。

3. 学生能了解LCD1602液晶显示屏的指令集,并学会使用相关函数控制显示内容。

技能目标:1. 学生能运用所学知识,自主完成LCD1602与微控制器的硬件连接。

2. 学生能通过编程,实现LCD1602显示自定义文字和图案。

3. 学生能在实际项目中运用LCD1602进行信息展示,提高实际问题解决能力。

情感态度价值观目标:1. 学生通过学习LCD1602液晶显示屏的使用,培养对电子技术和编程的兴趣和热情。

2. 学生在团队合作中,学会沟通、协作,培养团队精神和责任感。

3. 学生能够关注科技创新,意识到学习与实践相结合的重要性,提高自我探索和创新能力。

课程性质:本课程为实践性较强的电子技术课程,旨在让学生掌握LCD1602液晶显示屏的使用方法,培养实际操作能力和编程技能。

学生特点:学生为初中或高中年级,具备一定的电子技术基础和编程能力,对新鲜事物充满好奇,喜欢动手实践。

教学要求:课程要求教师以学生为主体,注重启发式教学,引导学生主动探索,提高实践操作能力。

同时,关注学生个体差异,提供个性化指导,确保课程目标的实现。

通过课程学习,使学生能够将所学知识应用于实际项目中,培养创新精神和问题解决能力。

二、教学内容1. LCD1602基本结构:讲解LCD1602液晶显示屏的构造、各部分功能及其工作原理。

- 教材章节:第二章 电子元件及显示器件2. 硬件连接:介绍LCD1602与微控制器(以Arduino为例)的接线方法,讲解各引脚功能。

- 教材章节:第三章 微控制器及其接口技术3. LCD1602指令集:详细解释LCD1602的指令集,包括清屏、光标移动、显示开关等指令。

- 教材章节:第四章 显示器件控制方法4. 编程控制:学习使用Arduino编程控制LCD1602显示自定义内容,如文字、数字和简单图案。

实验99 字符型LCD1602显示驱动电路设计

实验99 字符型LCD1602显示驱动电路设计

模式6
D7
Clk0 Clk1 Clk2 PIO[22:15] 22 21 20 19 18 17 16 15
D6
D5
D4
D3
D2
D1
D0
SW7 SW6 SW5 SW4 SW3 SW2 SWO[28] PIO[29] PIO[30] PIO[38:31] RW E DB
VSS VCC V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA BLK
符号 VSS VCC V0
RS
R/W E
DB0~DB7 BLA BLK
功能描述 参数取值 电源地 GND 电源电压 4.5V~5.5V,典型值5V 0V~5V LCD驱动电压(可 调) 寄存器选择输入端 RS=0,写操作时,指向指令寄 存器; 读操作时,指向地址寄存 器; RS=1,指向数据寄存器; 读写控制输入端 R/W=0,读操作; R/W=1.写操作; 使能信号输入端 读操作时,高电平有效 写操作时,下降沿有效 数据输入输出口 数据或指令传送通道 背光电源正端 +5V 背光电源负端 0V


用户使用CGRAM存储自己定义的最多8个5×8点 阵的图形字符的字模数据。在图3-11-3中地址 0X00~0X0F用于存储用户自定义的字符图形(请 参见实验教材) 提供较为丰富的指令设置,如清屏设置、显示开 关、光标开关、显示字符闪烁、光标移位、显示 移位等等。(请参见实验教材 11条指令)
S6 保持显示
S5 第二行 数据写入
S4 第二行 DDRAM设置
5、实验步骤及结果

实验步骤(略)
选择实验箱模式6,具体引脚锁定见表3-11-3。时钟可选择信号F0,选 择5Hz,能够看到每一个字符依次送出显示。根据状态机的设定,当所 有字符显示完成后将继续保持显示结果不变,如图3-11-5,除非按动 清屏按键reset。

LCD1602液晶显示器设计.

LCD1602液晶显示器设计.

LCD1602 液晶显示课程设计第一章绪论1.1 课题背景此刻时候是一个信息化的时代,信息的重要性不言而喻的,获到手段显得特别重要。

人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最后需要有某种显示方式来表示。

在今世显示技术中,主流的有 LED显示屏和LCD 液晶显示,而在这些显示技术中,特别以液晶显示器LCD〔Liquid crystal display〕为代表的平板显示器睁开最快,应用最广。

LCD 是典型的发光器件,它一资料科学为基础,综合利用了精美机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向睁开。

液晶显示技术睁开迅猛,市场展望表明,液晶显示平均年销售呈增加10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的搅乱不敏感,且在紧凑的仪器空间不需要特地的屏蔽保护,所以课大大简化仪器的结构和制造本钱,在各种便携式仪器,仪表将会越来越广泛的应用。

特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。

1.2 课题设计目标本设计是基于AT89C51 芯片单片机为主控芯片,结合1602液晶显示模板等外围电路,经过软件程序,来实现液晶显示英文字母。

本次设计的目的在于利用单片机和IIC 技术来显示英文字母。

1.3 课程设计的主要工作〔1〕对系统的各个模块的各个功能进行深入解析和研究,在对课题所采用的方案进行可行详细的研究后设计详细功能电路。

〔2〕熟悉所选芯片的功能并完成详细电路设计。

〔3〕对系统的最后指标进行测试,针对系统的缺乏,进行解析并提出一些改正方法。

1.4 设计要求〔1〕运行 IIC 总线技术。

〔2〕循环显示字母。

第二章硬件设计2.1 LCD1602 简介2.1.1 LCD1602 引脚功能LCD1602 引脚如图 2.1 所示图 2.1 LCD1602 引脚图引脚图的功能如表 2—1 所示2表2—1引脚功能图2.1.2 LCD1602 显示模指令集〔1〕清屏功能:清DDROM 值和A C 值〔2〕归位功能:光标复位,光标返回到地址00H〔3〕输入方式设置功能:设置光标,画面搬动方式。

LCD1602液晶显示屏

LCD1602液晶显示屏

在日常生活中,我们对液晶显示器并不陌生。

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。

在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。

因此,液晶显示器画质高且不会闪烁。

数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。

10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。

除了黑白显示外,液晶显示器还有多灰度有彩色显示等。

如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。

③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。

LCD1602液晶显示器设计

LCD1602液晶显示器设计

专业资料LCD1602液晶显示课程设计第一章绪论1.1课题背景当今时候是一个信息化的时代,信息的重要性不言而喻的,获取手段显得尤其重要。

人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。

在当代显示技术中,主流的有LED显示屏和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid crystal display)为代表的平板显示器发展最快,应用最广。

LCD是典型的发光器件,它一材料科学为基础,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向发展。

液晶显示技术发展迅猛,市场预测表明,液晶显示平均年销售呈增长10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因而课大大简化仪器的结构和制造成本,在各种便携式仪器,仪表将会越来越广泛的应用。

特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。

1.2课题设计目标本设计是基于AT89C51芯片单片机为主控芯片,结合1602液晶显示模板等外围电路,通过软件程序,来实现液晶显示英文字母。

本次设计的目的在于利用单片机和IIC技术来显示英文字母。

1.3课程设计的主要工作(1)对系统的各个模块的各个功能进行深入分析和研究,在对课题所采用的方案进行可行详细的研究后设计具体功能电路。

(2)熟悉所选芯片的功能并完成具体电路设计。

(3)对系统的最终指标进行测试,针对系统的不足,进行分析并提出一些改正方法。

1.4 设计要求(1)运行IIC总线技术。

(2)循环显示字母。

第二章硬件设计2.1 LCD1602 简介2.1.1 LCD1602 引脚功能LCD1602引脚如图2.1所示图2.1 LCD1602引脚图引脚图的功能如表2—1所示表2—1引脚功能图2.1.2 LCD1602显示模指令集(1)清屏(2)归位(3)输入方式设置功能:设置光标,画面移动方式。

实验八 LCD1602液晶显示实验

实验八 LCD1602液晶显示实验

电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:单片机原理与接口技术实验3、芯片时序表:4、LCD数据存储器地址LCD内置了DDRAM,用来寄存待显示的字符代码。

其地址与屏幕的对应关系如下:也就意味着想要在LCD1602的第一行第一列显示一个“A”字符,就要向DDRAM的00H地址写入“A”,但是在实际写入时,还必须将00H加上80H,即0X80+0X00。

以此类推,如果想要在LCD1602的第二行的第二列显示字符内容,则实际写入地址应该为0X80+0X41。

5、1602LCD的一般初始化(复位)过程(1) 延时15ms。

(2) 写指令38H(不检测忙信号)。

(3) 延时5ms。

(4) 写指令38H(不检测忙信号)。

(5) 延时5ms。

(6) 写指令38H(不检测忙信号)。

(7) 以后每次写指令、读/写数据操作均需要检测忙信号。

(8) 写指令38H:显示模式设置。

(9) 写指令08H:显示关闭。

(10) 写指令01H:显示清屏。

(11) 写指令06H:显示光标移动设置。

(12) 写指令0CH:显示开及光标设置。

6、LCD1602与单片机直接连接典型示意图如图8.1所示。

图8.1 LCD1602液晶显示。

三、实验内容和步骤1、用Proteus设计一LCD1602液晶显示接口电路。

参考实验指导书上的参考程序,编写程序,实现字符的静态显示。

显示字符为:第一行:“姓名全拼(居中)”,第二行:“专业全拼+学号(后3位)”。

将LCD显示截图以及相应的程序保存在下方。

#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" xuzhulin ";uchar code table1[]="zidonghua 031";sbit lcden=P2^7;sbit lcdrw=P2^6;sbit lcdrs=P2^5;uchar num;for(num=0;num<12;num++){write_data(table[num]); //写数据,LCD的第一行显示delay(200);}write_com(0x02); //光标返回write_com(0x80+0x40); //设置数据地址指针,LCD第二行显示for(num=0;num<16;num++){write_data(table1[num]);delay(200);}while(1);}}2、在上一题的基础上,增加两个外部中断,实现不同内容的显示。

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

LCD1602液晶显示课程设计第一章绪论1.1课题背景当今时候是一个信息化的时代,信息的重要性不言而喻的,获取手段显得尤其重要。

人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。

在当代显示技术中,主流的有LED显示屏和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid crystal display)为代表的平板显示器发展最快,应用最广。

LCD是典型的发光器件,它一材料科学为基础,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向发展。

液晶显示技术发展迅猛,市场预测表明,液晶显示平均年销售呈增长10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因而课大大简化仪器的结构和制造成本,在各种便携式仪器,仪表将会越来越广泛的应用。

特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。

1.2课题设计目标本设计是基于AT89C51芯片单片机为主控芯片,结合1602液晶显示模板等外围电路,通过软件程序,来实现液晶显示英文字母。

本次设计的目的在于利用单片机和IIC技术来显示英文字母。

1.3课程设计的主要工作(1)对系统的各个模块的各个功能进行深入分析和研究,在对课题所采用的方案进行可行详细的研究后设计具体功能电路。

(2)熟悉所选芯片的功能并完成具体电路设计。

(3)对系统的最终指标进行测试,针对系统的不足,进行分析并提出一些改正方法。

1.4 设计要求(1)运行IIC总线技术。

(2)循环显示字母。

第二章硬件设计2.1 LCD1602简介2.1.1 LCD1602引脚功能LCD1602引脚如图2.1所示图2.1 LCD1602引脚图引脚图的功能如表2—1所示表2—1引脚功能图2.1.2 LCD1602显示模指令集(1)清屏(2)归位(3)输入方式设置功能:设置光标,画面移动方式。

其中:I/D=1:数据读写操作后,AC 自加一;I/D=0:数据读写操作后,AC 自减一;S=1:数据读写操作,画面平移;S=0:数据读写操作,画面不动;(4)显示开关控制功能:设置显示、光标和闪烁开关。

其中:D表示显示开关,D=1为开,D=0为关;C 表示光标开关,C=1为开,C=0 为关;B 表示闪烁开关,B=1 为开,B=0为关。

(5)光标、画面位移功能:光标、画面移动。

其中:S/C=1画面移动一个字符位;S/C=0光标移动一个字符位;R/L=1:右移;R/L=0左移。

(6)功能设置功能:工作方式设置(初始化指令)。

其中:DL=1,8位数据接口;DL=0,4 位数据接口;N=1,两行显示;N=0,一行显示;F=1,5*10 点阵显示;F=0,5*7点阵显示。

(7)CGRAM 地址设置功能:设置CGRAM地址,A5~A0=0~3FH。

(8)DDRAM 地址设置功能:设置DDRAM地址。

其中:N=0,一行显示A6~A0=0~4FH;N=1两行显示,首行A6~A0=0~2FH,次行A6~A0=40~67H。

(9)读BF 及AC 值功能:读忙BF 和地址计数器AC的值。

其中:BF=1:忙,BF=0:准备好。

此时AC 值意义为最近一次地址设置(CGRAM 或DDRAM)定义。

(10)写数据功能:根据最近设置的地址性质,数据写入CGRAM或DDRAM中。

(11)读数据功能:根据最近设置的地址性质,从CGRAM或DDRAM 数据读出。

2.2 IIC总线IIC 总线是PHILIPS公司推出的两线式串行总线。

用于连接微控制器及其外围设备。

IIC 总线产生于在80 年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。

例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。

可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。

2.2.1 IIC 总线的特点(1) 只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL。

(2) 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址;主机可以作为主发送器或主机接收器。

(3) 它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。

(4) 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达4Mbit/s。

(5) 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。

(6) 连接到相同总线的IC数量只受到总线的最大电容400pF限制。

2.2.2 IIC协议总线信号时序(1)数据的有效性SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。

如图2.2 IIC总线的位传输所示。

图2.2 IIC总线的为传输(2)起始和停止条件在IIC总线中唯一出现的是被定义为起始(S)和停止(P)条件(见图2.3)的情况。

其中一种情况是在SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件。

当SCL是高电平时SDA线由低电平向高电平切换表示停止条件。

起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态。

在停止条件的某段时间后,总线被认为再次处于空闲状态。

如果产生重复起始(Sr)条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始(Sr)条件在功能上是一样的。

因此在本文档的剩余部分,符号(S)将作为一个通用的术语既表示起始条件又表示重复起始条件,除非有特别声明的(Sr)。

如果连接到总线的器件合并了必要的接口硬件,那么用它们检测起始和停止条件十分简便。

但是,没有这种接口的微控制器在每个时钟周期至少要采样SDA线两次来判别有没有发生电平切换。

图2.3起始和停止条件(3)总线空闲状态SDA 和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高。

(4)数据传输与应答信号ACK发送到SDA 线上的数据必须是8 位的。

每次传输可以发送的数据不受限制。

每个字节后必须在时钟的第9 个脉冲期间释放数据总线(SDA为高),由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。

如图2.4 IIC 总线响应。

图2.4IIC总线响应首先传输的是数据的最高位(MSB)。

如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟SCL 保持低电平迫使主机进入等待状态。

当从机准备好接收下一个数据字节并释放时钟线SCL后,数据传输继续。

如图2.5 IIC总线数据传输所示。

图2.5IIC总线数据传输2.2.3 IIC总线器件寻址方式IIC 总线上的器件是共用总线的,因此,主器件在进行数据传输前要选择通信的从器件,即进行总线寻址。

总线上的所有器件都有唯一的地址,由器件地址和引脚地址两部分构成,共7位。

引脚地址由IIC总线外围器件的地址引脚(A2、A1、A0)决定的。

数据的传输遵循如图2.6 完整的数据传送所示,在起始条件之后,发送一个7 位的从机地址,紧接着第8 位是数据方向(R/ W),0-表示发送数据(写),1-表示接收数据(读)。

数据传输一般由主机产生的停止位(P)终止。

但是如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr),和寻址另一个从机,而不是首先产生一个停止条件。

在这种传输中,可能有不同的读/写格式结合。

如图2.6 IIC 总线完整的数据传输。

图2.6 IIC总线的数据传输2.3 系统电路图系统的电路图如2.7 所示:图2.7 系统电路图运行状况如图2.8:图2.9 运行状态第三章软件设计3.1系统框图本课题的程序设计是在C语言的基础之上的,可分为两大模块,分别是:(1)IIC协议;(2)LCD显示。

程序总体框图如图3.1 所示:图3.1总程序框图LCD 显示程序框图如图3.2 所示:图3.2LCD显示程序框图3.2 程序清单(一)#include<reg52.h>#include<stdio.h>#define uint unsigned int#define uchar unsigned charuchar code display_1[]={"good morning"};uchar code display_2[]={"miss you"};sbit lcden=P3^4;sbit lcdrs=P3^5;//sbit lcdrw=P3^6;uchar num;uint i=0;void delayms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com) {lcdrs=0;lcden=0;P0=com;delayms(5);lcden=0;lcden=1;delayms(5);lcden=0;}void write_data(uchar date) {lcdrs=1;P0=date;delayms(5);lcden=0;lcden=1;delayms(5);lcden=0;}void init(){lcden=0;write_com(0x38);write_com(0x0f);write_com(0x06);write_com(0x01);}void main(){init();//lcdrw=0;write_com(0x80+0x1a);while(display_1[i]!='\0'){write_data(display_1[i]);i++;delayms(5);}write_com(0x80+0x5f);for(num=0;num<10;num++) {write_data(display_2[num]);delayms(5);}for(num=0;num<16;num++) {write_com(0x18);delayms(100);}while(1);}(二)/*********************************************************** ****************** File: main.c* 功能:向LCD输出HelloWorld*********************************************************** *****************/#include "config.h"#define rs (1<<8)#define rw (1<<9)#define en (1<<10)#define busy (1<<7)uint8 txt[]={"HelloWorld"};/*********************************************************** ****************** 名称:ChkBusy()* 功能:检查总线是否忙*********************************************************** *****************/void ChkBusy(){IODIR=0x700;while(1){IOCLR=rs;IOSET=rw;IOSET=en;if(!(IOPIN & busy))break;IOCLR=en;}IODIR=0x7ff;}/*********************************************************** ****************** 名称:WrOp()* 功能:写函数*********************************************************** *****************/void WrOp(uint8 dat){ChkBusy();IOCLR=rs; //全部清零IOCLR=rw;IOCLR=0xff; //先清零IOSET=dat; //再送数IOSET=en;IOCLR=en;}/*********************************************************** ****************** 名称:WrDat()* 功能:写数据函数*********************************************************** *****************/void WrDat(uint8 dat){ChkBusy();IOSET=rs;IOCLR=rw;IOCLR=0xff; //先清零IOSET=dat; //再送数IOSET=en;IOCLR=en;}/*********************************************************** ****************** 名称:lcd_init()* 功能:lcd初始化函数*********************************************************** *****************/void lcd_init(void){WrOp(0x38);WrOp(0x06); //光标加1WrOp(0x0c); //开显示}/*********************************************************** ****************** 名称:DisText()* 功能:显示文本函数*********************************************************** *****************/void DisText(uint8 addr,uint8 *p){WrOp(addr);while(*p !='\0')WrDat(*(p++));}/*********************************************************** ****************** 名称:main()* 功能:显示文本*********************************************************** *****************/int main(void){lcd_init();IODIR=0x7ff; //设置为输出IOCLR=0x7ff;DisText(0x86,txt);while(1);}/**--------------文件信息-------------------------------------------------------------------------------- **文件名: target.c**描述: lpc210x(飞利浦的ARM)目标板特殊的代码,包括异常处理程序和目标板初始化程序** 每个工程应当具有这个文件的拷贝,用户根据程序的需要修改本文件。

相关文档
最新文档