Em chào các anh. em đang giao tiếp với ADC0809 e lập trình nó chạy rồi nhưng hiển thị ko đúng giá trị .
Các anh xem code và chỉnh giúp e với!
Còn đây là mô phỏng
New folder.rar
các anh xem giúp e với nha. em cảm ơn!
Các anh xem code và chỉnh giúp e với!
Code:
// CHUONG TRINH HIEN THI NHIET DO LEN LED 7 DOAN
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define adc_port P1
//======================================
sbit doc = P3^0;
sbit viet = P3^1;
sbit NGAT = P3^2;
sbit CS = P3^3;
sbit led1 = P3^4;
sbit led2 = P3^5;
sbit led3 = P3^6;
sbit led4 = P3^7;
unsigned char M[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned char donvi,chuc,tram,nghin ,adc_val;
long num,j;
void tre(void)
{
TMOD=0x10;
TH1=0xD8;
TL1=0xEF;
TR1=1;
while(!TF1) ;
TF1=0;
TR1=0;
}
void hienthi(void)
{
chuc=((adc_val%1000)%100)/10;
donvi=((adc_val%1000)%100)%10;
led1=1;
P2=M[chuc];
tre();
led1=0;
P2=0xFF;
led2=1;
P2=M[donvi];
tre();
led2=0;
P2=0xFF;
led3=1;
P2=0x9C;
tre();
led3=0;
P2=0xFF;
led4=1;
P2=0xC6;
tre();
led4=0;
P2=0xFF;
}
// ham chuyen doi gia trij ADC
void conv(){
CS = 0; //Make CS low
viet = 0; //Make WR low
viet= 1; //Make WR high
CS = 1; //Make CS high
while(NGAT); //Wait for INTR to go low
}
void read(){
CS = 0; //Make CS low
doc = 0; //Make RD low
adc_val = adc_port; //Read ADC port
doc = 1; //Make RD high
CS = 1; //Make CS high
}
// ham tao tre
void main(void)
{
while(1)
{
conv();
read() ;
hienthi();
}
}
New folder.rar
các anh xem giúp e với nha. em cảm ơn!

Comment