📄 new lcd.c
字号:
#include "p33FJ64GP206.h"
#define unchar unsigned char
#define wr1622_Wr PORTBbits.RB9 //WR
#define wr1622_Dt PORTBbits.RB10 //DATA
#define wr1622_Cs PORTBbits.RB7
void wr_b(unchar add,unchar data);//字符地址
void wr_ID(unchar id);//写ID
//void display_all(void);//全显
//void display_no(void);//全不显
void initia(void);//初始化屏幕
void wr_command(unchar command);//写命令
void main()
{
SRbits.IPL = 1; //CPU interrupt priority level is 1
CORCONbits.IPL3 = 0; //CPU interrupt priority level is 7 or less
INTCON1bits.NSTDIS = 1; //Interrupt nesting is enabled
AD1PCFGH=0xffff;
AD1PCFGL=0xffff;
TRISBbits.TRISB7=0;
TRISBbits.TRISB9=0;
TRISBbits.TRISB10=0;
initia();//初始化屏幕
while(1)
{
wr1622_Cs=1;
wr1622_Cs=0;
wr_b(2,3);//字符地址
wr1622_Cs=1;
}
}
void initia(void)
{
TRISBbits.TRISB7=0;
TRISBbits.TRISB9=0;
TRISBbits.TRISB10=0;
TRISBbits.TRISB8=1;
wr_ID(0x80);
wr_command(0x01);//打开系统振荡器
wr_command(0x03);//打开LCD偏置发生器
wr_command(0xe3);//1/4 duty,1/3 bias
wr_command(0x19);
wr_command(0x07);
wr_command(0x40);
wr1622_Cs=1;
wr1622_Cs=0;
}
void wr_ID(unchar id)
{
unchar i;
wr1622_Cs=1;
wr1622_Cs=0;
for(i=0;i<3;i++)
{
if((id&0x80)==0x80)
wr1622_Dt=1;
else
wr1622_Dt=0;
wr1622_Wr=0;
wr1622_Wr=1;
id<<=1;
}
}
void wr_command(unchar command)
{
unchar i;
for(i=0;i<9;i++)
{
if((command&0x80)==0x80)
wr1622_Dt=1;
else
wr1622_Dt=0;
wr1622_Wr=0;
wr1622_Wr=1;
command<<=1;
}
}
void wr_b(unchar add,unchar data)
{
unchar k,j;
wr_ID(0xa0);//写ID
for(k=0;k<6;k++)
{
if((add&0x20)==0x20)
wr1622_Dt=1;
else
wr1622_Dt=0;
wr1622_Wr=0;
wr1622_Wr=1;
add<<=1;
}
for(j=0;j<4;j++)
{
if((data&0x01)==0x01)
wr1622_Dt=1;
else
wr1622_Dt=0;
wr1622_Wr=0;
Nop();
wr1622_Wr=1;
data>>=1;
}
wr1622_Wr=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -