Dưới đây là chi tiết hoạt động của Timer3, tương tự với Timer1 nhưng có một số khác biệt trong cấu hình và chức năng... Các chế độ hoạt động: Timer3 có thể hoạt động ở hai chế độ, tương
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA ĐIỆN – ĐIỆN TỬ
BÁO CÁO MÔN: VI ĐIỀU KHIỂN ỨNG DỤNG
Đề tài: Đếm sản phẩm sử dụng timer 3 và
hiển thị trên led 7 đoạn (0-9999)
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 2DANH SÁCH THÀNH VIÊN
STT MSSV Họ và tên Mức độ hoàn thành
05 42200490 Nguyễn Hoàng Anh 100%
06 42200476 Lý Mạnh Thường Quân 100%
Trang 3PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Đánh giá của GV chấm bài
TP Hồ Chí Minh, ngày 3 tháng 11 năm 2024
Trang 4MỤC LỤC
DANH SÁCH THÀNH VIÊN NHÓM 2
PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN 3
CHƯƠNG 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN
1 VI ĐIỀU KHIỂN
1.1 Sơ đồ khối và bảng mô tả chức năng các chân của PIC18F4520
1.2 Hoạt động của định thời 8
1.2.1 Bộ định thời Timer3 8
2 HIỂN THỊ LED 7 ĐOẠN 10
2.1 Định nghĩa 10
2.2 Hình dạng 10
2.3 Cấu tạo và nguyên lý hoạt động 11
2.4 Phân loại led 7 đoạn 12
CHƯƠNG 2 THIẾT KẾ BỘ ĐẾM SẢN PHẨM 14
3 PHẦN CỨNG 14
3.1 Thiết kế trên phần mềm mô phỏng 14
3.2 Linh kiện 14
4 PHẦN MỀM 14
4.1 Chương trình 14
4.2 Kết quả 18
Trang 5Chương 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN
1 Vi điều khiển:
1.1 SƠ ĐỒ KHỐI VÀ BẢNG MÔ TẢ CHỨC NĂNG CÁC CHÂN CỦA
PIC18F4520:
Figure 1 PIC 18F4520
Trang 6Bảng mô tả chức năng các chân của PIC16F877A
Pin name DIP
Pin
#
PLC
C Pin
#
QFT Pin# I/O/P Buffer
Type
Type Description
OSC1/CLKIN 13 32 30 I CMO
S ST Đầu vào xung đồng hồ
(Oscillator Input) OSC2/CLKOUT 14 33 31 O CMO
S - Đầu ra xung đồnghồ (Oscillator
Output) MCLR/Vpp 1 18 18 I/P ST ST
RA0/AN0 2 19 19 I/O TTL TTL
Analo g
Đầu vào analog (ADC channel 0)
RA1/AN1 3 20 20 I/0 TTL TTL
Analo g
Đầu vào analog (ADC channel 1) RA2/AN2/VREF- 4 21 21 I/O TTL TTL Đầu vào analog
Figure 2 Sơ đồ khối của PIC 18F4520
Trang 7(ADC channel 2), VREF- (Low Reference Voltage) RA3/AN3/VREF+ 5 6 22 I/O TTL TTL Đầu vào analog
(ADC channel 3), VREF- (Low Reference Voltage) RA4/T0CKI/C1OUT 6 23 23 I/O ST TTL Đầu vào/xuất
Timer0 Clock Input, Comparator
1 output RA5//AN4/SS/
HLVDIN/C2OUT 7 24 24 I/O TTL TTL Đầu vào analog (ADC channel 4),
Slave Select (SS) cho SPI, High/Low Voltage Detect input, Comparator
2 output RB0/INT 33 9 8 I/O ST TTL/
ST Đầu vào ngắt ngoại vi RB1/AN10 34 10 9 I/O ST TTL Đầu vào analog
(ADC channel 10) RB2/AN8 35 11 10 I/O ST TTL Đầu vào analog
(ADC channel 8) RB3/PGM/AN9 36 12 11 I/O ST TTL/
ST Đầu vào analog (ADC channel 9),
PGM pin RB4/AN11 37 14 14 I/O ST TTL Đầu vào analog
(ADC channel 11) RB5/AN13 38 15 15 I/O ST TTL Đầu vào analog
(ADC channel 13) RB6/PGC 39 16 16 I/O ST TTL/
ST
Đầu vào lập trình Serial
Programming Clock VÀ Data RB7/PGD 40 17 17 I/O ST TTL/
ST Đầu vào lập trình Serial
Programming Clock VÀ Data RC0/T1OSO/T1CKI 15 34 32 I/O ST ST Đầu vào/xuất
Timer1 oscillator output, Timer1 Clock Input RC1/T1OSI/CCP2 16 35 35 I/O ST ST Đầu vào Timer1
oscillator input, Capture/Compare/
Trang 8PWM output RC2/CCP1 17 36 36 I/O ST ST Capture/
Compare/PWM output
RC3/SCK/SCL 18 37 37 I/O ST ST Clock cho SPI/IIC RC4/SDI/SDA 23 42 42 I/O ST ST Data in cho SPI/IIC RC5/SDO 24 43 43 I/O ST ST Data out cho SPI RC6/TX/CK 25 44 44 I/O ST ST Xuất tín hiệu
truyền thông EUSART RC7/RX/DT 26 1 1 I/O ST ST Nhận tín hiệu
EUSART RD0/PSP0 19 38 38 I/O TTL ST/
TTL RD1/PSP1 20 39 39 I/O TTL TTL
RD2/PSP2 21 40 40 I/O TTL TTL
RD3/PSP3 22 41 41 I/O TTL TTL
RD4/PSP4 27 2 2 I/O TTL TTL
RD5/PSP5 28 3 3 I/O TTL TTL
RD6/PSP6 29 4 4 I/O TTL TTL
RD7/PSP7 30 5 5 I/O TTL TTL
RE0/ /AN5 8 25 25 I/O TTL TTL/
Analo g
Đầu vào/xuất mức TTL
RE1//AN6 9 26 26 I/O TTL TTL/
Analo g
Đầu vào/xuất mức TTL
RE2//AN7 10 27 27 I/O TTL TTL/
Analo g
Đầu vào/xuất mức TTL
MCLR/Vpp/RE3
Vss/ VDD 12,3
1 6,30,31 6,29 P - Cung cấp điện áp dương, nối đất
(Ground)
33,34 - - Không kết nối (Not Connected)
1.2 Hoạt động của định thời
1.2.1 Bộ định thời Timer3
Timer3 trong vi điều khiển PIC18F4520 là một bộ định thời/bộ đếm 16-bit
giống như Timer1 Nó bao gồm hai thanh ghi 8-bit: TMR3H (Byte cao) và
TMR3L (Byte thấp), có thể đọc hoặc ghi Dưới đây là chi tiết hoạt động của
Timer3, tương tự với Timer1 nhưng có một số khác biệt trong cấu hình và chức năng
Trang 91 Cấu trúc:
Timer3 đếm từ giá trị 0000h đến FFFFh, và khi đạt đến FFFFh rồi chuyển
về 0000h, sẽ xảy ra sự kiện tràn Khi sự kiện tràn xảy ra, bit cờ ngắt TMR3IF sẽ
được đặt, và nếu ngắt được cho phép, ngắt sẽ xảy ra Ngắt của Timer3 có thể được
kích hoạt hoặc cấm bằng cách điều khiển bit TMR3IE trong thanh ghi.
2 Các chế độ hoạt động:
Timer3 có thể hoạt động ở hai chế độ, tương tự như Timer1:
Chế độ Timer: Định thời với một khoảng thời gian nhất định.
Chế độ Counter: Đếm sự kiện thông qua xung clock bên ngoài.
Việc lựa chọn chế độ hoạt động của Timer3 được xác định thông qua các bit điều khiển trong thanh ghi T3CON
3 Cấu hình thanh ghi T3CON:
Thanh ghi T3CON chứa các bit điều khiển cho Timer3, dùng để chọn chế độ
hoạt động và cấu hình nguồn xung clock:
| T3RD16 | T3CCP2 | T3CKPS1 | T3CKPS0 | T3OSCEN | T3SYNC | TMR3CS | TMR3ON |
Bit 7 - T3RD16: Đọc/ghi 16-bit của Timer3.
Bit 6 - T3CCP2: Chọn nguồn clock cho CCP2.
Bit 5, 4 - T3CKPS1: Chọn bộ chia prescaler cho Timer3.
Bit 3 - T3OSCEN: Bật/tắt dao động ngoài Timer3.
Bit 2 - T3SYNC: Đồng bộ hóa clock ngoài cho Timer3 (chỉ áp dụng khi
sử dụng chế độ Counter)
Bit 1 - TMR3CS: Chọn nguồn clock cho Timer3 (FOSC/4 hoặc clock
ngoài)
Bit 0 - TMR3ON: Kích hoạt/bật Timer3.
4 Các chế độ hoạt động cụ thể:
Chế độ Timer
Chế độ Timer được chọn bằng cách xóa bit TMR3CS (Bit 1).
Trong chế độ này, nguồn xung clock là FOSC/4
Timer3 sẽ tăng giá trị đếm mỗi chu kỳ của FOSC/4, và không bị ảnh hưởng bởi xung clock ngoài
Trang 10Chế độ Counter
Chế độ Counter được chọn bằng cách đặt bit TMR3CS (Bit 1).
Ở chế độ này, Timer3 tăng giá trị đếm qua xung clock ngoài, được cung
cấp qua chân T3CKI.
Việc tăng giá trị xảy ra sau mỗi sườn lên của xung clock ngoài
5 Ví dụ:
Để cấu hình Timer3 ở chế độ Timer với bộ chia prescaler 1:8, bạn có thể làm như sau:
Xóa bit TMR3CS để chọn FOSC/4 làm nguồn xung clock.
Chọn prescaler bằng cách thiết lập T3CKPS1 = 10 (1:8).
Bật T3OSCEN nếu muốn sử dụng bộ dao động ngoài Timer3.
Đặt TMR3ON để bật Timer3.
2 Hiển thị LED 7 đoạn
2.1 Định nghĩa
Led 7 đoạn là một thiết bị điện tử được thiết kế đặc biệt dùng để hiển thị các con số từ 0 đến 9 Gồm các 7 đoạn led được xếp theo hình dạng con số và một đoạn led nhỏ hơn (điểm thập phân) để hiển thị số thập phân
2.2 Hình dạng
Trang 112.3 Cấu tạo và nguyên lý hoạt động
a Cấu tạo
- 7 đoạn led: mỗi đoạn led là một đèn led nhỏ
- Điểm thập phân: đoạn led nhỏ thể hiện dấu thập phân dùng để hiển thị số
thập phân khi cần
b Nguyên lý hoạt động
- Hoạt động dựa trên dòng điện, khi dòng điện chạy qua đoạn led sẽ phát sáng
- Bật tắt các đoạn led khác nhau tạo ra hình dạng con số
- Ngoài ra các đoạn led được đánh số theo thứ tự a,b,c,d,e,f,g.
- Hoạt động dựa trên bảng sự thật
Trang 122.4 Phân loại led 7 đoạn
- Có hai loại màn hình cực dương (Anode), và loại màn hình cực âm
( Cathode)
- Loại cực âm ( Cathode) là các phân cực âm được kết nối với nhau theo logic 0 hoặc nối đất Muốn đoạn led nào sáng ta có thể đặt mức logic 1 lên chân đó
- Loại cực dương ( Anode) là các phân cực dương được nối với nhau và nối với chân có mức logic cao là 1 Còn các cực âm của led phân đoạn được kết nối với chân có mức logic thấp để led phân đoạn đó có thể sáng Được
sử dụng thông dụng và phổ biến hiện nay
Figure 4 Phân biệt led 7 đoạn
Trang 13CHƯƠNG 2: THIẾT KẾ BỘ ĐẾM SẢN PHẨM
3 Phần cứng
3.1 Thiết kế trên phần mềm mô phỏng:
2.2 Linh kiện:
Trang 144 Phần mềm
4.1 Chương trình:
#include <18F4520.h>
#fuses HS, NOWDT, NOPROTECT
#use delay(clock=20M)
const char MA7DOAN[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};// Mang chua ma hien thi led 7 doan de hien thi cac so tu 0 den 9 unsigned int16 dem;// Bien dem
void hienthi(unsigned int16 dem)// Ham hien thi 1 so tren led 7 doan
{
// Hien thi chu so hang nghin
output_b(0x01); // Chon LED 1 bang cach dua chan anode chung cua LED nay len muc cao
output_d(MA7DOAN[(dem / 1000)]); // Hien thi chua so dau tien
delay_ms(10); // Giu hien thi trong 10ms
// Hien thi chu so hang tram
output_b(0x02); // Kich hoat LED 2
output_d(MA7DOAN[(dem / 100) % 10]); // Hien thi chu so 2
delay_ms(10); // Giu hien thi trong 10 ms
// Hien thi chu so hang chuc
Trang 15output_b(0x04); // Kich hoat LED 3
output_d(MA7DOAN[(dem / 10) % 10]); // Hien thi chu so 3
delay_ms(10);// Giu hien thi trong 10ms
// Hien thi chu so hang don vi
output_b(0x08); // Kich hoat LED 4
output_d(MA7DOAN[dem % 10]); // Hien thi chu so 4
delay_ms(10); // Giu hien thi trong 10ms
}
void main()
{
set_tris_c(0xff); // PORTC: Dau vao
set_tris_d(0x00); // PORTD: Dau ra cho LED 7 doan
set_tris_b(0x00); // PORTB: Dau ra dieu khien chon LED
setup_timer_3(T3_EXTERNAL | T3_DIV_BY_1); // Cau hinh Timer3 voi xung ngoai và không chia
set_timer3(0); // Dat gia tri ban dau cua Timer3 la 0
dem = 0;
while(TRUE)
{
dem = get_timer3(); // Doc gia tri tu timer3
if(dem>9999) // Neu bien dem vuot qua 9999
Trang 16{
dem = 0; // Reset gia tri dem ve 0
set_timer3(0); // Reset timer khi vuot qua 9999 }
hienthi(dem); // Goi ham hien thi so
}
}
4.2 Kết quả: