|
Tài trợ cho PIC Vietnam |
Những lỗi nạp và debug thường gặp Nên chú ý box này trước khi đặt câu hỏi |
|
Ðiều Chỉnh | Xếp Bài |
20-08-2012, 11:26 AM | #11 |
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 |
|
|