📄 lcm141.c.bak
字号:
//文件名:lcm141.c
//本程序算法部分可以用在其它部分,
//2007年6月7日调试已通过;
#define uchar unsigned char
#define uint unsigned int
#define XF_MCU 1 //定义用哪一种单片机,1时,用于PIC; 0时,用于MSP430;
#if XF_MCU==0
#include<msp430x14x.h>
#include "lcm141.h"
#else
#include<PIC.h>
#include "lcm141.h"
uchar pa_out;
uchar pb_out;
uchar pc_out;
uchar pd_out;
uchar pe_out;
#endif
const uchar coding_up[11]={0xeb,0x60,0xc7,0xe5,0x6c,0xad,0xaf,0xe0,0xef,0xed,0x00}; //LCM141上部0~9的编码
const uchar coding_down[11]={0xd7,0x06,0xe3,0xa7,0x36,0xb5,0xf5,0x07,0xf7,0xb7,0x00}; //LCM141下部0~9的编码
void LCM_INIT(void)
{ LCM_CS_L;
DELAYMS(1);
LCM_CS_H;
DELAYMS(1);
LCM_CS_L;
DELAYMS(1);
LCM_CS_H;
DELAYMS(1);
LCM_CS_L;
DELAYMS(1);
LCM_WRITE(com,3);
LCM_WRITE(init,9);
LCM_CS_H;
LCM_WRITE(com,3);
LCM_WRITE(cy,9);
LCM_CS_H;
LCM_WRITE(com,3);
LCM_WRITE(oscon,9);
LCM_CS_H;
LCM_WRITE(com,3);
LCM_WRITE(lcmon,9);
LCM_CS_H;
}
//LCM141写数据子程序(数据寄存器,位段寄存器)
void LCM_SEG(uchar lcms_pd,uchar lcms_pa)
{ uchar lcms_data;
uchar lcms_bits;
uchar lcms_i;
{lcms_data=ddata;lcms_bits=3;
LCM_CS_L;
for(lcms_i=1;lcms_i<=lcms_bits;lcms_i++)
{LCM_WR_L;
if(!(lcms_data&0x80))
LCM_DA_L;
else
LCM_DA_H;
lcms_data=lcms_data<<1;
LCM_WR_H;
}
}
{ lcms_data=(lcms_pa<<=2);lcms_bits=6;
LCM_CS_L;
for(lcms_i=1;lcms_i<=lcms_bits;lcms_i++)
{LCM_WR_L;
if(!(lcms_data&0x80))
LCM_DA_L;
else
LCM_DA_H;
lcms_data=lcms_data<<1;
LCM_WR_H;
}
}
{lcms_data=lcms_pd;lcms_bits=8;
LCM_CS_L;
for(lcms_i=1;lcms_i<=lcms_bits;lcms_i++)
{LCM_WR_L;
if(!(lcms_data&0x80))
LCM_DA_L;
else
LCM_DA_H;
lcms_data=lcms_data<<1;
LCM_WR_H;
}
}
LCM_CS_H;
}
void LCM_WRITE(uchar lcmw_data,uchar lcmw_bits) //液晶屏写数据。
{ uchar lcms_i;
LCM_CS_L;
for(lcms_i=1;lcms_i<=lcmw_bits;lcms_i++)
{LCM_WR_L;
if(!(lcmw_data&0x80))
LCM_DA_L;
else
LCM_DA_H;
lcmw_data=lcmw_data<<1;
LCM_WR_H;
}
}
//#############################################
void CLR_LCM141(void) //LCM141清数码子程序
{
LCM_SEG(0x00,0x19); //01位清0;
LCM_SEG(0x00,0x17); //02位清0;
LCM_SEG(0x00,0x15); //03位清0;
LCM_SEG(0x00,0x13); //04位清0;
LCM_SEG(0x00,0x11); //05位清0;
LCM_SEG(0x00,0x04); //10位清0;
LCM_SEG(0x00,0x06); //09位清0;
LCM_SEG(0x00,0x0c); //横条位清0;
LCM_SEG(0x00,0x0d); //横条位清0
LCM_SEG(0x00,0x08); //08位清0;
LCM_SEG(0x00,0x0a); //07位清0;
LCM_SEG(0x00,0x0f); //06位清0;
LCM_SEG(0x00,0x02); //11位清0;
LCM_SEG(0x00,0x00); //12位清0;
LCM_SEG(0x00,0x1b); //5种字符位清0;
LCM_SEG(0x00,0x1c); //13位清0;
LCM_SEG(0x00,0x1e); //14位清0;
}
//###################################################
//.......................................................
void main(void)
{
#if XF_MCU==0
WDTCTL=WDTPW+WDTHOLD; //停止WDT
P6DIR|=BIT0+BIT1+BIT2; //P6.0,P6.1,P6.2.为LCM141输出;
#endif
LCM_INIT(); //LCM141初始化
DISDATA(); //显示数1~9
CLR_LCM141(); //LCM141清数码子程序
DISDATA(); //显示数1~9
}
void DISDATA(void) //显示数1~9
{LCM_SEG(coding_up[1],0x19); //01位
LCM_SEG(coding_up[2],0x17); //02位
LCM_SEG(coding_up[3],0x15); //03位
LCM_SEG(coding_up[4],0x13); //04位
LCM_SEG(coding_up[5],0x11); //05位
LCM_SEG(coding_down[0],0x04); //10位
LCM_SEG(coding_down[9],0x06); //09位
LCM_SEG(coding_down[8],0x08); //08位
LCM_SEG(coding_down[7],0x0a); //07位
LCM_SEG(coding_up[6],0x0f); //06位
LCM_SEG(coding_down[1],0x02); //11位
LCM_SEG(coding_down[2],0x00); //12位
LCM_SEG(coding_down[3],0x1c); //13位
LCM_SEG(coding_down[4],0x1e); //14位
}
void DELAYMS(uint abc)
{uint ac;
while(abc>0)
{abc--;
ac=60;
while(ac>5)
ac--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -