⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm06xk_msp430_c.c

📁 北京青云创新的KCM
💻 C
字号:
#include  <msp430x11x1.h>
//P2.3  /CS
//P2.2  /WR
//P2.4  DATA
//定义基本的数据线状态
#define cs_1       P2OUT |=  BIT3              //CS = 1
#define cs_0       P2OUT &=~ BIT3              //CS = 0
#define wr_1       P2OUT |=  BIT2              //WR = 1
#define wr_0       P2OUT &=~ BIT2              //WR = 0
#define data_1     P2DIR &=~ BIT4;             //DATA=1
#define data_0     P2DIR |=  BIT4              //DATA=0

//定义段码全局位变量
unsigned char d;//d为模块内的段码映射与真实数据字的转换变量
//定义LCM06XK的命令
#define close_lcd_osc 	0x00//关闭振荡器关LCD 显示进入静态模式
#define open_osc  	0x01//开振荡器
#define close_lcd 	0x02//关LCD 显示
#define open_lcd   	0x03//开LCD 显示
#define close_bz   	0x08//关蜂鸣
#define open_bz   	0x09//开蜂鸣
#define wr_bz_2k   	0x60//置蜂鸣2KHz
#define wr_bz_4k   	0x40//置蜂鸣4KHz
#define lcm_int	   	0x20//模块初始化
#define close_wdt   	0x05//关WDT
#define open_wdt   	0x07//开WDT
#define close_time   	0x04//关定时器
#define open_time   	0x06//开定时器
#define clear_wdt	0x0e//WDT 清零
#define clear_time   	0x0d//定时器清零
#define def_rc   	0x18//定义模块内部RC 振荡器工作

//延时函数
 void Delay(unsigned int n)
{
   unsigned int i;
   for (i=0; i<n; i++) {;}
}


//定义LCM06xk的数据映射表/////////////
//数字0~9的段码编码
void lcm_09(unsigned char n)
{
if(n<10){
	switch (n){
	case 0: d=0x6f;break;
	case 1: d=0x23;break;
	case 2: d=0x79;break;
	case 3: d=0x7a;break;
	case 4: d=0x36;break;
	case 5: d=0x5e;break;
	case 6: d=0x5f;break; 
	case 7: d=0x2a;break;
	case 8: d=0x7f;break;
	case 9: d=0x7e;break;
	default :break;
	}	
}
}
///////////////////////////////////////
//写命令函数
void wr_cmmond(unsigned char commond)
{
unsigned char i;
cs_1;
wr_1;
data_1;
cs_0;
wr_0;
data_1;//data=1
wr_1;
wr_0;
data_0;//data=0
wr_1;
wr_0;
data_0;//data=0
wr_1;

	for(i=0;i<=8;i++)
	{wr_0;
	if((commond&0x80)==0x80){data_1;}
	else {data_0;}
	commond=commond<<1;
	wr_1;
	}
wr_0;
data_0;//data=0
wr_1;
data_1;
cs_1;
}
///////////////////////////////////////
//写数据函数
void wr_data(unsigned char addr,unsigned char x)
{
unsigned char i;
cs_1;
wr_1;
data_1;
cs_0;
wr_0;
data_1;//data=1
wr_1;
wr_0;
data_0;//data=0
wr_1;
wr_0;
data_1;//data=1
wr_1;
wr_0;
data_1;//data=0
wr_1;
addr=addr<<4;
	for(i=0;i<=4;i++)
	{wr_0;
	if((addr&0x80)==0x80){data_1;}
	else {data_0;}
	addr=addr<<1;
	wr_1;
	}

wr_0;
if((x&0x01)==0x01){data_1;}else {data_0;}//第零位数据输出
wr_1;
wr_0;
if((x&0x02)==0x02){data_1;}else {data_0;}//第一位数据输出
wr_1;
wr_0;
data_0;//data=0
wr_1;
wr_0;
data_0;//data=0
wr_1;
data_1;
cs_1;
}
//////////////////////////////////////
//扫描一位需要扫描的RAM组合
void wr_dig(unsigned char x)
{if(x<=6){
	switch(x){
	case 1:	{wr_data(0x00,d);d>>=2;wr_data(0x01,d);d>>=2;wr_data(0x02,d);d>>=2;wr_data(0x03,d);break;}
	case 2:	{wr_data(0x04,d);d>>=2;wr_data(0x05,d);d>>=2;wr_data(0x06,d);d>>=2;wr_data(0x07,d);break;}
	case 3:	{wr_data(0x08,d);d>>=2;wr_data(0x09,d);d>>=2;wr_data(0x0a,d);d>>=2;wr_data(0x0b,d);break;}
	case 4:	{wr_data(0x0c,d);d>>=2;wr_data(0x0d,d);d>>=2;wr_data(0x0e,d);d>>=2;wr_data(0x0f,d);break;}
	case 5:	{wr_data(0x10,d);d>>=2;wr_data(0x11,d);d>>=2;wr_data(0x12,d);d>>=2;wr_data(0x13,d);break;}
	case 6:	{wr_data(0x14,d);d>>=2;wr_data(0x15,d);d>>=2;wr_data(0x16,d);d>>=2;wr_data(0x17,d);break;}
	default : break;
	}
}
d=0;
}
	
/////////////////////////////////////////
//一位扫描,包含位选择数据,位显示数据//

void wr_dig_data(unsigned char dig,unsigned char n){
lcm_09(n);//取段码值
wr_dig(dig);//扫描此位所有的RAM映射空间,合成一位扫描
}

///////////////////////////////////////////
//初始化模块	
void lcm_init(void){
Delay(2000);//延时操作	
wr_cmmond(lcm_int);//模块初始化操作
wr_cmmond(def_rc);//定义内部RC振荡方式
wr_cmmond(open_osc);//开振荡器
wr_cmmond(open_lcd);//开显示器
}
//////////////////////////////////////////
void main(void)
{
unsigned int j;
j=0;
WDTCTL = WDTPW + WDTHOLD;// Stop WDT
lcm_init();//初始化模块	
wr_dig_data(1,1);
wr_dig_data(2,2);
wr_dig_data(3,3);
wr_dig_data(4,4);
wr_dig_data(5,5);
wr_dig_data(6,6);
Delay(50000);
while(1){
wr_dig_data(1,j/10000);
wr_dig_data(2,j%10000/1000);
wr_dig_data(3,j%10000%1000/100);
wr_dig_data(4,j%10000%1000%100/10);
wr_dig_data(5,j%10000%1000%100%10);
wr_dig_data(6,8);
Delay(10000);
j++;if(j==60000)j=0;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -