˜Ëî}: ÇóÖú¸÷λ´ó‚b£¬ÎҵijÌÐòÄÇÀïÓІ–î}°¡£¿ [´òÓ¡±¾í“]

×÷Õß: qianzhiwei    •rég: 2012-4-18 17:36
˜Ëî}: ÇóÖú¸÷λ´ó‚b£¬ÎҵijÌÐòÄÇÀïÓІ–î}°¡£¿

#include <reg51.h>
#include <intrins.h> 
#define uchar unsigned char
#define uint  unsigned int
#define LCD_data  P0             //”µ“þ¿Ú
sbit LCD_RS  =  P3^5;            //¼Ä´æÆ÷ßx“ñÝ”Èë
sbit LCD_RW  =  P2^0;            //Òº¾§×x/Œ‘¿ØÖÆ
sbit LCD_EN  =  P3^4;            //Òº¾§Ê¹ÄÜ¿ØÖÆ
sbit LCD_PSB =  P2^1;            //´®/²¢·½Ê½¿ØÖÆ
sbit wela    =  P2^7;
sbit dula    =  P2^6;            //êPé]LEDŸô
sbit wr=P3^6;
sbit rd=P3^7;
sbit fm=P2^3;
uint temp;
uchar p=3,q=1,jianzhi;
uint a1,a2,a3,date,q1;
uchar code dis1[] = {"®…˜I(y¨¨)ÔOÓ‹ëŠ×Ó³Ó"};
uchar code dis2[] = {"†Îƒr:"};
uchar code dis3[] = {"ÖØÁ¿:"};
uchar code dis4[] = {"¿‚ƒr:"};
uchar code table[]="0123456789";
uchar code table1[]="Kg";
uchar code table2[]={"Ôª"};
uchar code dis5[] = {"2012®…˜I(y¨¨)ÔOÓ‹ëŠ×Ó³Ó"};
uchar code dis6[] = {"ÐÕÃû£ºåXÖ¾‚¥"};
uchar code dis7[] = {"ŒWÌ–£º5901108126"};
uchar code dis8[] = {"šgÓ­ÀÏŽŸÅúÔuÖ¸Õý"};
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};//ºê¶¨ÁxÑÓ•r4‚€CPU
uchar IRDIS[2];
uchar IRCOM[4];
void delay0(uchar x);  //x*0.14MS
void beep();
void  dataconv();
void lcd_pos(uchar X,uchar Y);  //´_¶¨ï@ʾλÖÃ
     uint AD_read();
     key_read ();
void disp_ad();
void disp_dy();
void disp_kj();
void disp_jianpan(uchar jian);
void  disp_zongjia(uint qian);

void delay(int ms)
{
    while(ms--)
 {
      uchar i;
   for(i=0;i<250;i++) 
    {
     _nop_();     
  _nop_();
  _nop_();
  _nop_();
    }
 }
}  
bit lcd_busy()
 {                         
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
 }
/*******************************************************************/
/*                                                                 */
/*Œ‘Ö¸Á“þµ½LCD                                                  */
/*RS=L£¬RW=L£¬E=¸ßÃ}›_£¬D0-D7=Ö¸Áî´a¡£                             */
/*                                                                 */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{                         
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_();
    P0 = cmd;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0; 
}
/*******************************************************************/
/*                                                                 */
/*Œ‘ï@ʾ”µ“þµ½LCD                                                  */
/*RS=H£¬RW=L£¬E=¸ßÃ}›_£¬D0-D7=”µ“þ¡£                               */
/*                                                                 */
/*******************************************************************/
void lcd_wdat(uchar dat)
{                         
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P0 = dat;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}
void lcd_init()
{

    LCD_PSB = 1;         //²¢¿Ú·½Ê½
   
    lcd_wcmd(0x34);      //”U³äÖ¸Áî²Ù×÷
    delay(5);
    lcd_wcmd(0x30);      //»ù±¾Ö¸Áî²Ù×÷
    delay(5);
    lcd_wcmd(0x0F);      //ï@ʾé_£¬é_¹â˜Ë
    delay(5);
    lcd_wcmd(0x01);      //Çå³ýLCDµÄï@ʾƒÈÈÝ
    delay(5);
}
  main()
 {
    uchar w;
   
    uchar jiage[3];
   
    while(1)
    {
    
    delay(10);                 //ÑÓ•r
    wela=0;
    dula=0;
    lcd_init();                //³õʼ»¯LCD            
    disp_kj();//é_™C½çÃæµÄï@ʾ
    delay(500);
     disp_dy();//ï@ʾƒr¸ñÖØÁ¿µÈ¹Ì¶¨µÄÎÄ×Ö
       disp_ad();//ADÞD“QÖµµÄï@ʾ
     while(q)//ÅДà˜Ë־λqÊÇ·ñžé0£¬žé0±íʾæI±P°´ÁË´_¶¨æI
     { uchar n=2;
       w=key_read ();//Õ{³öæIÖµ
       disp_jianpan(w);//Œ¢æIÖµï@ʾ
       jiage[n]=jianzhi;//Œ¢æIÖµ´æÈ딵½MÖÐ
       p++;
       n--;
     }
     q=1;
      p=3;
     q1=jiage[2]*100+jiage[1]*10+jiage[0];//µÃµ½°´æI”µ
     disp_zongjia(q1);//¿‚ƒrµÄÓ‹ËãºÍï@ʾ
   }
}

 

void delay0(uchar x)    //x*0.14MS
{
  uchar i;
  while(x--)
 {
  for (i = 0; i<13; i++) {}
 }
}
void lcd_pos(uchar X,uchar Y)
{                         
   uchar  pos;
   if (X==0)
     {X=0x80;}
   else if (X==1)
     {X=0x90;}
   else if (X==2)
     {X=0x88;}
   else if (X==3)
     {X=0x98;}
   pos = X+Y ; 
   lcd_wcmd(pos);     //ï@ʾµØÖ·
}
/*ADÞD“Qº¯”µ*/
uint AD_read()
{
  wela=1;
  P0=0;
  _nop_();
  wr=0;
   _nop_();
  wr=1;
  P0=0xff;
  delay(10);
 
  P0=0;
  rd=0;
  _nop_();
  P1=0xff;
  temp=P1;
  return temp;

}


/*æI±P’ßÃè³ÌÐò*/


   key_read ()
 {
  unsigned char key,key1;
   while(1)
   {
      P3=0xfe;//½oP3.0Ò»‚€µÍëŠÆ½
      key1=P3;
      key1=key1&0xf0;
      if(key1!=0xf0)
      {
       delay(10);//È¡¶¶
         if(key1!=0xf0)
         {
             
            key1=P3;
            switch(key1)
            {
               case 0xee://ßxÖÐ0Ì–æI
                 key=0;
                 break;

               case 0xde://ßxÖÐ1Ì–æI
                 key=1;
                 break;

               case 0xbe://ßxÖÐ2Ì–æI
                 key=2;
                 break;

               case 0x7e://ßxÖÐ3Ì–æI
                 key=3;
                 break;
             }
            }
          }

      P3=0xfd;//½oP3.1Ò»‚€µÍëŠÆ½
      key1=P3;
      key1=key1&0xf0;
      if(key1!=0xf0)
      {
       delay(10);//È¡¶¶
         if(key1!=0xf0)
         {
             
            key1=P3;
            switch(key1)
            {
               case 0xed://ßxÖÐ4Ì–æI
                 key=4;
                 break;

               case 0xdd://ßxÖÐ5Ì–æI
                 key=5;
                 break;

               case 0xbd://ßxÖÐ6Ì–æI
                 key=6;
                 break;

               case 0x7d://ßxÖÐ7Ì–æI
                 key=7;
                 break;
             }
            }
           }

      P3=0xfb;//½oP3.2Ò»‚€µÍëŠÆ½
      key1=P3;
      key1=key1&0xf0;
      if(key1!=0xf0)
      {
       delay(10);//È¡¶¶
         if(key1!=0xf0)
         {
             
            key1=P3;
            switch(key1)
            {
               case 0xeb://ßxÖÐ8Ì–æI
                 key=8;
                 break;

               case 0xdb://ßxÖÐ9Ì–æI
                 key=9;
                 break;

               case 0xbb://ßxÖÐ10Ì–æI
                 key=10;
                 break;

               case 0x7b://ßxÖÐ11Ì–æI
                 key=11;
                 break;
             }
            }
           }

      P3=0xf7;//½oP3.3Ò»‚€µÍëŠÆ½
      key1=P3;
      key1=key1&0xf0;
      if(key1!=0xf0)
      {
       delay(10);//È¡¶¶
         if(key1!=0xf0)
         {
             
            key1=P3;
            switch(key1)
            {
               case 0xe7://ßxÖÐ12Ì–æI
                 key=12;
                 break;

               case 0xd7://ßxÖÐ13Ì–æI
                 key=13;
                 break;

               case 0xb7://ßxÖÐ14Ì–æI
                 key=14;
                 break;

               case 0x77://ßxÖÐ15Ì–æI
                 key=15;
                 break;
             }
            }
           }
      return key;
   }
 }
