#include <bmp.h>
#include <GLOBAL.h>
#include <stdlib.h>
#include <stdbool.h>
#include <msp430x41x.h>
//*===LCD---端口定义============================================================
//-------------CS---片选
#define LcdCsOut P3DIR |= BIT2
#define LcdCsHig P3OUT |= BIT2
#define LcdCsLow P3OUT &=~ BIT2
//-------------RT---复位
#define LcdRtOut P3DIR |= BIT3
#define LcdRtHig P3OUT |= BIT3
#define LcdRtLow P3OUT &=~ BIT3
//-------------RS---寄存器选择
#define LcdRsOut P3DIR |= BIT4
#define LcdRsHig P3OUT |= BIT4
#define LcdRsLow P3OUT &=~ BIT4
//-------------SA---数据端
#define LcdSaOut P3DIR |= BIT5
#define LcdSaHig P3OUT |= BIT5
#define LcdSaLow P3OUT &=~ BIT5
//-------------SC---时钟端
#define LcdScOut P3DIR |= BIT6
#define LcdScHig P3OUT |= BIT6
#define LcdScLow P3OUT &=~ BIT6
//*===ROM---端口定义============================================================
//-------------CS---片选
#define RomCsOut P4DIR |= BIT2
#define RomCsHig P4OUT |= BIT2
#define RomCsLow P4OUT &=~ BIT2
//-------------SC---复位
#define RomScOut P4DIR |= BIT3
#define RomScHig P4OUT |= BIT3
#define RomScLow P4OUT &=~ BIT3
//-------------RS---寄存器选择
#define RomDuOut P4DIR |= BIT4
#define RomDuHig P4OUT |= BIT4
#define RomDuLow P4OUT &=~ BIT4
//-------------SA---数据端
#define RomDiOut P4DIR |= BIT5
#define RomDiHig P4OUT |= BIT5
#define RomDiLow P4OUT &=~ BIT5
void InitLcdIo(void)
{
LcdCsOut;
LcdRtOut;
LcdRsOut;
LcdSaOut;
LcdScOut;
RomCsOut;
RomScOut;
RomDuOut;
LcdCsHig;
LcdRtHig;
LcdRsHig;
LcdSaHig;
LcdScHig;
}
//---写指令到LCD模块
void SenCmdToLcd(unsigned char CmdData)
{
unsigned char i;
WDT();
LcdRsLow;
for(i=0;i<8;i++)
{
LcdScLow;
if(CmdData&0x80)
{
LcdSaHig;
}
else
{
LcdSaLow;
}
LcdScHig;
CmdData<<=1;
}
}
//---写数据到LCD模块
void SenDataToLcd(unsigned char SenData)
{
unsigned char i;
WDT();
LcdRsHig;
for(i=0;i<8;i++)
{
LcdScLow;
if(SenData&0x80)
{
LcdSaHig;
}
else
{
LcdSaLow;
}
LcdScHig;
SenData<<=1;
}
}
void SetLcdAdd(unsigned int Page,unsigned int Column)
{
Column=Column-0x01;
SenCmdToLcd(0xb0+Page-1);//--------------------------------------设置页地址
SenCmdToLcd(0x10+(Column>>4&0x0f));//---------------------设置列地址的高4位
SenCmdToLcd(Column&0x0f);//-------------------------------设置列地址的低4位
}
/*显示128x64点阵图像*/
void DisplayBmp(unsigned char *BmpDptr)
{
unsigned char i,j;
LcdCsLow;
for(j=0;j<8;j++)
{
SetLcdAdd(j+1,1);
for (i=0;i<128;i++)
{
SenDataToLcd(*BmpDptr);//--写数据到LCD,每写完一个8位的地址自动加1
BmpDptr++;
}
}
LcdCsHig;
}
//---LCD模块初始化
void LcdShowInit(void)
{
LcdCsLow;
RomCsHig;
LcdRtLow;//------------------------------------------------------低电平复位
Delay(20);
LcdRtHig;//--------------------------------------------------------复位完毕
Delay(20);
SenCmdToLcd(0xe2); /*软复位*/
Delay(5);
SenCmdToLcd(0x2c); /*升压步聚1*/
Delay(5);
SenCmdToLcd(0x2e); /*升压步聚2*/
Delay(5);
SenCmdToLcd(0x2f); /*升压步聚3*/
Delay(5);
SenCmdToLcd(0x23); /*粗调对比度,可设置范围0x20~0x27*/
SenCmdToLcd(0x81); /*微调对比度*/
SenCmdToLcd(0x29); /*0x28,微调对比度的值,可设置范围0x00~0x3f*/
SenCmdToLcd(0xa2); /*1/9偏压比(bias)*/
SenCmdToLcd(0xc8); /*行扫描顺序:从上到下*/
SenCmdToLcd(0xa0); /*列扫描顺序:从左到右*/
SenCmdToLcd(0x40); /*起始行:第一行开始*/
SenCmdToLcd(0xaf); /*开显示*/
LcdCsHig;
}
//---全屏清屏
void ClearScreen(void)
{
unsigned char i,j;
LcdCsLow;
RomCsHig;
for(i=0;i<9;i++)
{
SenCmdToLcd(0xb0+i);
SenCmdToLcd(0x10);
SenCmdToLcd(0x00);
for(j=0;j<132;j++)
{
SenDataToLcd(0x00);
}
}
LcdCsHig;
}
void LcdParse(void)
{
if(LcdParseEn)
{
if(SecondsConn&0x0001)
{
if(LcdRunData>1)
{
LcdRunData=0;
LcdShowNum++;
}
else
{
LcdRunData++;
}
switch(LcdShowNum)
{
case 0x00 ://第03种显示方式数据提取到显示缓冲区---
DisplayBmp((unsigned char *)WatchBmpOne);
break;
case 0x01 ://第01种显示方式数据提取到显示缓冲区---
DisplayBmp((unsigned char *)WatchBmpThr);
break;
case 0x02 ://第02种显示方式数据提取到显示缓冲区---
DisplayBmp((unsigned char *)WatchBmpTwo);
break;
case 0x03 ://第01种显示方式数据提取到显示缓冲区---
DisplayBmp((unsigned char *)BmpDataFiv);
break;
case 0x04 ://第01种显示方式数据提取到显示缓冲区---车
DisplayBmp((unsigned char *)WatchBmpFor);
break;
case 0x05 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001
DisplayBmp((unsigned char *)BmpDataSix);
break;
case 0x06 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001
DisplayBmp((unsigned char *)BmpDataSen);
break;
case 0x07 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001
LcdShowNum=0;
LcdRunData=0;
break;
}
SecondsConn&=0xfffe;
}
}
}
|