#include"lcd12864.h"
void LCD_busy()
{
bit busy;
LCD_E = 0;
LCD_RS = 0;
LCD_RW = 1;
do{
LCD_Busy = 1;
LCD_E = 1;
_nop_();
busy = LCD_Busy;
LCD_E = 0;
}while(busy);
}
void LCD_WriteCode(unsigned char cmd)
{
LCD_busy();
LCD_E = 0;
LCD_RS = 0;
LCD_RW = 0;
LCD_Data = cmd;
LCD_E = 1;
_nop_();
LCD_E = 0;
}
void LCD_GoToXY(unsigned char x,unsigned char y)
{
y = y%4;//yè¡ÖμÎa0¡¢1¡¢2¡¢3
x = x%8;//xè¡ÖμÎa0~7
switch(y){
case 0:
x |= 0x80;
break;
case 1:
x |= 0x90;
break;
case 2:
x |= 0x88;
break;
case 3:
x |= 0x98;
break;
}
LCD_WriteCode(x);
}
void LCD_WriteData(unsigned char dat)
{
LCD_busy();
LCD_RS = 1;
LCD_RW = 0;
LCD_Data = dat;
LCD_E = 1;
_nop_();
LCD_E = 0;
}
void LCD_Init()
{
LCD_RST = 1;
LCD_PSB = 1;//2¢¿úí¨Ñ¶
LCD_E = 0;
LCD_WriteCode(0x08);//1ØÏÔê¾ £¬1Ø1a±êÏÔê¾
LCD_Clear();//ÇåÆá
LCD_WriteCode(0x30);//ÏÔê¾Ä£ê½é趨Îa»ù±¾1|ÄüÄ£ê½
LCD_WriteCode(0x06);//¶á»òD′ò»¸ö×Ö·ûoó£¬μØÖ·¼ó1£¬ÕûÆá2»òƶˉ
LCD_WriteCode(0x0c);//¿aÏÔê¾
LCD_BG = 0;//¿aÆô±31a
}
void LCD_Clear()
{
LCD_WriteCode(0x01);
}
void LCD_ShowString(unsigned char x,unsigned char y,unsigned char *str){
LCD_GoToXY(x,y);
while(*str){
LCD_WriteData(*str);
str++;
delay(3000);
}
}
void LCD_ShowImg(unsigned char dat[]){//ÏÔê¾×Ô¶¨òåí¼DÎ
unsigned char i,j;
for(i=0; i<32; i++){//D′éϰë2¿·ÖÆá
LCD_WriteCode(0x34);//′ò¿aà©Õ11|ÄüÄ£ê½
LCD_WriteCode(0x80|i);//DDμØÖ·
LCD_WriteCode(0x80);//áDμØÖ·
LCD_WriteCode(0x30);//1رÕà©Õ11|Äü£¬»Øμ½»ù±¾1|ÄüÄ£ê½
for(j=0; j<16; j++){//D′èëí¼Ïñêy¾Y
LCD_WriteData(*dat);
dat++;
}
}
for(i=0; i<32; i++){//D′ϰë2¿·ÖÆá
LCD_WriteCode(0x34);//′ò¿aà©Õ11|ÄüÄ£ê½
LCD_WriteCode(0x80|i);//DDμØÖ·
LCD_WriteCode(0x88);//áDμØÖ·
LCD_WriteCode(0x30);//1رÕà©Õ11|Äü£¬»Øμ½»ù±¾1|ÄüÄ£ê½
for(j=0; j<16; j++){//D′èëí¼Ïñêy¾Y
LCD_WriteData(*dat);
dat++;
}
}
LCD_WriteCode(0x36);//′ò¿aà©Õ11|Äü£¬¿aÆôÏÔê¾
LCD_WriteCode(0x30);//1رÕà©Õ11|Äü£¬»Øμ½»ù±¾1|ÄüÄ£ê½
}
void LCD_Flash(){//ÏÔê¾ÄúèYéá˸
unsigned char i;
for(i=0; i<3; i++){
delay(40000);
LCD_WriteCode(0x08);//ÏÔê¾1Ø
delay(30000);
LCD_WriteCode(0x0C);//ÏÔ꾿a
}
}
這是LCD程序,
#include"musi.h"
unsigned char timer0h,timer0l,time;
//éúèÕ¸è
code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,
5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,
5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,
4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4};
// òô½×ÆμÂê±í ¸ß°Ëλ
code unsigned char FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
} ;
// òô½×ÆμÂê±í μí°Ëλ
code unsigned char FREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
void delay(unsigned char t)
{
unsigned char t1;
unsigned long t2;
for(t1=0;t1<t;t1++)
{
for(t2=0;t2<8000;t2++)
{
;
}
}
TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
speaker=!speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);
}
MUSI程序,
#incude"lcd12864.h"
#include"musi.h"
void main(){
code unsigned char top[] = "^_^ ???? ^_^ ";
code unsigned char li0[] = "????????";
code unsigned char li1[] = "??????!";
code unsigned char bottom[] = "QQ:404058326";
LCD_Init();
unsigned char k,i;
TMOD=1; //?CT0??????1
EA=1;
ET0=1;//IE=0x82 //CPU???,CT0???
while(1)
{
LCD_Clear();
LCD_ShowImg(IMG);
delay(65535);
LCD_Flash();
LCD_Clear();
LCD_ShowString(0,0,top);
delay(10000);
LCD_ShowString(0,1,li0);
delay(10000);
LCD_ShowString(0,2,li1);
delay(10000);
LCD_ShowString(0,3,bottom);
LCD_Flash();
delay(65535);
i=0;
while(i<75){ //?????? ,??????
k=sszymmh[i]+7*sszymmh[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=sszymmh[i+2];
i=i+3;
song();
}
}
主程序,
|