📄 lcm.c
字号:
#include <msp430x14x.h>
#include "worddot.h"
#define uchar unsigned char
#define lcd_set_di() (P2OUT |= BIT5)
#define lcd_set_rw() (P2OUT |= BIT6)
#define lcd_set_e() (P2OUT |= BIT7)
#define lcd_set_cs1() (P2OUT |= BIT4)
#define lcd_set_cs2() (P2OUT |= BIT3)
#define lcd_set_cs3() (P2OUT |= BIT2)
#define lcd_clear_cs1() (P2OUT &= ~BIT4)
#define lcd_clear_cs2() (P2OUT &= ~BIT3)
#define lcd_clear_cs3() (P2OUT &= ~BIT2)
#define lcd_clear_di() (P2OUT &= ~BIT5)
#define lcd_clear_rw() (P2OUT &= ~BIT6)
#define lcd_clear_e() (P2OUT &= ~BIT7)
#define lcd_busy 0x80 // BUSY位
#define lcd_read_status() (P3IN & lcd_busy) // 判断BUSY位
#define DISPON 0x3f //显示?on
#define DISPOFF 0x3e //显示off
#define DISPFIRST 0xc0 //起始行
#define SETX 0x40
#define SETY 0xb8
#define MODL 0x00
#define MODM 0x40
#define MODR 0x80
#define LCMLIMIT 0xC0
unsigned char cbyte,col,row,xi;
void initclk(void);
void writecmdl(unsigned char x) ;
void writecmdm(unsigned char x) ;
void writecmdr(unsigned char x) ;
void writedata(unsigned char x);
void lcdbusyl(void);
void lcdbusym(void);
void lcdbusyr(void);
void combusy(void);
void delay(unsigned int ms);
void Lcminit(void);
void Lcmcls(void);
void putstr (uchar x,uchar y , const uchar *p_data,uchar i);
void putdot (uchar x, uchar y ,const uchar *p_byte,uchar order,uchar wide);
void Locatexy(uchar i,uchar j);
void nop(void);
void writecmd(unsigned char x);
void hz_disp16(unsigned char pag,unsigned char col, unsigned char *hzk);
void disdot(uchar x,uchar y ,const uchar *p_a);
const uchar str1[] ={0x80,0x81,0x82,0x83,0x84,0x85,
0x86,0x87,0x88,0x89,0x8a,0x8b};
const uchar str2[] = "Waltrontech";
void main(void)
{
//uchar x;
WDTCTL = WDTPW + WDTHOLD;
P3DIR = 0XFF;
P2DIR = 0XFF;
P1DIR = 0XFF;
P1OUT = 0XF0;
initclk();
delay(5);
Lcminit();
putstr(0,0,str1,12);
putstr(2,54,str2,11);
while(1)
{
/* for ( x= 64 ; x > 0 ; x--)
{
writecmdl(DISPFIRST | x);
writecmdm(DISPFIRST | x);
writecmdr(DISPFIRST | x);
delay(1000);
}
}
}
void initclk(void)
{
unsigned char i;
BCSCTL1 &= ~(XT2OFF + XTS);
BCSCTL2 |= SELM1;
do
{
IFG1 &= ~OFIFG;
for ( i = 0xff ; i > 0 ;i--);
}
while((IFG1 & OFIFG) != 0);
}
void Lcminit(void)
{
unsigned char cbyte;
cbyte = DISPOFF;
writecmdl(cbyte);
writecmdm(cbyte);
writecmdr(cbyte);
cbyte = DISPON;
writecmdl(cbyte);
writecmdm(cbyte);
writecmdr(cbyte);
cbyte = DISPFIRST;
writecmdl(cbyte);
writecmdm(cbyte);
writecmdr(cbyte);
Lcmcls();
}
void Lcmcls( void ) //?????
{
//unsigned char col,row;
for(row=0;row<8;row++)
{
for(col=0;col<0xc0;col++)
{
Locatexy(row,col);
writedata(0x00);
}
}
}
void combusy(void) //BUSY位判断,等待BUSY为0
{
P3OUT = 0XFF;
P3DIR = 0 ;
lcd_clear_di();
lcd_set_rw();
lcd_set_e();
nop();
while (P3IN & 0X80);
lcd_clear_e();
P3DIR = 0XFF;
}
void writedata(unsigned char x) //D'陏?Yo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -