![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 7
: |
mong cai anh chi dum bai cua em sai o diem nao,tks
#incluce <16F877A.h> //Khai báo con bit ta sử dụng và file khai báo các bít các thanh ghi quan trọng trong con bit này #incluce <def_877a.h> //Khai báo sự định nghĩa các thanh ghi và các bít quan trọng #divice*=16 adc=10 //Khai báo dùng poiter 16 bít và ADC 10 bít #FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT //Khai báo các config #use delay(clock=20000000) //Khai báo sử dụng hàm delay và tần số dao động sử dụng int8 high,low; //Khai báo các biến số nguyên 1byte(8bít) //Khai báo mảng hằng số là số nguyên 1 byte int8 const a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; //Chương trình con tách hàng chục và hàng đơn vị thành hai số chứa trong hai biến đã khai báo trên high va low Void convert_bcd(int8 x) { low=x%10;//chia lấy phần dư=hàng đơn vị high=x/10; high=high%10; //high=số hàng chục } // Chương trình con giải mã và hiển thị nhiệt độ Void display() { PORTB=a[low]; // Gửi dữ liệu đến LED1 RD0=0; // Bật LED1,LED1 sẽ hiển thị đúng giá trị của low delay_2ms(2); // Cho trễ 2ms RD0=1 // tắt LED1 PORTB=a[high]; // LED2 RD1=0; delay_ms(2); RD1=1; } //Chương trình con thực hiện việc báo động Void bao_dong(){ int8 i; for(i=0;i<200;i++) { REO=0;delay_us(100); REO=1;delay_us(100); } //kêu 200 tiếng } // Chương trình chính void main() { float value; int 16 i; trisb = 0x00; //thiết lập các chân của PORTB là các chân Ouput trisc = 0x00; //thiết lập các chân của PORTC là các chân Ouput trisd = 0x00; //thiết lập các chân của PORTD là các chân Ouput trise = 0x00; //thiết lập các chân của PORTE là các chân Ouput trisa = 0xff; //thiết lập các chân của PORTa là các chân Input portC = 0xff; //thiết lập các chân của PORTC xuất ra điện áp ở mức cao portD = 0xff; //thiết lập các chân của PORTd xuất ra điện áp ở mức cao //Thiết lập cho ADC Setup_adc(ADC_CLOCK_INTERNAL_; //Chia ra cách thức hoạt động của ADC là thời gian lấy mẫu bằng xung clock //Thiết lập chân lấy tín hiệu Analog là chân ANO setup_adc_ports(AN0); setup_adc_chanel(0) delay_us(10); //Trễ 10us value=(float)read_adc(); value=(value – 558.5)/2.048; convert_bcd(int8)value0; i=0; //Vòng lặp vô tận While(1) { i++; value = (float)read_adc(); value = (value – 558.5)/2.048; //for 5V supply if(i==150) { convert_bcd(int8)value);i=0;} if(((int8)value > 40) || ((int8)value < 15)) bao_dong(); } } |
![]() |
![]() |
|
|