Chào cả nhà!
mình đang làm 1 thiết bị gồm : phím ma trận 4x4 + 18f4550+lcd
mình muốn nhần 4 phím trên bàn phím rồi sau đó lưu thành 1 màng và hiển thị 1 chuỗi gồm 4 phím vừa nhấn.
mô phỏng thì ok.còn chạy thật trên board thì lại fail.
code như sau :
Rất mong mọi người chỉ giúp
mình đang làm 1 thiết bị gồm : phím ma trận 4x4 + 18f4550+lcd
mình muốn nhần 4 phím trên bàn phím rồi sau đó lưu thành 1 màng và hiển thị 1 chuỗi gồm 4 phím vừa nhấn.
mô phỏng thì ok.còn chạy thật trên board thì lại fail.
code như sau :
Code:
#include <18f4550.h>
#device *=16
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#byte portb = 0xf81
#byte trisb = 0xf93
#byte portd = 0xf83
#byte trisd = 0xf95
#byte portc = 0xf82
#byte trisc = 0xf94
#define ROW1 PIN_B7
#define ROW2 PIN_B6
#define ROW3 PIN_B5
#define ROW4 PIN_B4
#define COL1 PIN_B3
#define COL2 PIN_B2
#define COL3 PIN_B1
#define COL4 PIN_B0
//++++++++++++++++++//
#include <lcd_lib_4bit.c>
#include <key_4x4.c>
#include <stdlib.h>
#include <string.h>
char key;
char s[10];
int i=0,j=0,k=128,a=0,m=0,n=0;
int16 data=0;
void main()
{
set_tris_d(0x00);
set_tris_c(0x00);
set_tris_b(0b00001111);
Portd=0x00;
portc=0x00;
LCD_Init();
lcd_putcmd(line_1);
printf(lcd_putchar,"tets");
lcd_putcmd(line_2);
printf(lcd_putchar,"ok");
delay_ms(50);
lcd_putcmd(0x01);
while(1)
{
key=get_key_4x4();
if(key)
{
lcd_putcmd(0x80);
LCD_SetPosition(k);
k++;
lcd_putchar(key);
if(key=='#') // xóa màn hình
{
i=i-1;
j=0;
k=128;
lcd_putcmd(Clear_Scr);
a=0;
}
for(j=0;j<4;++j) // măc ở chỗ này.
s[i]=get_key_4x4();
i++;
if(i==4)
{
i=0;
k=128;
lcd_putcmd(0xc0);
printf(lcd_putchar,"str:%s",s); // không hiển thị đc chuỗi đá nhận
a=1;
}
while(key)key=get_key_4x4();
delay_ms(10);
//++++++++++++++++++++++//
}
}
}
Comment