±êÌâ: 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 |