单片机TG12864动态汉字液晶显示c程序

2025-12-16 23:11:24
推荐回答(1个)
回答1:

我这里有12864,,有好多程序呢。呵呵。,太多了传不了。QQ492440061。

#include
#include
#include

#define uchar unsigned char #define uint unsigned int
#define dela 4
#define inter 0xb2 //ea,~,t2,serial;,t1,int1,t0,int0
#define wda 0xa0
#define rda 0xa1

#define time 30 #define time2 5
#define ads 0x01
#define func 0xb1

#define clearscreen 0x01
#define acinit 0x02
#define curseadd 0x06
#define funmode 0x30
#define displayon 0x0c
#define displayoff 0x08
#define cursedir 0x14
#define setcgac 0x40
#define setddac 0x80

#define ldata P0 // lcm used
#define keyscan P1 // keyscan

sbit spk =P3^7 ; //music spk
sbit spk2 =P3^6 ; //music spk
sbit spk3 =P3^5 ; //music spk
sbit spk4 =P3^4 ; //music spk

sbit cont =P3^2 ; //485cont
sbit en =P2^7 ; // enable LCM 12864
sbit rw =P2^6 ; // r/w
sbit rs =P2^5 ; // di

sbit sda =P2^1 ; // iic
sbit scl =P2^0 ;

sbit cb =P2^2 ;
sbit cm =P2^3 ;

bit s0,s1,s2,s3,s4,s5,s6,s7,s8,s9 ;
bit g0,g1,g2,g3,g4,g5,g6,g7,g8,g9 ;
bit h0,h1,h2,h3,h4,h5,h6,h7,h8,h9 ;
// bit k0,k1,k2,k3,k4,k5,k6,k7,k8,k9 ;

unsigned char a,b,c,d,e,f,g,h,i,j,k,m,n,mode ;
unsigned char a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 ;
unsigned char b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10 ;
// unsigned char d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10 ;//time delay
// unsigned char f0,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10 ;//time delay

uchar idata tran[7] ; // 16 bit transform data to pc
uchar idata rec[7] ; // received the pc data

uchar idata keysa[4] ;
uchar idata dips[17] ; //
uchar code dipa[10]={'0','1','2','3','4','5','6','7','8','9'};

uchar code dipa1[64]= //key 26
{
'a','b','c','d','e','f','g','h','i','j', //0~9
'k','l','m','n','o','p','q','r','s','t', //10~19

'u','v','w','x','y','z','`','@','#','%', //20~29
'*',')','-','=','[',']',';','"',',','.', //30~39

'/',' ',' ',' ',' ',' ',' ',' ','0','1', //40~49
'2','3','4',' ',' ',' ','5','6','7','8', //50~59

'9',' ',' ',' ' //60~63
} ; //

uchar code dipa2[64]= //key 26
{
'A','B','C','D','E','F','G','H','I','J', //0~9
'K','L','M','N','O','P','Q','R','S','T', //10~19

'U','V','W','X','Y','Z','~','!','$','^', //20~29
'&','(','_','+','{','}',':','|','<','>', //30~39

'?',' ',' ',' ',' ',' ',' ',' ',' ',' ', //40~49
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', //50~59

' ',' ',' ',' ' //60~63
} ;

uint p,r,s,t/*,u,v,w,x,y,z */ ;
/*
void delayaus(uchar d1) ;
void delaybus() ;
void delaycus() ;
void delaydus() ;
void delayeus(uchar d0) ; //lcm delay
void delayfus(uchar d6) ; //serial
void delaygus(uchar d8) ; //
void delayhus(uchar d9) ; //main delay
*/
// uchar key () ;
void startadc() ;

void start () ; //// IIC //
void stop () ;
void noack () ;
bit testack () ;
void write8bit(uchar input) ;
void write24c02(uchar ch,uchar address) ;
uchar read8bit() ;
uchar read24c02(uchar address) ;

void writecmd12864 (uchar lcdcmd) ; ///12864 LCM //
void writedata12864 (uchar lcddata) ;
void readbusy () ;
void lcdinit () ;
void lcdclear () ;
void displaycgrom (uchar addr,uchar *hz) ;

void transform () ; //transform data
void motor () ;

