1602控制forMSP430
时间:11-27
来源:互联网
点击:
- /*****************************************************************
- //文件名:1602.h
- //描述:该头文件定义与1602有关的各种接口、函数,适用于MSP430F149
- //编写人:小邪@清水
- //版本号:1.00
- *****************************************************************/
- #include
- #include"1602.h"
- #defineucharunsignedchar
- #defineuintunsignedint
- ucharNUM[]={"0123456789."};
- /*****************************************************************
- //关于1602的一些宏定义
- //注意:除第三个外都要根据实际使用IO口更改
- *****************************************************************/
- #defineDataDirP4DIR
- #defineDataPortP4OUT
- #defineBusy0x80
- #defineCtrlDirP3DIR
- #defineCLR_RSP3OUT&=~BIT0;//RS=P3.0
- #defineSET_RSP3OUT|=BIT0;
- #defineCLR_RWP3OUT&=~BIT1;//RW=P3.1
- #defineSET_RWP3OUT|=BIT1;
- #defineCLR_ENP3OUT&=~BIT2;//EN=P3.2
- #defineSET_ENP3OUT|=BIT2;
- /*************************************************************************
- //名称:delay
- //参数:无
- //返回值:无
- //功能:延时5ms的时间
- *************************************************************************/
- voidDelay5ms(void)
- {
- uinti=40000;
- while(i!=0)
- {
- i--;
- }
- }
- /*************************************************************************
- //名称:WaitForEnable
- //参数:无
- //返回值:无
- //功能:等待直到1602完成当前操作
- *************************************************************************/
- voidWaitForEnable(void)
- {
- P4DIR&=0x00;//将P4口切换为输入状态
- CLR_RS;
- SET_RW;
- _NOP();
- SET_EN;
- _NOP();
- _NOP();
- while((P4IN&Busy)!=0);//检测忙标志
- CLR_EN;
- P4DIR|=0xFF;//将P4口切换为输出状态
- }
- /*************************************************************************
- //名称:WriteCommand
- //参数:cmd--命令,chk--是否判忙的标志,1:判忙,0:不判
- //返回值:无
- //功能:向1602写指令
- *************************************************************************/
- voidWriteCommand(ucharcmd,ucharchk)
- {
- if(chk)WaitForEnable();//检测忙信号
- CLR_RS;
- CLR_RW;
- _NOP();
- DataPort=cmd;//将命令字写入数据端口
- _NOP();
- SET_EN;//产生使能脉冲信号
- _NOP();
- _NOP();
- CLR_EN;
- }
- /*************************************************************************
- //名称:WriteData
- //参数:unsignedcharData
- //返回值:无
- //功能:向1602写入数据
- *************************************************************************/
- voidWriteData(uchardata)
- {
- WaitForEnable();//等待液晶不忙
- SET_RS;
- CLR_RW;
- _NOP();
- DataPort=data;//将显示数据写入数据端口
- _NOP();
- SET_EN;//产生使能脉冲信号
- _NOP();
- _NOP();
- CLR_EN;
- }
- /*************************************************************************
- //名称:LocateXY
- //参数:unsignedcharx,unsignedchary
- //返回值:无
- //功能:确定1602写入数据的位置,X为行坐标,Y为列坐标(都从0开始)
- *************************************************************************/
- voidLocateXY(ucharx,uchary)
- {
- uchartemp;
- temp=x&0x0f;
- y&=0x01;
- if(y)temp|=0x40;//如果在第2行
- temp|=0x80;
- WriteCommand(temp,1);
- }
- /*************************************************************************
- //名称:LcdInit
- //参数:无
- //返回值:无
- //功能:1602初始化
- *************************************************************************/
- voidLcdInit(void)
- {
- CtrlDir|=0x07;//控制线端口设为输出状态
- DataDir|=0xFF;//数据端口设为输出状态
- WriteCommand(0x38,0);//规定的复位操作
- Delay5ms();
- WriteCommand(0x38,0);
- Delay5ms();
- WriteCommand(0x38,0);
- Delay5ms();
- WriteCommand(0x38,1);//显示模式设置
- WriteCommand(0x08,1);//显示关闭
- WriteCommand(0x01,1);//显示清屏
- WriteCommand(0x06,1);//写字符时整体不移动
- WriteCommand(0x0c,1);//显示开,不开游标,不闪烁
- }
- /*************************************************************************
- //名称:WriteStr
- //参数:待写入数组的首地址,unsignedintn,unsignedcharx,unsignedchary
- //返回值:无
- //功能:在给定位置显示一个数组,长度为l
- *************************************************************************/
- voidWriteStr(uchar*a,uintl,ucharx,uchary)
- {
- uchari;
- LocateXY(x,y);
- for(i=0;i
1602控制MSP43 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)