View Single Post
Old 30-03-2012, 12:30 AM   #62
lambaotrung
Đệ tử 5 túi
 
Tham gia ngày: Jan 2010
Bài gửi: 96
:
Trích:
Nguyên văn bởi caovanhuong View Post
có thể sử dụng LCD 16x4, giao tiếp 8bit hoạc 4bit
đây là cái thư viện mình viết giao tiếp 8 bit
BT1: xuất "PIC VIET NAM" ra màn hình LCD
Code:
#include <16F877A.h>
#include <def_877A.h>
#fuses NOWDT,NOLVP,NOPROTECT,HS,PUT
#use delay(clock=20000000)
#include <lcd_lib.c>
void main()
{
trisb=0x00;
trisd=0x00;
lcd_init();
while(1)
{
lcd_putcmd(0x01);
lcd_putcmd(0x0c);
lcd_putchar("PIC VIET NAM");
delay_ms(500);
}
}
BT2: đọc giá trị thanh ghi porta

Code:
#include <16F877A.h>
#include <def_877A.h>
#fuses NOWDT,NOLVP,NOPROTECT,HS,PUT
#use delay(clock=20000000)
#include <lcd_lib.c>
int8 a;
void main()
{
trisb=0x00;
trisd=0x00;
trisa=0x00;
lcd_init();
while(1)
{
//porta=10;
lcd_putcmd(0x01);
lcd_putcmd(0x0c);
a=portd;// gan gia tri thanh ghi portd vào a
printf(lcd_putchar,"%d",a);// doc gia tri thanh ghi portd lên man hinh LCD
delay_ms(500);
}
}
BT3: đọc giá trị ADC của AN0 lên LCD
Code:
#include <16F877A.h>
#include <def_877A.h>
#fuses NOWDT,NOLVP,NOPROTECT,HS,PUT
#device *=16 adc=8
#use delay(clock=20000000)
#include <lcd_lib.c>
int8 data;
void main()
{
trisb=0x00;
trisd=0x00;
trisa=0x00;
lcd_init();
setup_ADC_ports(AN0_AN1_AN3);
setup_ADC(adc_clock_internal);
set_ADC_channel(0);
delay_us(10);
while(1)
{
data=read_adc();
lcd_putcmd(0x01);
lcd_putcmd(0x0c);
printf(lcd_putchar,"%u",data);
delay_ms(500);
}
}
đa một năm trôi qua rồi khi đọc lại bài viết này vẫn còn muốn cảm ơn anh 1 lần nửa.

anh Hưởng này anh có thể giúp em về tập lệnh dịch hiển thị trên LCD dc ko. em đọc datasheet thì nó là lệnh 0x05 và 0x07, nhưng ko hiểu sao khi dùng lệnh này thì nó ko hiển thi.

void main()
{
lcd_init();
lcd_putcmd(0x80);
printf(lcd_putchar,"PICVIETNAM");
while(true)
{
lcd_putcmd(0x05)
delay_ms(500);
}
}

ko biết có phải lệnh 0x05 và 0x07 ko bác giúp em.
lambaotrung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn