BASIC4MCU | 질문게시판 | avr128 코딩, 키패드,세그먼트
페이지 정보
작성자 핑구맹구 작성일2019-11-25 19:48 조회11,980회 댓글2건본문
안녕하세요 키패드를 이용하여 7 세그먼트에 키패드를 누르면 차례대로 숫자가 쉬프트 되도록 코딩 짰는데 아트메가에 코딩을 넣으면 불자체가 안들어옵니다.
코딩 먼저 보여드릴게요. // 입력은 F 0,2,4 번이고 출력은 C 0,1,2,3 포트에 연결되어있습니다.
사용하는데 순서에 맞게 전부 연결했습니다......ㅠㅠ코딩한번만 봐주세요
세그먼트 빵판,키패드 전부 점검 해보았는데 전부 작동은 잘됩니다 ㅠㅠ도와주세요
#include <avr/io.h>
#include <util/delay.h>int main(){
// int n= 0;
DDRA = 0xff;
DDRB = 0xff;
DDRC = 0xff;
DDRF = 0x00; // 포트 C의 상위바이트는 columm 하위바이트는 row값
PORTC = 0xff;
PORTF = 0x00;
char Shift[4]= {0xff,0xff,0xff,0xff}; //Shift 초기화
unsigned char seg[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83};
while(1){
PORTA = 0xff;PORTC = 0b00001110;
_delay_ms(10);
if((PINF & 0xf0) == 0b11100000 ){
PORTA = seg[1];}
else if((PINF & 0xf0) == 0b11010000 ){
PORTA = seg[4];}
else if((PINF & 0xf0) == 0b10110000 ){
PORTA = seg[7];}
else if((PINF & 0xf0) == 0b01110000 ){
PORTA = seg[11];}
PORTC = 0b00001101;
_delay_ms(20);
if((PINF & 0xf0) == 0b11100000 ){
PORTA = seg[2];}
else if((PINF & 0xf0) == 0b11010000 ){
PORTA = seg[5];}
else if((PINF & 0xf0) == 0b10110000 ){
PORTA = seg[8];}
else if((PINF & 0xf0) == 0b01110000 ){
PORTA = seg[0];}
PORTC = 0b00001011;
_delay_ms(30);
if((PINF & 0xf0) == 0b11100000 ){
PORTA = seg[3];}
else if((PINF & 0xf0) == 0b11010000){
PORTA = seg[6];}
else if((PINF & 0xf0) == 0b10110000 ){
PORTA = seg[9];}
else if((PINF & 0xf0) == 0b01110000 ){
PORTA = seg[12];}
if(PORTA != 0xff){
Shift[3] = Shift[2];
Shift[2] = Shift[1];
Shift[1] = Shift[0];
Shift[0] = PORTA;
}for(int n =0; n < 100; n++)
{
PORTB =0xf7;
PORTA = Shift[0];
_delay_ms(10);PORTB =0xfb;
PORTA = Shift[1];
_delay_ms(10);PORTB =0xfd;
PORTA = Shift[2];
_delay_ms(10);PORTB =0xfe;
PORTA = Shift[3];
_delay_ms(10);}
}
}
댓글 2
조회수 11,980핑구맹구님의 댓글
핑구맹구 작성일키패드를 사용하지 않고 0~9 숫자가 초마다 바뀌는 실험을 했을때 잘작동했습니다..키패드 연결하니까작동자체가 안됩니다 ㅠㅠ
master님의 댓글
master
답변소스로 다시 돌려보고 증상을 말해보세요