📄 1621驱动.txt
字号:
#include <pic.h>
#include "picc_config.h"
#include "head.h"
//一下C代码仅供参考。如果你连BIAS1/2/3/4都还没有搞清的话,
// 先别看下面的代码,看液晶驱动的原理和1621数据手册先.
//uchar lcdi,lcdj,lcdk; //lcdi ,lcdk 循环计数 lcdj =6位地址
uchar dis[] = {0xFF,0XFF,0XFF,0xFF,0xFF,\
0xFF,0xFF,0xFF,0xFF,0xFF};
void dis_clr(void)
{
uchar *dp;
uchar lcdi;
dp = dis;
for(lcdi=0;lcdi<10;lcdi++)
*(dp+lcdi) = 0;
}
//发1621命令控制字
//w1=命令字
void LCD_CMD(uint w1)
{
uchar lcdi;
LCD_CS = 0;
for (lcdi=12;lcdi>0;lcdi--)
{
LCD_DA=((w1&0x8000)!=0);
LCD_CK = 0;
LCD_CK = 1;
w1 <<= 1;
}
LCD_CS = 1;
LCD_DA = 1;
}
//初始化1621
void LCD_setup(void)
{
T_CS = 0;
T_CK = 0;
T_DA = 0;
LCD_CMD(NORMAL);
LCD_CMD(IRQ_DI);
LCD_CMD(WDT_DI);
LCD_CMD(XTAL_32K); //RC_256K;
LCD_CMD(BAIS_4);
LCD_CMD(TONE_OFF);
LCD_CMD(SYS_EN);
LCD_CMD(LCD_ON);
// T_CS = 1;
// T_CK = 1;
// T_DA = 1;
}
//关闭1621
void LCD_end(void)
{
T_CS = 0;
T_CK = 0;
T_DA = 0;
LCD_CMD(LCD_OFF);
LCD_CMD(SYS_DIS);
LCD_CS = 1;
LCD_DA = 1;
LCD_CK = 1;
// T_CS = 1;
// T_CK = 1;
// T_DA = 1;
}
//发送显示数据引导
void LCD_WRITE_HEAD(void)
{
LCD_DA = 1; //1
LCD_CK = 0;
LCD_CK = 1;
LCD_DA = 0; //0
LCD_CK = 0;
LCD_CK = 1;
LCD_DA = 1; //1
LCD_CK = 0;
LCD_CK = 1;
}
/*************************************
//LCD送全部显示码
//输入: lcdk = 连续 4位
// lcdj = 0x00
void LCD_disp(void)
{
uchar *dp;
uchar lcdi,lcdj,lcdk; //lcdi ,lcdk 循环计数 lcdj =6位地址
T_CS = 0;
T_CK = 0;
T_DA = 0;
LCD_CS = 0;
LCD_WRITE_HEAD();
lcdj= 0x00;
for (lcdi=6;lcdi>0;lcdi--) { //set offset address
LCD_DA=((lcdj&0x20)!=0);
LCD_CK=0;
LCD_CK=1;
lcdj<<=1;
}
dp = dis;
for (lcdk=10;lcdk>0;lcdk--){ //发10个字节
lcdj = *dp;
for (lcdi=8;lcdi>0;lcdi--) { //data output
LCD_DA = ((lcdj&0x01)!=0);
LCD_CK = 0;
LCD_CK = 1;
lcdj >>= 1;
}
dp++;
}
LCD_CS = 1;
LCD_DA = 1;
LCD_CK = 1;
// T_CS = 1;
// T_CK = 1;
// T_DA = 1;
}
*************************************/
//LCD 送显示码
//输入:
// address = 偏移地址 (偶数)
// number = 字节数
void LCD_ref(uchar address,uchar number)
{
uchar *dp;
uchar lcdi,lcdj,lcdk; //lcdi ,lcdk 循环计数 lcdj =6位地址
T_CS = 0;
T_CK = 0;
T_DA = 0;
LCD_CS = 0;
LCD_WRITE_HEAD();
lcdj = address; // 偏移地址
for (lcdi=6;lcdi>0;lcdi--) { //set offset address
LCD_DA=((lcdj&0x20)!=0);
LCD_CK=0;
LCD_CK=1;
lcdj<<=1;
}
dp = dis;
for (lcdk=number;lcdk>0;lcdk--){ //发 number 个字节
lcdj = *(dp+(address>>1));
for (lcdi=8;lcdi>0;lcdi--) { //data output
LCD_DA = (lcdj&0x01)!=0;
LCD_CK=0;
LCD_CK=1;
lcdj >>= 1;
}
dp++;
}
LCD_CS = 1;
LCD_DA = 1;
LCD_CK = 1;
// T_CS = 1;
// T_CK = 1;
// T_DA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -