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

📄 1621a.c

📁 PDC605驱动程序,用于液晶屏驱动,采用SPI接口,适合单片机,LINUX驱动程序用
💻 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 + -