标题:
51单片机LCM19264驱动程序
[打印本页]
作者:
liuda
时间:
2015-1-23 01:01
标题:
51单片机LCM19264驱动程序
也许是我在焊LCD排针时,静电击坏了LCM模组,连STC12C5A60S2的与之相连接的端口也损坏了,
难怪用示波器测试数据端口有的有波形,有的无波形;
程序协议都看了但没看出问题,所以我只能认为是PCB有问题了;
昨晚通过点亮LCD上第一个点,发现正常;
稍许松了口气;再次验证,有了本文的起笔。。。嘿嘿!看单片机点亮LCD第一个点的程序!
#include <reg51.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
sbit Lcd_Rst = P1^5;
sbit Lcd_Csb = P1^4;
sbit Lcd_Csa = P1^3;
sbit Lcd_Rs = P1^2;
sbit Lcd_Rw = P1^1;
sbit Lcd_En = P1^0;
sbit Rst_1302 = P3^2;
sbit Dio_1302 = P3^3;
sbit Sck_1302 = P3^4;
sbit BL = P2^1;
sbit BUZ = P2^0;
sbit Led = P2^3;
sbit Key_1=P2^5;
sbit Key_2=P2^6;
sbit Key_3=P2^7;
uchar Time_Count,Key_Select,Beep_time,Beep,BP_Count,Key_count,Key_flag,Key_long_flag;
uchar Year=0x12,Month=0x05,Date=0x05,Week=0x01,Sec=0x00,Min=0x00,Hour=0x12;
uchar Yearh,Yearl,Monthh,Monthl,Dateh,Datel,Hourh,Hourl,Minl,Minh,Secl,Sech;
uint BLT_Count;
uchar BLT_Sec;
//----------------------------------------------------------------------------------------
void Delay_ms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=1220;j>0;j--)
{;}
}
void Delay_us(uint us)
{
while(us--);
}
//chip selection signal CSB CSA Selection
// 0 0 IC1
// 0 1 IC2
// 1 0 IC3
// 1 1 None
//----------------------------------------------------------------------------------------
void Busy()
{
Lcd_Rw=1;
Lcd_Rs=0;
P0=0xff;
Lcd_En=1;
_nop_();
while(P0&0x80);
_nop_();
Lcd_En=0;
}
//WR_DATA&CMd
void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
{
Lcd_Csa=a;
Lcd_Csb=b;
Busy();
Lcd_Rs=c;
Lcd_Rw=0;
Lcd_En=1;
_nop_();
P0=lcddata;
_nop_();
Lcd_En=0;
Lcd_Csa=1;
Lcd_Csb=1;
Lcd_Rs=1;
Lcd_Rw=1;
}
//LCM INITIAL
void initallcd(void)
{
Lcd_Csa=1;
Lcd_Csb=1;
Lcd_En=0;
Lcd_Rst=0;
Delay_ms(50);
Lcd_Rst=1;
Delay_ms(50);
wrdata(0,0,0,0x3E);
Delay_ms(5);
wrdata(0,1,0,0x3E);
Delay_ms(5);
wrdata(1,0,0,0x3E);
Delay_ms(5);
wrdata(0,0,0,0x3F);
Delay_ms(5);
wrdata(0,1,0,0x3F);
Delay_ms(5);
wrdata(1,0,0,0x3F);
Delay_ms(5);
}
//----------------------------------------------------------------------------------------
void Clear(uchar dat)
{
uchar i,j;
uchar page=0xb8;
for(i=0;i<8;i++)
{
wrdata(0,0,0,page|i);
wrdata(0,0,0,0x40);
wrdata(0,0,0,0xc0);
wrdata(0,1,0,page|i);
wrdata(0,1,0,0x40);
wrdata(0,1,0,0xc0);
wrdata(1,0,0,page|i);
wrdata(1,0,0,0x40);
wrdata(1,0,0,0xc0);
for(j=0;j<64;j++)
{
wrdata(0,0,1,dat);
wrdata(0,1,1,dat);
wrdata(1,0,1,dat);
}
}
}
void SetPoint(uchar k)
{
wrdata(0,0,0,0xb8);
wrdata(0,0,0,0x40);
wrdata(0,0,0,0xc0);
wrdata(0,0,1,k);
}
//----------------------------------------------------------------------------------------
void Beep_Bi(void)
{
if(Beep_time!=0)
{
Beep_time--;
BUZ=~BUZ;
}
else
{
BUZ=0;
}
}
//----------------------------------------------------------------------------------------
void TM_ini(void)
{
TMOD=0x12;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
TR1=1;
ET1=1;
TH0=6;
TL0=6;
TR0=0;
ET0=1;
EA=1;
}
//----------------------------------------------------------------------------------------
void TM1(void)interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
Key_1=1;
if(Key_1==0)
{
Key_count++;
if(Key_count==2)
{
//Beep_time=150;
Key_flag=1;BLT_Sec=0;
TR0=1;BL=1;Led=0;
Key_Select++;
if(Key_Select==3)
{
Key_Select=0;Key_flag=0;
}
}
}
else
{Key_count=0;Key_flag=0;}
}
//----------------------------------------------------------------------------------------
void TM0(void)interrupt 1
{
TF0=0;
BLT_Count++;
BP_Count++;
if(BP_Count==2)
{
BP_Count=0;
Beep_Bi();
}
if(BLT_Count==2000)
{
BLT_Count=0;Led=~Led;BLT_Sec++;
if(BLT_Sec==15)
{
BL=0;BLT_Sec=0;Led=0;
}
}
//}
}
//----------------------------------------------------------------------------------------
void main(void)
{
P2=0xf8;
initallcd();
Clear(0x00);
//TM_ini();
while(1)
{
SetPoint(0x01);
}
}
复制代码
作者:
a56578088
时间:
2017-3-30 15:38
0x3e;0x3f;0xc0;0xb8;0x40 这些都是什么功能
作者:
Liangkan
时间:
2018-3-19 15:29
这个程序不是19264的,19264是分三片的,这个程序呈有CSA,CSB,只是两片,应该是一个12864的。
作者:
electmo
时间:
2021-3-18 21:54
我手上也是CSA,CSB的MS19264C
作者:
留住这一刻2014
时间:
2021-3-30 12:19
没有那么脆弱吧!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1