您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > msp430 C 程序
BoardConfig.htypedefunsignedcharuchar;typedefunsignedintuint;//控制位的宏定义#defineCtrl_OutP3DIR|=BIT3+BIT6+BIT7;#defineCtrl_0P3OUT&=~(BIT3+BIT6+BIT7)#defineSRCLK_1P3OUT|=BIT7#defineSRCLK_0P3OUT&=~BIT7#defineSER_1P3OUT|=BIT6#defineSER_0P3OUT&=~BIT6#defineRCLK_1P3OUT|=BIT3#defineRCLK_0P3OUT&=~BIT3//板上资源配置函数voidBoardConfig(ucharcmd){uchari;Ctrl_Out;Ctrl_0;for(i=0;i8;i++){SRCLK_0;if(cmd&0x80)SER_1;elseSER_0;SRCLK_1;cmd=1;}RCLK_1;_NOP();RCLK_0;}cry1602.hvoidDispNChar(unsignedcharx,unsignedchary,unsignedcharn,unsignedchar*ptr);voidLocateXY(unsignedcharx,unsignedchary);voidDisp1Char(unsignedcharx,unsignedchary,unsignedchardata);voidLcdReset(void);voidLcdWriteCommand(unsignedcharcmd,unsignedcharchk);voidLcdWriteData(unsignedchardata);voidWaitForEnable(void);voidDelay5ms(void);voidDelay400ms(void);cry1602.c#includemsp430x14x.h#includecry1602.htypedefunsignedcharuchar;typedefunsignedintuint;/**************宏定义***************/#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;/*******************************************函数名称:DispNchar功能:让液晶从某个位置起连续显示N个字符参数:x--位置的列坐标y--位置的行坐标n--字符个数ptr--指向字符存放位置的指针返回值:无********************************************/voidDispNChar(ucharx,uchary,ucharn,uchar*ptr){uchari;for(i=0;in;i++){Disp1Char(x++,y,ptr[i]);if(x==0x0f){x=0;y^=1;}}}/*******************************************函数名称:LocateXY功能:向液晶输入显示字符位置的坐标信息参数:x--位置的列坐标y--位置的行坐标返回值:无********************************************/voidLocateXY(ucharx,uchary){uchartemp;temp=x&0x0f;y&=0x01;if(y)temp|=0x40;//如果在第2行temp|=0x80;LcdWriteCommand(temp,1);}/*******************************************函数名称:Disp1Char功能:在某个位置显示一个字符参数:x--位置的列坐标y--位置的行坐标data--显示的字符数据返回值:无********************************************/voidDisp1Char(ucharx,uchary,uchardata){LocateXY(x,y);LcdWriteData(data);}/*******************************************函数名称:LcdReset功能:对1602液晶模块进行复位操作参数:无返回值:无********************************************/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);//显示开,不开游标,不闪烁}/*******************************************函数名称:LcdWriteCommand功能:向液晶模块写入命令参数:cmd--命令,chk--是否判忙的标志,1:判忙,0:不判返回值:无********************************************/voidLcdWriteCommand(ucharcmd,ucharchk){if(chk)WaitForEnable();//检测忙信号?CLR_RS;CLR_RW;_NOP();DataPort=cmd;//将命令字写入数据端口_NOP();SET_EN;//产生使能脉冲信号_NOP();_NOP();CLR_EN;}/*******************************************函数名称:LcdWriteData功能:向液晶显示的当前地址写入显示数据参数:data--显示字符数据返回值:无********************************************/voidLcdWriteData(uchardata){WaitForEnable();//等待液晶不忙SET_RS;CLR_RW;_NOP();DataPort=data;//将显示数据写入数据端口_NOP();SET_EN;//产生使能脉冲信号_NOP();_NOP();CLR_EN;}/*******************************************函数名称: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口切换为输出状态}/*******************************************函数名称:Delay5ms功能:延时约5ms参数:无返回值:无********************************************/voidDelay5ms(void){uinti=40000;while(i!=0){i--;}}/*******************************************函数名称:Delay400ms功能:延时约400ms参数:无返回值:无********************************************/voidDelay400ms(void){uchari=50;uintj;while(i--){j=7269;while(j--);}}IIC.hvoidSet_IO(void);voiddelay(void);voidstart(void);voidstop(void);voidmack(void);voidmnack(void);unsignedcharcheck(void);voidwrite1(void);voidwrite0(void);voidwrite1byte(unsignedcharwdata);unsignedcharwriteNbyte(unsignedchar*outbuffer,unsignedcharn);unsignedcharread1byte(void);voidreadNbyte(unsignedchar*inbuffer,unsignedcharn);IIC.c#includemsp430x14x.htypedefunsignedcharuchar;typedefunsignedintuint;#defineSCL_HP1OUT|=BIT1#defineSCL_LP1OUT&=~BIT1#defineSDA_HP1OUT|=BIT0#defineSDA_LP1OUT&=~BIT0#defineSCL_outP1DIR|=BIT1//SCL设置为输出模式#defineSDA_inP1DIR&=~BIT0//SDA改成输入模式#defineSDA_outP1DIR|=BIT0//SDA变回输出模式#defineSDA_valP1IN&BIT0//SDA的位值#defineTRUE1#defineFALSE0/*******************************************函数名称:Set_IO功能:设置IIC对应IO为输出方向并输出高电平参数:无返回值:无********************************************/voidSet_IO(void){SCL_out;SDA_out;SCL_H;SDA_H;}/*******************************************函数名称:delay功能:延时约100us的时间参数:无返回值:无********************************************/voiddelay(void){uchari;for(i=0;i15;i++)_NOP();}/*******************************************函数名称:start功能:完成IIC的起始条件操作参数:无返回值:无********************************************/voidstart(void){SCL_H;SDA_H;delay();SDA_L;delay()
本文标题:msp430 C 程序
链接地址:https://www.777doc.com/doc-5237880 .html