📄 lad 2.c
字号:
#include <p18f452.h>
#pragma config OSC = HS, OSCS = OFF
#pragma config PWRT = OFF
#pragma config BOR = OFF
#pragma config WDT = OFF
#pragma config CCP2MUX = OFF
#pragma config LVP = OFF
#define unchar unsigned char
#define wr1622_Wr PORTDbits.RD1 //WR
#define wr1622_Dt PORTDbits.RD0 //DATA
#define wr1622_Cs PORTCbits.RC4
void wr_b(unchar add,unchar data);//字符地址
void wr_ID(unchar id);//写ID
void display_all(void);//全显
void disply_no(void);//全不显
void initialization(void);//初始化屏幕
void wr_command(unchar command);//写命令
void main()
{
initialization();//初始化屏幕
wr_ID(0x80);//写ID
wr_command(0x03);//写命令
//display_all();//全显
//disply_no();//全不显
}
void wr_b(unchar add,unchar data)//字符地址
{// add-0-36;data-2-16;
unchar kk,jj;
wr1622_Wr=0;
for(kk=0;kk<6;kk++)
{
wr1622_Wr=0;
if((add&0x20)==0x20)
wr1622_Dt=1;
else
wr1622_Dt=0;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=1;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=0;
add<<=1;
}
for(jj=0;jj<4;jj++)
{
wr1622_Wr=0;
if((data&0x01)==0x01)
wr1622_Dt=1;
else
wr1622_Dt=0;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=1;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=0;
data>>=1;
}
wr1622_Wr=0;
}
void wr_ID(unchar id)//写ID
{
unchar i;
wr1622_Wr=0;
for(i=0;i<3;i++)
{
if((id&0x80)==0x80)
wr1622_Dt=1;
else
wr1622_Dt=0;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=1;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=0;
id<<=1;
}
wr1622_Wr=0;
}
void display_all(void)//全显
{
unchar i;
wr1622_Cs=0;
for(i=0;i<96;i++)
{
wr_ID(0xa0);
wr_b(i,2);
}
wr1622_Wr=0;
}
void disply_no(void)//全不显
{
unchar i;
wr1622_Cs=0;
for(i=0;i<96;i++)
{
wr_ID(0xa0);
wr_b(i,0);
}
wr1622_Wr=0;
}
void initialization(void)//初始化屏幕
{
TRISDbits.TRISD0=0;
TRISDbits.TRISD1=0;
TRISCbits.TRISC4=0;
wr1622_Cs=1;
_asm
NOP
NOP
NOP
_endasm
wr1622_Cs=0;
wr1622_Wr=0;
wr_ID(0x80);
wr_command(0x01);//打开系统振荡器
wr_command(0x03);//打开LCD偏置发生器
wr_command(0x29);//1/4 duty,1/3 bias
_asm
NOP
NOP
NOP
_endasm
wr1622_Cs=1;
wr1622_Cs=0;
wr1622_Wr=0;
}
void wr_command(unchar command)//写命令
{
unchar i;
wr1622_Wr=0;
for(i=0;i<9;i++)
{
if((command&0x80)==0x80)
wr1622_Dt=1;
else
wr1622_Dt=0;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=1;
_asm
NOP
NOP
NOP
_endasm
wr1622_Wr=0;
command<<=1;
}
wr1622_Wr=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -