基于msp430G2533的LCD1602液晶字符串循环显示课程设计(DOC)

合集下载

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显示自定义内容,如文字、数字和简单图案。

单片机+LCD1602液晶显示字符串

单片机+LCD1602液晶显示字符串

1602液晶显示字符串(附带程序)(注意说明:使用的实验板是郭天祥老师的52单片机板)基本操作电路状态字说明RAM地址映射图初始化相关指令的意思读时序图写时序图要想通过1602液晶来显示你想要显示字符串,其实是很简单的,程序虽然有点长,但是都是按照步骤来的。

1602的五大步骤第一个步骤:检查LCD忙状态lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

第二个步骤:写指令数据到LCDRS=L,RW=L,E=高脉冲,D0-D7=指令码。

第三个步骤:写显示数据到LCDRS=H,RW=L,E=高脉冲,D0-D7=数据。

第四个步骤:设定显示位置第五个步骤:LCD初始化设定只要这五步你弄懂了,什么样的字符串都可以按照你的方式显示。

至于这其中的步骤的具体的方式,我们就要参照1602的资料和时序图!不过你大可不必,这份文档就足够了!#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit LCD_RS = P3^5;sbit LCD_RW = P3^6;sbit LCD_EN = P3^4;uchar code dis1[] = {" WLCOME TO "}; uchar code dis2[] = {" JIANG GAN HUA "}; uchar code dis3[] = {" NAN CHANG "}; uchar code dis4[] = {" HANG KONG DX"}; void delay(int ms){int i;while(ms--){for(i = 0; i< 110; i++){_nop_();}}}bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0x80);LCD_EN = 0;return result;}void lcd_wcmd(uchar cmd){while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}void lcd_wdat(uchar dat){while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}void lcd_pos(uchar pos){lcd_wcmd(pos|0x80); //数据指针=80+地址变量}void lcd_init(){dula=0;wela=0;lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c); //显示开,关光标lcd_wcmd(0x06); //移动光标delay(5);lcd_wcmd(0x01); //清除LCD的显示内容delay(5);}main(){uchar i;delay(10);lcd_init(); // 初始化LCDwhile(1){lcd_wcmd(0x06); //向右移动光标lcd_pos(0); //设置显示位置为第一行的第1个字符i = 0;while(dis1[i] != '\0'){ //显示字符lcd_wdat(dis1[i]);i++;delay(50); //控制两字之间显示速度}lcd_pos(0x40); //设置显示位置为第二行第1个字符i = 0;while(dis2[i] != '\0'){lcd_wdat(dis2[i]); //显示字符"i++;delay(50); //控制两字之间显示速度}//闪动二次lcd_wcmd(0x01); //清除LCD的显示内容delay(200); //控制转换时间lcd_wcmd(0x04); //向左移动光标lcd_pos(15); //设置显示位置为第一行的第16个字符i = 0;delay(50);while(dis3[i] != '\0'){ //显示字符" "lcd_wdat(dis3[i]);i++;delay(50); //控制两字之间显示速度}lcd_pos(0x4F); //设置显示位置为第二行的第16个字符i = 0;while(dis4[i] != '\0'){lcd_wdat(dis4[i]); //显示字符"i++;delay(50); //控制两字之间显示速度}lcd_wcmd(0x01); //清除LCD的显示内容delay(100); //控制转换时间}}实验现象,1602液晶显示我在数组里设置的字符串!739141300疑问解答!。

基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画

基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画

学号:课程设计题目LCD1602液晶字符串循环显示学院专业班级姓名指导教师2013年1月15 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目要求:利用LaunchPad上的板上资源,外接1602液晶,编写程序使字符串在液晶上循环移动。

时刻安排:2021年元月1日~2021年元月17日下午17:30 指导教师签名:年月日系主任(或责任教师)签名:年月日目录引言 (1)1 课程设计要求 (2)2 硬件电路 (3)2.1 MSP430G2553单片机 (3)2.1.1 MSP430G2553单片机特点 (3)2.1.2 MSP430G2553单片机结构 (3)2.1.3 MSP430G2553的时钟系统 (4)2.1.4 I/O寄放器 (5)2.2 LCD1602液晶屏 (5)3 方案设计 (7)3.1 设计方案 (7)3.2 方案选择 (7)4 程序设计 (8)4.1 程序结构 (8)4.2 主程序源程序 (8)4.3 子程序源程序 (8)4.4 子程序头文件 (12)5 调试 (13)5.1 CCSv5编译软件 (13)5.2 调试进程 (13)6 终止语 (15)附录1:代码 (16)附录2:实物图 (22)参考文献 (23)本科生课程设计成绩评定表 (24)引言本次课程设计旨在设计一个基于MSP430 系列微处置器的LCD1602液晶字符串循环移动。

单片机是一种集成电路芯片,是采纳超大规模集成电路技术把具有数据处置能力的中央处置器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、按时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上组成的一个小而完善的微型运算机系统,在工业操纵领域普遍应用。

现今时期是一个新技术层出不穷的时期,在电子领域尤其是自动化智能操纵领域,传统的分立元件或数字逻辑电路组成的操纵系统,正在以前所未见的速度被单片机智能操纵系统所代替。

基于msp430g2553的1602四线驱动C源码

基于msp430g2553的1602四线驱动C源码

/*--------------------------------------------------------------*/基于msp430G2553de LCD1602四线驱动由于G2系列的IO口过于少,所以我们采用了四线驱动LCD1602的方法程序附后①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

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

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

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

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

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

例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH 时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。

这就是LCD显示的基本原理。

字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。

MSP430单片机与液晶显示器的串行接口方案设计(一)

MSP430单片机与液晶显示器的串行接口方案设计(一)

MSP430单片机与液晶显示器的串行接口方案设计(一) 1概述点阵式液晶与外部的硬件接口简单,能以点阵或图形方式显示出各种信息,因此在电子设计中得到广泛应用。

但是,对它的接口设计必须遵循一定的硬件和时序规范,不同的液晶显示驱动器,可能需要采用不同的接口方式和控制指令才能够实现所需信息的显示。

某些液晶显示驱动器与外部的接口必须采用串行方式,而其串行接口往往不是标准的串行接口,这就为这类液晶显示驱动器的设计带来了困难。

针对上述问题,本文提出一种利用微控制器(MCU)的I/O端口,通过软件设计模拟与所使用的液晶显示驱动器规范相符的串行总线的设计思想,实现MCU对液晶显示驱动器的控制,从而建立起一套不但可以显示各种字符,而且可以动态显示曲线的游人显示系统。

2系统设计本文所建立的液晶显示系统,选用美国德州仪器(TI)公司的MSP430F149微控制器来控制液晶显示驱动器uPD16682A,从而实现各种信息的显示。

2.1MSP430F14X微控制器简介TI公司的MSP430F14X微控制器与其它MSP430系列微控制器相同,均甚至一个真正的正交16位RISCCPU内核:具有16个可单周期全寻址的16位寄存器,仅27条的精简指令集以及7种均采用双重取数据技术(DDFT)的一致性寻址方式。

DDFT技术利用每个时钟脉冲对存储器进行两次数据存取操作。

从而不再需要复杂的时钟乘法和指令流水线方案。

MSP430F14X系列MCU片内不但包括60多KB的Flash、2KB的RAM、一个看门狗时钟、12位16通道的A/D转换器、定时器、高精度比较器、PWM以及高速的USART控制器等常用资源,还在某些型号中集成了LCD控制器。

其I/O资源丰富,且每个输入/输出(I/O)引脚上都提供了矢量中断功能,每个外围器件都支持复杂的事件驱动型操作。

