DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển AVR

[HỌC AVR] BÀI 11: GIAO TIẾP MA TRẬN PHÍM 4×4

26 Tháng Sáu, 2022
in AVR, Vi Điều Khiển
306 16

Xin chào các bạn!
Trong bài viết này, mình sẽ hướng dẫn các bạn lập trình giao ma trận phím 4×4 với Atmega16.

Chú ý : Source code bài viết dưới đây được biên dịch bằng phần mềm CodeVisionAVR để biên dịch code không lỗi xin vui lòng Download bản CodeVisionAVR Tại Đây

I.SƠ ĐỒ PHẦN CỨNG
Trên KIT AVR V4 hỗ trợ các bạn khối ma trận phím 4×4 có sơ đồ như sau:

Trong đó, kết nối với Atmega16:

  • COL1:4 kết nối với PORTA4:7.​
  • ROW1:4 kết nối với PORTA0:3.​

II.LẬP TRÌNH PHẦN MỀM
Trong bài toán này, mình sẽ lập trình hiển thị giá trị của các phím trên ma trận phím lên LCD16x2.
Các bạn cấu hình GPIO:

  • PORTC3:5 (chân điều khiển LCD16x2), PORTB4:7 (chân dữ liệu LCD16x2), PORTA0:3 (các chân hàng của MTP4x4) là OUTPUT với mức logic đầu ra ban đầu là mức 1.​
  • PORTA4:7 (các chân cột của MTP4x4) là INPUT và có trở kéo lên bên trong.​
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=P State6=P State5=P State4=P State3=1 State2=1 State1=1 State0=1
PORTA=0xFF;
DDRA=0x0F;
 
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=1 State5=1 State4=1 State3=T State2=T State1=T State0=T
PORTB=0xF0;
DDRB=0xF0;
 
// Port C initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=1 State4=1 State3=1 State2=T State1=T State0=T
PORTC=0x38;
DDRC=0x38;

Các bạn sử dụng hàm đọc giá trị ma trận phím 4×4 (trong File key_4x4 thuộc Folder User):

uint8_t KEY4X4_GetKey(void)
{
    uint8_t i;
    KEY4X4_ROW1=KEY4X4_ROW2=KEY4X4_ROW3=KEY4X4_ROW4=0;
    if(KEY4X4_IsPush())
    {
        delay_ms(5);
        if(KEY4X4_IsPush())
        {         
            for(i=0;i<4;i++)
            {             
                KEY4X4_CheckRow(i);
                if(!KEY4X4_COL1) return KEY_4X4[i][0];
                if(!KEY4X4_COL2) return KEY_4X4[i][1];
                if(!KEY4X4_COL3) return KEY_4X4[i][2];
                if(!KEY4X4_COL4) return KEY_4X4[i][3];
            }     
        }
    }
    return 0;
}

 

Thực hiện chương trình chính:

LCD16X2_Init();
LCD16X2_Gotoxy(0,0);
LCD16X2_Puts(" MTP4x4 AVR V4  ");
 
while(1)
{
    Key=KEY4X4_GetKey();
    if(Key)
    {
        sprintf(Str,"Key = %c ",Key);
        LCD16X2_Gotoxy(0,1);
        LCD16X2_Puts(Str);
        while(Key)Key = KEY4X4_GetKey();
    }
}

 

Link download File Code của chương trình TẠI ĐÂY:

Tags: arduinoatmega16atmega8avr
Share240Tweet150

Related Posts

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK
Điện Tử Cơ Bản

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

19 Tháng Sáu, 2022
Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk
Arduino

Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk

26 Tháng Sáu, 2022
Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID
Arduino

Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID

26 Tháng Sáu, 2022
Next Post
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

Hướng dẫn cài đặt và cr@ck full phần mềm Vẽ mạch Altium Designer 15.0.xx

Hướng dẫn cài đặt và cr@ck full phần mềm Vẽ mạch Altium Designer 15.0.xx

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz