±êÌâ: 51+LCD1602+ADC0808 [´òÓ¡±¾Ò³]

×÷Õß: Çàè×    ʱ¼ä: 2017-6-20 15:45
±êÌâ: 51+LCD1602+ADC0808
1¡¢LCD1602.cÔ´³ÌÐò
//Òº¾§¿ØÖÆÓëÏÔʾÇý¶¯³ÌÐò
#include<reg52.h>
#include<intrins.h>
#include<string.h>
#include"LCD1602.h"
#include"ADC0808.h"
//---------------æ¼ì²é-------------------//
ucharLCD_Busy_Check()
{
    ucharLCD_Status;
    RS = 0;
    RW = 1;
    E = 1;
    delay4us();
    LCD_Status = P0;
    E = 0;
    return LCD_Status;
}
//--------------ÏòLCDдÈëÃüÁî--------------------//
voidWrite_LCD_Command(uchar cmd)
{
    while((LCD_Busy_Check()&0x80)==0x80);     //æµÈ´ý
    RS = 0;
    RW = 0;
    E  =0;
    P0 = cmd;
    delay4us();
    E = 1;
    delay4us();
    E = 0;
}
//-----------ÏòLCDдÈëÒ»¸ö×Ö½ÚµÄÊý¾Ýº¯Êý-----------------*/
voidWrite_LCD_Data(uchar dat)
{
    while((LCD_Busy_Check()&0x80)==0x80);
    RS = 1;
    RW = 0;
    E  =0;
    P0 = dat;
    delay4us();
    E = 1;
    delay4us();
    E = 0;
}
//-----------LCD³õʼ»¯-----------------*/
voidInitialize_LCD1602() //Òº¾§³õʼ»¯º¯Êý
{
   Write_LCD_Command(0x38);delay50us(10);    //¹¦ÄÜÉèÖã¬Êý¾Ý³¤¶ÈΪ8λ£¬Ë«ÐÐÏÔʾ£¬5¡Á7µãÕó×ÖÌå
   Write_LCD_Command(0x0C);delay50us(10); // ÏÔʾ¿ª£¬¹Ø¹â±ê
   Write_LCD_Command(0x06);delay50us(10); //×Ö·û½øÈëģʽ£ºÆÁÄ»²»¶¯£¬×Ö·ûºóÒÆ
   Write_LCD_Command(0x01); delay50us(10);//ÇåÆÁ
}
//-----------ÔÚLCDÉÏÏÔʾ×Ö·û´®-----------------*/
voidLCD_Display(uchar *str)
{
  uchar i;
  for(i=0;i<strlen(str);i++)
    {
     Write_LCD_Data(str);
     delay50us(100);
    }
}
2¡¢lCD1602_HÍ·Îļþ
#ifndef__lCD1602_H__
#define __LCD1602_H__
#include<reg52.h>
#definedat_port P0
#defineuchar unsigned char
#defineuint unsigned int
#definedelay4us() {_nop_();_nop_();_nop_();_nop_();}
sbitRS=P2^0;//RS=1 Êý¾Ý RS=0 ÃüÁî
sbitRW=P2^1;//RW=1 ¶ÁÈ¡ RW=0 дÈë
sbitE=P2^2;//E ʹÄÜÐźÅ
ucharLCD_Busy_Check();//æ¼ì²é
voidWrite_LCD_Command(uchar cmd);//ÏòLCDдÈëÃüÁî
voidWrite_LCD_Data(uchar dat);  //ÏòLCDдÈëÒ»¸ö×Ö½ÚµÄÊý¾Ýº¯Êý
voidInitialize_LCD1602(); //Òº¾§³õʼ»¯º¯Êý
voidLCD_Display(uchar *str);//ÔÚLCDÉÏÏÔʾ×Ö·û´®
#endif
3¡¢ADC0808.CÔ´³ÌÐò
#include<reg52.h>
#include<intrins.h>
#include"ADC0808.h"
unsignedlong dat_adc0808;
uchardisplay_buffer[][16]={
                             {"Currentvoltage:"},
                             {" (CH) =0.00V"}
                            };
voiddelay50us(uint m)
{
   uint n,k;
   for(n=m;n>0;n--)
    for(k=25;k>0;k--);
}
uintadc0808_init()      // AD³õʼ»¯
{
  START=0;
  OE=0;
  START=1;
  START=0;
   while(EOC==0);
   OE=1;
   dat_adc0808=P1;
   OE=0;
  returndat_adc0808;
}
void Refresh_show()     //Ë¢ÐÂÏÔʾ
{
   uintt=dat_adc0808*500.0/255;    //
  display_buffer[1][7] = t/100+'0';    //ÕûÊýλ
  display_buffer[1][9] = t/10%10+'0';  //Á½¸öСÊýλ
   display_buffer[1][10]= t%10+'0';
}
4¡¢ADC0808.h Í·Îļþ
#ifndef__ADC0808_H__
#define __ADC0808_H__
#include<reg52.h>
#definedata_port P1
#defineuchar unsigned char
#defineuint unsigned int
sbitSTART=P2^3;
sbitEOC=P2^4;
sbitOE=P2^5;
voiddelay50us(uint m);//  ÑÓʱ
uintadc0808_init();      // AD³õʼ»¯
voidRefresh_show();
#endif
5¡¢main.c Ö÷³ÌÐò
#include<reg52.h>
#include<intrins.h>
#include"LCD1602.h"
#include"ADC0808.h"
sbitCLOCK=P2^6;
externuchar display_buffer[][16];
voidmain()
{
   TMOD=0x02;
   TH0=0x14;
   TL0=0x00;
   IE=0x82;
   TR0=1;
  Initialize_LCD1602();
  delay50us(10);
  Write_LCD_Command(0x80);//ÉèÖÃÏÔʾµÄ³õʼλÖÃ
  LCD_Display(display_buffer[0]);//ÏÔʾ"Thevoltage is: "  
   while(1)
   {  
      adc0808_init();
     Refresh_show();   
     Write_LCD_Command(0xC0);//ÉèÖÃÏÔʾµÄ³õʼλÖÃ
     LCD_Display(display_buffer[1]); //ÏÔʾ²âµÃµÄÊý¾Ý
      
   }
}
voidTimer0_INT() interrupt 1
{
   CLOCK=!CLOCK;  
}


×÷Õß: deded    ʱ¼ä: 2018-4-28 20:53
¿É·ñÉϸöµç·ͼ




»¶Ó­¹âÁÙ (http://www.51hei.com/bbs/) Powered by Discuz! X3.1