![]() |
![]() |
#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 ![]() |
![]() |
![]() |
|
|