專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

基于C8051f020吳偉鏢動(dòng)畫LCD控制顯示(留底)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年12月20日   【字體:
#include <c8051f020.h>  
#define uchar unsigned char
#define uint unsigned int
void SYSCLK_Init (void);
void PORT_Init (void);
sbit lcdrs=P2^5;
sbit lcden=P2^7;
sbit lcdwr=P2^6;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
unsigned long x;
uchar CGCODE[]={0x1f,0x11,0x1f,0x00,0x1f,0x04,0x1f,0x0a, //0
   0x01,0x02,0x06,0x0a,0x02,0x02,0x02,0x02,     //1
   0x04,0x01f,0x04,0x1f,0x04,0x1f,0x05,0x04,    //2
   0x04,0x04,0x04,0x1f,0x0e,0x15,0x04,0x04,     //3
   0x00,0x0e,0x00,0x1f,0x0e,0x15,0x0c,0x04,      //4
   0x08,0x0c,0x0a,0x09,0x19,0x05,0x03,0x01,  //球門  5
   0x04,0x0a,0x0a,0x04,0x0e,0x04,0x0a,0x00,//人  6
   0x00,0x00,0x00,0x00,0x6,0x09,0x09,0x06,//球    7
   };
uchar tab[]={0x00,0x01,0x02,0x03,0x04,' ',' ',' ',' ',' '};
uchar abc[]={0x32,0x30,0x31,0x31,0x31,0x31,0x38,0x34,0x31,0x32,0x32};
uchar ren[]={0x06,' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0x05,' ',' '};
uchar qiu[]={0x6f,' '};
uchar zhuhe[]={0x47,0x4f,0x4f,0x44,0x21,' '};
void delay(void)
{
 int a=10000;
 while(a!=0)
 {
  a--;
 }
 }
void write_com(uchar com)
{
 lcdrs=0;
 P3=com;
 delay();
 lcden=1;
 delay();
 lcden=0;
}
void write_date(uchar dat)
{
 lcdrs=1;
 P3=dat;
 delay();
 lcden=1;
 delay();
 lcden=0;
}
void init()
{
 lcdwr=0;
 lcden=0;
 write_com(0x38);
 write_com(0x0c);
 write_com(0x06);
 write_com(0x01);
}
void main()
{
uchar data2;
uchar i;
 uchar j;
 static unsigned char data1;
    WDTCN = 0xde;
    WDTCN = 0xad;                      
    SYSCLK_Init ();                                                                 
    PORT_Init ();                        
 init();
 lcdrs=0;
 lcdwr=0;
 write_com(0x40);
 for(i=0;i<56;i++)
 {
  write_date(CGCODE[i]);  
 }
  write_com(0x80);
 for(i=0;i<9;i++)
 {
  write_date(tab[i]);
 }
 write_com(0x80+0x40);
 for(i=0;i<12;i++)
 {
  write_date(abc[i]);
 }
 while(1)
 {
  if(key1==0)
 {
  key1=1;
  delay();
  if(key1==0)
  {
   while(key1==0);
   write_com(0x01);
  }
 }
if(key2==0)
 {
  key2=1;
  delay();
  if(key2==0)
  {
   while(key2==0);
   for(j=0;j<=1;j++)      //移位16x2循環(huán)
  {
   write_com(0x18);      //移位
   delay();
  }
  }
 }
 if(key4==0)
 {   write_com(0x01);
  key4=1;
  delay();
  if(key4==0)
  {
   while(key4==0);
   { write_com(0x80);
 for(i=0;i<9;i++)
 {
  write_date(tab[i]);
 }
 write_com(0x80+0x40);
 for(i=0;i<12;i++)
 {
  write_date(abc[i]);
 }
  } }
 }
 if(key3==0)
 {
  key3=1;
  delay();
  if(key3==0)
  {
   while(key3==0);
    write_com(0x01);
    write_com(0x80);
   for(i=0;i<=16;i++)
  {  
         write_date(ren[i]);
  }
  for(j=1;j<=9;j++)
  {write_com(0x80+0x01+j) ;
   for(i=0;i<=1;i++)
   {write_date(qiu[i]);
    write_com(0x80+0x01+j-1) ;
    write_date(0xfe);}
   delay();
   if(j==9)
   {write_com(0x01);
    write_com(0x80+0x06);
   for(i=0;i<=5;i++)
    write_date(zhuhe[i]);
    }}
  }
 }
 }
}
 void SYSCLK_Init (void)
{
   OSCICN = 0x05;                                                                                  
 }
 void PORT_Init (void)
{
   XBR0     = 0x00;                     
   XBR2     = 0x40;
   P2MDOUT  = 0xe0;                     
}
關(guān)閉窗口

相關(guān)文章