View Single Post
Old 03-10-2013, 11:30 AM   #1
tienhh_1992
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
tienhh_1992 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn