PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   thắc mắc hiển thị với LCD nối tiếp??? (http://www.picvietnam.com/forum/showthread.php?t=4764)

hongquyen 17-08-2009 11:27 PM

thắc mắc hiển thị với LCD nối tiếp???
 
1 Attachment(s)
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);
  }
}


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
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);
  }
}



Múi giờ GMT. Hiện tại là 01:12 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam