سلام
من یه برنامه نوشتم برای اسکن صفحه کلید و نمایش کدها روی lcd ولی جواب نمیده البته با نرم افزار پروتئوس کار میکنم . اگه کسی میتونه منو راهنمایی کنه ممنون میشم.نمیدونم اشکال برنامم کجاست. :angry:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#define xtal=8000000;
#include <lcd.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B;PORTA
#endasm
unsigned char scan_key(void);
flash unsigned char code[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
// Declare your global variables here
void main(void)
{
char data_lcd[10];
unsigned char w;
PORTA=0x00;
DDRA=0x00;
PORTC=0xF0;
DDRC=0xF0;
// LCD module initialization
lcd_init(16);
lcd_clear();
while (1)
{
w=scan_key();
if(w!=0xff){
lcd_gotoxy(0,0);
sprintf(data_lcd,"key=%d",w);
lcd_puts(data_lcd);
}
};
}
//------------------------------------------------
unsigned char scan_key(void){
unsigned char i,data,num_key=0xff;
char k;
k=0B00010000;
for(i=0;i<4;i++){
PORTC=~k;
data=PINC & 0x0f;
if(data==0x07)
num_key=code[0][i];
if(data==0x0B)
num_key=code[1][i];
if(data==0x0D)
num_key=code[2][i];
if(data==0x0E)
num_key=code[3][i];
delay_ms(20);
k<<=1;
}
return num_key;
}
من یه برنامه نوشتم برای اسکن صفحه کلید و نمایش کدها روی lcd ولی جواب نمیده البته با نرم افزار پروتئوس کار میکنم . اگه کسی میتونه منو راهنمایی کنه ممنون میشم.نمیدونم اشکال برنامم کجاست. :angry:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#define xtal=8000000;
#include <lcd.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B;PORTA
#endasm
unsigned char scan_key(void);
flash unsigned char code[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
// Declare your global variables here
void main(void)
{
char data_lcd[10];
unsigned char w;
PORTA=0x00;
DDRA=0x00;
PORTC=0xF0;
DDRC=0xF0;
// LCD module initialization
lcd_init(16);
lcd_clear();
while (1)
{
w=scan_key();
if(w!=0xff){
lcd_gotoxy(0,0);
sprintf(data_lcd,"key=%d",w);
lcd_puts(data_lcd);
}
};
}
//------------------------------------------------
unsigned char scan_key(void){
unsigned char i,data,num_key=0xff;
char k;
k=0B00010000;
for(i=0;i<4;i++){
PORTC=~k;
data=PINC & 0x0f;
if(data==0x07)
num_key=code[0][i];
if(data==0x0B)
num_key=code[1][i];
if(data==0x0D)
num_key=code[2][i];
if(data==0x0E)
num_key=code[3][i];
delay_ms(20);
k<<=1;
}
return num_key;
}
دیدگاه