📄 xs.c
字号:
/****************************************************************************
文件名:xs.c 显示 液晶 141
ACLK:32.768kHz
*****************************************************************************/
//1,2,k,d,A,F,q
//0x37=q, 0xe6=d ,0x77=A ,0x70=K, 0x76=H 0x71=F
unsigned char TABDA[30]={0xD7, 0x06,0xE3,0xA7,0x36,0xB5,0xF5
,0x07,0xF7,0xB7,0x00,0x06,0xE3,0x70,0xe6,0x77, 0x71,0x37,0x00,
0xDF , 0x0E,0xEB,0xAF,0x3E,0xBD,0xFD,0x0F,0xFF,0xBF,0x00};
void DLY25 (void) //延时
{unsigned int i; for( i=0;i<450;i++) {_NOP();_NOP();}}
void DLY500(void) //延时
{ unsigned char i; for( i=0;i<5;i++) { DLY25(); DLY25();} }
void D1(void)// 写一位#1
{ P3OUT &= ~BIT6;_NOP(); P3OUT|= BIT7; _NOP(); P3OUT|= BIT6; _NOP(); }
void D0(void)// 写一位#0
{P3OUT &= ~BIT6; _NOP(); P3OUT &= ~BIT7; _NOP();P3OUT|= BIT6; _NOP();}
void WRCOM(unsigned char aa) //写#100+8个输入位 aa
{ unsigned char i ; //100+cccccccc8命令+0=12位 141液晶 显示参数
P3OUT|= BIT5; _NOP(); P3OUT &= ~BIT5;_NOP(); D1(); D0(); D0();
for( i=0;i<8;i++) { _NOP(); P3OUT &= ~BIT6; _NOP();
if((aa & 0x80)==0) //写#100+8个输入位 @@@@@@@@@@@@@
P3OUT&= ~BIT7; else P3OUT |= BIT7;
_NOP(); P3OUT|= BIT6; aa=aa<<1; } _NOP(); D0();
} //100+aa(8)+0=12个位 (命令)
void W9 (unsigned char dz) //写(地址) 9个位 D1(); D0(); D1(); D0(); =1010
{ unsigned char i; P3OUT|= BIT5; _NOP(); P3OUT &= ~BIT5;//CS=1 CS=0
_NOP(); D1(); D0(); D1(); D0();
for( i=0;i<5;i++) // 写#1010+ dz 5个数 =4+5=9 个位
{ _NOP() ; P3OUT &= ~BIT6; _NOP(); //WR=0 P3.3
if((dz & 0x10)==0) //写 5个输入位 dz
P3OUT&= ~BIT7; else P3OUT |= BIT7; _NOP(); P3OUT|= BIT6;
dz=dz<<1;} _NOP();
} // 1010+dz(5)= 9 个位(地址)
void W4 (unsigned char sz) //写4个数位
{ unsigned char j; for( j=0;j<4;j++) { _NOP(); P3OUT &= ~BIT6; _NOP();
if((sz &128)==0) //写4个数位
P3OUT&= ~BIT7; else P3OUT |= BIT7; _NOP(); P3OUT|= BIT6; sz<<=1; }
_NOP(); P3OUT|= BIT5; _NOP();
} // sz(4)=4个位
void W13 (unsigned char n ,unsigned char m) //写13个位 下行 m段 n数
{unsigned char i; m=m*2; //2个地址一个字 0-15
for(i=0;i<2;i++){W9 (m); W4 (n); m++ ; n <<=4 ;}
} // 1010+yt(4)+0+sz(4) = 1010+(4)+0+(4) =13 位
//101+0+aaaaa5地址+dddd4数据
void W12 (unsigned char sz ,unsigned char yt) //写13个位 上行
{unsigned char i; yt=((13-yt)*2)-1; //2地址一个字 0-15
for(i=0;i<2;i++){W9 (yt); W4 (sz); yt++ ; sz <<=4 ;}
} // 1010+yt(4)+0+sz(4) = 1010+(4)+0+(4) =13 位
//101+0+aaaaa5地址+dddd4数据
void kh3(unsigned char i,unsigned char j,unsigned char m) //光标一位 i数 j小数定位, m段
{ if(m==j) i=i+19; W12(TABDA2[i],m); } // 地址为 m,if(m==j)j=小数0-4 p项目
void kh2(unsigned char i,unsigned char j,unsigned char m) //光标一位 i数 j小数定位, m段
{ if(m==j) i=i+19;if(m==0) m=15; else; m=m-1; // m段= j小数定位 是小数位 a[8][m]
W13(TABDA[i],m); } // 显示 i i==1位数 ,地址为 m,if(m==j)j=小数0-4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -