初级会员
- 积分
- 95
- 金钱
- 95
- 注册时间
- 2016-3-16
- 在线时间
- 30 小时
|
5金钱
各位大神,在使用单片机控制液晶的程序是,使用单片机的掉电模式使其进入待机状态,进入待机状态时关闭液晶电源,达到熄屏的效果,单片机唤醒后,立即打开液晶电源,液晶无显示。部分程序如下:#define CKSEL (*(uchar volatile xdata *)0xfe00)
#define CLKDIVE (*(uchar volatile xdata *)0xfe01)
#define IRC24MCR (*(uchar volatile xdata *)0xfe02)
sfr P_SW2=0xba;
sfr P1M0=0x92;
sfr P1M1=0x91;
sfr P3M0=0xb2;
sfr P3M1=0xb1;
sfr P5M0=0xca;
sfr P5M1=0xc9;
sbit _VCC=P1^1; //液晶电源控制引脚,高电平有效
sbit _DAT=P1^6; //HT1621数据引脚
sbit _CS=P1^4; //HT1621使能引脚
sbit _WR=P1^5; //HT1621时钟引脚
sbit _Vlcd=P1^7;//液晶/背光控制引脚,低电平有效
sbit KEY=P1^0;
uchar code table1[]={0xaf,0x06,0x6d,0x4f,0xc6,0xcb,0xeb,0x0e,0xef,0xcf};//数码1~4显示0~9元素
uchar code table2[]={0xfa,0x60,0xd6,0xf4,0x6c,0xbc,0xbe,0xe0,0xfe,0xfc};
uint sum1=0,sum=50; //sum为波形数量
uchar sum2=0;
void delay_ms(uint z) //主时钟频率24MHz
{
uchar i=24, j=85;
while(z--)
{
do
{
while (--j);
} while (--i);
}
}
void Init()
{
P_SW2=0x80;
CKSEL=0x00;
P_SW2=0x00;
P1M0=0x00;
P1M1=0x01;
P3M0=0x00;
P3M1=0x00;
TMOD=0x00;
IT0=1;
EX0=1;
TR0=1;
ET0=1;
EA=1;
_Vlcd=0;
_VCC=1;
}
void main()
{
Init();
LCD_Init();
while(1)
{
if(KEY==0)
{
delay_ms(10);
if(KEY==0)
{
ET0=0;
_Vlcd=1; //关闭液晶背光灯及液晶驱动电源
PCON=0x02;
}
}
sum2=sum%16;
sum1=sum/16;
display2(sum1,sum2,0,0,0,0);
delay_ms(1);
}
}
void INIT0() interrupt 0
{
ET0=1;
_Vlcd=0;
}
void Timer0() interrupt 1
{
uint m;
TL0=0x40;
TH0=0xA2;
m++;
if(m==1000)
{
m=0;
sum++;
}
}
|
最佳答案
查看完整内容[请看2#楼]
在进入掉电模式时,原来写入1621B的命令将会全部丢失掉,需要重新写入。在外部中断子函数里,再次对液晶进行初始化就可以了
|