PIC Vietnam

Go Back   PIC Vietnam > Các Đề Tài > Các dự án mã nguồn mở

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

Các dự án mã nguồn mở Nếu bạn không mở mã nguồn, ít nhất là một phần nào đó trong dự án của bạn, xin đừng vào đây.

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 27-09-2011, 09:16 PM   #1
lionking
Đệ tử 3 túi
 
lionking's Avatar
 
Tham gia ngày: May 2011
Bài gửi: 47
:
giao tiếp lcd16x2 bằng 3 dây

mình vừa làm giao tiếp với lcd16x2 chỉ điều khiển bằng 3 dây, chia cho mọi người cùng sài

code:

#include <16F877A.h>
#fuses HS, NOWDT ,PROTECT ,NOBROWNOUT ,NOPUT
#use delay(clock=20000000)
#include <define_pic16f877a.h>

#define data74595 RD1
#define clock74595 RD0
#define latch74595 RD2


int8 buffer_data_lcd = 0;
void OutPut74595(int8 data);


void LCD_STROBE()
{
bit_set(buffer_data_lcd,2);
OutPut74595(buffer_data_lcd);

bit_clear(buffer_data_lcd,2);
OutPut74595(buffer_data_lcd);
}

/* write a byte to the LCD in 4 bit mode */
void LCD_DATA(unsigned char c)
{
buffer_data_lcd = buffer_data_lcd & 0x0F;
buffer_data_lcd = buffer_data_lcd | (c << 4);
OutPut74595(buffer_data_lcd);
}

void lcd_write(unsigned char c)
{
delay_us(40);
LCD_DATA(c>>4);
LCD_STROBE();
LCD_DATA( c );
LCD_STROBE();
}

void lcd_clear(void)
{
bit_clear(buffer_data_lcd,0);
OutPut74595(buffer_data_lcd);
lcd_write(0x1);
delay_ms(2);
}


/* write one character to the LCD */

void lcd_putchar(char c)
{
bit_set(buffer_data_lcd,0);
OutPut74595(buffer_data_lcd);
lcd_write( c );
}

void lcd_gotoxy(unsigned char row,unsigned char col)
{
bit_clear(buffer_data_lcd,0);
OutPut74595(buffer_data_lcd);
switch(row)
{
case 0 : lcd_write( 0x80 + col ) ;
break ;
case 1 : lcd_write( 0xC0 + col ) ;
break ;
case 2 : lcd_write( 0x94 + col ) ;
break ;
case 3 : lcd_write( 0xD4 + col ) ;
break ;
};

}

/* initialise the LCD - put into 4 bit mode */
void lcd_init()
{

buffer_data_lcd = 0;
OutPut74595(buffer_data_lcd);

delay_ms(15); // wait 15mSec after power applied,
LCD_DATA(0x03);
LCD_STROBE();
delay_ms(5);
LCD_STROBE();
delay_us(200);
LCD_STROBE();
delay_us(200);
LCD_DATA(2); // Four bit mode
LCD_STROBE();

lcd_write(0x28); // Set interface length
lcd_write(0x0C); // Display On, Cursor On, Cursor Blink
lcd_clear(); // Clear screen
lcd_write(0x6); // Set entry Mode
}

//------------------------------------------------
void OutPut74595(int8 data)
{
int8 i ;

for(i=0;i<8;i++)
{
if( bit_test(data,7) )
{
data74595=1 ;
}
else
{
data74595=0 ;
};
clock74595=0;
clock74595=1;

data = data<<1 ;
};
//-----------------------------
latch74595 = 1;
latch74595 = 0;
}
//-------------------------------------------------------------
void main(void)
{
TRISA=0xFF;
TRISB=0x00;
TRISC=0xFF;
TRISD=0xF0 ;

PORTB = 0x00;

lcd_init();


while( true )
{
lcd_gotoxy(0,0);
printf(lcd_putchar," Hello");
lcd_gotoxy(1,0);
printf(lcd_putchar," Hoang Cute");

};
}
Hình Kèm Theo
File Type: jpg lcd 3 day.JPG (93.2 KB, 41 lần tải)
lionking 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à 05:33 PM.


Đượ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