ĐẠI HỌC CẦN THƠTRƯỜNG BÁCH KHOA
KHOA ĐIỆN TỬ-VIỄN THÔNG
BÁO CÁO
HỆ THỐNG NHÚNG (CT399)
ĐỀ TÀI: MẠCH ĐẾM XUỐNG HIỂNTHỊ LED 7 ĐOẠN
Giảng viên hướng dẫn: Sinh viên thực hiện:
Năm học 2023-2024
Trang 8Hình 2.9
- Bước 9: Gán địa chỉ nền cho các thành phần
Hình 2.10
Trang 9- Bước 10: Lưu hệ thống và sinh tập tin HDL
Hình 2.11
Hình 2.12
3 Gán chân cho hệ thống
Trang 10- Bước 1: Thực hiện gán chân cho sơ đồ hệ thống
Hình 3.1
- Bước 2: Chọn tập tin quy ước gán chân
Hình 3.2
Trang 11Hình 3.4
Hình 3.5Kết quả gán chân
Hình 3.6
- Bước 4: Nạp thiết kế phần cứng xuống chip FPAG
Trang 13Hình 4.3
- Bước 3: Cửa sổ Properties dự án lập trình
Hình 4.4
Trang 14Hình 4.5
- Bước 4: Viết code cho chương trình
#include <system.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "alt_types.h"
#include "altera_avalon_pio_regs.h"#include "sys/alt_irq.h"
char hex_segs[]= {0,0,0,0,0,0,0,0};char contant[4]={0,0,0,0};
char dec_digit[]= {0,0,0,0};char i;
void hex_display(char number , char order_7seg){volatile int *HEX3_0 = (int *)HEX3_0_BASE;hex_segs[order_7seg]= seven_seg[number];*(HEX3_0) = *(int*)(hex_segs);
Trang 15dec_digit[1] = ((number -(number % 100)) /100)%10;dec_digit[2] = ((number -(number % 10)) /10)%10;dec_digit[3] = number %10;
data = data & 0x000000ff;if (data!=10){
contant[3]= (char) data-48; }
void display(char number, char *dec_digit){split4digit(number, dec_digit);
void handle_interrupt (int key_values){ if (key_values & 0x01){
running = !running; if (!running){
Trang 16// Nếu bộ đếm dừng, giữ nguyên giá trị hiện tại và không làm gì cả display(count_con, dec_digit);
} }}
#ifdef KEYS_BASE
static void handle_key_interrupts (void* context){
volatile int* edge_capture_ptr = (volatile int*) context;
*edge_capture_ptr =
handle_interrupt (*edge_capture_ptr);
static void init_key_pio(){
volatile void* edge_capture_ptr = (void*) &edge_capture;
int main (void){#ifdef KEYS_BASE
while (1){ input_data(); usleep(1000000);
alt_printf("NHAP VAO GIA TRI:\n"); if (running){
Trang 17usleep(1000000); // Wait for 1 second display(i, dec_digit);
// Break the loop if the counter is stopped if (!running) {
break; }
Hình 4.6
Trang 18Hình 4.7
Hình 4.8
Trang 19Hình 4.9
- Bước 5: Biên dịch chương trình
Hình 4.10
Trang 20Hình 4.11
- Bước 6: Thiết lập kết nối hệ thống nhúng và máy tính
Hình 4.12
Trang 21Hình 4.13
II KẾT QUẢ
Dưới đây là kết quả chạy trên kit FPAG tại phòng thí nghiệm.
Trang 22III ĐÁNH GIÁ VÀ NHẬN XÉT
- Mạch chạy đúng theo yêu cầu đề ra của đồ án.
- Kết hợp reset về 0, tạm dừng và tiếp tục khi nhấn nút - Hoàn thành được mục tiêu đề ra.