基于msp430G2533的LCD1602液晶字符串循环显示课程设计报告书
单片机课程设计报告--LCD1602字符液晶滚动演示程序
单片机原理与应用综合实验报告LCD1602字符液晶滚动演示程序专业班级:姓名:学号:时间:指导教师:2012年 05月 23日LCD1602字符液晶滚动演示程序摘要:本设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机89C51,采用的液晶显示器是LCD1602,主要用来显示字母、数字、符号,滚屏、左右移动以及实时控制功能。
同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程。
本设计还介绍了显示原理、硬件电路和软件部分的设计原理。
关键词:1602液晶显示器 89C51单片机并行通信1 引言:液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。
近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。
液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。
字符型LCD是一种用5×7点阵图形来显示字符的液晶显示器。
点阵型液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。
支持汉字显示的点阵型液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是点阵型LCD。
点阵型LCD是现代单片机应用系统中最常用的人机交互界面之利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计,我希望能够触类旁通,灵活应用其他型号的液晶显示控制器。
将来如果有机会从事这方面的工作,要运用的液晶显示控制器不一定是KS0108,但这次毕业设计中学到的东西为此打下了良好的基础,相信自己能做好这方面的工作。
2 总体设计方案2.1 设计思路2.1.1 本设计主要是通过控制89C51单片同的引脚来控制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源码
/*--------------------------------------------------------------*/基于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”的不亮。
lcd1602液晶显示函数流程设计
lcd1602液晶显示函数流程设计下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!在嵌入式系统中,液晶显示模块是一种常见的输出设备,而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)输入方式设置功能:设置光标,画面移动方式。
msp430单片机实验报告
实验报告课程名称:单片机原理及应用实验题目:实用多功能定时器学生姓名:**学号:**********专业班级:自动化二零一六年五月七日目录一、课程实验目的 (1)二、实验要求 (1)三、课程实验硬件电路 (2)3.1、硬件电路结构 (2)3.2、电路原理 (2)3.2.1、显示电路 (2)3.2.2、按键检测电路 (3)四、实验步骤 (6)五、软件设计 (6)5.1、倒计时主程序 (6)5.2、中断程序设计 (7)六、调试与结论 (7)七、附录 (8)一、目的(1)熟练运用CCS开发环境和Proteus仿真软件,巩固和加深单片机原理课程知识的理解和运用。
(2)综合本学期所学的按键检测以及液晶的动态显示原理,设计出以MSP430G2553为核心的以LCD1602为显示的倒计时系统。
(3)熟悉各元器件的性能和设置元件参数,进一步提高学生单片机应用系统的设计能力。
(4)培养学生综合分析问题、发现问题和解决问题的能力。
二、实验要求(1)设计一个倒计时器,定时范围99分60秒,用液晶作为显示器。
4个按键控制,分别是分钟加一、秒钟加一、清零和开始停止键。
按分钟加一键时,分钟显示值加1,最大99 ;按秒钟加一键时,秒钟显示值加1,最大60;按清零键时,分钟、秒钟显示值都清零;按开始键,则开始倒计时。
显示值为零时停止倒计时,且报警器报警,直到按停止键报警器停止报警。
按开始键后,分钟加一、秒钟加一、清零键不起作用。
按停止键可以暂停。
倒计时为零后,按停止键,显示值恢复设定值,按开始键又可以工作。
(2)总体要求如下:1、方案论证,确定总体电路原理图。
2、画硬件仿真电路图。
3、绘制程序流程图,编写C语言源程序。
4、安装调试,实现倒计时器的基本功能。
三、硬件电路3.1、电路结构图:多功能定时器主要由三个最基本模块组成,一是以LCD1602液晶为基础的显示电路,二是以四个按键为核心的控制电路,三是以MSP430G2553为核心的信号发生电路。
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课时教学内容注重科学性和系统性,结合课本知识,确保学生能够在实践中掌握所学内容。
单片机课程设计报告:基于单片机的LCD显示字符串教材
湖南商学院《单片机应用系统设计》课程设计报告题目基于单片机的LCD显示字符串姓名:学号:专业:班级:指导教师:职称:计算机与信息工程学院2014年06月课程设计(实习)评审表姓名学院学号专业班级题目基于单片机的LCD液晶显示字符串评审意见评审成绩指导教师签名职称评审时间年月日目录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)根据应用系统的要求,初步掌握总体结构的方法和构思,从中选择一种最佳的设计方案。
13单片机课程设计(LCD1602液晶屏使用)
机械与电子工程学院课程设计报告课程名称《单片机应用技术》设计题目LCD1602液晶屏使用所学专业名称班级学号学生姓名指导教师年月日任 务 书设计名称: LCD1602液晶屏使用 学生姓名: 指导教师: 葛 浩 起止时间:自 2012 年 5 月 12 日起 至 2012 年 6 月 2 日止一、课程设计目的1. 熟练掌握51单片机的工作原理;2. 熟练掌握LCD1602液晶的使用方法;3. 掌握单片机系统的设计方法。
二、课程设计任务和基本要求 1.设计任务:通过单片机对LCD1602液晶进行控制,实现字符、数字的显示。
2. 基本要求: 1) 显示两屏 内容:2) 在Proteus 仿真环境实现,或完成实物设计;3) 按照课程设计论文格式要求,撰写设计报告,字数要求3000字以上。
3. 提高要求:实现信息的上下或左右滚动指导老师评价表课程设计报告(格式)目录(目录应包括论文中全部章节的标题及页码,含摘要与关键词、正文章、节题目、参考文献、附录等。
目录题头用四号黑体字居中排写,隔行书写目录内容。
目录中各章节题序及标题用五号宋体。
)摘要与关键词 (1)1 标题(正文第1章标题,小三号黑体,上下间距为:段前0.5行,段后0.5行) (1)1.1 ××××××(正文2级标题,四号黑体) (1)1.1.1 ××××(正文3级标题,小四号黑体) (1)1.1.2 ××××(正文3级标题,小四号黑体) (1)1.2 ××××××(正文2级标题,四号黑体) (1)2 标题×××××(正文第2章标题,要求同上) (1)2.1 ××××××(正文2级标题,四号黑体) (1)2.1.1 ××××(正文3级标题,小四号黑体) (2)2.2 ××××××(正文2级标题,四号黑体) (2)3 标题××××(正文第2章标题,要求同上) (2)3.1 ××××××(正文2级标题,四号黑体) (2)3.1.1 ××××(正文3级标题,小四号黑体) (2)4 总结(正文第2章标题,要求同上) (2)参考文献(四号黑体居左) (2)附录(另起一页,四号黑体) (2)(分页)摘要与关键词摘要:中文摘要与关键词单独成页置于目录后。
单片机课程设计报告:基于单片机的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课程设计报告
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#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();}。
LCD1602液晶显示实验报告
LCD1602液晶显示实验报告一、实验目的(1)了解LCD1602的基本原理,掌握其基本的工作流程。
(2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏上显示出正确的符号。
(3)能够自行改写程序,并实现符号的动态显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可以实现在LCD1602液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关BM8实现显示的复位功能。
2.LCD1602基本知识LCD1602液晶能够同时显示16x02即32个字符,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如“A”。
1602通过D0~D7的8位数据端传输数据和指令。
3.系统工作原理系统的状态转换流程图如图3.1.1所示。
通过状态流程图可以看到,LCD1602液晶屏的状态是不断更新的,依次完成液晶的初始化和0~9的动态显示过程,并且过程可由开关控制。
if (!rst_n)cnt <= 0;elsecnt <= cnt + 1'b1;wire lcd_clk = cnt[23]; // (2^23 / 50M)=0.168s always@(posedge lcd_clk)if(cnt1>=24'd2)beginreg lcd_clk1;lcd_clk1=1;cnt1=0;endelsebegincnt1=cnt1+1; //cnt1对lcd_clk二分频lcd_clk1=0;endalways@(posedge lcd_clk1)beginrow1_val<=8'h30;//设初值case(row1_val) //数字0~9循环显示8'h30: row1_val<=8'h31;8'h31: row1_val<=8'h32;8'h32: row1_val<=8'h33;8'h33: row1_val<=8'h34;8'h34: row1_val<=8'h35;8'h35: row1_val<=8'h36;8'h36: row1_val<=8'h37;8'h37: row1_val<=8'h38;8'h38: row1_val<=8'h39;8'h39: row1_val<=8'h30;default: row1_val<=8'h30;endcaseendparameter IDLE = 8'h00;parameter DISP_SET = 8'h01; // 显示模式设置parameter DISP_OFF = 8'h03; // 显示关闭parameter CLR_SCR = 8'h02; // 显示清屏parameter CURSOR_SET1 = 8'h06; // 显示光标移动设置parameter CURSOR_SET2 = 8'h07; // 显示开及光标设置parameter ROW1_ADDR = 8'h05; // 写第1行起始地址parameter ROW1_0 = 8'h04;reg [5:0] current_state, next_state; // 现态、次态always @ (posedge lcd_clk, negedge rst_n)if(!rst_n) current_state <= IDLE;else current_state <= next_state;//在时钟信号作用期间,次态重复的赋给现态alwaysbegincase(current_state)IDLE : next_state = DISP_SET;DISP_SET : next_state = DISP_OFF;DISP_OFF : next_state = CLR_SCR;CLR_SCR : next_state = CURSOR_SET1;CURSOR_SET1 : next_state = CURSOR_SET2;CURSOR_SET2 : next_state = ROW1_ADDR;ROW1_ADDR : next_state = ROW1_0;ROW1_0 : next_state = ROW1_ADDR;default : next_state = IDLE ;endcaseendalways @ (posedge lcd_clk, negedge rst_n)beginif(!rst_n)beginlcd_rs <= 0;lcd_data <= 8'hxx;endelsebegincase(next_state)IDLE : lcd_rs <= 0;DISP_SET : lcd_rs <= 0;DISP_OFF : lcd_rs <= 0;CLR_SCR : lcd_rs <= 0;CURSOR_SET1 : lcd_rs <= 0;CURSOR_SET2 : lcd_rs <= 0;ROW1_ADDR : lcd_rs <= 0;ROW1_0 : lcd_rs <= 1;endcasecase(next_state)IDLE : lcd_data <= 8'hxx;DISP_SET : lcd_data <= 8'h38;DISP_OFF : lcd_data <= 8'h08;CLR_SCR : lcd_data <= 8'h01;CURSOR_SET1 : lcd_data <= 8'h04;CURSOR_SET2 : lcd_data <= 8'h0C;ROW1_ADDR : lcd_data <= 8'h80;ROW1_0 : lcd_data <= row1_val[127:120];endcaseendendassign lcd_e = lcd_clk; // 数据在时钟高电平被锁存assign lcd_rw = 1'b0; // 只写endmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2三个使能端选通LCD1602液晶屏,EP2C8Q208C8就会工作在给液晶下命令的状态,使得点阵正常工作,如图3.5.1所示。
基于LCD1602电子时钟课程设计报告
信息与电子工程学院课程设计报告课程单片机技术应用设计题目基于LCD1602电子时钟专业班级姓名学号分工成绩成员指导老师答辩日期目录一、课程设计概述 (3)1.1课程设计背景 (3)1.2课程设计内容 (3)1.3课程设计技术指标 (3)二、方案的选择及确定 (3)2.1单片机芯片的选择 (3)2.2显示模块的选择 (4)2.3实时时间计算模块的选择 (4)2.4实时环境温度采集模块选择 (4)2.5电路设计最终方案决定 (5)三、系统硬件设计 (5)3.1主控模块 (5)3.2LCD显示模块设计 (6)3.3时间计算模块设计 (6)3.4实时环境温度检测模块 (7)3.5报警模块 (7)3.6设置模块 (8)3.7电源接口部分 (8)四、系统软件设计 (8)4.1主函数 (8)4.2设置模块 (9)4.31602液晶屏 (10)4.4软件原理图 (11)五、系统调试过程 (11)5.1软件调试 (11)5.2硬件调试 (12)六、结论 (12)七、遇到的问题及解决方法和总结 (12)7.1硬件方面 (12)7.2软件方面 (13)7.3总结 (13)八、参考文献 (13)九、附录 (14)一、课程设计概述1.1 课程设计背景随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。
单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。
而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。
因为它有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。
而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。
1.2 课程设计内容利用单片机、时钟芯片DS1302、温度传感器DS18B20、1602液晶屏等实现日期、时间、温度的显示,即是一个电子时钟。
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循环显示课程设计一、教学目标本课程的教学目标是使学生掌握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液晶显示系统的设计方案课程设计
题目名称基于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静态显示字母
实验报告
Experimentation Report of Taiyuan Normal University
报 告 内 容
一、实验目的 四、实验方法
二、实验原理 五、实验记录及数据处理
三、实验仪器及材料 六、误差分析及讨论
系 部计算机年 级大三课 程单片机原理与接口技术
姓 名同组者日 期
LCD1602_RS = 0;//选择发送命令
LCD1602_RW = 0;//选择写入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1);//等待数据稳定
LCD1602_E = 1;//写入时序
Lcd1602_Delay1ms(5);//保持时间
LCD1602_E = 0;
}
*函数名: LcdWriteData
*函数功能:向LCD写入一个字节的数据
void LcdWriteData(uchar dat)//写入数据
{
LCD1602_E = 0;//使能清零
LCD1602_RS = 1;//选择输入数据
LCD1602_RW = 0;//选择写入
LCD1602_DATAPINS = dat; //写入数据
学 号
项 目LCD1602静态显示字母
一、实验目的
1、了解单片机顺序执行的特点;
2、掌握C语言的编写和keilc51的使用。
3、熟悉LCD1602读数据、写数据的流程。
二、实验仪器
硬件资源:单片机开发板笔记本电脑;
软件资源:软件 Keil uVision5;
三、实验原理
1、 流程图
2、连接图
四、实验结果
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目LCD1602液晶字符串循环显示学院专业班级姓名指导教师课程设计任务书题目要求:使用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评估实验开发板:图1 Launch 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寄存器和大部分单片机类似,MSP430系列单片机也是将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();}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();while((P1IN & busy) != 0); //检测忙标志CLR_EN;P1DIR |= 0xff; //将P1口切换为输出状态}void Delay5ms(void){uint i = 40000;while(i != 0){ i--;}}4.4 子程序头文件该头文件中是对子程序进行程序说明,方便主程序的调用。