////////////////// main /////////////////////////////////
void main()
{
SCON =0x50 ;
TMOD =0x21 ;
TH0 =0x4b ; //20Ms
TL0 =0xFF ;
TH1 =0xfd ; //crystal =11.0592MHz
TL1 =0xfd ; //9600 bit/s
TR1 =1 ;
// TCON =0x50 ; //start time0 and time1
TH2 =0x4b ; //50mS for led scan
TL2 =0xff ;
T2CON =0x00 ; //start time2
// IE =inter ; //ea,~,t2,serial//et1,ex1,et0,ex0
// IP =0x10 ; //~~T2,S,//T1,INT1,T0,INT0
// func =0xb1 ;
p=r=s=0 ;
s0=s1=s2=s3=s4=s5=s6=s7=s8=s9=0; //bit
h0=h1=h2=h3=h4=h5=h6=h7=h8=h9=0; //bit
g0=g1=g2=g3=g4=g5=g6=g7=g8=g9=0; //bit
// k0=k1=k2=k3=k4=k5=k6=k7=k8=k9=0; //bit
a0=a1=a2=a3=a4=a5=a6=a7=a8=a9=0; // resgistor
b0=b1=b2=b3=b4=b5=b6=b7=b8=b9=0; // resgistor
// f0=f1=f2=f3=f4=f5=f6=f7=f8=f9=0;
a=b=c=d=e=f=g=h=i=j=k=m=n=0 ; // resgistor
b0 = 0xf0 ; //
b8 = 1 ;
cont = 0 ;
spk = 1 ;
s0=s7=s8=1 ; //bit
spk=spk2=spk3=spk4=0 ;
cb =cm =0 ;
delaygus(20) ;
while(s0) /////////////////////////////////////////
{
lcdinit () ;
// lcdclear () ;
displaycgrom(0x80," ") ; //the first line
displaycgrom(0x90,"知音卡片礼品( 深") ; //the second line
displaycgrom(0x88,"圳 )有限公司 ") ; //the third line
displaycgrom(0x98,"www.jeancard.com") ; //the fourth line
delaygus(5) ;
a0++ ;
if(a0==3){s0=0;a0=0;}
}
delaygus(5) ;
spk=spk2=spk3=spk4=1 ;
IE =inter ; //ea,~,t2,serial//et1,ex1,et0,ex0
// p = 101 ;
lcdinit () ;
while(1)
{
s8 = 1 ;
transform () ;
key () ;
cm=cb=0 ;
switch(p)
{
case 101:
while(s8)
{
displaycgrom(0x80,"code:101 |023802") ; //the first line
displaycgrom(0x90,"Mickey Mouse ") ; //the second line
displaycgrom(0x88,"March ") ;
displaycgrom(0x98,"米老鼠进行曲 ") ; //the third line
delaygus(time2) ;
motor ( ) ;
}

break ;
case 102:
while(s8)
{
displaycgrom(0x80,"code:102 |029080") ; //the first line
displaycgrom(0x90,"Twinkle,Twinkle ") ; //the second line
displaycgrom(0x88,"Little Star(A) ") ;
displaycgrom(0x98,"一闪一闪小星星 ") ; //the third line
delaygus(time2) ;
motor ( ) ;
}
break ;
case 103:
while(s8)
{
displaycgrom(0x80,"code:103 |019414") ; //the first line
displaycgrom(0x90,"Zip-A-Dee-Doo- ") ; //the second line
displaycgrom(0x88,"Dah ") ;
displaycgrom(0x98,"西班牙催眠曲 ") ; //the third line
delaygus(time2) ;
motor ( ) ;
}
break ;
case 104:
while(s8)
{
displaycgrom(0x80,"code:104 |019409") ; //the first line
displaycgrom(0x90,"Some Day My ") ; //the second line
displaycgrom(0x88,"Prince Will come") ;
displaycgrom(0x98,"梦中的王子 ") ; //the third line
delaygus(time2) ;
motor ( ) ;
}
break ;
case 105:
while(s8)
{
displaycgrom(0x80,"code:105 |023806") ; //the first line
displaycgrom(0x90,"Play Mates ") ; //the second line
displaycgrom(0x88,"伴游女郎 ") ; //the third line
displaycgrom(0x98,"www.jeancard.com") ; //the fourth line
delaygus(time2) ;
motor ( ) ;
}
break ;