Lời mở đầu Trong sự phát triển của điện tử hiện nay, kỹ thuật số đang dần chiếm ưu thẻ về số lượng lớn các ứng dụng của nó trên nhiều thiết bị điện tử dân dụng, trong nhiều lĩnh vực như
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-🙞🙞🙞🙞🙞 BÁO CÁO BÀI TẬP LỚN
KỸ THUẬT VI XỬ LÝ
ĐỀ TÀI: VIẾT CHƯƠNG TRÌNH STM32 ĐIỀU KHIỂN
LED SÁNG HÌNH TRÁI TIM
Giảng viên: PGS.TS Trương Cao Dũng
NHÓM 1
1 Vũ Thị Vân Anh B21DCVT072
2 Ngô Thị Phượng B21DCVT039
3 Nguyễn Việt Anh B17DCCN043
4 Nguyễn Đức Đồng B21DCVT127
5 Chu Phương Thảo B21DCVT406
6 Nguyễn Minh Tuấn B20DCDT189
Trang 2Mục lục
Lời mở đầu 2
1 Ý tưởng 3
2 Giới thiệu thiết bị: 4
2.1 STM32F103C8T6 4
2.2 Led đơn 6
2.3 Button 7
2.4 Trở 10 k, 220 8
3 Lưu đồ thuật toán 10
4 Mạch mô phỏng: sử dụng phần mềm Proteus 11
5 Code : sử dụng phần mềm Keilc 12
Lời cảm ơn 15
Trang 3Lời mở đầu
Trong sự phát triển của điện tử hiện nay, kỹ thuật số đang dần chiếm ưu thẻ về
số lượng lớn các ứng dụng của nó trên nhiều thiết bị điện tử dân dụng, trong nhiều lĩnh vực như đo lường, điều khiển nhờ vào các ưu điểm của nó Có thể nói, nền tảng của kỹ thuật số là mạch logic số dựa trên các cổng cơ bản mà ngày nay tích hợp trong các IC số Các mạch logic sử dụng các ma trận LED để hiển thị thông tin nhằm mục đích thông báo, quảng cáo tại nơi công cộng đã được sử dụng rất rộng rãi
Trên cơ sở đã được học trong môn Kỹ thuật vi xử lý, chúng em đã thiết kế một mạch logic với tiêu đề là: “Thiết kế mạch trái tim sử dụng vi điều khiển STM32F103C8T6” Với mục đích là tìm hiểu sâu hơn về loại vì điều khiển này, cũng như vừa có thể ôn tập và nâng cao kiến thức của mình
Do kiến thức còn hạn hẹp và thời gian thực hiện không nhiều nên để tài của chúng em còn nhiều sai sót và hạn chế Mặc dù đã phần nào thiết kế và tính toán chi tiết các mạch, các thông số nhưng đôi khi còn mang tính lý thuyết, chưa thực
tế Chúng em mong sự đóng góp và sửa chữa để đề tài này mang tính khả thi hơn s
Trang 41 Ý tưởng
Bài tập lớn thiết kế một hệ thống bao gồm 26 đèn LED sắp xếp hình trái tim
sử dụng điều khiển STM32F103C8T6 Mục tiêu là tạo ra một sản phẩm giải trí linh hoạt và sáng tạo, mang lại trải nghiệm đa dạng và tương tác với người dùng
Hệ thống sẽ có khả năng tạo ra nhiều hiệu ứng nhấp nháy, sử dụng nút bấm để chuyển đổi giữa các chế độ hiệu ứng Mạch được mô phỏng trên nền tảng Proteus
và code bằng Keil C để nạp cho Proteus
Chương trình bắt đầu bằng việc khởi tạo hệ thống và cấu hình các chân GPIO
để hoạt động như các đầu ra Sau đó, nó vào một vòng lặp vô hạn, trong đó nó làm cho các LED nhấp nháy theo một mô hình nhất định Hàm led_HeartBlink là nơi diễn ra hiệu ứng nhấp nháy Trong mỗi lần lặp của vòng lặp ngoài cùng, tất cả các LED đều được bật lên (GPIO_SetBits), giữ nguyên trong một khoảng thời gian (Delay_ms(1000)), sau đó tắt (GPIO_ResetBits), và lại giữ nguyên trong một khoảng thời gian Quá trình này lặp lại n lần, với n là tham số truyền vào hàm.Các LED được bật và tắt theo cùng một lúc, tạo ra hiệu ứng nhấp nháy đồng bộ trên cả hai trái tim Xác định các chân GPIO tương ứng với các LED và cấu hình chúng làm đầu ra
Trang 52 Giới thiệu thiết bị:
2.1 STM32F103C8T6
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng nhưF0,F1,F2,F3,F4… STM32 có đang được thiết kế dựa trên 3 dòng sản phẩm chính như sau: Hiệu năng cao (High-performance), Phổ thông (Mainstream) và Tiết kiệm năng lượng (Ultra Low-Power) Hiệu năng cao (High-performance): là các dòng vi điều khiển có hiệu năng tính toán cao, tốc độ hoạt động lớn và thường được sử dụng trong các ứng dụng đa phương tiện Dòng này bao gồm các dòng vi điều khiển Cortex-M3/4F/7 với tần số hoạt động từ khoảng 120MHz đến 268MHz Các dòng này điều hỗ trợ công nghệ ART Accelerator Phổ thông (Mainstream): Là dòng vi điều khiển được thiết kế với mục tiêu tối
ưu về giá Các sản phẩm này thường có giảm thấp hơn 1$/pcs với tần số hoạt động trong khoảng từ 48MHz đến 72MHz
Tiết kiệm năng lượng (Ultra Low-Power): Là nhóm các vi điều khiển hoạt động với tiêu chí tiết kiệm năng lượng tiêu thụ Các nhóm vi điều khiển này đều có khả năng hoạt động với pin trong thời gian dài và hỗ trợ nhiều chế độ ngủ khác nhau Với các sản phẩm của hãng STMicrochips, điển hình của nhóm này là dòng ARM Cortex M0+
Trang 6STM32F103 thuộc họ F1 với lõi là ARM Cortex M3 STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự Mạch nạp cũng như công cụ lập trình khá đa dạng và
dễ sử dụng
Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…
STM32F103 C8T6 là vi điều khiển 32bit của STMicroelectronics với 64 Kb
bộ nhớ Flash, USB 2.0 full-speed, CAN, 7 bộ Timer, 2 bộ ADC và 9 giao diện kết nối
Bộ nhớ:
64 kbytes bộ nhớ Flash (bộ nhớ lập trình)
20 kbytes SRAM
Clock, reset và quản lý nguồn:
Điện áp hoạt động 2.0V -> 3.6V
Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD)
Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz
Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz
Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC
Trong trường hợp điện áp thấp:
Có các mode: ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ
Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính
2 bộ ADC 12 bit với 9 kênh cho mỗi bộ:
Khoảng giá trị chuyển đổi từ 0 – 3.6V
Lấy mẫu nhiều kênh hoặc 1 kênh
Có cảm biến nhiệt độ nội
DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU
7 kênh DMA
Hỗ trợ DMA cho ADC, I2C, SPI, UART
Trang 77 timer:
3 timer 16 bit hỗ trợ các mode IC/OC/PWM
1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time
2 watdog timer dùng để bảo vệ và kiểm tra lỗi
1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay…
Hỗ trợ 9 kênh giao tiếp bao gồm:
2 bộ I2C(SMBus/PMBus)
3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control)
2 SPIs (18 Mbit/s)
1 bộ CAN interface (2.0B Active)
USB 2.0 full-speed interface
2.2 Led đơn
Cấu tạo:
Nguyên lí:
Sơ đồ kết nối led đơn với vi điều khiển
Led đơn 5mm
Led đơn với 2 cực Anode và Cathode trong
đó:
Anode: cực dương (chân dài, bản cực nhỏ) Cathode: cực âm (chân ngắn, bản cực lớn)
Trang 8Cách 1 Cách 2
Mức logic 0: LED OFF Mức logic 1: LED ON
Mức logic 0: LED ON Mức logic 1: LED OFF
Sử dụng cách 1 cho bài tập lớn 2.3 Button
Cấu tạo: gồm hệ thống lò xo, hệ thống tiếp điểm thường mở thường đóng
và nắp bảo vệ, khi nhấn nút thì tiếp điểm chuyển trạng thái, khi không hoạt động nữa thì tiếp điểm trở về trạng thái ban đầu
Nguyên lí: Nút ấn gồm ba phần: cơ cấu truyền động, tiếp điểm cố định và
rãnh Cơ cấu chấp hành sẽ đi qua toàn bộ công tắc và vào hình trụ mỏng ở phía dưới Bên trong là các tiếp điểm chuyển động và lò xo Khi nhấn nút, nó chạm vào một tiếp điểm tĩnh làm thay đổi trạng thái của tiếp điểm Trong một số trường hợp, người dùng cần nhấn giữ nút hoặc nhấn liên tục để thiết bị hoạt động Đối với các
nút khác, chốt sẽ giữ nút mở cho đến khi người dùng nhấn lại nút.
Trang 9Các cách kết nối nút ấn với vi điều khiển
Sử dụng cách 1 cho bài tập lớn 2.4 Trở 10 k, 220
Điện trở 10 k Điện trở 220
Cách 1 Cách 2
Tích cực mức 1
Mức logic 0: nhấn nút
Mức logic 1: nhả nút
Tích cực mức 0 Mức logic 0: nhả nút Mức logic 1: nhấn nút
Trang 10Ký hiệu
Nguyên lý: Điện trở hoạt động theo nguyên lý của định luật Ohm, đây là một
định luật nói về sự phụ thuộc vào cường độ dòng điện của hiệu điện thế và điện trở Nội dung của định luật cho rằng cường độ dòng điện đi qua 2 điểm của một vật dẫn điện luôn tỷ lệ thuận với hiệu điện thế đi qua 2 điểm đó, với vật dẫn điện
có điện trở là một hằng số, ta có phương trình toán học mô tả mối quan hệ như sau:
V=I.R Trong đó:
I là cường độ dòng điện đi qua vật dẫn (A – Ampere)
V (trong chương trình phổ thông, V còn được ký hiệu là U) là điện áp trên vật dẫn (đơn vị volt)
R là điện trở (đơn vị: ohm)
Trang 113 Lưu đồ thuật toán
Trang 124 Mạch mô phỏng: sử dụng phần mềm Proteus
Trang 135 Code : sử dụng phần mềm Keilc
#include "stm32f10x.h" // Device header
#include "stm32f10x_gpio.h" // Keil::Device:StdPeriph Drivers:GPIO
#include "stm32f10x_rcc.h" // Keil::Device:StdPeriph Drivers:RCC
void Delay_ms(uint16_t _time);
void led_Init(void);
void led_HeartBlink(int n);
int main(){
SystemInit();
SystemCoreClockUpdate();
led_Init();
while(1){
led_HeartBlink(5);
Delay_ms(200);
}
}
void Delay_ms(uint16_t _time){
volatile uint16_t i,j;
for(i = 0; i < _time; i++){
for(j = 0; j < 601; j++);
}
}
void led_Init(void){
GPIO_InitTypeDef led_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
Trang 14GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
led_init.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|
GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|
GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15;
led_init.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&led_init);
GPIO_Init(GPIOB,&led_init);
}
void led_HeartBlink(int n){
for(int i = 0; i < n; i++){
GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2| GPIO_Pin_3|GPIO_Pin_4|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|
GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15);
GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2| GPIO_Pin_3|GPIO_Pin_4|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|
GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15);
Delay_ms(1000);
GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2| GPIO_Pin_3|GPIO_Pin_4|
Trang 15GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2| GPIO_Pin_3|GPIO_Pin_4|
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|
GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15);
Delay_ms(1000);
}
}
Lời cảm ơn
Chúng em xin được gửi lời cảm ơn chân thành đến thầy đã dành thời gian hướng dẫn và chia sẻ kiến thức vô cùng giá quý trong suốt quá trình học tập môn
Trang 16Môn học Kỹ thuật vi xử lý không chỉ là một môn học quan trọng trong chương trình đào tạo của chúng em mà còn mang lại cho chúng những kiến thức
cơ bản và ứng dụng vô cùng quan trọng trong lĩnh vực công nghệ thông tin Chúng em thấy rất vui khi được học từ thầy - một giảng viên giàu kinh nghiệm và
có tâm huyết với công việc giảng dạy
Bài tập lớn này chính là 1 thử thách để chúng em áp dụng những kiến thức đã học để tìm hiểu và nghiên cứu trong lĩnh vực kỹ thuật vi xử lý Nó không chỉ yêu cầu chúng em có kiến thức vững vàng về xử lý mà còn yêu cầu khả năng tạo, khả năng phân tích và giải quyết vấn đề
Một lần nữa xin chân thành cảm ơn, chúc thầy sức khỏe và thành công trong công việc giảng dạy
Trân trọng