Đề tài đồng hồ đo nhiệt độ thể hiện trên led 7 đoạn

15 461 5
Đề tài đồng hồ đo nhiệt độ thể hiện trên led 7 đoạn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NỘI DUNg Yêu cầu thiết kế Mạch Proteus Code Kết Đề Đề bài: Đo nhiệt độ môi trường hiển thị led đoạn Yêu cầu đề bài: Dùng cảm biến vi xử lý để đo nhiệt độ môi trường sau đưa led đoạn Quy trình để đo nhiệt độ: NHIỆT ĐỘ=>CẢM BIẾN=>ADC=>XỬ LÝ=>HIỂN THỊ Thiết kế Các linh kiện sử dụng: • LM35 • PIC16F877A • LED đoạn MPX2-CA Thiết kế Sơ đồ khối điều khiển chung: Nguồn Cảm biến LM35 Tín hiệu tương tự Vi xử lý Pic16f877a Tín hiệu số Hiển thị led đoạn Thiết kế • Khối nguồn: Cung cấp điện áp cho khối hệ thống • Khối cảm biến LM35: thu giá trị analog (tín hiệu tuần tự) đưa qua khối vi điều khiển để xử lý • Khối vi điều khiển Pic16f877a: xử lý tín hiệu sang tín hiệu số (digital) sau xuất led • Khối hiển thị: thị nhiệt độ đo Thiết kế Nguyên lý hoạt động: Nhiệt độ bên môi trường cảm biến thu nhận chuyển thành tín hiệu tương tự (analog) sau đưa qua vi điều khiển Trong vi điều khiển có tích hợp sẵn ADC nên tín hiệu chuyển thành tín hiệu số (digital) tính toán xử lý sau xuất led đoạn Thiết kế Công thức biến đổi ADC: Khi dùng ADC 10 bit, tín hiệu đọc từ chân ADC sau: 1V 204.6 2V 409.2 3V 613.8 4V 818.4 5V 1023 ADC pic 10bit nên max = 1023 với Vref = Vcc = 5V 𝐴𝐷𝐶 × →𝑉= 1023 Với: V điện áp ADC tín hiệu cảm biến nhận Ứng với 1°𝐶 → 10 𝑚𝑉 𝐴𝐷𝐶 × →𝑇= × 1000 1023 × 10 Lưu đồ giải thuật Bắt đầu Định nghĩa biến Đọc giá trị nhiệt độ Hiển thị giá trị nhiệt độ lên led đoạn Kết thúc Xây dựng code #include #device *=16 adc=10 // sử dụng ADC 10 bit #fuses NOWDT #fuses NOBROWNOUT #fuses NOLVP #use delay(clock=20000000) // sử dụng thạch anh tần số 20 MHz #byte port_B=0x06 // cài đặt port B #byte port_D=0x08 // cài đặt port D #bit led_1=port_D.7 // cài đặt led1 #bit led_2=port_D.6 // cài đặt led2 unsigned int value; int maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // {0,1,2,3,4,5,6,7,8,9} int chuc,donvi; void docADC(); // Khai báo hàm đọc ADC void hienthi(unsigned int value); // Khai báo hàm hiển thị Xây dựng code void main() { set_tris_a(0xff); // Port A giá trị đầu vào set_tris_b(0x00); // Port B giá trị đầu output_d(0x00); // cho tất port D giá trị while(TRUE) // lặp vô tận { hienthi(value); // Hiển thị led docADC(); // Đọc tín hiệu ADC value=read_ADC(); // gán giá trị ADC cho biến value value=0.488*value; // tính toán lại tín hiệu } } Xây dựng code void docADC() // Hàm đọc tín hiệu { setup_ADC(ADC_clock_internal); // cài đặt ADC thời gian lấy mẫu xung clock setup_ADC_ports(AN0); // Dùng chân AN0 làm chân ADC set_ADC_channel(0); // Chọn chân A0 để đọc giá trị analog lệnh read_adc() delay_us(100); } void hienthi(unsigned int value) // Hàm hiển thị { chuc=value/10; // lấy phần nguyên donvi=value%10; // lấy phần dư port_b=maled[chuc]; // xuất led led_2=1; delay_ms(1); led_2=0; port_b=maled[donvi]; // xuất led led_1=1; delay_ms(1); led_1=0; } Kết [...]...Xây dựng code #include #device *=16 adc=10 // sử dụng bộ ADC 10 bit #fuses NOWDT #fuses NOBROWNOUT #fuses NOLVP #use delay(clock=20000000) // sử dụng thạch anh tần số 20 MHz #byte port_B=0x06 // cài đặt port B #byte port_D=0x08 // cài đặt port D #bit led_ 1=port_D .7 // cài đặt led1 #bit led_ 2=port_D.6 // cài đặt led2 unsigned int value; int maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};... delay_us(100); } void hienthi(unsigned int value) // Hàm hiển thị { chuc=value/10; // lấy phần nguyên donvi=value%10; // lấy phần dư port_b=maled[chuc]; // xuất ra led 2 led_ 2=1; delay_ms(1); led_ 2=0; port_b=maled[donvi]; // xuất ra led 1 led_ 1=1; delay_ms(1); led_ 1=0; } Kết quả ... maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // {0,1,2,3,4,5,6 ,7, 8,9} int chuc,donvi; void docADC(); // Khai báo hàm đọc ADC void hienthi(unsigned int value); // Khai báo hàm hiển thị Xây dựng code void main() { set_tris_a(0xff); // Port A là giá trị đầu vào set_tris_b(0x00); // Port B là giá trị đầu ra output_d(0x00); // cho tất cả port D giá trị 0 while(TRUE) // lặp vô tận { hienthi(value); // Hiển thị ra led docADC(); // Đọc tín hiệu ... Proteus Code Kết Đề Đề bài: Đo nhiệt độ môi trường hiển thị led đo n Yêu cầu đề bài: Dùng cảm biến vi xử lý để đo nhiệt độ môi trường sau đưa led đo n Quy trình để đo nhiệt độ: NHIỆT ĐỘ=>CẢM BIẾN=>ADC=>XỬ... sử dụng: • LM35 • PIC16F 877 A • LED đo n MPX2-CA Thiết kế Sơ đồ khối điều khiển chung: Nguồn Cảm biến LM35 Tín hiệu tương tự Vi xử lý Pic16f 877 a Tín hiệu số Hiển thị led đo n Thiết kế • Khối nguồn:... lý • Khối vi điều khiển Pic16f 877 a: xử lý tín hiệu sang tín hiệu số (digital) sau xuất led • Khối hiển thị: thị nhiệt độ đo Thiết kế Nguyên lý hoạt động: Nhiệt độ bên môi trường cảm biến thu

Ngày đăng: 07/01/2016, 16:31

Tài liệu cùng người dùng

Tài liệu liên quan