![]() |
|
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 2008
Bài gửi: 3
: |
Mong các huynh giúp đỡ gấp
Có một câu hỏi mong anh em trả lời giúp với! Tôi lập trình cho con lcd 16x2( chương trình chạy trên pic 16f877a ), khi chạy mô phỏng trên proteus thì các dòng chữ tôi lập trình đều hiển thị tốt, nhưng khi chạy mạch thật thì trên lcd lại không hiển thị đúng những dòng chữ tôi đã lập trình, nó hiện toàn những kí tự gì đó thôi. Thế là nguyên nhân là sao nhỉ, mong anh em giải đáp giúp tôi với( tôi lập trình trên CCS ). Nếu cần tôi sẽ gửi code đến anh em, mong anh em trả lời nhanh giúp tôi nhé. Thanks!
|
![]() |
![]() |
![]() |
#2 |
Đệ tử 7 túi
Tham gia ngày: May 2009
Bài gửi: 242
: |
Bạn nói ko thì ai bít j mà giúp, ít nhiều cũng phải có thông tin bài bạn làm chứ.
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 2
: |
Đây là code và mạch của nhóm chúng em, anh xem qua và giúp chúng em nhé! cảm ơn anh nhiều:
Code:
#include<16f877a.h> #include<def_877a.h> #device * =16 adc=10; #use delay(clock=20000000) #FUSES NOWDT,HS,NOPUT,NOPROTECT,NOWRT,NODEBUG, BROWNOUT, LVP, NOCPD #include <lcd_lib_4bit.c> #use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) int tram,chuc,donvi,temp,nguong,i; void convert_bcd(int8 temp) { tram = temp / 100 + 0x30; temp = temp % 100; chuc = temp / 10 + 0x30; donvi = temp % 10 + 0x30; } void bao_dong() { int8 i; for(i=0;i<200;i++) { RE0=0; delay_us(100); RE0=1; delay_us(100); } } void LCD(int8 temp) { convert_bcd(temp); lcd_putchar(tram); lcd_putchar(chuc); lcd_putchar(donvi); } //------------------------------------------------------------------- void main() { int32 value; int8 temp; trisB = 0x00; trisC = 0x00; trisD = 0x00; trisE = 0x00; trisA = 0xff; portC = 0xff; portD = 0x00; nguong=20; lcd_init(); printf(lcd_putchar,"DO AN THIET BI DO"); delay_ms(3000); lcd_putcmd(0xC0); printf(lcd_putchar,"KHOI TAO NGUONG(20)"); delay_ms(3000); enable_interrupts (INT_EXT); ext_int_edge(L_TO_H); enable_interrupts (GLOBAL); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(AN0); delay_us(10); value=read_adc(); value=(value)/10.24; temp=value; convert_bcd(temp); delay_ms(1000); lcd_putcmd(0xC0); printf(lcd_putchar,"moi thu da san sang"); delay_ms(3000); i=0; while(1) { i++; value =read_adc(); value=(value)/10.240; temp=value; if (i==200) { convert_bcd(temp); i=0; } if( value > nguong) bao_dong(); lcd_putcmd(0xC0); printf(lcd_putchar,"nongdo="); lcd_putchar(tram); lcd_putchar(chuc); lcd_putchar(donvi); printf(lcd_putchar,"ptram LEL"); } } thay đổi nội dung bởi: namqn, 04-06-2009 lúc 03:50 PM. Lý do: định dạng code |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 2
: |
Còn đây là mạch:
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Jun 2007
Bài gửi: 4
: |
vấn đề này có thể là do phần cứng, các em xem lại mình đã nối đúng chưa? nếu đã chạy tốt trên proteus thì phần lập trình đúng đấy!!
|
![]() |
![]() |
![]() |
|
|