![]() |
|
|
|
|
#1 |
|
Đệ tử 4 túi
Tham gia ngày: Jun 2007
Bài gửi: 74
: |
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: 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);
}
}
thay đổi nội dung bởi: phamminhtuan, 18-08-2009 lúc 10:17 AM. Lý do: Định dạng code |
|
|
|
|
|
#2 |
|
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
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 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);
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);
}
}
|
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|