12864控制forMSP430
时间:11-27
来源:互联网
点击:
- /*****************************************************************
- //文件名:12864.c
- //描述:该文件定义与12864有关的各种接口、函数,适用于MSP430F149
- //编写人:小邪@清水
- //版本号:2.01
- *****************************************************************/
- #include
- #include"12864.h"
- #defineucharunsignedchar
- #defineuintunsignedint
- #defineBIT(x)(1<(x))
- unsignedcharNUM[]={"0123456789."};
- ucharAddress[4][8]={
- {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87},
- {0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97},
- {0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f},
- {0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f}
- };
- /*****************************************************************
- //关于12864的一些宏定义
- //注意:各项数据都要根据实际使用IO口更改
- *****************************************************************/
- #defineCS0//CS=P3.0
- #defineSID1//SID=P3.1
- #defineCLK2//CLK=P3.2
- #definePORTP3OUT
- #defineDIRP3DIR
- /*************************************************************************
- //名称:delay_Nus
- //参数:延时的时间n
- //返回值:无
- //功能:延时nNs的时间
- *************************************************************************/
- voiddelay_Nus(uintn)
- {
- uchari;
- for(i=n;i>0;i--)
- _NOP();
- }
- /*************************************************************************
- //名称:delay_1ms
- //参数:无
- //返回值:无
- //功能:延时1ms的时间
- *************************************************************************/
- voiddelay_1ms(void)
- {
- uchari;
- for(i=150;i>0;i--)_NOP();
- }
- /*************************************************************************
- //名称:delay_Nms
- //参数:延时的时间n
- //返回值:无
- //功能:延时1ms的时间
- *************************************************************************/
- voiddelay_Nms(uintn)
- {
- uinti=0;
- for(i=n;i>0;i--)
- delay_1ms();
- }
- /*************************************************************************
- //名称:LcdInit
- //参数:无
- //返回值:无
- //功能:初始化12864
- *************************************************************************/
- voidLcdInit(void)
- {
- DIR|=BIT(CLK)+BIT(SID)+BIT(CS);//相应的位端口设置为输出
- delay_Nms(100);//延时等待液晶完成复位
- Send(0,0x30);//功能设置:一次送8位数据,基本指令集
- delay_Nus(72);
- Send(0,0x02);//DDRAM地址归位
- delay_Nus(72);
- Send(0,0x0c);//显示设定:开显示,不显示光标,不做当前显示位反白闪动
- delay_Nus(72);
- Send(0,0x01);//清屏,将DDRAM的位址计数器调整为“00H”
- delay_Nus(72);
- Send(0,0x06);//功能设置,点设定:显示字符/光标从左到右移位,DDRAM地址加1
- delay_Nus(72);
- }
- /*************************************************************************
- //名称:Send
- //参数:数据类型type:0--控制命令,1--显示数据,transdata--发送的数据
- //返回值:无
- //功能:向12864发送一个字节的数据,可用于控制可用于显示
- *************************************************************************/
- voidSend(uchartype,uchartransdata)
- {
- ucharfirstbyte=0xf8;
- uchartemp;
- uchari,j=3;
- if(type)firstbyte|=0x02;
- PORT|=BIT(CS);
- PORT&=~BIT(CLK);
- while(j>0)
- {
- if(j==3)temp=firstbyte;
- elseif(j==2)temp=transdata&0xf0;
- elsetemp=(transdata<4)&0xf0;
- for(i=8;i>0;i--)
- {
- if(temp&0x80)PORT|=BIT(SID);
- elsePORT&=~BIT(SID);
- PORT|=BIT(CLK);
- temp<=1;
- PORT&=~BIT(CLK);
- }//三个字节之间一定要有足够的延时,否则易出现时序问题
- if(j==3)delay_Nus(600);
- elsedelay_Nus(200);
- j--;
- }
- PORT&=~BIT(SID);
- PORT&=~BIT(CS);
- }
- /*************************************************************************
- //名称:Clear_GDRAM
- //参数:数据类型type:0--控制命令,1--显示数据,transdata--发送的数据
- //返回值:无
- //功能:向12864发送一个字节的数据,可用于控制可用于显示
- *************************************************************************/
- voidClear_GDRAM(void)
- {
- uchari,j,k;
- Send(0,0x34);//打开扩展指令集
- i=0x80;
- for(j=0;j<32;j++)
- {
- Send(0,i++);
- Send(0,0x80);
- for(k=0;k<16;k++)
- {
- Send(1,0x00);
- }
- }
- i=0x80;
- for(j=0;j<32;j++)
- {
- Send(0,i++);
- Send(0,0x88);
- for(k=0;k<16;k++)
- {
- Send(1,0x00);
- }
- }
- Send(0,0x30);//回到基本指令集
- }
- /*************************************
12864MSP43 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)