首页资源分类嵌入式处理器MSP430 > MSP430-12864驱动

MSP430-12864驱动

已有 445117个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:MSP430

    分    享:

    文档简介

    MSP430F5529串行显示12864驱动

    文档预览

    #include msp430f5529.h #include 12864.h #define CS_H P1OUT=BIT2 #define CS_L P1OUT&=~BIT2 #define SID_H P1OUT=BIT3 #define SID_L P1OUT&=~BIT3 #define SCLK_H P1OUT=BIT4 #define SCLK_L P1OUT&=~BIT4 #define PSB_H P1OUT&=~BIT5 unsigned char hang[5] = {0,0x80,0x90,0x88,0x98}; void delayms(uchar t) { uint k; for(;t0;t--) for(k=150;k0;k--); } 函数名void SendByte(unsigned char dat) 功能按照液晶的串口通信协议,发送字节 参数输入 dat 说明 void SendByte(unsigned char dat) { unsigned int i; for (i=0; i8; i++) { if ((dati) & 0x80) { SID_H; } else { SID_L; } SCLK_L; SCLK_H; } } 函数名unsigned char ReceiveByte(void) 功能按照液晶的串口通信协议,接收字节 参数输出 ((0xf0&temp1)+(0x0f&temp2)) 说明 unsigned char ReceiveByte(void) { unsigned char i,temp1,temp2; temp1 = 0; temp2 = 0; CS_H; for (i = 0; i 8; i++) { temp1 = temp11; SCLK_L; SCLK_H; SCLK_L; if (P1OUT=BIT3) { temp1++; } } for (i = 0; i 8; i++) { temp2 = temp21; SCLK_L; SCLK_H; SCLK_L; if (P1OUT=BIT3) { temp2++; } } return ((0xf0&temp1)+(0x0f&temp2)); } 函数名void CheckBusy(void) 功能忙位检测 参数 说明 void CheckBusy(void) { do { SendByte(0xfc); 11111,rw(1),rs(0),0 } while (0x80&ReceiveByte()); BF(.7) = 1 Busy } 函数名void WriteCom(unsigned char cmdcode) 功能写串口指令 参数输入 cmdcode 说明 void WriteCom(unsigned char cmdcode) { CS_H; delayms(10); CheckBusy(); SendByte(0xf8); 11111,RW(0),RS(0),0 SendByte(cmdcode & 0xf0); SendByte((cmdcode 4) & 0xf0); } 函数名void WriteCom(unsigned char cmdcode) 功能写串口指令 参数输入 cmdcode 说明 void WriteData(unsigned char dat) { CS_H; delayms(10); CheckBusy(); SendByte(0xfa); 11111,RW(0),RS(1),0 SendByte(dat & 0xf0); SendByte((dat 4) & 0xf0); } 函数名void LCD12864_Init(void) 功能LCD12864初始化 参数 说明 void LCD12864_Init(void) { PSB = 0; 选择并行显示方式 P1DIR=BIT2+BIT3+BIT4+BIT5; delayms(10); WriteCom(BasInsLib); 选择基本指令库 delayms(1); WriteCom(BasInsLib);; delayms(1); WriteCom(ShowON); 开显示(无游标、不反白) delayms(2); WriteCom(ClrGDRAM); 清除显示,并且设定地址指针为00H delayms(20); WriteCom(InPointSet); 指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位 LCD12864_ClrGDRAM(); delay_ms(50); } 函数名unsigned long int LCD12864_Pow(uchar m,uchar n) 功能求m^n的函数 参数输入 m,n 说明 unsigned int LCD12864_Pow(unsigned char m, unsigned char n) { unsigned int result=1; while (n--) { result=m; } return result; } 函数名 void LCD12864_Char(uchar x,uchar y,uchar ch) 功能 LCD12864任意位置显示字符 参数 输入 x,y,ch 说明 void LCD12864_Char(char x,char y,char ch) { if ((y%2)!=0) 判断奇数位 { WriteCom(hang[x]+y2); WriteData(ch); } else { WriteCom(hang[x]+y2-1); SendByte(1); WriteData(ch); } } 函数名 void LCD12864_String(unsigned char x,unsigned char y,unsigned char p) 功能 LCD12864显示字符串 参数 输入 x,y,p 说明 void LCD12864_String(unsigned char x,unsigned char y,unsigned char p) { WriteCom(hang[x]+y-1); while (p0) { WriteData(p); p++; } } void LCD12864_ShowNum(char x, char y, int num, char len, char mode) { unsigned char t,temp; unsigned char enshow=0; if ((y%2)!=0) { WriteCom(hang[x]+y2); } else { WriteCom(hang[x]+y2-1); SendByte(1); } for (t=0; tlen; t++) { temp = (numLCD12864_Pow(10,len-t-1))%10; if (enshow==0 && t(len-1)) { if (temp==0) { mode==0 WriteData(' ') WriteData('0'); continue; } else { enshow=1; } } WriteData(temp+'0'); } }

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。