📄 1621a.c
字号:
PDC605驱动程序---也就是HT1621的驱动程序
changning 发表于 2005-12-12 13:20:12
/************************************************************
*PDC-605液晶显示驱动程序
*Author:昌宁
*2005-4-9 11:10
*************************************************************/
#include"PDC605.h"
unsigned char code num[17] = {0xbe,0x06,0x7c,0x5e,0xc6,
0xda,0xfa,0x0e,0xfe,0xde,
0xe6,0xb0,0x20,0x02,0x00,//H,L, 前后冒号
0xee,0xa8,};//R,T
extern uint Temperature;
extern void delay(uint n);
extern void TemperatuerResult(void);
/************************************************************
*Function:LCD的初始化
*parameter:
*Return:
*Modify:
*************************************************************/
void LcdIni(void)
{
LcdCs = 1;
LcdClk = 1;
LcdData = 1;
LcdWriteCom(sys_en);
LcdWriteCom(lcd_osci);
LcdWriteCom(lcd_bias);
LcdWriteCom(lcd_0n);
}
/************************************************************
*Function:向LCD发送0或1
*parameter:
*Return:
*Modify:
*************************************************************/
void LcdWriteBit(bit i)
{
LcdClk = 0;
LcdData = (i==1)? 1:0;
LcdClk = 1;
}
/************************************************************
*Function:向LCD写命令函数,100
*parameter:
*Return:
*Modify:
*************************************************************/
void LcdWriteCom(uchar aa)
{
uchar i,tt;
LcdCs = 0;
LcdWriteBit(1);
LcdWriteBit(0);
LcdWriteBit(0);
for(i=0;i<8;i++)
{
tt = aa & 0x80;
if(tt == 0x80)
LcdWriteBit(1);
else
LcdWriteBit(0);
aa <<= 1;
}
LcdWriteBit(0);
LcdClk = 1;
LcdCs = 1;
}
/************************************************************
*Function:向LCD写数据函数,101
*parameter:
*Return:
*Modify:
*************************************************************/
void LcdWriteData(uchar aa,uchar bb)
{
uchar i,tt;
LcdCs = 0;
LcdWriteBit(1);
LcdWriteBit(0);
LcdWriteBit(1);
aa <<= 2;
for(i=0;i<6;i++)//写地址
{
tt = aa & 0x80;
if(tt == 0x80)
LcdWriteBit(1);
else
LcdWriteBit(0);
aa <<= 1;
}
for(i=0;i<8;i++)//写RAM值
{
tt = bb & 0x80;
if(tt == 0x80)
LcdWriteBit(1);
else
LcdWriteBit(0);
bb <<= 1;
}
LcdClk = 1;
LcdCs = 1;
}
/************************************************************
*Function:显示一个数
*parameter:aa为地址,dd为数值
*Return:
*Modify:2005-4-15 11:50
*************************************************************/
void LcdDis(uchar aa,uchar dd)
{
aa *= 2;
LcdWriteData(aa,num[dd]);
}
/************************************************************
*Function:显示温度
*parameter:
*Return:
*Modify:2005-4-16 8:52
*************************************************************/
void DisTemp()
{
uchar aa;
uint Temp = 0;
for(aa=0;aa<10;aa++)
{
Temperature = 0;
TemperatuerResult();
Temp += Temperature;
delay(1000);
}
Temp = Temp / 10;
aa = (uchar)Temp;
LcdDis(1,(aa/10));
LcdDis(2,(aa%10));
}
以下为头文件
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define RST ((void(code *)(void))0x0000)
#define sys_dis 0x00
#define sys_en 0x01
#define lcd_0ff 0x02
#define lcd_0n 0x03
#define lcd_osci 0x18//RC256
#define lcd_bias 0x29
sbit LcdClk = P1^3;
sbit LcdData = P1^2;
sbit LcdCs = P3^4;
void LcdIni(void);
void LcdWriteCom(uchar aa);
void LcdWriteData(uchar aa,uchar bb);
void LcdDis(uchar aa,uchar dd);
void DisTemp();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -