这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LPC213X之LCM1010 C++程序源代码用的什么C++??

共1条 1/1 1 跳转至

LPC213X之LCM1010 C++程序源代码用的什么C++??

菜鸟
2007-05-31 21:17:05     打赏

P0->IOSET = (1 << LCMDATA) | (1 << LCMWR) | (1 << LCMCS); val = 1 << (Count - 1);请问这个语句什么意思呀,1<< 是什么命令格式呀。我看了C++里也没有这个定义方式呀。这是什么C++呀?


来自HOTPOWER源码

LPC213XLCM1010 C++程序源代码

i nclude <LPC213XDEF.H>

#define WDI P0_11//

#define LCMDATA P0_6 //LCM1010数据端

#define LCMWR P0_7 //LCM1010

#define LCMCS P0_8 //LCM1010片选

#define LedSegS1 0x20

#define LedSegS2 0x40

#define LedSegS3 0x80

#define LedSegS4 0x02

#define LedSegS5 0x04

#define LedSegS6 0x08

//HCBD GAEF

#define LedSegA 0x04

#define LedSegB 0x20

#define LedSegC 0x40

#define LedSegD 0x10

#define LedSegE 0x02

#define LedSegF 0x01

#define LedSegG 0x08

#define LedSegH 0x80

#define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF )

#define LedChar1 ( LedSegB + LedSegC )

#define LedChar2 (LedSegA + LedSegB + LedSegD + LedSegE + LedSegG)

#define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegG)

#define LedChar4 ( LedSegB + LedSegC + LedSegF + LedSegG)

#define LedChar5 (LedSegA + LedSegC + LedSegD + LedSegF + LedSegG)

#define LedChar6 (LedSegA + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)

#define LedChar7 (LedSegA + LedSegB + LedSegC )

#define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)

#define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegF + LedSegG)

#define LedCharA (LedSegA + LedSegB + LedSegC + LedSegE + LedSegF + LedSegG)

#define LedCharB ( LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)

#define LedCharC (LedSegA + LedSegD + LedSegE + LedSegF )

#define LedCharD ( LedSegB + LedSegC + LedSegD + LedSegE + LedSegG)

#define LedCharE (LedSegA + LedSegD + LedSegE + LedSegF + LedSegG)

#define LedCharF (LedSegA + LedSegE + LedSegF + LedSegG)

static const unsigned char LedTab[] =

{

LedChar0,

LedChar1,

LedChar2,

LedChar3,

LedChar4,

LedChar5,

LedChar6,

LedChar7,

LedChar8,

LedChar9,

LedCharA,

LedCharB,

LedCharC,

LedCharD,

LedCharE,

LedCharF

};

void _delay_loop_(unsigned int);

void _delay_loop_(unsigned int val)

{

unsigned int i;

for(i = 0; i < (val * 60); i ++);

}

class SystemObj {//系统类

public:

SystemObj(void);//SystemObj的构造函数

public:

void SystemInit(void);

void WdtInit(void);

void ClrWdt(void);

};

class LcdObj {//系统显示菜单类

public:

LcdObj(void);//LcdObj的构造函数

public:

void LcdInit(void);

void LcdBuffersClear(void);

void LcdClear(void);

void LcdOpen(void);

void LcdClose(void);

void LcdWrite(unsigned char, unsigned char);

void LcdWriteCommand(unsigned char);

void LcdWriteData(unsigned char, unsigned char);

void LcdDisplay(unsigned char, unsigned char);

void LcdDisplay(unsigned long);

void LcdDisplay(unsigned short);

public:

unsigned char LcdBuffers[32];

};

SystemObj::SystemObj(void)

{

SystemInit();

}

void SystemObj::SystemInit(void)

{ PINSEL->PIN_SEL0 = 0;

PINSEL->PIN_SEL1 = 0;

PINSEL->PIN_SEL2 = 0;

P0->IODIR = 0;

P1->IODIR = 0;

WdtInit();

}

void SystemObj::WdtInit(void)

{

P0->IODIR |= (1 << WDI); // 设置WDI控制口为输出

}

void SystemObj::ClrWdt(void)

{

P0->IOPIN ^= (1 << WDI);

}

LcdObj::LcdObj(void)

{

LcdInit();

}

void LcdObj::LcdClear(void)

{

int i;

for(i = 0;i < 32;i ++) {

LcdWriteData(i, 0);

}}

void LcdObj::LcdBuffersClear(void)

{

int i;

for(i = 0;i < 32;i ++) {

LcdBuffers[i] = 0;

}

}

void LcdObj::LcdInit(void)

{

P0->IODIR |= (1 << LCMDATA) | (1 << LCMWR) | (1 << LCMCS);

P0->IOSET = (1 << LCMDATA) | (1 << LCMWR) | (1 << LCMCS);

LcdBuffersClear();

LcdWriteCommand(0x24);

LcdWriteCommand(0x18);

LcdWriteCommand(0x01);

LcdWriteCommand(0x03);

LcdClear();}

void LcdObj::LcdOpen(void)

{

P0->IOSET = (1 << LCMDATA) | (1 << LCMWR) | (1 << LCMCS);

_delay_loop_(1);

P0->IOCLR = (1 << LCMCS);//打开片选信号

_delay_loop_(1);

}

