View Single Post
Old 20-08-2012, 11:26 AM   #11
imlanglavang102
Nhập môn đệ tử
 
Tham gia ngày: Oct 2011
Bài gửi: 7
:
hi mình có vấn đề này khó giải nhờ các bạn tí nha
#include "D:\A NHAP PHAM MEM\pic xoa\lcd.h"
#include <string.h>
#use delay(clock=1200000)
#fuses NOWDT,PUT,XT,NOPROTECT
#use fast_io(b)
#use fast_io(e)
#byte LCDdata=0x07// cong c trong c khong duoc dat ten du lieu vao cac tu khao ma tron gx da quy
// din khi do se lam sai het chuong trinh
// ma con lam cho chuong trinh phien dich sai
#define RS 72 // cong e1
#define RW 73// cong e2
#define E 74// cong e3
#define BF 63
void delay1(long time)
{ int i;
for(i=0;i<time;i++)
{// muc dich la tao ra ham tre cho lcd
}
}
void wait(void)
{
//int n=0;
output_high(E);//==1;// Dua chan cho fep len cao
output_low(RS);//==0;// Chon thanh ghi lenh
output_high(RW);//==1;// Doc tu LCD
LCDdata=0xFF;// Gia tri 0xFF
// while(BF){n++; if(n>100) break;}// Kiem tra co ban
// Neu ban dem n den 100 roi thoat khoi while
output_low(E);//==0;// Dua xung cao xuong thap de chot
output_low(RS);//W==0;// Doc tu LCD
}
// Hàm di?u khi?n LCD th?c hi?n 1 l?nh:
void LCDcontrol(unsigned char x)
{
output_high(E);//==1;// Dua chan cho fep len cao
output_low(RS);//==0;// Chon thanh ghi lenh
output_low(RW);//==0;// Ghi len LCD
LCDdata=x;// Gia tri x
output_low(E);//==0;// Xung cao xuong thap
wait();// Doi LCD san sang
}
//Hàm có 1 bi?n d?u vào là các giá tr? trong b?ng mã l?nh c?a LCD.
//* Hàm kh?i t?o LCD:
void LCDinit(void)
{
LCDcontrol(0x30);//Che do 8 bit.
LCDcontrol(0x30);
LCDcontrol(0x30);
LCDcontrol(0x38);// 2 dong va ma tran 5x7
LCDcontrol(0x0C);// Bat con tro
LCDcontrol(0x06);// Tang con tro xang fai
LCDcontrol(0x01);// Xoa man hinh
}
//* Hàm l?nh cho LCD hi?n th? 1 kí t? :
void LCDwrite(unsigned char c)
{
output_high(E);//==1;// Cho fep muc cao
output_high(RS);//==1;// Ghi du lieu
output_low(RW);//==0;// Ghi len LCD
LCDdata=c;// Gia tri C
output_low(E);//==0;// Xung cao xuong thap
}
//Hàm l?nh cho LCD hi?n th? 1 xâu kí t? ( dòng ch?):
void LCDputs(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1) LCDcontrol(0x80);// Ep con tro ve dau dong 1
else LCDcontrol(0xC0);// Ep con tro ve dau dong 2
len==strlen(s);// Lay do dai bien duoc tro boi con tro
// khi khai bao ham strlen can co #include<string.h>
while(len!=0)// Khi do dai van con
{
LCDwrite(*s);// Ghi ra LCD gia tri duoc tro boi con tro
s++;// Tang con tro
len--;// Tru do dai
}
}
void LCDwritei(int d)
{
unsigned char i,j,k,l;
i=d%10;// Chia lay phan du, duoc chu so hang don vi
d=d/10;// Chia lay phan nguyen, duoc nhung chu so da bo hang don vi
j=d%10;// Duoc chu so hang chuc
d=d/10;// Nhung chu so da bo hang don vi va hang chuc
k=d%10;// Duoc hang tram
l=d/10;// Duoc hang nghin
LCDwrite(48+l);// Hien thi ki tu trong bang ascii
LCDwrite(48+k);// Trong bang ascii so 0 co co so thu tu la 48
LCDwrite(48+j);
LCDwrite(48+i);
}
void main()
{
//char x;
// setup_adc_ports(NO_ANALOGS);
//setup_adc(ADC_OFF);
//setup_psp(PSP_DISABLED);
//setup_spi(SPI_SS_DISABLED);
//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
//setup_timer_1(T1_DISABLED);
//setup_timer_2(T2_DISABLED,0,1);
//setup_comparator(NC_NC_NC_NC);
//setup_vref(FALSE);

// TODO: USER CODE!!

LCDinit();
LCDwritei(48);
//LCDputs("dsadfasdfsa",1);
delay1(30000);
LCDcontrol(0xc5);LCDwrite('a');LCDwrite('n');LCDwr ite('#');LCDwrite('O');LCDwrite('K');LCDwrite('a') ;LCDwrite('n');LCDwrite('*');LCDwrite('H');LCDwrit e('U');LCDwrite('Y');
while(true)
{
//for(x=0;x<16;x++)// Dich 16 lan.
//{
//LCDputs("8052 MCU",1);
//LCDcontrol(0x18);// Dich hien thi sang trai.
//delay1(5000);// Tre
//}
}
}
sau bai nay to viet xong bien dich xong nhưng mà khi thử băng protues thì lai không cháy đuwocj
còn trong lập trình c trong keli thì đương nhiên chương trình này chạy đúng
hi
imlanglavang102 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn