|
发表于 2016-5-12 10:23:35
|
显示全部楼层
这是我的完整程序
#include <stdint.h>
#include "LPC17xx.h"
#include "type.h"
#include "1754_IO.h"
#include "1754_LCD.h"
#define uchar unsigned char
#define uint unsigned int
#define tim 50
/*********************************************************************************************************
** Function name: delay
** Descriptions: 软件延时 100us
*********************************************************************************************************/
void delay(uint t)
{
uint i,j;
for(i = 0;i < t;i++)
{
for(j = 0;j < 1000;j++) ;
}
}
extern void Write_Bit_L(uint data, uchar cnt);
extern void Write_Bit_H(uint data, uchar cnt);
uchar a[22]={0xff,0xff,0xff,0x00,0xaa,0xff,0x55};
//////////////////////////////////////////////////////
//延时 us
void delayus(uchar us)
{
while(us--);
}
//延时 ms
void delayms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<65;j++)
{
delayus(tim);
}
}
//写字节
void HT1622_WR_Data(uchar data,uchar cnt)
{
uchar i;
for(i=0;i<cnt;i++)
{
HT1622_WR_L;
delayus(tim);
if((data&0x80)==0x80)
{
HT1622_DATA_H;
}
else
{
HT1622_DATA_L;
}
delayus(tim);
HT1622_WR_H;
delayus(tim);
data<<=1;
}
}
//指定地址写数据
void HT1622_WR_Addr_Data(uchar addr,uchar data)
{
HT1622_CS_L;
HT1622_WR_Data(0xa0,3);//101
HT1622_WR_Data(addr,6);//addre
HT1622_WR_Data(data,4); //data
HT1622_CS_H;
}
//连续写数据
void HT1622_ALL_Data(void)
{
uchar i;
HT1622_CS_L;
HT1622_WR_Data(0xa0,3);
HT1622_WR_Data(0x00<<2,6);
for(i=0;i<16;i++)
{
HT1622_WR_Data(0xaa,8);
}
HT1622_CS_H;
}
//写命令
void HT1622_CMD(uchar cmd)
{
HT1622_CS_L;
delayus(tim);
// HT1622_WR_Data(0x80,3);
// HT1622_WR_Data(cmd,8);
HT1622_WR_Data(0x80,3);
HT1622_WR_Data(cmd,9);
HT1622_CS_H;
}
//初始化
void HT1622Int(void)
{
HT1622_CS_H;
HT1622_WR_H;
HT1622_DATA_H;
delayms(20);
HT1622_CMD(0x30); //内部晶振
HT1622_CMD(0x00); //关闭系统振荡器和LCD偏置发生器
HT1622_CMD(0x0a); //禁止 WDT 溢出标志输出
HT1622_CMD(0x02); //打开系统振荡器
HT1622_CMD(0x06); // 打开 LCD
}
///TES1**********
/////////////////////////////////////////////////////
int main(void)
{
unsigned char i;
SystemInit();
GPIO_Init(); //初始化GPIO
// HT1622_Init();
/////////////////////////
HT1622Int();
delayms(50);
while(1)
{
//HT1622_ALL_Data();
delayms(500);
HT1622_WR_Addr_Data(0x80,0x55);
delayms(500);
}
}
|
|