void LcdObj::LcdClose(void)

{

P0->IOSET = (1 << LCMDATA) | (1 << LCMWR) | (1 << LCMCS);

}

void LcdObj::LcdWrite(unsigned char Data, unsigned char Count)

{

int i;

unsigned char val;

val = 1 << (Count - 1);

for(i = 0; i < Count; i ++) {

P0->IOCLR = (1 << LCMWR);//拉低读写时钟

if (Data & val) {

P0->IOSET = (1 << LCMDATA);//发送串行数据'1'

}

else {

P0->IOCLR = (1 << LCMDATA);//发送串行数据'0'

}

_delay_loop_(1);//等待LCM1010

P0->IOSET = (1 << LCMWR);//抬高读写时钟,打入串行数据

_delay_loop_(1);//等待LCM1010

Data <<= 1;

}

}

void LcdObj::LcdWriteCommand(unsigned char Command)

{

LcdOpen();

LcdWrite(0x04, 3);

LcdWrite(Command, 8);

LcdWrite(0x00, 1);

LcdClose();

}

void LcdObj::LcdWriteData(unsigned char Addr, unsigned char Data)

{

LcdOpen();

LcdWrite(0x05, 3);

LcdWrite(Addr, 5);

LcdWrite(Data, 4);

LcdClose();

}

void LcdObj::LcdDisplay(unsigned char LcdBit, unsigned char LcdData)

{

unsigned char Addr;

Addr = LcdBit;

LcdOpen();

LcdWrite(0x05, 3);

LcdWrite(Addr, 6);

if (Addr) {

LcdWrite((LcdData >> 4) & 0x0f, 4);//HCB0

LcdWrite((LcdData >> 1) & 0x0f, 4);//DGA0

LcdWrite((LcdData << 1) & 0x06, 4);//0EF0

}

else {

LcdWrite(LcdData >> 4, 4);//S1S2S3 0

LcdWrite(LcdData, 4);//S1S2S3 0

}

LcdClose();

}

void LcdObj::LcdDisplay(unsigned long val)

{

unsigned char LcdData, temp;

int i;

LcdOpen();

LcdWrite(0x05, 3);

LcdWrite(0x0e, 6);

for(i = 0; i < 6; i ++) {

temp = val % 10;

val /= 10;

LcdData = LedTab[temp];

LcdWrite((LcdData >> 4) & 0x0f, 4);//HCB0

LcdWrite((LcdData >> 1) & 0x0f, 4);//DGA0

LcdWrite((LcdData << 1) & 0x06, 4);//0EF0

}

LcdClose();}

void LcdObj::LcdDisplay(unsigned short val)

{

unsigned char LcdData, temp;

int i, div;

div = 1000;

LcdOpen();

LcdWrite(0x05, 3);

LcdWrite(0x02, 6);

for(i = 0; i < 4; i ++) {

temp = (val / div) % 10;

div /= 10;

LcdData = LedTab[temp];

if (i >= 2) {

LcdData |= LedSegH;

}

LcdWrite((LcdData >> 4) & 0x0f, 4);//HCB0

LcdWrite((LcdData >> 1) & 0x0f, 4);//DGA0

LcdWrite((LcdData << 1) & 0x06, 4);//0EF0

}

LcdClose();}

SystemObj Sys;

LcdObj Lcd;

int main(void)

{

unsigned char K = LedSegS1;

unsigned long S = 1234;

unsigned short V = 0;

// Lcd.LcdDisplay(0x00, LedSegS1 + LedSegS4 + LedSegS6);//S1

/*

Lcd.LcdDisplay(0x02, LedChar1);//LED1

Lcd.LcdDisplay(0x05, LedChar2);//LED2

Lcd.LcdDisplay(0x08, LedSegH + LedChar3);//LED3

Lcd.LcdDisplay(0x0b, LedSegH + LedChar4);//LED4

*/

/*

Lcd.LcdDisplay(0x0e, LedCharF);//LED5

Lcd.LcdDisplay(0x11, LedCharE);//LED6

Lcd.LcdDisplay(0x14, LedCharD);//LED7

Lcd.LcdDisplay(0x17, LedCharC);//LED8

Lcd.LcdDisplay(0x1a, LedCharB);//LED9

Lcd.LcdDisplay(0x1d, LedCharA);//LED10

*/

Lcd.LcdDisplay(0x00, K);

Lcd.LcdDisplay(S);

Lcd.LcdDisplay(V);

while(1) {

S ++;

Lcd.LcdDisplay(S);

if ((S % 100) == 0) {

V ++;

Lcd.LcdDisplay(V);

if ((S % 500) == 0) {

if (K == LedSegS1) {

K = LedSegS2;

}

else if (K == LedSegS2) {

K = LedSegS3;

}

else if (K == LedSegS3) {

K = LedSegS4;

}

else if (K == LedSegS4) {

K = LedSegS5;

}

else if (K == LedSegS5) {

K = LedSegS6;

}

else K = LedSegS1;

Lcd.LcdDisplay(0x00, K);

}

}

Sys.ClrWdt();

_delay_loop_(500);

__nop();

}

}




关键词: LPC213X     LCM1010     程序     源代码     用的    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]