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 9: HIỂN THỊ LED 7 THANH

12 Tháng Sáu, 2022
in AVR, Vi Điều Khiển
478 9

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 hiển thị các số từ 0 – 9999 lên Led 7 thanh với vi điều khiển Atmega16. Project chạy trên KIT AVR V4.

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 Led 7 thanh 4 số Anode chung có sơ đồ như sau:

 

Trong đó, các chân kết nối với Atmega16:

  • Các chân điều khiển cấp nguồn LQ1:4 kết nối lần lượt với PORTC4:7.​
  • Các chân dữ liệu A, B, C, D, E, F, G, Dp kết nối lần lượt với PORTB0:7.​

Ta có bảng mã hiển thị các số từ 0 – 9 trên Led 7 thanh:

II.LẬP TRÌNH PHẦN MỀM

1.Phương pháp quét Led 7 thanh​

KIT AVR V4 hỗ trợ phần cứng Led 7 thanh 4 số Anode chung vì vậy các bạn cần sử dụng phương pháp quét Led để điều khiển hiển thị.

Phương pháp quét Led dựa trên sự lưu ảnh của mắt người. Mắt người phải mất khoảng 25 ms để xử lý một hình ảnh (40 hình/s), vậy nếu cho Led sáng tắt với khoảng thời gian nhỏ hơn 25 ms thì giá trị hiển thị trên Led giống như luôn sáng.

Để hiển thị lên màn hình Led 7 thanh 4 số, ta lần lượt cấp nguồn cho từng con Led và bắn dữ liệu vào các chân data.
Gọi thời gian giữa 2 lần cấp nguồn là T.
Vậy khoảng thời gian 1 con Led sáng – tắt là 4T < 25ms à T < 6ms.
Trong bài toán này mình sử dụng TIMER1 của Atmega16 để tạo khoảng thời gian giữa 2 lần cấp nguồn T = 1ms.

2.Lập trình hiển thị các số từ 0 – 9999 lên Led 7 thanh 4 số Anode chung​

Các bạn cần cấu hình GPIO: PORTC4:7, PORTB0:7 là các chân OUTPUT với mức logic đầu ra ban đầu là mức 1:

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0xFF;
DDRB=0xFF;
// Port C 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
PORTC=0xF0;
DDRC=0xF0;

 

Các bạn cấu hình xảy ra ngắt tràn TIMER1 sau 1ms:

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x02;
TCNT1H=0xFC;
TCNT1L=0x17;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
 
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
 
// Global enable interrupts
#asm("sei")

 

Sau 1 ms, ngắt tràn TIMER1 xảy ra, các bạn thực hiện quét Led ở trình phục vụ ngắt TIMER1 interrupt [TIM1_OVF] void timer1_ovf_isr(void):

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
    // Reinitialize Timer1 value
    TCNT1H=0xFC17 >> 8;
    TCNT1L=0xFC17 & 0xff;
    // Place your code here
    LED7_Display(Value_Display);
}

 

Trong trình phục vụ ngắt mình sử dụng hàm hiển thị giá trị số lên Led 7 thanh void LED7_Display(uint16_t Value) (nằm trong File led7 thuộc Folder User):

void LED7_Display(uint16_t Value)
{
        LED7_CacuCode(Value);
        LED7_PowerOff();
        LED7_DataOut(Led7_BufferData[Led7_Index]);
        LED7_PowerOn(Led7_Index);
        Led7_Index++;
        if(Led7_Index>=NUMBER_LED7)Led7_Index=0;
}

 

Thực hiện thay đổi giá trị hiển thị lên Led 7 thanh trong vòng while(1):

while(1)
{
     Value_Display++;
     if(Value_Display > 9999) Value_Display = 0;
     delay_ms(500);
}

 

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

Tags: atmega16avrCodeVisionAVRled 7 thanhmodule led 7
Share362Tweet226

Related Posts

lập trình led 7 thanh
8051

Lập trình LED 7 thanh với 8051

4 Tháng Bảy, 2022
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
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

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

12 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 10: HIỂN THỊ LCD128x64 LOẠI CHIP KS0108

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

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

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