基于msp430G2533的LCD1602液晶字符串循环显示课程设计.docx
- 文档编号:6230672
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:23
- 大小:1.75MB
基于msp430G2533的LCD1602液晶字符串循环显示课程设计.docx
《基于msp430G2533的LCD1602液晶字符串循环显示课程设计.docx》由会员分享,可在线阅读,更多相关《基于msp430G2533的LCD1602液晶字符串循环显示课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于msp430G2533的LCD1602液晶字符串循环显示课程设计
学号:
课程设计
题目
LCD1602液晶字符串循环显示
学院
专业
班级
姓名
指导教师
2013
年
1
月
15
日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目要求:
使用LaunchPad上的板上资源,外接1602液晶,编写程序使字符串在液晶上循环移动。
时间安排:
2014年元月1日~2014年元月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.1、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=ptr; wh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 msp430G2533 LCD1602 液晶 字符串 循环 显示 课程设计