1.1 Timer là gì?Timer là một chuỗi các flipflop chia đôi tần số mắc nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp. Xung nhịp được đưa vào flipflop thứ nhất để chia đôi tần số xung nhịp. Ngõ ra của flipflop thứ nhất làm xung nhịp cho flipflop thứ hai (cũng làm việc chia đôi tần số),và v.v.. Vì mỗi tầng kế tiếp chia đôi cho nên timer có n tầng sẽ cho xung ra có tần số là tần số xung nhịp chia cho 2n . Ngõ ra của tầng cuối làm xung nhịp cho flipflop báo tràn của timer (còn gọi là cờ timer TF Timer Flag). Giá trị nhị phân trong các flipflop của timer có thể xem như số đếm số xung nhịp (hoặc các sự kiện) từ khi timer bắt đầu chạy. Thí dụ timer 16 bit sẽ đếm lên từ 0000H đến FFFFH. Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H.1.2 Timer trong 805180518031 có hai timer 16 bit (T0 và T1), mỗi timer có bốn chế độ hoạt động. Người ta sử dụng các timer để: a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho cổng nối tiếp có sẵn trong 80518031. Mỗi timer 16 bit có 16 tầng hay tầng cuối cùng chia tần số xung nhịp cho 216=65536. Nguồn xung nhịp cho các timer là xung vuông có tần số bằng 112 tần số xung nhịp cung cấp cho 8051. Bộ môn Kỹ Thuật Điện Tử ĐHBK
Trang 1Nhóm 8:
Đề tài: LẬP TRÌNH TIMER ĐỂ HIỂN THỊ ĐỒNG HỒ SỐ
(FULL BÁO CÁO DOMO)
Giảng viên: XXXXX
Sinh viên:
Mai Xuân Sơn
Nguyễn Thị Hồng
Phạm Thị Thảo
Đặng Thùy Linh
Trần Thị Thương
Trang 2MỤC LỤC
CHƯƠNG 1: TÌM HIỂU VỀ TIMER 8051
1.1 Timer là gì?
Timer là một chuỗi các flip-flop chia đôi tần số mắc nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp Xung nhịp được đưa vào flip-flop thứ nhất
để chia đôi tần số xung nhịp Ngõ ra của flop thứ nhất làm xung nhịp cho flip-flop thứ hai (cũng làm việc chia đôi tần số),và v.v
Vì mỗi tầng kế tiếp chia đôi cho nên timer có n tầng sẽ cho xung ra có tần số
là tần số xung nhịp chia cho 2n Ngõ ra của tầng cuối làm xung nhịp cho flip-flop báo tràn của timer (còn gọi là cờ timer TF [Timer Flag])
Giá trị nhị phân trong các flip-flop của timer có thể xem như số đếm số xung nhịp (hoặc các sự kiện) từ khi timer bắt đầu chạy Thí dụ timer 16 bit sẽ đếm lên từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H
1.2 Timer trong 8051
8051/8031 có hai timer 16 bit (T0 và T1), mỗi timer có bốn chế độ hoạt động
Trang 3Người ta sử dụng các timer để: a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho cổng nối tiếp có sẵn trong 8051/8031
Mỗi timer 16 bit có 16 tầng hay tầng cuối cùng chia tần số xung nhịp cho 216=65536 Nguồn xung nhịp cho các timer là xung vuông có tần số bằng 1/12 tần
số xung nhịp cung cấp cho 8051 Bộ môn Kỹ Thuật Điện Tử - ĐHBK
Trong các ứng dụng định khoảng thời gian, người ta lập trình cho timer tràn
ở một khoảng đều đặn và đặt cờ tràn timer lên 1 Cờ được dùng để đồng bộ hóa hoặc đo thời gian trôi qua giữa hai sự kiện (ví dụ: đo độ rộng xung)
Đếm sự kiện được dùng để xác định số lần xảy ra của một sự kiện hơn là đo khoảng thời gian trôi qua giữa các sự kiện Một “sự kiện” là bất cứ tác động bên ngoài nào có thể cung cấp một chuyển tiếp 1 sang 0 từ chân T0, T1(ở P3) của 8051/8031
Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho cổng nối tiếp có sẵn trong 8051/8031
1.2.1 Các RFS của Timer
Trang 41.2.2 Các thanh ghi Timer
Timer (T0/T1) của 8051 được tạo bởi 2 thanh ghi 8 bit
Timer 0 (T0) được tạo bởi :
– TL0 vàTH0 (L=Low và H=High)
– Truy cập chúng như các thanh ghi khác, TD: MOV TL0, #55H MOV R1, TH0
Các thanh ghi điều khiển Timer (TCON)
Trang 5Thanh ghi chế độ Timer ( TMOD)
Các chế độ Timer và cờ báo tràn
Trang 6Cơ chế hoạt động
- Có 4 cơ chế hoạt động:
1.2.3 Chế độ Timer 13 bit ( chế độ 0)
Chế độ 0 là chế độ timer 13 bit để tương thích với bộ xử lý trước 8051 là
8048
Trang 7• Với các thiết kế mới người ta ít dùng chế độ hoạt động này
• Byte cao của timer (THx) nối tiếp với 5 bit thấp của byte thấp của timer (TLx) để tạo thành timer 13 bit
• Ba bit cao của TLx không được sử dụng
1.2.4 Chế độ Timer 16 bit ( chế độ 1)
• Chế độ 1 là chế độ timer 16 bit giống như chế độ 0, ngoại trừ lúc này timer hoạt động như timer 16 bit đầy đủ
• Tràn xảy ra khi có chuyển tiếp từ FFFFH sang 0000H trong số đếm và nó đặt cờ báo tràn timer lên 1 Timer tiếp tục đếm tiếp
• Cờ báo tràn là bit TFx trong TCON mà người ta có thể đọc ra hoặc ghi vào bằng phần mềm
1.2.5 Chế độ timer 8 bit tự nạp lại trị đầu (chế độ 2)
Trang 8- Chế độ 2 là chế độ tự động nạp giá trị đầu Byte thấp của timer TLx làm việc như timer 8 bit trong khi đó byte cao của timer THx giữ giá trị cần nạp lại
- Khi bộ đếm tràn từ FFH sang 00H thì không những cờ timer được đặt lên 1 mà giá trị trong THx còn được nạp vào TLx, việc đếm tiếp tục từ giá trị này đến chuyển tiếp từ FFH sang 00H kế, và cứ tiếp tục như vậy
- Chế độ này tiện lợi vì tràn timer xảy ra theo những khoảng thời gian có chu kz một khi TMOD và THx đã được khởi tạo trị
Chế độ tách timer (chế độ 3)
Trang 9• Chế độ 3 là chế độ tách timer thì khác nhau với mỗi timer Timer 0 ở chế độ 3 được tách thành 2 timer 8 bit
• TL0 và TH0 làm việc như 2 timer độc lập với các báo tràn đặt các cờ TF0 và TF1 tương ứng
Đặc điểm của chế độ 3
• Timer 1 bị dừng ở chế độ 3, nhưng có thể cho nó chạy bằng cách chuyển sang 1 trong các chế độ khác
• Giới hạn duy nhất là cờ báo tràn thông thường của Timer 1 (TF1) không bị ảnh hưởng bởi sự báo tràn trong Timer1 vì TF1 đã được nối vào TH0
• Chế độ 3 chủ yếu cho thêm 1 timer 8 bit (8051 giống như có thêm timer thứ ba) Khi Timer 0 ở chế độ 3, ta có thể bật hay tắt Timer 1 bằng cách chuyển nó ra khỏi hay đi vào chính chế độ 3 của nó Nó vẫn có thể được cổng nối tiếp sử dụng làm bộ tạo tốc độ baud hoặc có thể được sử dụng theo bất cứ cách nào mà không cần ngắt (vì nó không còn tác động được với TF1)
CHƯƠNG 2 : TÌM HIỂU VỀ BỘ VI ĐIỀU KHIỂN AT89C51
IC AT89C51 có khả năng điều khiển được các bóng Led rời chạy theo hiệu ứng như mạch led hào quang hay rất nhiều loại bóng Led khác IC AT89C51 được
sử dụng rất nhiều trong các biển quảng cáo cho một thương hiệu, một cái tên, một
Trang 10dịch vụ hay bảng thông báo ở nơi công cộng bài viết này chúng ta sẽ cùng tìm hiểu
về IC AT89C51
2.1 Giới thiệu cấu trúc phần cứng họ MSC-51(8951)
Chip AT89C51 là chip vi điều khiển CMO 8 bit điện áp thấp, tần số 2 KB bộ nhớ Flash chỉ đọc, xóa và lập trình được PEROM Linh kiện này được sản xuất bằng cash sử dụng công nghệ bộ nhớ không thay đổi mật độ cao của Atmel và tương thích với tệp của MCS-51 chuẩn công nghiệp Bằng cách kết hợp một CPU 8 bit đa năng và linh hoạt với Flash trên chip đơn tinh thể, Atmel AT89C2051 là chip
vi điều khiển mạnh cung cấp giải pháp linh động cao và mang lại tính hiệu và giá thành cho nhiều ứng dụng điều khiển nhúng
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương tự như nhau Ở đây giới thiệu IC8951 là một họ IC vi điều khiển do hang Intel của Mỹ sản xuất Chúng có các đặc điểm chung như sau:
• 8KB EPROM bên trong
• 128 Byte RAM nội
• 4 Port xuất/ nhập I/O 8 bit
• Giao tiếp nối tiếp
• 64 KB vùng nhới mã ngoại
• Xử lí Boolean ( hoạt động trên bit đơn)
• 210 vị trí nhớ có thể định vị bit
• 4 μs cho hoạt động nhân hoặc chia
2.2 Đặc tính của IC AT89C51
• Có khả năng 1000 chu kì ghi xóa
• Tần số hoạt động 0Hz-24MHz
• 3 mức khóa bộ nhớ lập trình
Trang 11• 128 bytes Ram nội 4 port xuất nhập I/O 8 bit.
• 2 bộ time/counter 16 bit
• Giao tiến nối tiến bằng phần cứng, 64 Kb vùng nhớ mã ngoài, 64 Kb vùng nhớ dữ liệu
• 4 chu kì máy cho hoạt động nhân hoặc chia
• Có các chế độ nghỉ và chế độ nguồn giảm
2.3 Cấu tạo bên trong của IC AT89C51
Tổ chức bộ nhớ
Bản đồ bộ nhớ Data trên Chip:
Trang 12Bộ nhớ trong 8951 bao gồm ROM và RAM RAM trong 8951 bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt
8951 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong 8951 nhưng
8951 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu
Hai đặc tính cần chú ý là:
Trang 13- Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong bộ nhớ và có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác
- Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoại như trong các bộ
Microcontroller khác RAM bên trong 8951 được Phân chia như sau:
- Các bank thanh ghi có địa chỉ từ 00H đến 1FH
- RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
- RAM đa dụng từ 30H đến 7FH
- Các thanh ghi chức năng đặc biệt từ 80H đến FFH
RAM đa dụng:
Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến 7FH, 32 byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự (mặc
dù các địa chỉ này đã có mục đích khác)
Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa chỉ trực tiếp hoặc gián tiếp
RAM có thể truy xuất từng bit:
8951 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa các byte có chứa các địa chỉ từ 20F đến 2FH và các bit còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt
Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh của
microcontroller xử lý chung Các bit có thể được đặt, xóa, AND, OR, , với 1 lệnh đơn Đa số các microcontroller xử lý đòi hỏi một chuổi lệnh đọc – sửa - ghi để đạt được mục đích tương tự Ngoài ra các port cũng có thể truy xuất được từng bit
128 bit truy xuất từng bit này cũng có thể truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng
Các bank thanh ghi:
Trang 148951 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có
24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ
Các Port:
• Port 0 : Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951 Trong các thiết
kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Trang 15• Port 1: Port 1 là port IO trên các chân 1-8 Các chân được ký hiệu P1.0, P1.1, P1.2,
… có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
• Port 2: Port 2 là 1 port có tác dụng kép trên các chân 21 - 28 được dùng như các
đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ
mở rộng
• Port 3: Port 3 là port có tác dụng kép trên các chân 10 - 17 Các chân của port này
có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau:
Các ngõ tín hiệu điều khiển :
Ngõ tín hiệu PSEN (Program store enable):
- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng thường được nói đến chân 0E\ (output enable) của Eprom cho phép đọc các byte mã lệnh
- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8951 để giải mã lệnh Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1
Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :
Trang 16- Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt
- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 8951
Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ở mức 1,
8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8951
Ngõ tín hiệu RST (Reset) :
- Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951 Khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset
Các ngõ vào bộ dao động X1, X2:
- Bộ dao động được tích hợp bên trong 8951, khi sử dụng 8951 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ Tần số thạch anh thường sử dụng cho 8951 là 12Mhz Chân 40 (Vcc) được nối lên nguồn 5V
2.4 Ứng dụng của IC AT89C51
Trang 17• Dùng để điều khiển các bóng Led của biển quảng cáo.
• Ưu tiên sử dụng làm biển quảng cái ngoài trời, ở nơi khó tháo lắp
• Dùng để điều khiển bảng hiển thị thông tin nơi công cộng
Như vậy qua bài viết chắc các bạn cũng đã biết về cấu tạo cũng như ứng dụng của
vi điều khiển IC 89C51, nói chung đây là vi điều khiển dùng để điều khiển các biển quảng cáo Led các chức năng cũng tương tự như một số mạch điều khiển Led trên thị trường như: mạch điều khiển Led vẫy Oeled v3, mạch điều khiển led 7 màu RGB
CHƯƠNG 3 DEMO
Trang 18Hình 1.1: Hiển thị đồng hồ số