📄 2.txt
字号:
/****************************************
2009年3月4日下午修订
****************************************/
#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 CLOSE();//关屏
void OPEN();//开屏
void delay(unchar n);//延时
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()
{
unchar i,j,m,n;
initia();//初始化屏幕
display_no();//全不显
//CLOSE();//关屏
//OPEN();//开屏
while(1)
{
display_no();//全不显
delay(200);
for(j=0;j<36;j++)
{
n=2;
for(m=0;m<4;m++)
{
//display_no();//全不显
wr_b(j,n);//字符地址
if(n==16)
{
wr_b(j,30);//字符地址
}
delay(30);
n=n*2;
}
if(j==35)
{
display_no();//全不显
delay(200);
display_all();//全显
delay(200);
display_no();//全不显
delay(200);
display_all();//全显
delay(200);
delay(200);
}
//display_no();//全不显
//display_all();//全显
}
}
}
void CLOSE()
{
wr_ID(0x80);
wr_command(0x02);
}
void OPEN()
{
wr_ID(0x80);
wr_command(0x03);
}
void delay(unchar n)
{
unchar i,j;
for(i=0;i<n;i++)
{
for(j=0;j<250;j++)
;
}
}
void wr_b(unchar add,unchar data)//写字符地址
{// add-0-36;data-2-16;
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<5;j++)
{
if((data&0x01)==0x01)
wr1622_Dt=1;
else
wr1622_Dt=0;
wr1622_Wr=0;
wr1622_Wr=1;
data>>=1;
}
wr1622_Wr=0;
}
void wr_ID(unchar id)//写ID
{
unchar i;
wr1622_Cs=0;
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 display_all(void)//全显
{
unchar i;
for(i=0;i<=36;i++)
{
wr_b(i,30);
}
}
void display_no(void)//全不显
{
unchar i;
for(i=0;i<=36;i++)
{
wr_b(i,0);
}
}
void initia(void)//初始化屏幕
{
TRISDbits.TRISD0=0;
TRISDbits.TRISD1=0;
TRISCbits.TRISC4=0;
wr1622_Cs=1;
wr1622_Cs=0;
wr_ID(0x80);
wr_command(0x01);//打开系统振荡器
wr_command(0x03);//打开LCD偏置发生器
//wr_command(0x29);//1/4 duty,1/3 bias
wr1622_Cs=1;
wr1622_Cs=0;
wr1622_Wr=0;
}
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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -