Bằng những kiến thức về điện – điện tử, tôi đã lắp ráp thành công máy đo âm tần hiển thị số. Máy đo có kích thước nhỏ gọn, lắp đặt, di chuyển đơn giản, dễ dàng. Sai số của máy đo so với máy phát xung chuẩn nhỏ nên khá tin cậy trong việc đo tần số âm tần của các xung hình sin, vuông, tam giác.
4.5.2 Hướng phát triển
Với những đặc điểm trên thì máy đo âm tần chỉ mới dừng lại ở mức tần số thấp và chưa hiển thị được phần thập phân của tần số. Đề tài còn có thể mở rộng ra cho việc đo tần số cao tần, với mức độ hiển thị chính xác có thể tới phần thập phân. Ngoài ra, máy đo âm tần có thể kết hợp với một mạch tạo xung bất kỳ để tạo thành máy phát xung hiển thị số.
PHỤ LỤC
Phụ lục 1: Code lập trình đo tần số bằng phương pháp tạo thời gian chuẩn 1s [11]
#include <main.h> #include <var.h>
#include <lcd16x2\lcd_16x2.c> #INT_EXT
void dem_xung() // Trinh phuc vu ngat ngoai {
so_xung+=1; }
#INT_TIMER1
void tao_tre_1s() // Trinh phuc vu ngat tran TIMER1 {
setup_timer_1(T1_DISABLED); count_t1++;
if(count_t1==38) // Tao khoang thoi gian 1s { tan_so = so_xung; so_xung = 0; count_t1 = 0; enable_display = 1; } set_timer1(0); setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); } void main() { DDRD = DDROUT;
enable_interrupts(INT_TIMER1); // Cho phep ngat tran TIMER1 ext_int_edge(H_TO_L); // Cau hinh ngat ngoai theo canh xuong enable_interrupts(INT_EXT); // Cho phep ngat ngoai
enable_interrupts(GLOBAL); // Cho phep ngat toan cuc
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); // Cau hinh bo chia cho TIMER1 set_timer1(0); // Cau hinh gia tri cho thanh ghi TMR1
LCD_Init(); LCD_Gotoxy(0,0);
sprintf(lcd_buff,"TRUONG DHSPTPHCM"); LCD_Puts(lcd_buff);
LCD_Gotoxy(0,1);
sprintf(lcd_buff," KHOA VAT LY "); delay_ms(10);
LCD_Puts(lcd_buff); delay_ms(2000); LCD_Clear(); LCD_Gotoxy(0,0);
sprintf(lcd_buff," MAY DO AM TAN "); LCD_Puts(lcd_buff); while(TRUE) { if(enable_display) { LCD_Gotoxy(0,1);
sprintf(lcd_buff,"TAN SO: %5lu Hz",tan_so); LCD_Puts(lcd_buff);
enable_display = 0; }
} }
Phụ lục 2: Giao tiếp LCD [11] #include "lcd_16x2.h" void LCD_Enable(void) { LCD_EN=1; delay_us(3); LCD_EN=0; delay_us(50); }
//Ham Gui 4 Bit Du Lieu Ra LCD void LCD_Send4Bit( uint8_t Data ) { LCD_D4=(Data>>0)&0x01; LCD_D5=(Data>>1)&0x01; LCD_D6=(Data>>2)&0x01; LCD_D7=(Data>>3)&0x01; }
// Ham Gui 1 Lenh Cho LCD
void LCD_SendCommand (uint8_t command ) {
LCD_Send4Bit ( command >>4 ); /* Gui 4 bit cao */
LCD_Enable () ;
LCD_Send4Bit ( command ); /* Gui 4 bit thap*/
LCD_Enable () ; }
// Ham Khoi Tao LCD void LCD_Init ( void ) { LCD_Send4Bit(0x00); delay_ms(20); LCD_RS=0; LCD_RW=0; LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable();
LCD_SendCommand( 0x28 ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
LCD_SendCommand( 0x0c); // cho phep hien thi man hinh
LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh
LCD_Clear(); // xoa toan bo khung hinh
}
//Ham Thiet lap vi tri con tro
void LCD_Gotoxy(uint8_t x, uint8_t y) { uint8_t address; if(!y) address = (0x80+x); else address = (0xC0+x); delay_ms(1); LCD_SendCommand(address); delay_ms(5); }
// Ham Xoa Man Hinh LCD void LCD_Clear()
{
LCD_SendCommand(0x01); delay_ms(5);
}
// Ham Gui 1 Ki Tu Len LCD void LCD_PutChar ( uint8_t Data ) {
LCD_RS=1;
LCD_SendCommand( Data ); LCD_RS=0;
}
//Ham Gui Mot Chuoi Ki Tu Len LCD void LCD_Puts (uint8_t *s)
{ while (*s) { LCD_PutChar(*s); s++; } }
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Lương Ngọc Hải (2007), “Giáo trình kỹ thuật xung – số”, Tái bản lần thứ ba, Nhà xuất bản Giáo Dục, Thành phố Hồ Chí Minh.
[2] Hồ Văn Sung (2008), “Cơ sở lý thuyết mạch điện và điện tử”, Nhà xuất bản khoa học và kỹ thuật, Thành phố Hồ Chí Minh.
[3] Trương Văn Tám, “Mạch điện tử 1 và 2”, Nhà xuất bản Đại học Cần Thơ, Thành phố Cần Thơ.
[4] Kiều Xuân Thực, Vũ Thị Thu Hương (2010), “Vi điều khiển – Cấu trúc – Lập trình và ứng dụng”, Tái bản lần thứ hai, Nhà xuất bản Giáo Dục Việt Nam, Thành phố Hồ Chí Minh.
[5] Việt Hùng Vũ, Trần Thị Hoàng Anh, Đậu Trọng Hiền (2008), “Chuyên đề vẽ và thiết kế mạch in với Orcad 10”, Nhà xuất bản Giao Thông Vận Tải, Thành phố Hồ Chí Minh.
[6] Lê Phi Yến – Lưu Phú – Nguyễn Như Anh (2011), “Kỹ thuật điện tử”, Tái bản lần thứ hai, Nhà xuất bản đại học quốc gia thành phố Hồ Chí Minh, Thành phố Hồ Chí Minh. Tiếng Anh [7] http://pdf1.alldatasheet.com/datasheet-pdf/view/99448/FAIRCHILD/KA7809.html [8] http://pdf1.alldatasheet.com/datasheet-pdf/view/197719/MICROCHIP/PIC16F887- E/ML.html [9] http://pdf1.alldatasheet.com/datasheet-pdf/view/43380/SHARP/PC900V.html [10]http://pdf1.alldatasheet.com/datasheet- pdf/view/23384/STMICROELECTRONICS/NE555.html