⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1621驱动.txt

📁 1621驱动程序 C代码 环境:pic 功能:把数据传送到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 + -