![]() |
|
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 |
|
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 25
: |
Loay hoay với cái này mất gần 2 ngày trời rồi. Có ai xem giúp tôi với. Chứ thấy cái LCD này lì quá!!!!!
|
|
|
|
|
|
#2 | |
|
Trưởng lão PIC bang
|
Trích:
http://www.picvietnam.com/forum/showthread.php?t=357 Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
|
|
#3 | |
|
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 25
: |
tôi viết code để test lcd như sau:
Code:
#include <16F877A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=10000000)
/* LCD STUFF */
#define LCD_D0 PIN_B1
#define LCD_D1 PIN_B2
#define LCD_D2 PIN_B3
#define LCD_D3 PIN_B4
#define LCD_EN PIN_A1
#define LCD_RS PIN_A2
#define FIRST_LINE 0x00
#define SECOND_LINE 0x40
#define CLEAR_DISP 0x01
#int_EXT
void EXT_isr(void)
{
}
#int_TBE
void TBE_isr(void)
{
}
#int_RDA
void RDA_isr(void)
{
}
void LCD_Init ( void );
void LCD_SetPosition ( unsigned int cX );
void LCD_PutChar ( unsigned int cX );
void LCD_PutCmd ( unsigned int cX );
void LCD_PulseEnable ( void );
void LCD_SetData ( unsigned int cX );
void main()
{
Output_high(PIN_B5);
Output_high(PIN_B5);
LCD_Init();
LCD_PutChar("O");
LCD_PutChar("K");
}
/******************************************************************************/
void LCD_Init ( void )
{
LCD_SetData ( 0x00 );
delay_ms ( 200 ); /* wait enough time after Vdd rise */
output_low ( LCD_RS );
LCD_SetData ( 0x03 ); /* init with specific nibbles to start 4-bit mode */
LCD_PulseEnable();
LCD_PulseEnable();
LCD_PulseEnable();
LCD_SetData ( 0x02 ); /* set 4-bit interface */
LCD_PulseEnable(); /* send dual nibbles hereafter, MSN first */
LCD_PutCmd ( 0x2C ); /* function set (all lines, 5x7 characters) */
LCD_PutCmd ( 0x0C ); /* display ON, cursor off, no blink */
LCD_PutCmd ( 0x01 ); /* clear display */
LCD_PutCmd ( 0x06 ); /* entry mode set, increment */
}
void LCD_SetPosition ( unsigned int cX )
{
/* this subroutine works specifically for 4-bit Port A */
LCD_SetData ( swap ( cX ) | 0x08 );
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
}
void LCD_PutChar ( unsigned int cX )
{
/* this subroutine works specifically for 4-bit Port A */
output_high ( LCD_RS );
LCD_SetData ( swap ( cX ) ); /* send high nibble */
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) ); /* send low nibble */
LCD_PulseEnable();
output_low ( LCD_RS );
}
void LCD_PutCmd ( unsigned int cX )
{
/* this subroutine works specifically for 4-bit Port A */
LCD_SetData ( swap ( cX ) ); /* send high nibble */
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) ); /* send low nibble */
LCD_PulseEnable();
}
void LCD_PulseEnable ( void )
{
output_high ( LCD_EN );
delay_us ( 10 );
output_low ( LCD_EN );
delay_ms ( 5 );
}
void LCD_SetData ( unsigned int cX )
{
output_bit ( LCD_D0, cX & 0x01 );
output_bit ( LCD_D1, cX & 0x02 );
output_bit ( LCD_D2, cX & 0x04 );
output_bit ( LCD_D3, cX & 0x08 );
}
Tuy nhiên, mô phỏng với proteus thì chạy tốtt, còn nạp lên mạch thì LCD chỉ hiện một dòng đen xì. (với code trên, tôi đã nối châm RW của LCD với đất) kiểm tra điện áp trên lcd thì có Trích:
thay đổi nội dung bởi: Vinh3i, 19-03-2009 lúc 04:30 PM. |
|
|
|
|
|
|
#4 | |
|
Trưởng lão PIC bang
|
Trích:
Theo thông tin của bạn, phần cứng của bạn đang có vấn đề, vì chân D6 có trạng thái bất thường so với các chân còn lại. Bạn nên đưa sơ đồ mạch đã dùng lên diễn đàn, vì code chỉ có nghĩa khi dùng với một thiết kế phần cứng cụ thể. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
|
|
#5 | |
|
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 25
: |
Trích:
|
|
|
|
|
|
|
#6 |
|
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 25
: |
Hjx, hóa ra chip PIC bị hỏng.
Nhưng ko phát hiện ra hỏng bởi vì dùng Pickit2 vẫn nạp và tẩy ngon lành. Test bằng cách nhấp nháy pin_b5 vẫn ok. Sau đó, tôi đã đo thông mạch của pic (gỡ pic ra khỏi mạch). Thấy chân 3-4-12-31 của PIC bị thông mạch. Bác cho hỏi, hỏng kiểu đó có chữa được ko... tiếc con pic quá! |
|
|
|
|
|
#7 | |
|
Trưởng lão PIC bang
|
Trích:
Tôi không nghĩ rằng bạn có thể chữa được nó, nhưng dùng cho các mạch khác thì vẫn được (chỉ cần không dùng hai chân đó, và thiết lập các chân đó là ngõ vào thôi). Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
|
|
#8 |
|
Nhập môn đệ tử
Tham gia ngày: Dec 2008
Bài gửi: 6
: |
gởi Vinh3i tiền bối!!
em đang làm đề tài vi điều khiển gần giống như anh vậy!!! em học ĐTĐ khoa điện BKDN,mới vào nghề điện tử này không lâu như mấy huynh! nên gà trong lập trình !!! híc.... mong anh Vinh3i có thể up luôn cả code C về đề tài này cho mọi người cùng tham khảo!! cảm ơn đã đọc tin này!! Nhân tiện hỏi luôn ma trận phím của anh lập trình như thế nào!! thank!! |
|
|
|
|
|
#9 | |
|
Đệ tử 1 túi
Tham gia ngày: Jan 2007
Bài gửi: 25
: |
Trích:
|
|
|
|
|
|
|
#10 |
|
Nhập môn đệ tử
Tham gia ngày: May 2009
Bài gửi: 1
: |
Chào anh Vinh3i!
1.Anh cho em hỏi là chân D0-D3 của LCD anh không sử dụng thì khi hiển thị lên LCD sẽ như thế nào? 2. Ma trận phím anh cho qua cổng AND thì khi thay đổi hay cài đặt thông số thời gian hay đặt ngưỡng cho nhiệt độ thì phải nhấn cả một tổ hợp phím à? Mong anh chỉ bảo! |
|
|
|
|
|
#11 |
|
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 2
: |
Thanks bài viết rất bổ ích cho những người đang làm đồ án về Pic
|
|
|
|
|
|
#12 |
|
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 2
: |
Anh có thể up file code của toàn bộ đề tài này ko? Em đang làm đồ án về Pic,nhưng phần lập trình gà wa.
|
|
|
|
|
|
#13 |
|
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 1
: |
chào các a.. e là thành viên mới...
e đang nghiên cứu làm đồng hồ vạn niên hiển thị lên LCD..dùng PIC6f877a viết code bằng ngôn ngữ asm ..chân thành. vinhjuri2310@yahoo.com |
|
|
|
|
|
#14 |
|
Đệ tử 2 túi
Tham gia ngày: Mar 2011
Bài gửi: 27
: |
share mình cái này mình nguyên cứu cái bạn . link die rồi
|
|
|
|
|
|
#15 |
|
Nhập môn đệ tử
Tham gia ngày: Feb 2007
Bài gửi: 3
: |
Anh chị nào có driver cho thằng 18B20 không? xài cho HTPIC hoặc CCS cũng dc?
em dang tìm mà chưa thấy. Thanks |
|
|
|
![]() |
| Tags |
| lcd, nhietdo, pic6f877, realtime-clock |
|
|