/*
************************************************************
* 液晶显示命令字定义
************************************************************
*/
const u8 TAB_REST[9] =
{
0b00000001,/*打开系统振荡器命令*/
0b00000011,/*打开LCD 偏压发生器命令*/
0b00000101,/*WDT 溢出标志输出失效命令*/
0b00000110,/*时基输出使能命令*/
0b00011000,/*系统时钟源片内RC振荡器命令*/
//0b00101001,/*LCD1/3偏压选项4个公共口命令*/
0b01000000,/*声音频率4KHz命令*/
0b00001000,/*关闭声音输出命令*/
0b10100000,/*时基/WDT 时钟输出1Hz命令*/
0b10000000/*禁止/IRQ 输出有效命令*/
};
/*
************************************************************
* Start
*
* 功能描述:启动1622
* 参 数 :无
* 返回值 :无
************************************************************
*/
void Start(void)
{
CS = HIGH;
WR = HIGH;
DATA = HIGH;
Delay1622();
Delay1622();
CS = LOW;
Delay1622();
}
/*
************************************************************
* Stop
*
* 功能描述:停止信号
* 参 数 :无
* 返回值 :无
************************************************************
*/
void Stop(void)
{
WR = HIGH;
CS = HIGH;
DATA = HIGH;
Delay1622();
}
/*
************************************************************
* Write1622
*
* 功能描述:写数据到1622
* 参 数 :无
* 返回值 :无
************************************************************
*/
void Write1622(void)
{
u8 i,j,data;
Start();
Send(0xA0,3);
Send(0x00,6);
for(i = 0;i < 26;i++){
data = LcdBuffer[i];
for(j = 0;j < 8;j++){
if(data & 0x01)
DATA = HIGH;
else
DATA = LOW;
WR = LOW;
Delay1622();
WR = HIGH;
Delay1622();
data >>= 0x01;
}
}
Stop();
}
/*
************************************************************
* Command1622
*
* 功能描述:1622初始化
* 参 数 :无
* 返回值 :无
************************************************************
*/
void Command1622(void)
{
u8 i;
Start();
Send(0x80,3);
for(i = 0;i < 9;i++){
Send(TAB_REST[i],8);
Send(0x00,1);
}
Stop();
}
/*
************************************************************
* Delay1622
*
* 功能描述:延时一段时间
* 参 数 :无
* 返回值 :无
************************************************************
*/
void Delay1622(void)
{
u8 i;
for(i = 0;i < 5;i++);
return;
}
/*
************************************************************
* Send
*
* 功能描述:写一个字节的数据
* 参 数 :Writebuffer(待写入数据),BitLength(写入数据长度)
* 返回值 :无
************************************************************
*/
void Send(u8 Writebuffer,u8 BitLength)
{
u8 i;
for(i = 0;i < BitLength;i++)
{
if(Writebuffer & 0x80)
DATA = HIGH;
else
DATA = LOW;
WR = LOW;
Delay1622();
WR = HIGH;
Delay1622();
Writebuffer <<= 1;
}
}
大家帮忙看一下程序上是否有问题,通过示波器看波形没问题的,但是一直显示不了(或者说是很淡,基本看不清),硬件上VLCD通过一个1K电阻都VDD(5V),除了三根信号线(CS,WR,DATA)外其他没有接.先谢过大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>