5085|9

6366

帖子

4909

TA的资源

版主

楼主
 

基于Proteus的MSP430单片机仿真实例14-LCD1602液晶显示字符 [复制链接]

 



此内容由EEWORLD论坛网友tiankai001原创,如需转载或用于商业用途需征得作者同意并注明出处



一、任务要求
利用MSP30F247单片机驱动LCD1602液晶,使其显示两行字符:第一行显示“lao ma shi tu mcu”,第二行显示“msp430f247 study”。
二、硬件电路
硬件电路如下图所示。
选取MSP430F247单片机的P2端口连接LCD1602的数据线D0~D7,P3.0,P3.1,P3.2分别连接LCD1602的使能EN端口,读写RW端口,寄存器RS端口,产生LCD1602所需要的时序。
三、程序设计
//main.c
#include "msp430f247.h"
#include "stdlib.h"
#include "string.h"
/*****************************************软件延时,主频1M*******************/
#define CPU_F1 ((double)1000000)
#define delay_us1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))
#define delay_ms1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))
/****************************************************************************/
#define SET_RS P3OUT |= BIT2
#define RST_RS P3OUT &= ~BIT2
#define SET_RW P3OUT |= BIT1
#define RST_RW P3OUT &= ~BIT1
#define SET_E P3OUT |= BIT0
#define RST_E P3OUT &= ~BIT0
//
const unsigned char Table1[]={"lao ma shi tu mcu"};
const unsigned char Table2[]={"msp430f247 study"};
void write_com(unsigned char com);//写命令函数
void write_dat(unsigned char dat);//写数据函数
/************************************************
函数名称:主函数
函数功能:LCD1602液晶显示字符
入口参数:无
出口参数:无
描述:
作者:老马识途单片机
日期:2018年1月6日
************************************************/
main()
{
unsigned char i;
WDTCTL = WDTPW + WDTHOLD;//关看门狗
P2DIR=0xff;//端口初始化
P3DIR=BIT0+BIT1+BIT2;
RST_E;
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
delay_ms1M(5);
write_com(0x01);//显示清屏
delay_ms1M(5);
write_com(0x0c);//显示开关,光标设置
delay_ms1M(5);
write_com(0x06);//显示开关,光标设置
delay_ms1M(5);
write_com(0x80);//数据指针设置,第一行显示
delay_ms1M(5);
for(i=0;i
{
write_dat(Table1);
}
write_com(0x80+0x40);//数据指针设置,第二行显示
delay_ms1M(5);
for(i=0;i
{
write_dat(Table2);
}
while(1)
{
}
}
void write_com(unsigned char com)
{
RST_RS;
RST_RW;
P2OUT=com;
SET_E;
delay_ms1M(2);
RST_E;
}
void write_dat(unsigned char dat)
{
SET_RS;
RST_RW;
P2OUT=dat;
SET_E;
delay_ms1M(2);
RST_E;
}
四、程序说明
程序首先对端口进行初始化,将单片机与液晶LCD1602相连的端口设置为输出端口,并对液晶进行初始化设置。在液晶的程序设计中,用了一些宏定义实现对液晶RS,RW,EN等引脚的高低电平的控制,其顺序是按照液晶显示时序设计的。
值得注意的是,当单片机将字符串输出给液晶显示器后,液晶显示器就不需要单片机对其进行动态刷新操作,这种显示类似于数码管的静态显示,可使单片机程序设计得以简化。
另外,液晶显示一般都是对字符串的输出,在很多情况下,比如A/D转换,数据处理等,结果都是数字,需要将这些数字转换成字符串。
五、仿真结果与分析
在proteus中画好电路图后,双击单片机,将可执行文件装载到单片机内,点击运行,观察数码管的显示情况。如下图所示。

查看本帖全部内容,请登录或者注册

最新回复

gangxie  详情 回复 发表于 2018-3-26 21:30
 
点赞 关注

回复
举报

17

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
本帖最后由 13432812441 于 2018-2-26 17:17 编辑

发现了楼主的程序有个小错误,write_dat(Table1);应该改为write_dat( Table1 );
write_dat(Table2);应该改为write_dat( Table2 );

Snipaste_2018-02-26_16-17-24.png (15.32 KB, 下载次数: 0)

Snipaste_2018-02-26_16-17-24.png
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我刚刚的回复不知道为什么打不了括号”[]“,所以回复了跟没回复一样,真的很抱歉。不过楼主的程序中有两句确实少了括号”[]“

点评

不好意思,请问哪里少了“[]”,请指正一下。 这个程序我仿真时候是能够正常运行的  详情 回复 发表于 2018-2-27 08:58
 
 
 

回复

6366

帖子

4909

TA的资源

版主

4
 
13432812441 发表于 2018-2-26 16:38
我刚刚的回复不知道为什么打不了括号”[]“,所以回复了跟没回复一样,真的很抱歉。不过楼主的程序中有两句 ...

不好意思,请问哪里少了“[]”,请指正一下。
这个程序我仿真时候是能够正常运行的

点评

有两个小错误: (1)write_dat(Table1);应改为write_dat(Table1[ i ]); (2)write_dat(Table2);应改为write_dat(Table2[ i ]);  详情 回复 发表于 2018-2-27 12:08
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

5
 
tiankai001 发表于 2018-2-27 08:58
不好意思,请问哪里少了“[]”,请指正一下。
这个程序我仿真时候是能够正常运行的

有两个小错误:
(1)write_dat(Table1);应改为write_dat(Table1[ i ]);
(2)write_dat(Table2);应改为write_dat(Table2[ i ]);

点评

感谢你指出错误, 我仔细对照了我的源程序,发现我的源程序里面是正确的,不知道为什么粘贴出来后就变了  详情 回复 发表于 2018-2-27 12:23
 
 
 

回复

6366

帖子

4909

TA的资源

版主

6
 
13432812441 发表于 2018-2-27 12:08
有两个小错误:
(1)write_dat(Table1);应改为write_dat(Table1[ i ]);
(2)write_dat(Table2);应 ...

感谢你指出错误,
我仔细对照了我的源程序,发现我的源程序里面是正确的,不知道为什么粘贴出来后就变了

点评

其实我当时打字打括号“[]”的时候,也发现明明打上了,可发布之后就变没了。后来把括号里面加了空格符就好了  详情 回复 发表于 2018-2-27 22:06
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

7
 
tiankai001 发表于 2018-2-27 12:23
感谢你指出错误,
我仔细对照了我的源程序,发现我的源程序里面是正确的,不知道为什么粘贴出来后就变了

其实我当时打字打括号“[]”的时候,也发现明明打上了,可发布之后就变没了。后来把括号里面加了空格符就好了

点评

哦,原来是这样啊,又学了一招,非常感谢  详情 回复 发表于 2018-2-28 08:46
 
 
 

回复

6366

帖子

4909

TA的资源

版主

8
 
13432812441 发表于 2018-2-27 22:06
其实我当时打字打括号“[]”的时候,也发现明明打上了,可发布之后就变没了。后来把括号里面加了空格符就 ...

哦,原来是这样啊,又学了一招,非常感谢

点评

不客气,应该说非常感谢楼主分享的资料  详情 回复 发表于 2018-2-28 11:24
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

9
 
tiankai001 发表于 2018-2-28 08:46
哦,原来是这样啊,又学了一招,非常感谢

不客气,应该说非常感谢楼主分享的资料
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

10
 
gangxie
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表