历史上的今天
今天是:2025年07月14日(星期一)
2018年07月14日 | MSP430G2553 1602显示字符
2018-07-14 来源:eefocus
在网上查了 好多 ;好多都说下载进去就好用 然并卵 这个就写给自己以后看吧 不是很规范 仅供参考吧 下载进去应该就可以 但是3.3V供电的情况下很暗 还有2553毕竟就真么几个IO口 如果条件允许的话 可以这么浪费 这个代码数据端口是用P1传送的 但是P1端口 有各种常用的其他功能 所以实在要用的话 用P2作为数据口 比较好 把代码的中的端口改一下就可以了 不过 忠告一下:一定去手册里面仔细看看 IO的配置 虽然这个程序中问题不大
先直接附上代码:
# include "msp430G2553.h"
# define uchar unsigned char
# define uint unsigned int
# define LCD1602_RS_H P2OUT|=BIT0
# define LCD1602_RS_L P2OUT&=~BIT0
# define LCD1602_RW_H P2OUT|=BIT1
# define LCD1602_RW_L P2OUT&=~BIT1
# define LCD1602_EN_H P2OUT|=BIT2
# define LCD1602_EN_L P2OUT&=~BIT2
/****************************************************************************
函数名称 :Delay_Nms
函数功能: 延时Nms (默认的内部DCO 貌似1MHZ)
函数参数:n
函数返回值:无
额外说明:此延时函数 并不精确 大概估算回了一下指令执行的时间 推算出来的
****************************************************************************/
void Delay_Nms(uint n)
{
uint i,j;
for(i=250;i>0;i--)
for(j=n;j>0;j--);
}
/****************************************************************************
函数名称 :Write_1602_Cmd
函数功能: 向1602写一个字节的指令
函数参数:uchar :Cmd
函数返回值:无
额外说明:看时序图的水平还差的太远 理解的还远不够 写的时候加上了下面的注释的话
结果死活就是不显示!!!
****************************************************************************/
void Write_1602_Cmd(uchar Cmd)
{
LCD1602_RS_H;//RS为低 写指令
LCD1602_RW_H;
LCD1602_EN_L;
LCD1602_RS_L;
LCD1602_RW_L;
P1OUT=Cmd;
Delay_Nms(5);
LCD1602_EN_H;
Delay_Nms(5);
LCD1602_EN_L;
//LCD1602_RW_L;
//LCD1602_RS_H;
}
/****************************************************************************
函数名称 :Write_1602_Data
函数功能: 向1602写一个字节的数据
函数参数:uchar :Data
函数返回值:无
额外说明:看时序图的水平还差的太远 理解的还远不够 写的时候加上了下面的注释的话
结果死活就是不显示!!!
****************************************************************************/
void Write_1602_Data(uchar Data)
{
LCD1602_RS_L;
LCD1602_RW_L;
LCD1602_EN_L;
LCD1602_RS_H;
LCD1602_RW_L;
P1OUT=Data;
Delay_Nms(5);
LCD1602_EN_H;
Delay_Nms(5);
LCD1602_EN_L;
//LCD1602_RS_L;
//LCD1602_RW_L;
}
/****************************************************************************
函数名称 :Init_1602
函数功能: 初始化1602和IO端口
函数参数:无
函数返回值:无
额外说明:一定去手册里面仔细的看 IO的配置
****************************************************************************/
void Init_1602()
{
P1DIR|=0xff;
P1SEL=0;
P1SEL2=0;
P2DIR|=BIT0+BIT1+BIT2;
P2SEL&=~(BIT0+BIT1+BIT2);//默认为0 可不写
P2SEL2&=~(BIT0+BIT1+BIT2);//同上 可不写 查手册IO配置即可
Write_1602_Cmd(0x38);
Delay_Nms(5);
Write_1602_Cmd(0x0c);
Delay_Nms(5);
Write_1602_Cmd(0x06);
Delay_Nms(5);
Write_1602_Cmd(0x01);
}
void main()
{
WDTCTL = WDTPW + WDTHOLD; //经常自己忘记关闭看门狗
Init_1602();
while(1)
{
Write_1602_Cmd(0x80) ;// 显示屏命令写入函数
Write_1602_Data('2');// 显示屏数据写入函数
}
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 03:45 编辑 文件夹中一共11个程序,有很详细的说明,希望对初学NEC单片机和想学习NEC单片机的人有帮助,由于本人学习NEC单片机时间比较短,程序中有错误的还希望大家指点,单片机是0537DA … 查看全部问答> |
|
请教各位大侠。 我在wdk6000下基于KMDF开发了一个PCI设备的驱动,在Vista下能正常的安装和使用。按照微软提供的文档,Build Environments选为\"Windows XP\"后编译的驱动在XP下安装却报错:Windows无法加载这个硬件的设备驱动程序,驱动程序可能已 ...… 查看全部问答> |
|
第一节: 心情和时钟说实话我能够使用的单片机不多,我总是以为无论什么单片机都能开发出好的产品。前些年用51,总是向各位大大学习,无休止的索取,在网上狂览一通。心里感激的同时也想奉献一些,可是我会什么?后来使用avr(公司要求)还是向大大 ...… 查看全部问答> |
|
附近是基于SN65HVD22的485通讯电路该485芯片内部自带静电保护功能,传输距离可达1200米,支持256个结点,500K的传输速率由于条件限制,实际测试只是在500米左右16个结点9600~115200波特率情况下测试,完全能够满足要求附件电路中添加了6N137的光电 ...… 查看全部问答> |
|
各位同仁们,本人刚接触电机 现在手上有一款开发板 还有个电机 想利用TIM1输出6路互补PWM,来控制电机 不知道如何下手,电机是带HALL传感器的 已经知道HALL的正转和反转的顺序 就是不知道如何让电机转起来 TIM1_C ...… 查看全部问答> |




