sodomach-nguyenly.pdf
Chào anh chị !
Em đang làm mạch đo điện áp DC 0v - 50v. em vẽ và ráp mạch xong hết rồi, chạy mô phỏng thì nó hiện thị đùng, nhưng khi làm mạch thật thì cáp nguồn vào nó hiện ra 45.2v mặc dù chưa cắm que đo vào cái gì cả (như hình vẽ). Lỗi đó là lỗi gì vậy ạ !
Chào anh chị !
Em đang làm mạch đo điện áp DC 0v - 50v. em vẽ và ráp mạch xong hết rồi, chạy mô phỏng thì nó hiện thị đùng, nhưng khi làm mạch thật thì cáp nguồn vào nó hiện ra 45.2v mặc dù chưa cắm que đo vào cái gì cả (như hình vẽ). Lỗi đó là lỗi gì vậy ạ !
#include<AT89x52.h>
#define LCD P0
#define RS P2_0
#define RW P2_1
#define E P2_2
#define KA P1_0
#define KB P1_1
#define KC P1_2
#define ALE P1_3
#define START P1_4
unsigned int ADC;
unsigned char j,tr,ch,dv;
unsigned char code hang1[16]={"DONG HO DIEN TU"};
unsigned char code hang2[16]={"V(DC): ."};
void delay(unsigned int x)
{
unsigned int y;
for(y=0;y<x;y++){};
}
void mdk()
{
RS=0; RW=0; E=1; E=0; delay(200);
}
void mkt()
{
RS=1; RW=0; E=1; E=0; delay(200);
}
void khoitao_lcd()
{
LCD=0x38; mdk();
LCD=0x38; mdk(); delay(200);
LCD=0x06; mdk(); delay(200);
LCD=0x0c; mdk(); delay(200);
LCD=0x01; mdk();
}
void giaima_lcd()
{
dv= ADC%10; ADC = ADC/10;
ch= ADC%10; tr = ADC/10;
dv= dv +0x30; ch= ch +0x30; tr= tr +0x30;
}
void hienthi_lcd()
{
unsigned char i;
LCD=0x80; mdk();
for(i=0;i<16;i++)
{
LCD=hang1[i]; mkt();
}
LCD=0xc0; mdk();
for(i=0;i<16;i++)
{
LCD=hang2[i]; mkt();
}
for(i=0;i<16;i++)
{
LCD=0xC7; mdk();
LCD= tr; mkt();
LCD= ch; mkt();
LCD=0xCA; mdk();
LCD= dv; mkt();
}
}
/*void hienthi_dienap()
{
LCD=0xC7; mdk();
LCD= tr; mkt();
LCD= ch; mkt();
// LCD=0xC7; mdk();
LCD= dv; mkt();
}
*/
void chuyedoi_adc()
{
START=1; ALE=1; delay(200); START=0; ALE=0;
}
void main()
{
unsigned char i;
khoitao_lcd();
KA=1; KB=1; KC=1;
ADC=0;
while(1)
{
for(i=0;i<100;i++)
{
chuyedoi_adc();
delay(200);
ADC=ADC+P1;
}
ADC = ADC/100;
ADC =(ADC*196)/100;
giaima_lcd();
hienthi_lcd();
// hienthi_dienap();
}
}
#define LCD P0
#define RS P2_0
#define RW P2_1
#define E P2_2
#define KA P1_0
#define KB P1_1
#define KC P1_2
#define ALE P1_3
#define START P1_4
unsigned int ADC;
unsigned char j,tr,ch,dv;
unsigned char code hang1[16]={"DONG HO DIEN TU"};
unsigned char code hang2[16]={"V(DC): ."};
void delay(unsigned int x)
{
unsigned int y;
for(y=0;y<x;y++){};
}
void mdk()
{
RS=0; RW=0; E=1; E=0; delay(200);
}
void mkt()
{
RS=1; RW=0; E=1; E=0; delay(200);
}
void khoitao_lcd()
{
LCD=0x38; mdk();
LCD=0x38; mdk(); delay(200);
LCD=0x06; mdk(); delay(200);
LCD=0x0c; mdk(); delay(200);
LCD=0x01; mdk();
}
void giaima_lcd()
{
dv= ADC%10; ADC = ADC/10;
ch= ADC%10; tr = ADC/10;
dv= dv +0x30; ch= ch +0x30; tr= tr +0x30;
}
void hienthi_lcd()
{
unsigned char i;
LCD=0x80; mdk();
for(i=0;i<16;i++)
{
LCD=hang1[i]; mkt();
}
LCD=0xc0; mdk();
for(i=0;i<16;i++)
{
LCD=hang2[i]; mkt();
}
for(i=0;i<16;i++)
{
LCD=0xC7; mdk();
LCD= tr; mkt();
LCD= ch; mkt();
LCD=0xCA; mdk();
LCD= dv; mkt();
}
}
/*void hienthi_dienap()
{
LCD=0xC7; mdk();
LCD= tr; mkt();
LCD= ch; mkt();
// LCD=0xC7; mdk();
LCD= dv; mkt();
}
*/
void chuyedoi_adc()
{
START=1; ALE=1; delay(200); START=0; ALE=0;
}
void main()
{
unsigned char i;
khoitao_lcd();
KA=1; KB=1; KC=1;
ADC=0;
while(1)
{
for(i=0;i<100;i++)
{
chuyedoi_adc();
delay(200);
ADC=ADC+P1;
}
ADC = ADC/100;
ADC =(ADC*196)/100;
giaima_lcd();
hienthi_lcd();
// hienthi_dienap();
}
}