/*  ADÞD“Q”µÖµï@ʾº¯”µ*/
void disp_ad()
{
  uint ad_read;
     ad_read=AD_read();//Œ¢ADÞD“Qº¯”µµÄ·µ»ØÖµÕ{³ö
    date=(float)ad_read*50.0/256.0;
    a1=date;
    a2=a1/10;
    a3=a1%10;
    lcd_pos(2,3);
      lcd_wdat(table[a2]);
      lcd_pos(2,4);
      lcd_wdat('.');
      lcd_pos(2,5);
      lcd_wdat(table[a3]);
      lcd_pos(2,6);
      lcd_wdat(table1[0]);
     lcd_pos(2,7);
      lcd_wdat(table1[1]);
}
void disp_dy()
{
   uchar i;
   lcd_pos(0,0);             //ÔOÖÃï@ʾλÖÞéµÚÒ»ÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis1 != '\0')
     {                         //ï@ʾ×Ö·û
       lcd_wdat(dis1);
       i++;
     }
    lcd_pos(1,0);             //ÔOÖÃï@ʾλÖÞéµÚ¶þÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis2 != '\0')
     {
       lcd_wdat(dis2);      //ï@ʾ×Ö·û
       i++;
     }
   lcd_pos(2,0);             //ÔOÖÃï@ʾλÖÞéµÚÈýÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis3 != '\0')
     {
       lcd_wdat(dis3);      //ï@ʾ×Ö·û
       i++;
     }
  lcd_pos(3,0);             //ÔOÖÃï@ʾλÖÞéµÚËÄÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis4 != '\0')
     {
       lcd_wdat(dis4);      //ï@ʾ×Ö·û
       i++;
     }
}

void disp_kj()
{
   uchar i;
   lcd_pos(0,0);             //ÔOÖÃï@ʾλÖÞéµÚÒ»ÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis5 != '\0')
     {                         //ï@ʾ×Ö·û
       lcd_wdat(dis1);
       i++;
     }
    lcd_pos(1,0);             //ÔOÖÃï@ʾλÖÞéµÚ¶þÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis6 != '\0')
     {
       lcd_wdat(dis2);      //ï@ʾ×Ö·û
       i++;
     }
   lcd_pos(2,0);             //ÔOÖÃï@ʾλÖÞéµÚÈýÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis7 != '\0')
     {
       lcd_wdat(dis3);      //ï@ʾ×Ö·û
       i++;
     }
  lcd_pos(3,0);             //ÔOÖÃï@ʾλÖÞéµÚËÄÐеĵÚ1‚€×Ö·û
     i = 0;
    while(dis8 != '\0')
     {
       lcd_wdat(dis4);      //ï@ʾ×Ö·û
       i++;
     }
}

void  disp_jianpan(uchar jian)
{
  uchar a;
  a=jian;
    if(a<10)
       {lcd_pos(1,p);
       lcd_wdat(table[a]);//Œ¢æIÖµï@ʾ
       jianzhi=table[a];}//ifÖÐÒªˆÌ(zh¨ª)ÐÐ¶à‚€ÕZ¾ä•rÒª¼Ó´óÀ¨Ì–£¬
    else if(a=10)
           q=0;//´_ÕJæI
        else
          fm=0;//¾¯ˆóí‘         
}
void  disp_zongjia(uint qian)
{
   uchar z1,z2,z3,z4;
   float q3,q2;
   uint x, z0;
   x=qian;
   q3=a3*0.1+a2;
     q2=x*q3;
     z0=q2*10;
     z1=(int)z0/1000;
     z2=(int)z0%1000/100;
     z3=(int)z0%1000%100/10;
     z4=(int)z0%1000%100%10;
     lcd_pos(3,3);
      lcd_wdat(table[(int)z1]);
      lcd_pos(3,4);
      lcd_wdat(z2);
      lcd_pos(3,5);
      lcd_wdat(table[(int)z3]);
      lcd_pos(3,6);
      lcd_wdat('.');
      lcd_pos(3,7);
      lcd_wdat(table[(int)z4]);
}






šgÓ­¹âÅR (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1