Giúp về hiển thị LCD
2 Attachment(s)
Mình có 1 chương trình đếm tần số sử dụng timer1 để hiển thị trên LCD nhưng không hiểu sao LCD lại hiển thị trên cả 2 dòng va 2 dong khong bang nhau. Lam sao de hien thi 1 dong? Ai giúp mình với!!!
CODE: #include <pic.h> #include <delay.c> __CONFIG(WDTDIS&PWRTEN&LVPDIS&XT); unsigned char kontrol; //--------------------------------------------- // CCP1 INTERRUPT //--------------------------------------------- void interrupt interrupt(void){ TMR1H=0; TMR1L=0; GIE=0; control=1; CCP1IF=0; GIE=1; } //--------------------------------------------- // MAIN PROGRAM //--------------------------------------------- main(void) { unsigned const char number[10]={0x3F,0x06,0x5B, 0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char select[4]={1,2,4,8}; unsigned int counter,value,remainder1,remainder2; float frekans; unsigned char a,i,display[5],data; TRISA=0x00; // khoi tao PORTA la output TRISB=0x08; // 00001000 bit B4 cua PORTB la ngo ra CMCON=0x07; // vo hieu hoa analog I/O cont=0; PORTA=0; PORTB=0 CCP1IE=1; //CHO PHEP NGAT CCP1 CCP1CON=0b00000110; T1CON=0b00100001; GIE=1; PEIE=1; for(;;){ counter=256*CCPR1H+CCPR1L; if(control==1)frequency=100000000/counter; if(kontrol==0)frequency=0; if(counter<10000)frequency=0; control=0; for(a=0;a<25;a++){ value=(int)frequency; display[1]=value/1000; remainder1=value-display[1]*1000; display[2]=remainder1/100; remainder2=remainder1-display[2]*100; display[3]=remainder2/10; display[4]=remainder2-display[3]*10; for(i=0;i<4;i++){ PORTB=0; PORTA=0; data=number[display[i+1]]; PORTB=data&0x07; data=data<<1; PORTB=PORTB|(data&0xF0); PORTA=select[i]; DelayMs(3); } } } } |
chụp cái hình này bạn có nhìn thấy cái j không mà cũng up lên
|
tình hình là lúc trước em có viết 1 chương trình khởi tạo cho LCD nhưng phải tội là em chỉ được học ASM nên post lên các bác đừng cười
code: KHOITAOLCD BANKSEL PORTB MOVLW 0X38 MOVWF PORTB CALL LENH MOVLW 0X38 MOVWF PORTB CALL LENH MOVLW 0X0C MOVWF PORTB CALL LENH MOVLW 0X06 MOVWF PORTB CALL LENH MOVLW 0X01 MOVWF PORTB CALL LENH RETURN ;------------------------------------------------------------- LENH MOVWF PORTB MOVLW 0X0 MOVWF PORTD BSF PORTD,2 BCF PORTD,2 CALL CHOLCD RETURN ;------------------------------------------------------------- DULIEU MOVWF PORTB BSF PORTD,0 BCF PORTD,1 BCF PORTD,2 BSF PORTD,2 ;E=1 BCF PORTD,2 CALL CHOLCD RETURN ;---------------------------------------------------------------- CHOLCD BANKSEL PORTD CLRF PORTB BCF PORTD,0 BSF PORTD,1 BCF PORTD,2 BSF PORTD,2 BCF PORTD,2 CHO BTFSC PORTB,7 GOTO CHO RETURN ;---------------------------------------------------------------- em chỉ post mấy cái chương trình con thôi Àh cho hỏi luôn ở đây có ai học Cao Thắng không ?? |
R ko nhìn thấy chuơng trình khởi tạo LCD của bạn đâu.
Lỗi này chắc là do chuơng trình khới tạo LCD của bạn có vấn đề R khuyên bạn khi post chuơng trình lên để mọi người trợ giúp thì post all chưong trình hoặc bạn nén vào file nào đó rồi gửi lên. Tiếp theo là chuơng trình viết của bạn nên có comment chi tiết. Đó là các thể hiện bạn là ngưởi viết chuơng trình cẩn thận và chuyên nghiệp Bạn post chuơng trình khởi tạo LCD của mình lên sẽ có ng giúp bạn thank! chúc vui |
@@
tóm lại bạn rocket42 củng chẳng giúp gì được. hình như reply bạn củng chung chung cho có và rất là huề vốn ^^ |
Múi giờ GMT. Hiện tại là 07:30 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam