PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 14-11-2010, 07:07 PM   #1
ducdn
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Bài gửi: 4
:
Unhappy Giao tiếp MCU và LCD

Em mới bắt đầu viết code CCS C cho PIC nên còn gà lắm. Cả ngày hôm nay viết code giao tiếp vs LCD mà test hoài chưa chạy được. Có đọc qua nhiều bài của các bác trên diễn đàn nhưng vẫn chưa giải quyết được nên mạo muội post code lên cho các bác xem dùm em. CCS vẫn biên dịch bình thường nhưng mà khi nạp ko chạy

Đây là code của em:

Code:
#include <16f877a.h>
#fuses NOWDT,XT,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=4000000)
//--------------------------------------
//Dinh nghia chan
#byte PORTA=0x05
#byte TRISA=0x85
#byte PORTD=0x08
#byte TRISD=0x88
#define rs PIN_A1
#define rw PIN_A2
#define e  PIN_A3

//---------------------------------------
//Khai bao ham
void init();                     //I/O init
void lcd_init();                 //LCD init
void lcd_WrDt(char c);               //Ghi Data
void lcd_Str(char* Str);              //Ghi chuoi  
void lcd_WrCm();                     //Ghi Comand
void lcd_gotoxy(int8 x, int8 y);  //Di chuyen con tro toi hang x, cot y

//---------------------------------------
//main
void main()
 { 
 char* dd="Hello World";
 init();
 lcd_init();
 lcd_Str(dd);
 while(1);
 
 }
 
//---------------------------------------
//I/O init
void init()
 {
    TRISA=0x00;                //a port as output.
    TRISD=0x00;                //d port as output.
 }

//---------------------------------------
//LCD init
void lcd_init()
 {
   PORTD=0x30;
   LCD_WrCm();   //    
   PORTD=0x30;   // 
   LCD_WrCm();   //    reset
   PORTD=0x30;   //
   LCD_WrCm();   //    
 
    PORTD=0x01;                 //Xoa Man Hinh 
    lcd_WrCm();
    PORTD=0x38;                //che do 8 bits 2 lines, 5*7 mode.  
    lcd_WrCm();
    PORTD=0x0e;                //Bat LCD,hien con tro,blink off.
    lcd_WrCm();
    PORTD=0x06;                //Con tro tu dong dich fai khi gui 1 ky tu.
    lcd_WrCm();
    PORTD=0x80;                //Vi tri dau tien LCD
    lcd_WrCm();
 }
 
//--------------------------------------
//Xuat Chuoi
void lcd_Str(char* Str)
{
int8 i;
while(Str[i]!=0)
{
lcd_WrDt(Str[i]);
i++;
delay_ms(50);
}
}

//--------------------------------------
//Ghi data vao lcd.
void lcd_WrDt(char c)
 {
  output_high(rs);  //rs=1 Ghi vao thanh ghi Data
  output_low(rw);  //rw=0 Thuc hien viec ghi
  PORTD=c;
  output_low(e);    //e=0  
  output_high(e);    //e=1 Tao xung canh len de lcd nhan lenh
  delay_ms(50);
 }

//--------------------------------------
//Ghi lenh vao lcd 
void lcd_WrCm(void)
 {
  output_low(rs); //rs=0 Ghi vao thanh ghi Lenh
  output_low(rw); // rw=0 Thuc hien viec ghi
  output_low(e);   // e=0  
  output_high(e);  // e=1 Tao xung canh len de LCD nhan data
  delay_ms(50);  
 }

//--------------------------------------
//Di chuyen con tro
void lcd_gotoxy(int8 x, int8 y)
{
switch(x)
{
case 1:
   {
      PORTD=0x80 + y;
      lcd_WrCm();
      break;
   }
case 2:
   {
      PORTD=0xC0 + y;
      lcd_WrCm();
      break;
   }
default: break;
}

}

thay đổi nội dung bởi: ducdn, 14-11-2010 lúc 10:02 PM.
ducdn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 04:35 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam