PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 27-04-2011, 05:35 PM   #6
kshoaiviet
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();
}
}
kshoaiviet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:04 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam