![]() |
|
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 |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 5
: |
hiện thị kí tự đặc biệt lên LCD
em mới học pic đươc 1 tháng, và đang dùng pic16f877a để hiện thị volt, amp, nhiệt độ. nhưng mà cái đơn vị Độ C em không biết làm thế nào để nó hiển thị được kí tự của đơn vị Độ C có bác nào biết chỉ giáo em với ah. Em sử dụng trình biên dịch CCS, chân vào ADC em sử dụng chân A0(volt), A1(nhiệt độ) ,A3(amp) Vref= Vdd, chân hiện thị ra LCD sử dụng Port D kết nối với LCD 4bit
đưới đây là đoạn code của em ah: #include <16f877a.h> #device *=16 ADC =10; //su dung adc 10 bit #fuses XT NOPROTECT NOWDT NOLVP #use delay(clock = 20000000) //su dung thach anh 20MHz #use fast_io(D) // DINH NGHIA CHAN CUA LCD #define LCD_ENABLE_PIN PIN_D2 #define LCD_RS_PIN PIN_D0 #define LCD_RW_PIN PIN_D1 #define LCD_DATA4 PIN_D3 #define LCD_DATA5 PIN_D4 #define LCD_DATA6 PIN_D5 #define LCD_DATA7 PIN_D6 //============//khai bao thu vien LCD.c #include <lcd.c> //============//ham con hien thi LCD void LCD_ADC(int8 a, int8 x, int8 y) { set_ADC_channel(a); delay_us(10); float d = read_ADC(); d = (d+0.4999999)*50/1024; LCD_gotoxy(x,y); if(a==0) { printf(LCD_putc,"%2.2fV ",d); } else if(a==1) { d=d*10; printf(LCD_putc,"%2.0fC ",d); } else { printf(LCD_putc,"%1.2fA ",d); } } //============================================ void main () { int x = 0; float d1,d2,d3; set_tris_D(0x00); setup_ADC(ADC_CLOCK_INTERNAL); //chon tan so lay mau bang tan so noi cua pic setup_ADC_ports(RA0_RA1_RA3_ANALOG); // chon chan vao adc la A0 A1 A2 va Vref = Vdd LCD_init(); LCD_gotoxy(1,1); LCD_putc("U:"); LCD_gotoxy(1,2); LCD_putc("I:"); while (1) { if(x==0) { LCD_ADC(0,3,1); x++; } else { if(x==1) { LCD_ADC(1,12,1); x=x+2; } else { LCD_ADC(3,3,2); x=0; } } } } thay đổi nội dung bởi: tienhh_1992, 03-10-2013 lúc 11:33 AM. Lý do: thêm sơ đồ nối chân |
![]() |
![]() |
|
|