![]() |
|
|
#1 |
|
Đệ tử 1 túi
Tham gia ngày: Jul 2011
Bài gửi: 25
: |
[Hỏi] đọc 6 chân ADC XUẤT RA 9 LED 7
Tình hình mình làm 1 đề tài về ADC lấy điện áp từ 6 kênh nhưng có 1 cái swicth để điều chỉnh nhấn 1 cái thì lấy 3 kenh trên ,nhân thêm 1 cái thì lấy 3 kênh dưới rồi xuất ra 9 con led 7 đoạn.
Code:
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=12000000)
#byte portb=0x06
#byte portd=0x08
Int8 ad1,ad2,ad0;
int8 a0,a1,a2,b0,b1,b2,c0,c1,c2 ;
const unsigned char digital[]={0x40,0x79,0x24,0x30,0x19,0x12,0x20,0x78,0x00,0x10} ;
void doc_ADC()
{
set_ADC_channel(0);
ad0=read_ADC();
delay_us(10) ;
set_ADC_channel(1);
ad1=read_ADC();
delay_us(10) ;
set_adc_channel(2);
ad2=read_ADC() ;
delay_us(10) ;
}
void main()
{
set_tris_d(0) ;
set_tris_b(0);
setup_ADC(ADC_clock_internal);
setup_adc_ports(ALL_ANALOG);
while(true)
{
doc_ADC() ;
////hien chu so hang tram
delay_ms(10) ;
portb=0x21 ;
c0=ad0/100 ;
portd=digital[c0] ;
delay_us(10) ;
portb=0x22 ;
c1=ad1/100 ;
portd=digital[c1] ;
delay_us(10) ;
portb=0x24 ;
c2=ad2/100 ;
portd=digital[c2];
delay_ms(10) ;
///chu hang chuc
portb=0x11;
b0=ad0/10-10*c0 ;
portd=digital[b0] ;
portb=0x12;
b1=ad1/10-10*c1 ;
portd=digital[b1] ;
delay_us(10) ;
portb=0x14 ;
b2=ad2/10-c2*10 ;
portd=digital[b2] ;
delay_ms(20) ;
////chu hang don vi
portb=0x09 ;
delay_ms(1) ;
a0=ad0%100 ;
portd=digital[a0] ;
delay_us(10) ;
portb=0x0a ;
a1=ad1%100 ;
portd=digital[a1] ;
delay_us(10) ;
portb=0x0c ;
a2=ad2%100 ;
portd=digital[a2];
delay_ms(10) ;
}
}
với lại code mình mới viết cho 3 kênh 1.2.3 thôi mà bị thế nào mà 3 đèn giữa và 3 den cuối hiên số liệu đúng còn 3 đèn đầu hiên ko đúng,và quét led nó chạy không ổn định(lúc sáng lúc chớp ) |
|
|
|
|
|