同其它微控制器相,带片内Flash的微控制器可将系统功耗降低5倍,并且减小了硬件线路板空间,与现代程序设计技术(如计算分支以及高级语言(如C语言)结合使用,使得MSP430的体系结构更为高效。

lcd1602循环显示课程设计

lcd1602循环显示课程设计

lcd1602循环显示课程设计一、教学目标本课程的教学目标是使学生掌握LCD1602液晶显示屏的基本原理和操作方法,能够进行循环显示的程序设计。

具体包括:1.知识目标:使学生了解LCD1602液晶显示屏的结构和工作原理,掌握其基本指令集和编程方法。

2.技能目标:培养学生能够使用LCD1602液晶显示屏进行循环显示的程序设计能力,能够独立完成程序的编写和调试。

3.情感态度价值观目标:培养学生对电子技术的兴趣和热情,提高学生的问题解决能力和创新意识。

二、教学内容本课程的教学内容主要包括LCD1602液晶显示屏的基本原理、操作方法和循环显示的程序设计。

具体包括:1.LCD1602液晶显示屏的结构和工作原理。

2.LCD1602液晶显示屏的基本指令集和编程方法。

3.循环显示的程序设计方法和实例。

三、教学方法为了达到本课程的教学目标,将采用多种教学方法进行教学,包括:1.讲授法:通过讲解LCD1602液晶显示屏的基本原理和操作方法,使学生掌握相关知识。

2.案例分析法:通过分析循环显示的程序设计实例,使学生能够独立完成程序的编写和调试。

3.实验法:通过实验操作,使学生能够亲手操作LCD1602液晶显示屏,加深对知识的理解和掌握。

四、教学资源为了支持本课程的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用合适的教材,为学生提供全面系统的知识学习。

2.多媒体资料:制作课件和教学视频,为学生提供直观的学习资料。

3.实验设备:准备LCD1602液晶显示屏和相关的实验器材,为学生提供亲手操作的机会。

五、教学评估为了全面、客观地评估学生的学习成果,将采用多种评估方式,包括:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解程度。

2.作业:通过学生提交的作业,评估学生对知识点的掌握情况和编程能力。

3.考试:通过期末考试,评估学生对LCD1602液晶显示屏原理和程序设计的全面理解。

lcd1602显示温度课程设计

lcd1602显示温度课程设计

lcd1602显示温度课程设计一、课程目标知识目标:1. 学生能理解LCD1602显示屏的基本原理和结构。

2. 学生能掌握温度传感器与LCD1602的连接方法。

3. 学生能掌握通过编程控制LCD1602显示温度值的方法。

技能目标:1. 学生能够运用所学知识,独立完成温度传感器与LCD1602的硬件连接。

2. 学生能够编写程序,实现温度的实时采集和LCD1602显示。

3. 学生能够通过课程实践,培养动手操作能力和问题解决能力。

情感态度价值观目标:1. 学生在学习过程中,培养对电子制作和编程的兴趣,提高探究精神。

2. 学生通过小组合作,培养团队协作能力和沟通能力。

3. 学生能够认识到科技在生活中的应用,增强学以致用的意识。

课程性质:本课程为电子技术实践课程,结合理论知识,注重培养学生的动手操作能力和实际问题解决能力。

学生特点:学生处于初中年级,已具备一定的物理知识和电子制作基础,对新鲜事物充满好奇心。

教学要求:结合学生特点,注重理论与实践相结合,引导学生主动探究,培养创新意识。

将课程目标分解为具体的学习成果,以便在教学过程中进行有效评估。

二、教学内容1. 理论知识:- 温度传感器原理与分类- LCD1602显示屏的工作原理与结构- 单片机与LCD1602的接口技术2. 实践操作:- 温度传感器与LCD1602的硬件连接- 编程环境搭建与程序编写- 温度采集与LCD1602显示实现3. 教学大纲:- 第一阶段:理论知识学习,介绍温度传感器、LCD1602显示屏原理,以及单片机与LCD1602的接口技术。

- 第二阶段:实践操作,指导学生完成温度传感器与LCD1602的硬件连接,并进行编程环境搭建。

- 第三阶段:编程实践,教授学生编写程序,实现温度的实时采集和LCD1602显示。

4. 教材章节:- 《电子技术基础》第三章:传感器及其应用- 《单片机原理与应用》第四章:显示器与键盘接口技术教学内容安排与进度:- 理论知识:2课时- 实践操作:4课时- 编程实践:3课时教学内容注重科学性和系统性,结合课本知识,确保学生能够在实践中掌握所学内容。

基于LCD1602液晶显示屏的单片机课程设计

基于LCD1602液晶显示屏的单片机课程设计

唐山学院单片机原理课程设计题目点阵式YLF1602D液晶显示屏应用系 (部) 智能与信息工程学院班级 13电本 2班姓名李凯学号 **********指导教师张国旭江蓓蕾王春生2016 年 6 月 20 日至 6 月 30 日共 2 周2016年 6月 30 日课程设计成绩评定表目录1引言 (1)2 LCD液晶显示屏功能 (2)2.1 简介 (2)2.2 管脚功能 (2)2.3 操作控制 (2)2.4 字符集 (3)3系统硬件设计 (4)3.1 课题设计目标 (4)3.2 课程设计的主要工作 (4)3.3 设计要求 (4)3.4 系统电路图 (5)4软件设计 (6)4.1系统框图 (6)4.2 LCD 显示程序框图 (6)课程总结 (7)致谢 (8)主要参考资料 (9)1引言早在1888年,人们就发现液晶这一呈液体状的化学物质,象磁场中的金属一样,当受到外界电场影响时,其分子会产生精确的有序排列。

如果对分子的排列加以适当的控制,液晶分子将会允许光线穿越。

位于最后面的一层是由荧光物质组成的可以发射光线的背光层。

背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。

液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。

当液晶显示器中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来,这就是液晶显示器显示技术。

液晶显示器(LCD)英文全称为Liquid Crystal Display,是一种数字显示技术,可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象。

它是一种采用了液晶控制透光度技术来实现色彩的显示器。

液晶显示器是一种功耗极低的显示器件。

在袖珍中应用越来越广泛。

液晶显示技术近几年来发展很快,各种规格的LCD显示班名目繁多,其专用驱动芯片也都相互配套,使LCD在控制和议表系统中广泛应用提供了极大的方便。

单片机课程设计报告:基于单片机的LCD显示字符串

单片机课程设计报告:基于单片机的LCD显示字符串

湖南商学院《单片机应用系统设计》课程设计报告题目基于单片机的LCD显示字符串姓名:学号:专业:班级:指导教师:职称:计算机与信息工程学院2014年06月课程设计(实习)评审表目录1 设计任务与要求 (1)1.1 设计任务 (1)1.2 设计任务 (1)2 系统功能描述 (1)2.1 题目与要求 (1)2.2 系统功能分析 (2)3 系统总体设计 (2)3.1 LCD1602工作原理 (2)3.1.1 引脚功能说明: (3)3.1.2 LCD寄存器的选择 (3)3.1.3 LCD指令表 (3)3.1.3 LCD1602内部显示地址 (4)3.2 单片机简介 (4)4 系统详细设计 (6)4.1 电路原理图 (6)4.2 主要电路设计与计算 (6)4.3 程序流程图 (6)5 系统实现与测试 (7)5.1安装与调试 (7)5.2 系统功能和指标测试 (7)6 课程设计总结 (8)6.1 遇到的问题及解决办法 (8)6.2 系统存在的不足和改进设想 (8)6.3心得体会 (8)参考文献 (10)附录 (11)附录1 (11)附录2 (12)单片机控制LCD显示字符串1 设计任务与要求1.1 设计任务《单片机原理与应用》是电子信息工程专业的一门重要专业课,对应用能力和动手能力要求很高,课程设计环节是学生学习该课程后进行的一项必不可少的基本训练。

本着以下目的,制定《单片机应用系统设计》实施方案。

使学生增进对单片机的感性认识,加深对单片机理论方面的理解,巩固学生所学理论知识;使学生掌握单片机的内部功能模块的应用,培养学生系统设计的思想;培养学生的软件设计能力,提高学生的动手能力;培养学生查阅相关资料、撰写文档的能力和自学、科研的能力。

1.2设计任务(1)根据应用系统的要求,初步掌握总体结构的方法和构思,从中选择一种最佳的设计方案。

(2)根据应用系统结构规模的要求,掌握在单片机外部扩展系统硬件设计的基本过程:例如硬件接口的设计,正确合理选用所需元器件,绘制应用系统与单片机连接的电路图等项工作。

基于LCD1602液晶显示系统的设计方案课程设计

基于LCD1602液晶显示系统的设计方案课程设计

题目名称基于89C51的液晶显示系统设计课程名称单片机原理及应在电气测控学科中的应用学生姓名学号系、专业电气工程系电气工程及其自动化专业指导教师邵阳学院课程设计(论文)任务书注:1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;2.此表1式3份,学生、指导教师、教研室各1份。

指导教师(签字):学生(签字):邵阳学院课程设计(论文)评阅表学生姓名刘晨学号1141201014系电气工程系专业班级电气工程及其自动化专业11级电本一班题目名称基于89C51的液晶显示系统设计课程名称单片机原理及应在电气测控学科中的应用二、指导教师评定注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。

目录一、摘要 (6)二、绪论 (7)2.1课题设计目标 (7)2.2课程设计的主要工作 (7)2.3设计要求 (7)三、硬件设计 (8)3.1系统电路图 (8)3.2 LCD1602 简介 (9)四、软件设计 (13)4.1系统框图 (13)4.2参考程序 (15)五、程序调试 (22)六、课程总结 (23)七、致谢 (24)八、参考文献 (25)摘要液晶显示在中国已有二十余年的历史,几乎已经运用与生产生活的各个领域,液晶显示是集单片机技术、微电子技术、信息处理于一体的新型显示方式。

LED液晶显示器具有低压低功耗、显示信息量大、已于彩色化、无电磁辐射、使用寿命长和无污染等优点,是目前显示器中一个理想的选择。

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

LCD1602课程设计报告

LCD1602课程设计报告
LCD1602 指令说明:详情见附录一 LCD1602 指令表。
5
2.6、系统框图
三、程序流程图
3.1 、主程序流程图
3.2、LCD 初始化子程序流程图
6
3.3、命令写入子程序流程图
3.4、数据写入子程序流程图
3.5、外部中断和外中断 1 流程图
3.6、延时子程序流程图
7
四、程序清单
#include<reg52.h> #include"intrins.h"
"for the short ","time we are in ",
"the world.
"," --Thomas E世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。 -- 萧伯纳*/
uchar code table2[10][16]={"The people who ","get on in this ", "world are the ","people who get ", "up and look for ","circumstances ", "they want,and if","they cannot find", "them,make them. "," --Bernara Shaw"};
第 4 脚:RS 为寄存器选择,高电平 1 时
选择数据寄存器、低电平 0 时选择指令寄存器;
第 5 脚:RW 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写

msp430G2553接lcd1602

msp430G2553接lcd1602

msp430G2553接lcd1602#include#include#include/*****************************************************端口定义****************************************************/#define LCD_EN_PORT P1OUT //以下2个要设为同一个口使能信号1时读取信息1——0(下降沿)时执行命令#define LCD_EN_DDR P1DIR#define LCD_RS_PORT P2OUT //以下2个要设为同一个口0输入指令1输入数据#define LCD_RS_DDR P2DIR#define LCD_DATA_PORT P2OUT //以下3个要设为同一个口#define LCD_DATA_DDR P2DIR //一定要用高4位#define LCD_RS BIT3#define LCD_EN BIT7#define LCD_DATA BIT7|BIT6|BIT5|BIT4 //4位数据线连接模式/***************************************************预定义函数**************************************************/void LCD_init(void);void LCD_init_first(void);void LCD_en_write1(void); //上升沿使能void LCD_en_write2(void); //下降沿使能void LCD_write_command(unsigned char command);void LCD_write_data(unsigned char data);void LCD_set_xy (unsigned char x, unsigned char y);void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s); // 写命令void LCD_write_char(unsigned char X,unsigned char Y, unsigned char data); // 写数据void delay_1ms(void);void delay_nus(unsigned int n);void delay_nms(unsigned int n);unsigned char LCDBuf1[]={"Hello!LCD1602"}; //第一行要显示的内容unsigned char LCDBuf2[]={"MSP430G2553123"}; //第二行要显示的内容/********************************************主函数*******************************************/void main(){WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗LCD_init_first();LCD_init();delay_nms(100);LCD_write_string(0,0,LCDBuf1);delay_nms(10);LCD_write_string(0,1,LCDBuf2);}/********************************************LCD液晶操作函数*******************************************/void LCD_init_first(void) //LCD1602液晶初始化函数(热启动){delay_nms(500);LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出LCD_EN_DDR|=LCD_EN; //设置EN方向为输出LCD_RS_DDR|=LCD_RS; //设置RS方向为输出delay_nms(50);LCD_write_command(0x30);// delay_nms(50);// LCD_write_command(0x30);// delay_nms(5);// LCD_write_command(0x30);delay_nms(500);}/******************************************* LCD1602液晶初始化函数*****************************************/void LCD_init(void){delay_nms(500);LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出LCD_EN_DDR|=LCD_EN; //设置EN方向为输出LCD_RS_DDR|=LCD_RS; //设置RS方向为输出delay_nms(500);LCD_write_command(0x28); //4位数据接口delay_nms(50);LCD_write_command(0x28); //4位数据接口delay_nms(50);LCD_write_command(0x28); //4位数据接口delay_nms(50);LCD_en_write2();delay_nms(50);LCD_write_command(0x28); //4位数据接口delay_nms(500);LCD_write_command(0x01); //清屏LCD_write_command(0x0c); //显示开,关光标,不闪烁LCD_write_command(0x06); //设定输入方式,增量不移位delay_nms(50);}/******************************************* 液晶使能上升沿*****************************************/void LCD_en_write1(void){LCD_EN_PORT&=~LCD_EN;delay_nus(10);LCD_EN_PORT|=LCD_EN;}/******************************************* 液晶使能下降沿*****************************************/void LCD_en_write2(void){LCD_EN_PORT|=LCD_EN;delay_nus(10);LCD_EN_PORT&=~LCD_EN;}/******************************************* 写指令函数*****************************************/void LCD_write_command(unsigned char command){delay_nus(16);P2SEL=0x00;LCD_RS_PORT&=~LCD_RS; //RS=0 输入指令LCD_en_write1(); //使能信号先置低再置高LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=command&0xf0; //写高四位delay_nus(16);LCD_en_write2(); //使能信号先置高再置低command=command<<4; //低四位移到高四位LCD_en_write1(); //使能信号先置低再置高LCD_DATA_PORT&=0x0f; //清高四位LCD_DATA_PORT|=command&0xf0; //写低四位LCD_en_write2(); //使能信号先置高再置低}/******************************************* 写数据函数*****************************************/void LCD_write_data(unsigned char data){delay_nus(16);P2SEL=0x00;LCD_RS_PORT|=LCD_RS; //RS=1 输入数据LCD_en_write1(); //E上升沿使能信号先置低再置高LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=data&0xf0; //写高四位delay_nus(16);LCD_en_write2();data=data<<4; //低四位移到高四位LCD_en_write1();LCD_DATA_PORT&=0X0f; //清高四位LCD_DATA_PORT|=data&0xf0; //写低四位LCD_en_write2();}/******************************************* 写地址函数*****************************************/void LCD_set_xy( unsigned char x, unsigned char y ){unsigned char address;if (y == 0) address = 0x80 + x;else address = 0xc0 + x;LCD_write_command( address);}/*******************************************LCD在任意位置写字符串,列x=0~15,行y=0,1*****************************************/void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) {LCD_set_xy( X, Y ); //写地址while (*s) //写显示字符{LCD_write_data( *s );s++;}}/******************************************* LCD在任意位置写字符,列x=0~15,行y=0,1*****************************************/void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) {LCD_set_xy( X, Y ); //写地址LCD_write_data( data);}/***************************************** ** 1us延时函数*****************************************/void delay_1us(void){asm("nop");}/***************************************** ** N us延时函数*****************************************/ void delay_nus(unsigned int n){unsigned int i;for (i=0;i<n;i++)< bdsfid="261" p=""></n;i++)<>delay_1us();}/***************************************** ** 1ms延时函数*****************************************/ void delay_1ms(void) {unsigned int i;for (i=0;i<1140;i++);}/***************************************** ** N ms延时函数*****************************************/ void delay_nms(unsigned int n){unsigned int i=0;for (i=0;i<n;i++)< bdsfid="279" p=""></n;i++)<>delay_1ms();}。

1602显示屏课程设计

1602显示屏课程设计

1602显示屏课程设计一、课程目标知识目标:1. 学生能理解1602显示屏的基本结构、工作原理及其在电子显示技术中的应用。

2. 学生能掌握1602显示屏的引脚功能、接口电路设计及编程控制方法。

3. 学生能了解1602显示屏与其他显示设备的区别及各自的优势。

技能目标:1. 学生能够运用所学知识,正确连接1602显示屏与微控制器,完成硬件电路搭建。

2. 学生能够编写程序,实现对1602显示屏的显示内容控制,如显示字符、数字及自定义字符。

3. 学生能够通过实际操作,掌握1602显示屏调试技巧,解决常见显示问题。

情感态度价值观目标:1. 学生通过学习1602显示屏相关知识,培养对电子技术的兴趣,激发创新意识。

2. 学生能够在团队协作中发挥个人优势,培养合作精神,提高沟通与表达能力。

3. 学生能够认识到电子显示技术在生活中的广泛应用,增强环保意识,关注节能降耗。

课程性质:本课程为电子技术实践课程,结合理论知识与动手操作,旨在提高学生的实际应用能力。

学生特点:学生具备一定的电子技术基础知识,具有较强的动手能力和求知欲,对新型显示技术感兴趣。

教学要求:注重理论与实践相结合,强调学生的动手实践能力,鼓励学生自主探究、合作学习,提高解决问题的能力。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,培养电子技术领域的应用型人才。

二、教学内容1. 1602显示屏概述:介绍1602显示屏的基本概念、发展历程、应用领域及发展趋势。

- 教材章节:第一章第二节- 内容:液晶显示原理、1602显示屏结构特点、常见型号及应用场景。

2. 1602显示屏硬件连接与接口电路设计:讲解1602显示屏的引脚功能、硬件连接方法及接口电路设计。

- 教材章节:第二章第一节- 内容:1602显示屏引脚功能、微控制器与1602显示屏连接方法、接口电路设计原理。

3. 1602显示屏编程控制:介绍1602显示屏的编程方法,包括指令集、编程步骤及示例程序。

1602显示器课程设计

1602显示器课程设计

1602显示器课程设计一、教学目标本课程的目标是让学生了解并掌握1602显示器的基本原理、使用方法和编程技巧。

通过本课程的学习,学生应能理解1602显示器的硬件结构、工作原理,并能运用编程语言进行简单显示信息的编写和调试。

具体目标如下:1.知识目标:–了解1602显示器的硬件结构和工作原理。

–掌握常用的显示指令及其功能。

–理解1602显示器在嵌入式系统中的应用。

2.技能目标:–能够使用1602显示器进行简单显示信息的编写和调试。

–能够运用编程语言实现1602显示器的控制。

3.情感态度价值观目标:–培养学生的动手实践能力,提高学生对电子技术的兴趣。

–培养学生团队合作精神,提高学生解决实际问题的能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.1602显示器的硬件结构和工作原理。

2.1602显示器的指令集及其使用方法。

3.1602显示器在嵌入式系统中的应用案例。

4.1602显示器的编程实践。

具体安排如下:•第1课时:介绍1602显示器的硬件结构和工作原理。

•第2课时:讲解1602显示器的指令集及其使用方法。

•第3课时:分析1602显示器在嵌入式系统中的应用案例。

•第4课时:进行1602显示器的编程实践。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解1602显示器的硬件结构、工作原理和指令集。

2.讨论法:用于分析1602显示器在嵌入式系统中的应用案例。

3.案例分析法:通过分析实际应用案例,让学生更好地理解1602显示器的使用。

4.实验法:让学生动手实践,进行1602显示器的编程和调试。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供相关理论知识的学习。

2.参考书:为学生提供更多的学习资料。

3.多媒体资料:通过视频、图片等形式,帮助学生更好地理解1602显示器的硬件结构和编程方法。

1602液晶课程设计

1602液晶课程设计

1602液晶课程设计一、课程目标知识目标:1. 学生能理解液晶的基本概念,掌握1602液晶模块的工作原理和接口技术。

2. 学生能够运用所学知识,分析1602液晶模块的电路连接,并进行正确的操作。

3. 学生能够了解液晶显示技术在生活中的应用,认识到科技与生活的紧密联系。

技能目标:1. 学生能够独立完成1602液晶模块的连接与编程,实现基本的信息显示。

2. 学生通过实践操作,提高动手能力,培养解决实际问题的能力。

3. 学生能够运用1602液晶模块进行简单的项目设计,提高创新意识和团队合作能力。

情感态度价值观目标:1. 学生对液晶显示技术产生兴趣,培养探究精神和科学态度。

2. 学生在学习和实践中,认识到团队合作的重要性,树立合作共赢的观念。

3. 学生通过了解液晶显示技术的应用,激发对电子科技的热情,提高社会责任感和使命感。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握液晶显示技术的基础上,提高实践操作能力和创新意识,培养科学精神与团队协作能力,使学生在学习过程中充分体会到科技的魅力,激发学习兴趣。

通过课程学习,将目标分解为具体的学习成果,便于后续的教学设计和评估。

二、教学内容1. 液晶基本概念:液晶的特性、分类及工作原理。

2. 1602液晶模块:模块结构、引脚功能、操作指令。

3. 电路连接与编程:1602液晶模块与微控制器的连接方法,编程实现信息显示。

4. 实践操作:学生分组进行1602液晶模块的连接、编程和调试。

5. 项目设计:运用1602液晶模块设计简单的应用项目,如温度显示、时间显示等。

教学大纲安排:第一课时:液晶基本概念,介绍液晶的特性、分类及工作原理。

第二课时:1602液晶模块,详细讲解模块结构、引脚功能、操作指令。

第三课时:电路连接与编程,分析1602液晶模块与微控制器的连接方法,编写程序实现信息显示。

第四课时:实践操作,学生分组进行1602液晶模块的连接、编程和调试。

第五课时:项目设计,学生团队合作,运用1602液晶模块设计并实现简单应用项目。

LCD1602的电路图和程序

LCD1602的电路图和程序

LCD1602的电路图和程序————————————————————————————————作者:————————————————————————————————日期:MS基于1602字符型液晶显示器的显示系统姓名:杨越班级:电子11-1学号:110400104一、实习目的(1)了解飞思卡尔单片机的基本原理,掌握其基本的工作流程。

(2)了解LCD1602的基本原理及用法。

(3)能够熟练使用CodeWarrior软件编写C语言程序,使用BDM仿真器下载程序。

(4)能够熟练焊接电路板。

二、实验设备与器件CodeWarrior软件,BDM仿真器,万用电路板,飞思卡尔单片机,LCD1602液晶显示器,三、实验内容内容:利用飞思卡尔单片机制作基于1602字符液晶显示器的显示系统要求:用四个按键控制,按下第一个按键显示1,按下第二个按键显示2,以此类推。

(1)LCD1602液晶显示器的原理:1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。

以下具体阐述这三个管脚:RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。

R/W为读写选择,高电平进行读操作,低电平进行写操作。

E端为使能端,后面和时序联系在一起。

除此外,D0~D7分别为8位双向数据线。

操作时序:RS R/W 操作说明0 0 写入指令码D0~D70 1 读取输出的D0~D7状态字1 0 写入数据D0~D71 1 从D0~D7读取数据注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.读取状态字时,注意D7位,D7=1,禁止读写操作;D7=0,允许读写操作;所以对控制器每次进行读写操作前,必须进行读写检测。

(即后面的读忙子程序)指令集:LCD_1602 初始化指令小结:0x38 设置16*2显示,5*7点阵,8位数据接口0x01 清屏0x0F 开显示,显示光标,光标闪烁0x08 只开显示0x0e 开显示,显示光标,光标不闪烁0x0c 开显示,不显示光标0x06 地址加1,当写入数据的时候光标右移0x02 地址计数器AC=0;(此时地址为0x80)光标归原点,但是DDRAM 中断内容不变0x18 光标和显示一起向左移动(2)飞思卡尔单片机的功能及特点:MC9S12XS128是 16 位单片机,由 16 位中央处理单元(CPU12X)、128KB 程序、Flash(P-lash)、8KB RAM、8KB 数据 Flash(D-lash)组成片内存储器。

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

学号:课程设计题目LCD1602液晶字符串循环显示学院专业班级姓名指导教师2013 年 1 月15 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目要求:使用LaunchPad上的板上资源,外接1602液晶,编写程序使字符串在液晶上循环移动。

时间安排:2014年元月1日~2014年元月17日下午17:30 指导教师签名:年月日系主任(或责任教师)签名:年月日目录引言 (1)1 课程设计要求 (2)2 硬件电路 (3)2.1 MSP430G2553单片机 (3)2.1.1 MSP430G2553单片机特点 (3)2.1.2 MSP430G2553单片机结构 (3)2.1.3 MSP430G2553的时钟系统 (4)2.1.4 I/O寄存器 (5)2.2 LCD1602液晶屏 (5)3 方案设计 (7)3.1 设计方案 (7)3.2 方案选择 (7)4 程序设计 (8)4.1 程序结构 (8)4.2 主程序源程序 (8)4.3 子程序源程序 (8)4.4 子程序头文件 (12)5 调试 (13)5.1 CCSv5编译软件 (13)5.2 调试过程 (13)6 结束语 (15)附录1:代码 (16)附录2:实物图 (22)参考文献 (23)本科生课程设计成绩评定表 (24)引言本次课程设计旨在设计一个基于MSP430 系列微处理器的LCD1602液晶字符串循环移动。

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正在以前所未见的速度被单片机智能控制系统所代替。

单片机的使用随处可见,而人们的生活也越来越离不开单片机。

液晶是相态的一种,因为其特殊的物理、化学、光学特性,20世纪中叶开始被广泛应用在轻薄型的显示技术上液晶显示器也被广泛运用,也发挥着越来越大的作用。

尽年来,液晶显示技术飞速发展,运用更加广泛。

本课程设计通过MSP430G2553单片机控制LCD1602液晶显示器实现一串字符循环移动。

1 课程设计要求使用LaunchPad上的板上资源,外接1602液晶,编写程序使“Wuhan Uniwersity of Technology welcome You!”在液晶上循环移动显示。

2 硬件电路2.1 MSP430G2553单片机2.1.1 MSP430G2553单片机特点MSP430G2系列是德州仪器近期推出的一款产品,在秉承MSP430超低功耗,高集成度的优点的同时,具有高性价比的特点。

该系列被称为ValueLine,旨在以8位单片机的价格实现16位单片机的性能。

MSP-EXP430Launchpad是TI推出的又一套用于MSP430和电路实验的开发板。

除了学生自主创新实践外,LaunchPad开发板还可以用于本科低年级课程,如嵌入式C语言,电子技术基础,微机原理,单片机等课程的自主实验环节以及课程设计。

该套开发板为单片机热爱者提供了一个很好的学习平台。

2.1.2 MSP430G2553单片机结构如图所示是板载一颗MSP430G2553单片机的Launch Pad评估实验开发板:图1Launch Pad评估实验开发板板上额外资源:(1)板载USB调试与编程仿真器接口,无驱动可安装(2)支持所有采用DIP14和DIP20封装MSP430G2XX和MSP430F20器(3)红绿两粒LED,两个按键(4)配套两款电容触摸板(5)所有管脚在板子两边引出2.1.3 MSP430G2553的时钟系统MSP430G2系列单片机的时钟系统需要支持系统低功耗运行的需要。

通过对三个内部时钟信号的运用,用户可很容易的选择功耗最低,效率最高的系统时钟方案。

在软件的控制下,MSP430G2系列单片机运行时可以不接外接晶振,也可接一只外接电阻或者接一到两只外接晶振,也可以外接频率发生器。

基本时钟模块包括二至四个时钟源:LFXT1CLK:外接低频或高频振荡器,如手表晶振,频率发生器,外部时钟源(400kHz至16MHz).XT2CLK:外接高频晶振,范围在400kHz至16MHzDCOCLK:内部时钟震荡VLOCLK:内部低频低功耗晶振,标准频率是12kHz 三种时钟信号可被CPU和外设所使用:ACLK:辅助时钟,ACLK可被软件配置成从LFXT1CLK或VLOCLK输入震荡ACLK可以被1,2,4,8分频。

ACLK可以被选用作为外围模块的时钟输入。

MCLK:主时钟,主时钟可以从LFXT1CLK或VLOCLK,XT2CLK或DCOCLK 输入MCLK用在CPU系统之中。

SMCLK:辅助主时钟。

SMCLK可被选择从LFXT1CLK,VLOCLK,XT2CLK 或DCOCLK输入。

SMCLK可以被1,2,4,8分频。

SMCLK可被选用为外围模块的时钟。

2.1.4 I/O寄存器和大部分单片机类似,M SP430系列单片机也是将8个IO口编为一组。

每个IO 口有四个控制寄存器,P1和P2还有额外的3个中断寄存器。

寄存器情况可参见表1。

表1 I/O寄存器2.2 LCD1602液晶屏LCD1602采用8位并行数据传输,其操作时序如下图所示:LCD1602接口由8位数据线,电源地电源正,液晶显示偏压信号(VL),数据命令选择端(RS),读写选择端(RW)组成。

其接口信号说明如下图所示:图2接口信号说明图可以在1602的液晶显示偏压信号端接一个可变电阻,调节显示亮度,初始状态时,调至1602上面一排显示12个黑块为止,LCD1602电路图如下图所示:3 方案设计3.1 设计方案方案一:使用MSP430F1612编程控制LCD1602液晶屏实现实现一串字符左右交替整屏移动。

方案二:使用MSP430G2553编程控制LCD1602液晶屏实现一串字符左右交替整屏移动。

3.2 方案选择要完成控制LCD1602液晶屏实现一串字符左右交替整屏移动,MSP430G2553单片机足够了,而且能够比MSP430F1612节省资源,价格低,所以选择方案二。

4 程序设计4.1 程序结构该程序主要由主程序源程序main.c、子程序源程序cry1602.c和子程序头文件cry1602.h构成采用这种程序结构,使程序更加清晰,一目了然,减少程序错误的机会,增强了程序的可移植性。

在程序设计中MSP430G2553中P1口作为并行数据输出端,P2.0、P2.1、P2.2分别作为LCD1602液晶的RS、RW、E端。

4.2 主程序源程序主程序中使用看门狗定时器进行计时,控制字符串移动的速度。

字符串先左移,再右移,之后循环移动。

程序如下:#include <msp430g2533.h>#include "cry1602.h"#define uchar unsigned charuchar *s1 = " Wuhan University of Technology Welcome!";void main(void){WDTCTL = WDT_ADLY_250; //间隔定时器,定时250msuchar *s2;uchar j,k,l;uchar i = 0;s2 = s1;LcdReset();while(*s1++ != '\0') i++; //计算字符串有效字符个数while(1){for(j = 0;j < i;j++){l = j;for(k = 0;k < 16;k++){if(l < i)Disp1Char(k,0,s2[l++]);elseDisp1Char(k,0,' ');}IFG1 &= ~WDTIFG; //清除中断失效标志while(!(IFG1 & WDTIFG));IFG1 &= ~WDTIFG;}}}4.3 子程序源程序子程序中包含一些宏定义,使程序可移植性增强,还包含一些对LCD1602液晶的操作程序及延时程序。

程序如下:#include <msp430g2533.h>#include "cry1602.h"#define datadir P1DIR#define dataport P1OUT#define busy 0x80#define ctrldir P2DIR#define CLR_RS P2OUT &= ~BIT0; //RS = P2.0#define SET_RS P2OUT |= BIT0;#define CLR_RW P2OUT &= ~BIT1; //RW = P2.1#define SET_RW P2OUT |= BIT1;#define CLR_EN P2OUT &= ~BIT2; //EN = P2.2#define SET_EN P2OUT |= BIT2;void DispStr(uchar x,uchar y,uchar *ptr){uchar *temp;uchar i,n = 0;temp = ptr;while(*ptr++ != '\0') n++; //计算字符串有效字符个数for(i = 0; i < n; i++){Disp1Char(x++,y,temp[i]);if(x == 0x0f){x = 0;y ^= 1;}}}void DispNChar(uchar x,uchar y,uchar n,uchar *ptr){uchar i;for(i = 0; i < n; i++){Disp1Char(x++,y,ptr[i]);if(x == 0x0f){x = 0;y ^= 1;}}}void LocateXY(uchar x,uchar y){uchar temp;temp = x&0x0f;y &= 0x01;if(y) temp |= 0x40;//如果在第2行temp |= 0x80;LcdWriteCommand(temp,1);}void Disp1Char(uchar x,uchar y,uchar data){LocateXY(x,y);LcdWriteData(data);}void LcdReset(void){ctrldir |= 0x07; //控制线端口设为输出状态datadir = 0xff; //数据端口设为输出状态LcdWriteCommand(0x38,0); //规定的复位操作Delay5ms();LcdWriteCommand(0x38,0);Delay5ms();LcdWriteCommand(0x38,0);Delay5ms();LcdWriteCommand(0x38,1); //显示模式设置LcdWriteCommand(0x08,1); //显示关闭LcdWriteCommand(0x01,1); //显示清屏LcdWriteCommand(0x06,1); //写字符时整体不移动LcdWriteCommand(0x0c,1); //显示开,不开游标,不闪烁}void LcdWriteCommand(uchar cmd,uchar chk){if(chk) WaitForEnable(); //检测忙信号?CLR_RS;CLR_RW;_NOP();dataport = cmd; //将命令字写入数据端口_NOP();SET_EN; //产生使能脉冲信号_NOP();_NOP();CLR_EN;}void LcdWriteData(uchar data){WaitForEnable(); //等待液晶不忙SET_RS;CLR_RW;_NOP();dataport = data; //将四显示数据写入数据端口_NOP();SET_EN; //产生使能脉冲信号_NOP();_NOP();CLR_EN;}void WaitForEnable(void){P1DIR &= 0X00; //将P1口切换为输入状态CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP();while((P1IN & busy) != 0); //检测忙标志CLR_EN;P1DIR |= 0xff; //将P1口切换为输出状态}void Delay5ms(void){uint i = 40000;while(i != 0){ i--;}}4.4 子程序头文件该头文件中是对子程序进行程序说明,方便主程序的调用。

相关文档
最新文档