Professional Documents
Culture Documents
Hà Nội - 2019
I
MỤC LỤC
MỤC LỤC .......................................................................................................... I
DANH MỤC HÌNH VẼ .................................................................................. III
DANH MỤC BẢNG BIỂU ............................................................................ IV
DANH MỤC TỪ VIẾT TẮT ........................................................................... V
LỜI MỞ ĐẦU ................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN ............................................................................. 2
1.1. Mục tiêu, nội dung của đề tài ..................................................................... 2
1.2. Giới thiệu về các thiết bị đo tần số hiện tại trên thị trường ....................... 2
1.3. Nguyên tắc đo tần số .................................................................................. 2
1.3.1. Nguyên tắc đo tần số cao ........................................................................ 2
1.3.2. Nguyên tắc đo tần số thấp ....................................................................... 3
1.4. Các phần mềm phục vụ thiết kế ................................................................. 4
1.4.1. Altiume PCB, đặt vị trí linh kiện trên PCB. ........................................... 4
1.4.2. KeilC ....................................................................................................... 5
1.4.3. STM32CubeMX ...................................................................................... 5
1.4.4. LCD Font Maker ..................................................................................... 5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ................................................................. 7
2.1. Vi điều khiển STM32F103C8T6 ............................................................... 7
2.1.1. Khái niệm ................................................................................................ 7
2.1.2. Cấu hình chi tiết của IC STM32F103C8T6 ............................................ 7
2.1.3. Sơ lược về các chân IC STM32F103C8T6 ........................................... 10
2.1.4. Chức năng I/O của STM32F103C8T6 .................................................. 16
2.1.5. Chức năng timer của STM32F103C8T6............................................... 17
2.2. Graphic-LCD............................................................................................ 18
2.2.1. Tổng quan LCD..................................................................................... 18
2.2.2. Giới thiệu về Graphic-LCD .................................................................. 19
2.2.3. Sơ đồ chân của graphic_LCD 128x64 .................................................. 19
2.2.4. Tập lệnh của GLCD sử dụng chip KS0108 .......................................... 21
II
LỜI MỞ ĐẦU
Như chúng ta đã biết, khoa học công nghệ đang phát triển một cách
nhanh chóng trong những năm gần đây, đặc biệt là ngành kĩ thuật điện – điện
tử. Sự xuất hiện của các vi mạch, IC số đã làm cho kích thước mạch nhỏ gọn,
sử dụng tiện lợi hơn.
Trong ngành kĩ thuật điện – điện tử tần số xuất hiện trong hầu hết các
loại mạch giao động. Vì vậy, việc sử dụng máy đo tần số rất cần thiết để biết
chính xác được giá trị của tần số giúp chúng ta dễ dàng trong việc điều khiển
tín hiệu. Hiện nay trên thị trường giá bán của một chiếc máy đo tần số khá cao
so với việc sử dụng IC số để tạo ra mạch đo tần số đơn giản phục vụ cho công
việc học tập và nghiên cứu của sinh viên.
Xuất phát từ nhu cầu trên cùng với việc ứng dụng những kiến thức đã có
được trong gần 4 năm học tập và rèn luyện tại trường đại học công nghiệp Hà
Nội em đã chọn “thiết kế mạch đo tần số sử dụng vi điều khiển
STM32F103” làm đề tài đồ án tốt nghiệp. Được sự chỉ bảo và giảng dạy nhiệt
tình của thầy cô, đặc biệt là quý thầy cô khoa Điện Tử đã giúp đỡ em trong
suốt quá trình học tập tại trường để em có thêm các kiến thức về lý thuyết và
thực hành trong chuyên ngành điện tử của mình. Cùng với sự nỗ lực của bản
thân và đặc biệt là thầy Th.s Vũ Trung Kiên đã tận tình hướng dẫn giúp đỡ
em hoàn thành đề tài đồ án tốt nghiệp của mình.
Trong giới hạn thời gian cho phép, đồng thời có sự hạn chế về nguồn tài
liệu và kiến thực của bản thân nên đề tài nghiên cứu của em còn nhiều thiếu
sót và lỗi kĩ thuật, nên em rất mong nhận được sự đóng góp ý kiến từ thầy cô
để đề tài nghiên cứu của em được hoàn thiện hơn.
Em xin chân thành cảm ơn!
2
- Thiết lập bộ timer thứ nhất có chức năng ngắt timer với một khoảng
thời gian nhất định. Thiết lập bộ timer thứ hai thực hiện chức năng timer
counter.
- Nguồn xung đầu vào được đưa vào chân thực hiện chức năng timer
counter trên chân vi điều khiển trong những khoảng thời gian tương ứng của
xung mở cửa. Số xung trong khoảng thời gian ngắt của bộ timer thứ nhất sẽ
được bộ timer counter ghi lại. Khi đó tần số cần đo bằng:
𝒏
Fx =
𝜟𝑻
Trong đó:
+ n: số lượng xung đếm được trong khoảng thời gian ΔT.
+ ΔT: khoảng thời gian mở cửa (bằng chu kì của bộ timer tạo ngắt).
- Sai số:
Sai số của phương pháp này chủ yếu là do sai số của khoảng thời gian
chuẩn. Ngoài ra, còn có sai số do không đồng bộ giữa xung mở cửa và xung
đếm, cũng như sai số do số lượng xung đếm được sai. Sai số này nằm trong
khoảng ±1 xung, sai số này có ảnh hưởng lớn khi tần số càng thấp (số lượng
xung đếm được càng ít).
- Ưu điểm: có độ chính xác cao với giải tần cao (được xếp vào loại hàng
đầu).
1.3.2. Nguyên tắc đo tần số thấp
Nguyên tắc đo: đo khoảng thời gian của một xung.
- Thiết lập một bộ timer với thời gian ngắt nhỏ nhất có thể.
- nguồn xung đầu vào được đưa vào chân thực hiện chức năng ngắt, chân
ngắt sẽ thực hiện chức năng lưu lại giá trị số lần xảy ra ngắt trong khoảng
giữa hai sườn lên liên tiếp hoặc hai sườn xuống liên tiếp. Khi đó tần số cần đo
bằng:
𝟏
Fx =
𝒏.𝜟𝑻
4
Trong đó:
+ n: số lần ngắt trong khoảng giữa hai sườn lên liên tiếp hoặc hai sườn
xuống liên tiếp.
+ ΔT: khoảng thời gian mở cửa (bằng chu kì của bộ timer tạo ngắt).
- Ưu điểm: có độ chính xác cao với giải tần thấp.
1.4. Các phần mềm phục vụ thiết kế
1.4.1. Altium PCB, đặt vị trí linh kiện trên PCB
- Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong
không gian 3 chiều, hỗ trợ MCAD-ECAD, liên kết trực tiếp với mô hình
STEP, kiểm tra khoảng cách cách điện, cấu hình cho cả 2D và 3D
- Hỗ trợ thiết kế PCB sang FPGA và ngược lại.
- Hỗ trợ các thư viện linh kiện phong phú như: syhaunguyen.SchLib,
LYBRARY.IntLib, lybrary_MH. SchLib, …
Từ đó, chúng ta thấy Altium designer có nhiều điểm mạnh so với các
phần mềm khác như đặt luật thiết kế, quản lý đề tài mô phỏng dễ dàng, giao
diện thân thiện,…
Việc thiết kế mạch điện tử trên phần mềm altium designer có thể được
tóm tắt gồm các bước như sau:
- Đặt ra các yêu cầu bài toán.
- Lựa chọn linh kiện.
- Thiết kế mạch nguyên lý.
- Lựa chọn các chân linh kiện để chuyển sang mạch in Update mạch
nguyên lý sang mạch in.
- Lựa chọn kích thước mạch in Sắp sếp các vị trí các loại linh kiện như
điện trở , tụ điện, IC...
- Đặt kích thước các loại dây nối.
- Đi dây trên mạch.
- Kiểm tra toàn mạch.
5
1.4.2. KeilC
Keil C uvision 5 là một phần mềm hỗ trợ cho người dùng trong việc lập
trình cho vi điều khiển các dòng khác nhau (Atmel, AVR, …). Keil C giúp
người dùng soạn thảo và biên dịch chương trình C hay cả ASM thành ngôn
ngữ máy để nạp vào vi điều khiển giúp chúng ta tương tác giữa vi điều khiển
và người lập trình.
Để thực hiện chương trình giải quyết bài toán này e đã sử dụng phần
mềm STM32CubeMX để cấu hình chân và sinh code ra phần mềm keilC V5
để tiếp tục thực hiện chương trình.
1.4.3. STM32CubeMX
Phần mềm tạo Project cho STM32, được hãng cung cấp free. Sử dụng
phần mềm này khởi tạo các chức năng, tài nguyên cho VĐK sử dụng thư viện
HAL library.
*lưu ý: lần tạo project cho 1 dòng STM cần kết nối internet cho PC để
Cube32Mx cập nhật thư viện HAL cho dòng VĐK đó.
1.4.4. LCD Font Maker
LCD Font Maker: là phần mềm biên tập cho các loại Graphic LCD loại
chấm không màu.
Xử lí hình ảnh:
- LCD Font Maker cho phép nhập hầu hết các định dạng file ảnh màu
hay đen trắng.
- LCD Font Maker hỗ trợ "Auto Resize" để tự động thay đổi kích thước
hình ảnh khớp với kích thước Graphic LCD.
- LCD Font Maker cho phép nhận dạng biên dạng vật thể trong ảnh trước
khi chuyển sang hình ảnh cho Graphic LCD.
- Có thể tùy chọn mức độ xám (Gray level) trước khi chuyển sang hình
ảnh cho Graphic LCD.
Xử lí chữ viết:
6
- Chức năng "Text Input" cho phép nhập chữ trực tiếp từ bàn phím, chữ
được "trộn" với hình ảnh.
- Có thể tùy chọn Font cho chữ nhập vào.
Vẽ trên LCD Font Maker:
- Có thể tự vẽ hoặc xóa các "chấm" trên màn hình Graphic LCD ảo.
- Kết quả tạm thời được xem trên Previewer.
Điều khiền kết quả:
- Kết quả có thể được lưu lại bằng định dạng "lcd".
- Xuất kết quả trực tiếp trong một cửa sổ "Text", kết quả được sắp xếp
thành các phần tử của một mảng .
- Cho phép đảo kết quả hiển thị (chấm trắng thành chấm đen và ngược
lại).
7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. Vi điều khiển STM32F103C8T6
2.1.1. Khái niệm
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… STM32F103C8T6 thuộc họ F1 với lõi
ARM COTEX M3. STM32F103C8T6 là vi điều khiển 32 bit, tốc độ tối đa là
72 MHZ. 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 các thiết bị ứng dụng thông thường, thiết bị cầm tay, 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ị
PLC, biến tần, máy in, các hệ thống cảnh báo, đo đạc thông tin, thiết bị liên
lạc,…
Phần mềm lập trình: có rất nhiều trình biên dịch để lập trình cho STM32
như IAR compiler, keilC compiler, eclipse compiler, cocos code IDE,… Em
đã chọn phần mền Keil uVision5 để thực hiện lập trình giải quyết bài toán của
mình.
Thư viện lập trình: có một số thư viện lập trình cho STM như
STM32snippets, STM32cube LL, STM32cube HAL, standard peripheral
libraries, mbed core,… Em đã chọn STM32CubeMX được hãng cung cấp
free. Sử dụng phần mềm này khởi tạo các chức năng, tài nguyên cho vi điều
khiển sư dụng thư viện HAL library.
Mạch nạp: STM32 có thể sử dụng các loại mạch nạp như ULINK, J-
LINK, CMSIS-DAP, STLINK… Em sử dụng mạch nạp STLINK để nạp code
cho chip với nguồn nuôi chip bằng 3.3V.
2.1.2. Cấu hình chi tiết của IC STM32F103C8T6
- ARM 32-bit Cortex M3 với clock mã là 72Mhz.
- Bộ nhớ:
64 kbytes bộ nhớ Flash(bộ nhớ lập trình).
8
20kbytes SRAM.
- Clock, reset và quản lý nguồn.
Điện áp hoạt động 2.0V → 3.6 V.
Power on reset (POR), power down reset (PDR) và programmable voltage
detecor (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 cho 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 một 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.
- 7 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ư hamd 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).
9
2 SPIs (18Mbit/s).
1 bộ CAN interface (2.0B Active).
USB 2.0 full-speed interface.
- kiểm tra lỗi CRC và 96-bit ID.
(9)/ BKIN
ADC12_IN6/
TIM3_CH1
(9)
17 PA7 I/O - PA7 SPI1_MOSI TIM1_
(9)/ CH1N
ADC12_IN7/
TIM3_CH2
(9)
18 PB0 I/O - PB0 ADC12_IN8/ TIM1_
TIM3_CH3 CH2N
(9)
19 PB1 I/O - PB1 ADC12_IN9/ TIM1_
TIM3_CH4 CH3N
(9)
20 PB2 I/O FT PB2/BOOT - -
1
21 PB10 I/O FT PB10 I2C2_SCL/ TIM2_
USART3_TX CH3
(9)
22 PB11 I/O FT PB11 I2C2_SDA/ TIM2_
USART3_RX CH4
(9)
23 VSS_1 S - VSS_1 - -
24 VDD_1 S - VDD_1 - -
25 PB12 I/O FT PB12 SPI2_NSS/ -
I2C2_SMBAl/
USART3_CK
(9)/
TIM1_BKIN
(9)
13
SWDIO
35 VSS_2 S - VSS_2
36 VDD_2 S - VDD_2
37 PA14 I/O FT JTCK/ - PA14
SWCLK
38 PA15 I/O FT JTDI - TIM2_
CH1_
ETR/
PA15
/SPI1_
NSS
39 PB3 I/O FT JTDO - TIM2_
CH2 /
PB3
TRACE
SWO
SPI1_
SCK
40 PB4 I/O FT JNTRST -
TIM3_
CH1/
PB4/
SPI1_
MIS
41 PB5 I/O PB5 I2C1_SMBAl TIM3_
CH2 /
SPI1_
MOSI
42 PB6 I/O FT PB6 I2C1_SCL(9)/ USART
TIM4_CH1(9) 1_TX
43 PB7 I/O FT PB7 I2C1_SDA(9)/ USART
15
Trong đó:
x là tên PORT: A, B, C đối với VĐK STM32F103C8T6.
y là tên PIN: 1,2,3,….,16.
2.1.5. Chức năng timer của STM32F103C8T6
- STM32F103C8T6 có tất cả 7 timer nhưng trong đó đã bao gồm 1
systick timer, 2 watchdog timer. Vậy chỉ còn lại 4 timer dùng cho các chức
năng như ngắt, timer base, PWM, Encoder, Input capture…. Trong đó TIM1
là Timer đặc biệt, chuyên dụng cho việc xuất xung với các mode xuất xung,
các mode bảo vệ đầy đủ hơn so với các timer khác. TIM1 thuộc khối clock
APB2, còn các TIM2,TIM3,TIM4 thuộc nhóm APB1.
- Timer là bộ định thời có thể sử dụng để tạo ra thời gian cơ bản dựa trên
các thông số: clock, prescaler, autoreload, repetition counter. Timer của
STM32 là timer 16 bits có thể tạo ra các sự kiện trong khoảng thời gian từ
nano giây tới vài phút gọi là UEV (update event).
* Ngắt timer:
- TIM_Period : Period có nghĩa là chu kỳ của timer (không phải là chu
kỳ của 1 xung clock timer). Ví dụ một chu kỳ gồm 1000 xung clock mà mỗi
xung clock = 1us ta sẽ được period là 1ms.
FTIMER= FSYSTEM/[(PSC+1)(Period+1)]
Ftimer: là giá trị cuối cùng của bài toán, đơn vị là Hz.
Fsystem: tần số clock hệ thống được chia cho timer sử dụng, đơn vị là Hz.
PSC: giá trị nạp vào cho bộ chia tần số của timer. Tối đa là 65535.
Period: giá trị bộ đếm nạp vào cho timer. Tối đa là 65535.
Ngắt timer: khi giá trị đếm của bộ đếm timer(thanh ghi CNT) vượt qua giá trị
của Auto Reload Value thì cờ báo tràn sẽ được kích hoạt. Trình phục vụ ngắt
tràn sẽ xảy ra nếu được cấu hình cho phép trước đó.
- Sử dụng hàm HAL_TIM_Base_Start_IT để cho phép ngắt timer hoạt
động.
VD: HAL_TIM_Base_Start_IT(&htim2);
18
* Timer counter:
- TIM_CounterMode: Thiết lập mode cho timer là đếm lên hay đếm
xuống. Nếu chọn mode đếm tăng có nghĩa là mỗi xung nhịp timer, bộ đếm
counter sẽ tự tăng lên một giá trị theo chiều dương cho đến khi nào bằng
giá trị period sẽ đếm lại từ đầu, người ta thường gọi trường hợp này là tràn
bộ đếm.
Ở chế độ counter chỉ cần thiết lập Period là giá trị để thanh ghi bộ đếm
counter tràn và tự động xoá về 0 với chế độ counter up hoặc 65535 với chế độ
counter down, khi thiết lập thường sẽ mặc định ở chế độ counter up.
- Dùng hàm __HAL_TIM_GetCounter để đọc giá trị bộ đếm của
counter.
VD: x=__HAL_TIM_GetCounter(&htim2);
2.2. Graphic-LCD
2.2.1. Tổng quan LCD
Hiện nay trên thị trường có rất nhiều loại LCD với hình dạng và mẫu mã
khác nhau. Dựa vào kích thước màn hình và yêu cầu hiển thị có thể phân
thành 2 loại LCD chính:
- Loại hiển thị kí tự (character LCD) có các kích cỡ 16x1, 16x2, 16x4…
mỗi kí tự được tạo thành bởi một ma trận điểm sáng 5x7 hoặc 75x10 điểm
ảnh.
- Loại hiển thị đồ họa (Graphic LCD) đen trắng hoặc màu, gồm các kích
thước 1.47 inch (128x64 điểm ảnh), 1.47 inch (128x128 điểm ảnh), 1.8 inch
(128x160 điểm ảnh), 2 inch (176x220 điểm ảnh), 2.4 inch (240x320 điểm
ảnh), 4.3 inch (480x272 điểm ảnh), 7 inch (800x480 điểm ảnh), 8 inch
(800x600 điểm ảnh), …
19
khiển, cần dành ra 14 chân để điều khiển một GLCD 128x64. Sơ đồ chân phổ
biến của GLCD 128x64 được mô tả trong bảng 1.2.
GLCD tạo ra
19 A Anode của LED nền
20 K Cathode của LED nền
Hình 2.4: Sơ đồ kết nối cơ bản giữa vi điều khiển và GLCD 128x64
2.2.4. Tập lệnh của GLCD sử dụng chip KS0108
Chi tiết các lệnh dùng để giao tiếp với chip KS0108 phục vụ điều khiển
hiển thị trên LCD được mô tả trong bảng sau.
Bảng 2.3: Bảng các lệnh dùng để giao tiếp với chip KS0108.
Lệnh RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Mô tả
Điều khiển
Bật/T hiển thị:
ắt 1/ D0=1: Hiển
0 1 0 0 1 1 1 1 1
hiển 0 thị
thị D0=0: Không
hiển thị
Đặt 0 0 1 1 D5-D0= 0 ÷63 Chọn vị trí cột
22
động bình
thường
1 0 D7-D0 = 0 ÷ 255 Ghi giá trị vào
Ghi RAM tương
vào ứng các điểm
RAM ảnh cần hiển
thị
Đọc 1 1 D7-D0 = 0 ÷ 255 Đọc dữ liệu ra
từ từ RAM
RAM
Khối nguồn
* sơ đồ nguyên lý.
Bắt đầu
Tính f
sai
báo không có
f>0
xung lên LCD
đúng
Uin=0
sai đúng
Kết thú
+ FSYSTEM = 36MHz.
+ Chúng ta có xung hệ thống là 36MHz chọn bộ chia tần 1000.
Vậy giá trị bộ chia tần là:
𝟑𝟔𝑴𝑯𝒛
PSC = – 1= 35999.
𝟏𝟎𝟎𝟎
+ Theo công thức (1) → period=999.
Sử dụng kênh timer2-CH1 tương đương chân PA15 cấp nguồn xung vào.
Start
Không
END
//………………………………………………………………..
HAL_GPIO_WritePin(D7_GPIO_Port,D7_Pin,(cmd&(1<<7))>0 ?
GPIO_PIN_SET:GPIO_PIN_RESET);
HAL_Delay(DELAY);
HAL_GPIO_WritePin(EN_GPIO_Port,EN_Pin,GPIO_PIN_RESET); }}
* Hàm chọn chip trái/phải và truyền dữ liệu cho GLCD.
Để truyền dữ liệu data cho GLCD chúng ta cũng sử dụng câu lệnh:
HAL_GPIO_WritePin() để tạo lập chương trình cho hàm:
void glcd_data(uint8_t cs,uint8_t data)
{
/* Các câu lệnh tương tự như hàm chọn chip trái/phải và truyền địa chỉ cho
GLCD khác ở hàm ghi dữ liệu chân bus trao đổi dữ liệu giữa chip KS0108
với bộ điều khiển bên ngoài. Ở hàm chọn chip trái/phải và truyền địa chỉ tham
số mình truyền vào là địa chỉ bắt đầu của màng còn ở hàm chọn chip trái/phải
và truyền dữ liệu thì truyền giá trị mảng cần hiển thị*/
HAL_GPIO_WritePin(D0_GPIO_Port,D0_Pin,(data&(1<<0))>0 ?
GPIO_PIN_SET:GPIO_PIN_RESET);
//…………………………………………………….
}
* Hàm đặt địa chỉ page (X) và địa chỉ cột (Y).
- Khởi tạo giá trị cho địa chỉ hàng X_ADRESS và địa chỉ cột
Y_ADRESS (theo bảng 1.3).
- Với từng nửa màn hình được chia ra 8 page (1 page=8 điểm ảnh) và 64
cột (1 cột=1 điểm ảnh). Chúng ta sử dụng hàm: void glcd_clr() để quét xác
định vị trí của điểm ảnh trên từng page và cột.
37
glcd_cmd(1,DISPLAY_OFF);
glcd_cmd(1,START_LINE);
glcd_cmd(1,X_ADRESS);
glcd_cmd(1,Y_ADRESS);
glcd_cmd(1,DISPLAY_ON);
glcd_clr();
}
* Ví dụ hiển thị lên màn hình GLCD.
- Hàm truyền mảng hình ảnh.
Bước 1: Sử dụng phần mềm LCD Font Maker để chấm tạo hình ảnh
muốn hiển thị sau đó tiến hành xuất ra mảng dữ liệu số.
+ Giả sử chúng ta tạo một page ảnh 8*8
39
Hình 3.12: Sử dụng phần mềm tạo mảng dữ liệu LCD Font Maker.
+ Mảng dữ liệu:
uint16_t chu[8]={
0x00,0x06,0x06,0xFE,0xFE,0x06,0x06,0x00,};
Bước 2: Tiến hành khai báo hàm truyền địa chỉ và dữ liệu tong chương trình
chính:
Main(){
glcd_gotoxy(7,0);
for(i=0;i<8;i++){
glcd_data(0,chu[i]);
}//T
}
40
KẾT LUẬN
Sau quá trình thực hiện đề tài em đã rút ra được một số kết luấn sau: về
yêu cầu của đề tài đã giải quyết được cơ bản yêu cầu của đề tài và tạo ra mạch
thực tế tiến hành đo tần số. Mặc dù chưa giải quyết được tối ưu bài toán đưa
ra nhưng đã nghiên cứu và chỉ rõ hướng phát triển để tài hoàn thiện hơn. Với
sự cần thiết của một dụng cụ đo tần số cùng với sự phát triển ngày càng mạnh
mẽ của IC số đã giúp cho đề tài mạng lại tính thực tế cao.
Tuy đã cố gắng thực hiện đề tài nhưng do kĩ năng, kiến thức còn hạn chế
và trong khoảng thời gian giới hạn nên đề tài còn chưa đạt được yêu cầu hạn
chế giải đo tần số.
Qua quá trình nghiên cứu về đề tài này em thấy đây là một đề tài có tính
ứng dụng trong học tập rất cao, dễ dàng để tất cả các bạn sinh viên tiếp cận và
thực hiện, giúp các bạn dễ hiểu hơn về các chức năng của IC số, có hứng thú
hơn, nhớ lâu hơn khi tạo ra được một sản phẩm của riêng mình.
Một lần nữa em xin chân thành cảm ơn sự tận tình hướng dẫn của thầy
Th.s Vũ Trung Kiên cũng như sự đóng góp ý kiến của các thầy cô trong hội
đồng!
Em xin chân thành cảm ơn!
43