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

上传人:b****7 文档编号:15619406 上传时间:2023-07-06 格式:DOCX 页数:28 大小:657.93KB
下载 相关 举报
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第1页
第1页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第2页
第2页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第3页
第3页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第4页
第4页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第5页
第5页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第6页
第6页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第7页
第7页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第8页
第8页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第9页
第9页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第10页
第10页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第11页
第11页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第12页
第12页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第13页
第13页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第14页
第14页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第15页
第15页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第16页
第16页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第17页
第17页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第18页
第18页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第19页
第19页 / 共28页
基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx》由会员分享,可在线阅读,更多相关《基于msp430G2533的LCD1602液晶字符串循环显示课程设计谋画.docx(28页珍藏版)》请在冰点文库上搜索。

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

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

学号:

课程设计

 

题目

LCD1602液晶字符串循环显示

学院

专业

班级

姓名

指导教师

 

2013

1

15

 

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

题目要求:

利用LaunchPad上的板上资源,外接1602液晶,编写程序使字符串在液晶上循环移动。

时刻安排:

2021年元月1日~2021年元月17日下午17:

30

 

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

 

引言................................................................1

1课程设计要求......................................................2

2硬件电路..........................................................3

2.1MSP430G2553单片机...........................................3

2.1.1MSP430G2553单片机特点..................................3

2.1.2MSP430G2553单片机结构..................................3

2.1.3MSP430G2553的时钟系统..................................4

2.1.4I/O寄放器..............................................5

2.2LCD1602液晶屏................................................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.1CCSv5编译软件..............................................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液晶,编写程序使“WuhanUniwersityofTechnologywelcomeYou!

”在液晶上循环移动显示。

 

2硬件电路

2.1MSP430G2553单片机

2.1.1MSP430G2553单片机特点

MSP430G2系列是德州仪器近期推出的一款产品,在秉承MSP430超低功耗,高集成度的优势的同时,具有高性价比的特点。

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

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

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

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

2.1.2MSP430G2553单片机结构

如下图是板载一颗MSP430G2553单片机的LaunchPad评估实验开发板:

图1LaunchPad评估实验开发板

板上额外资源:

(1)板载USB调试与编程仿真器接口,无驱动可安装

(2)支持所有采纳DIP14和DIP20封装MSP430G2XX和MSP430F20器

(3)红绿两粒LED,两个按键

(4)配套两款电容触摸板

(5)所有管脚在板子两边引出

2.1.3MSP430G2553的时钟系统

MSP430G2系列单片机的时钟系统需要支持系统低功耗运行的需要。

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

在软件的操纵下,MSP430G2系列单片机运行时能够不接外接晶振,也可接一只外接电阻或接一到两只外接晶振,也可之外接频率发生器。

大体时钟模块包括二至四个时钟源:

 

LFXT1CLK:

外接低频或高频振荡器,如腕表晶振,频率发生器,外部时钟源(400kHz至16MHz).

XT2CLK:

外接高频晶振,范围在400kHz至16MHz 

DCOCLK:

内部时钟震荡 

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.4I/O寄放器

和大部份单片机类似,MSP430系列单片机也是将8个IO口编为一组。

每一个IO口有四个操纵寄放器,P1和P2还有额外的3个中断寄放器。

寄放器情形可参见表1。

 

表1I/O寄放器

2.2LCD1602液晶屏

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.一、P2.2别离作为LCD1602液晶的RS、RW、E端。

4.2主程序源程序

主程序中利用看门狗按时器进行计时,操纵字符串移动的速度。

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

程序如下:

#include

#include"cry1602.h"

#defineucharunsignedchar

uchar*s1="WuhanUniversityofTechnologyWelcome!

";

voidmain(void)

{

WDTCTL=WDT_ADLY_250;//距离按时器,按时250ms

uchar*s2;

ucharj,k,l;

uchari=0;

s2=s1;

LcdReset();

while(*s1++!

='\0')i++;//计算字符串有效字符个数

while

(1)

{

for(j=0;j

{

l=j;

for(k=0;k<16;k++)

{

if(l

Disp1Char(k,0,s2[l++]);

else

Disp1Char(k,0,'');

}

IFG1&=~WDTIFG;//清除中断失效标志

while(!

(IFG1&WDTIFG));

IFG1&=~WDTIFG;

}

}

}

4.3子程序源程序

子程序中包括一些宏概念,使程序可移植性增强,还包括一些对LCD1602液晶的操作程序及延时程序。

程序如下:

#include

#include"cry1602.h"

#definedatadirP1DIR

#definedataportP1OUT

#definebusy0x80

#definectrldirP2DIR

#defineCLR_RSP2OUT&=~BIT0;//RS=P2.0

#defineSET_RSP2OUT|=BIT0;

#defineCLR_RWP2OUT&=~BIT1;//RW=P2.1

#defineSET_RWP2OUT|=BIT1;

#defineCLR_ENP2OUT&=~BIT2;//EN=P2.2

#defineSET_ENP2OUT|=BIT2;

voidDispStr(ucharx,uchary,uchar*ptr)

{

uchar*temp;

uchari,n=0;

temp=ptr;

while(*ptr++!

='\0')n++;//计算字符串有效字符个数

for(i=0;i

{

Disp1Char(x++,y,temp[i]);

if(x==0x0f)

{

x=0;

y^=1;

}

}

}

voidDispNChar(ucharx,uchary,ucharn,uchar*ptr)

{

uchari;

for(i=0;i

{

Disp1Char(x++,y,ptr[i]);

if(x==0x0f)

{

x=0;

y^=1;

}

}

}

voidLocateXY(ucharx,uchary)

{

uchartemp;

temp=x&0x0f;

y&=0x01;

if(y)temp|=0x40;//若是在第2行

temp|=0x80;

LcdWriteCommand(temp,1);

}

voidDisp1Char(ucharx,uchary,uchardata)

{

LocateXY(x,y);

LcdWriteData(data);

}

voidLcdReset(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);//显示开,不开游标,不闪烁

}

voidLcdWriteCommand(ucharcmd,ucharchk)

{

if(chk)WaitForEnable();//检测忙信号?

CLR_RS;

CLR_RW;

_NOP();

dataport=cmd;//将命令字写入数据端口

_NOP();

SET_EN;//产生使能脉冲信号

_NOP();

_NOP();

CLR_EN;

}

voidLcdWriteData(uchardata)

{

WaitForEnable();//等待液晶不忙

SET_RS;

CLR_RW;

_NOP();

dataport=data;//将四显示数据写入数据端口

_NOP();

SET_EN;//产生使能脉冲信号

_NOP();

_NOP();

CLR_EN;

}

voidWaitForEnable(void)

{

P1DIR&=0X00;//将P1口切换为输入状态

CLR_RS;

SET_RW;

_NOP();

SET_EN;

_NOP();

_NOP();

while((P1IN&busy)!

=0);//检测忙标志

CLR_EN;

P1DIR|=0xff;//将P1口切换为输出状态

}

voidDelay5ms(void)

{

uinti=40000;

while(i!

=0)

{i--;}

}

 

4.4子程序头文件

该头文件中是对子程序进行程序说明,方便主程序的挪用。

程序如下:

#ifndef_CRY1602_H

#define_CRY1602_H

#defineucharunsignedchar

#defineuintunsignedint

voidDispStr(ucharx,uchary,uchar*ptr);

voidDispNChar(ucharx,uchary,ucharn,uchar*ptr);

voidLocateXY(ucharx,uchary);

voidDisp1Char(ucharx,uchary,uchardata);

voidLcdReset(void);

voidLcdWriteCommand(ucharcmd,ucharchk);

voidLcdWriteData(uchardata);

voidWaitForEnable(void);

voidDelay5ms(void);#endif

 

5调试

5.1CCSv5编译软件

CodeComposerStudio是一种针对TI的DSP、微操纵器和应用途理器的集成开发环境。

CCStudio包括一套用于开发和调试嵌入式应用程序的工具。

它包括用于各类TI设备系列的编译器、源代码编辑器、项目生成环境、调试程序、探查器、模拟器和其他许多功能。

CCStudio提供一个单一用户界面,指导用户完成应用程序开发流程的每一步骤。

安装好CCSv5以后,先新建一个工程,然后在新建的工程里成立.c或.h文件,接下来即能够在文件里编写程序,并调试运行,BuildProject为编译,Debug是仿真。

5.2调试进程

程序编写完成后,经检查无误后,点击Project->BuildProject,进行编译,编译结果如图2所示:

图2程序调试界面

在调试进程中,开始时LCD1602

液晶一直没有显示,以为是程序出了问题,只是通过检查和调试,发觉程序没问题。

不是程序问题,就检查硬件,最终发觉了问题是LCD1602液晶屏的V0口与GND间的滑动变阻器没有调剂适合,致使无法观看到显示成效。

通过调剂滑动变阻器,就能够够观看到课程设计所要求的效

果。

如图3所示:

图4LCD1602液晶显示

在调试进程中,有时候会显现无法脱机运行的情形,通过检查,发觉是因为芯片管脚接触不良致使的,压紧芯片即可解决问题。

 

6终止语

通过完本钱次课程设计,我学到了许许多多的知识,取得了丰硕的体会。

在完成课程设计的进程中对MSP430G2553有了初步的了解,把握了该单片机的一些利用技术,例如:

I/O口寄放器的设置及利用,按时器的利用和中断的利用等等。

把握并能够熟练利用CCSv5那个编程软件,在该软件上进行编写程序,下载并进行调试,最终完成了本次课程设计。

在程序设计、编写程序到调试的进程中,增强了我独立发觉问题解决问题的能力,同时使得实践能力取得进一步的提高。

在实践中,充分将理论知识用于实践,使自身对知识的明白得更进一层,加倍能够熟练的把握并利用理论知识。

实践是查验真理的唯一标准,只有通过实践才能表现出理论知识的价值。

 

附录1

1主程序

/*********************************************************

程序功能:

循环显示字符串

********************************************************/

#include

#include"cry1602.h"

#defineucharunsignedchar

uchar*s1="WuhanUniversityofTechnologyWelcome!

";

voidmain(void)

{

WDTCTL=WDT_ADLY_250;//距离按时器,按时250ms

uchar*s2;

ucharj,k,l;

uchari=0;

s2=s1;

LcdReset();

while(*s1++!

='\0')i++;//计算字符串有效字符个数

while

(1)

{

for(j=0;j

{

l=j;

for(k=0;k<16;k++)

{

if(l

Disp1Char(k,0,s2[l++]);

else

Disp1Char(k,0,'');

}

IFG1&=~WDTIFG;//清除中断失效标志

while(!

(IFG1&WDTIFG));

IFG1&=~WDTIFG;

}

}

}

 

2子程序源程序

#include

#include"cry1602.h"

/*****************宏概念***********************/

#definedatadirP1DIR

#definedataportP1OUT

#definebusy0x80

#definectrldirP2DIR

#defineCLR_RSP2OUT&=~BIT0;//RS=P2.0

#defineSET_RSP2OUT|=BIT0;

#defineCLR_RWP2OUT&=~BIT1;//RW=P2.1

#defineSET_RWP2OUT|=BIT1;

#defineCLR_ENP2OUT&=~BIT2;//EN=P2.2

#defineSET_ENP2OUT|=BIT2;

/***************************************************

函数名称:

Dispstr

功能:

让液晶从某个位置起持续显示一个字符串

参数:

x--位置的列坐标

y--位置的行坐标

ptr--指向字符串寄存位置的指针

返回值:

***************************************************/

voidDispStr(ucharx,uchary,uchar*ptr)

{

uchar*temp;

uchari,n=0;

temp=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2