Ðăng Nhập

View Full Version : thắc mắc hiển thị với LCD nối tiếp???


hongquyen
17-08-2009, 11:27 PM
chào mọi người:em đang làm mô chương trình hiển thị điện áp đo được ra LCD nối tiếp dùng PIC16f887 nhưng có điều còn thắc mắc xin mọi người giúp đỡ ạ.

vấn đề của em là:
- em muốn điện áp anlog đo được hiển thị ra LCD nối tiếp chỉ 1 số ( có nghĩa là trước khi đọc điện áp analog và hiển thị ra LCD thì em đã xóa LCD rồi) nhưng lỗi ở đây là các ký tự lại hiển thị 1 cách liên tục.

-em có post phần cứng ( hình có tên là h1.jpg và LCD thể hiện lỗi) trong proteus và code trong ccsc.

mong mọi người gúp em gảii quyết vấn đề này. Em cảm ơn

code:

#include <16f887.h>
#device adc=8
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=pin_d0,rcv=pin_d1) //thiet lap noi tiep

void main()
{
int vin0; //bien dau vao
setup_adc(adc_clock_internal); //thiet lap xung clock noi
setup_adc_ports(an0); //chon ngo vao analog
set_adc_channel(0);
delay_us(10);
for(;;)
{
vin0=read_adc();
vin0=(vin0/32)+0x30; //tao ma ASCII
delay_ms(1000);
putc(254); //xoa hien thi lcd
putc(1);
printf("input=%u",vin0); //xuat rs232
delay_ms(1000);
}
}

phamminhtuan
18-08-2009, 10:28 AM
Link datasheet, không biết có phải loại LCD mà bạn đang dùng không:
http://www.sparkfun.com/datasheets/LCD/SerLCD_V2_5.PDF

Bạn thử sửa code lại thế này xem sao

#include <16f887.h>
#device adc=8
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=pin_d0,rcv=pin_d1) //thiet lap noi tiep

void main()
{
int vin0; //bien dau vao
setup_adc(adc_clock_internal); //thiet lap xung clock noi
setup_adc_ports(an0); //chon ngo vao analog
set_adc_channel(0);
delay_us(10);
putc(0xFE); //Turn on display
putc(0x41);
for(;;)
{
vin0=read_adc();
//vin0=(vin0/32)+0x30; //Ko can thiet, vi pham printf tao ra ma ascii
delay_ms(1000);
putc(0xFE); //xoa hien thi lcd
putc(0x51);
printf("input=%u",vin0); //xuat rs232
delay_ms(1000);
}
}