Việc ứng dụng lập chương trình cho các vi điều khiển Micro controller bên trong các thiết bị điện tử, điện tử dân dụng, công nghiệp cho việc hoạt động tự động các máy móc và thiết bị đã
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA QUỐC TẾ VÀ SAU ĐẠI HỌC
Đề tài 11
Design and develope an embedded computer
Giảng Viên hướng dẫn: Tiến sĩ Phạm Văn Cường
Học viên: Đỗ Trường Giang
Hà Trường Giang Nguyễn Văn Thái
Hà Nội, Tháng 12 Năm 2014
Trang 2Tài liệu tham khảo
[1] : Bài giảng Kiến Trúc Máy Tính tiến sĩ Phạm Văn
Cường (Học viện công nghệ bưu chính viễn thông)
[2] : Bài giảng Kiến Trúc Máy Tính Tiến sĩ Hoàng Xuân Dậu(Học viện bưu chính viễn thông)
[3 ] : Giáo trình kiến trúc máy tính và vi xử lý GS.TSKH Nguyễn Ngọc Thành (Đại học Bách Khoa Wroclaw Ba Lan)
[4] : Giáo trình Nguyễn Nam Trung Cấu trúc máy Vi tính
và Thiết bị ngoại vi Nhà XB Khoa học Kỹ thuật.2000.
[5] : Đặng Thành Phu Turbo Assembler và Ứng dụng Nhà
XB Khoa học và Kỹ thuật 1998.
[6] Bài tiểu luận có sử dụng một số tài liệu từ internet
A GIỚI THIỆU
Ngày nay với sự phát triên mạnh mẽ của tự động hóa Việc
ứng dụng lập chương trình cho các vi điều khiển (Micro controller)
bên trong các thiết bị điện tử, điện tử dân dụng, công nghiệp cho việc hoạt động tự động các máy móc và thiết bị đã ngày trở nên rất cấp thiết và là thành phần không thể thiếu đối với các hệ thống hoạt động thông minh
Bộ vi điều khiển, là mạch tích hợp trên một chíp có thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian và tiến hành đóng mở một
cơ cấu nào đó
Để làm sáng tỏ việc vi điều khiển hoạt động điều khiển các thiết bị khác thế nào, chương trình viết và nạp vào nó ra sao, thì trong giới hạn bài tiểu luận này chúng em ứng dụng việc viết
chương trình ASM cho vi điều khiển nhằm điều khiển hệ thống đèn LED hoạt động theo một chương trình được lập trình cụ thể theo ý muốn của nhóm
B NỘI DUNG
I Tìm hiểu Vi điều khiển AT89S52:
1 Thông tin chung về sản phẩm:
Họ vi điều khiển 8 bit
Trang 3Tần số hoạt động : 33 Mhz
Bộ nhớ :8 Kb Flash, 256 Bytes SRAM
Timer/Counter : 3 bộ 16 bit
Giao diện kết nối : USART
Lập trình qua giao diện ISP
cả lệnh nhân và lệnh chia Nó cung cấp những hổ trợ mở rộng trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớchỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32đường I/O, 3 TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
3 bộ Timer/counter 16 Bit
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ớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại
Trang 4 4 s cho hoạt động nhân hoặc chia
Sơ đồ khối của AT89S52
Trang 5nhau, chẳng hạn như hai hàng
chân DIP (Dual In-Line
Pakage), dạng vỏ dẹt vuông
QPF (Quad Flat Pakage) và
dạng chip không có chân đỡ
LLC (Leadless Chip Carrier)
thì chúng đều có 40 chân cho
các chức năng khác nhau như
vào ra I/O, đọc RD, ghi WR,
3.1 Chức năng của các chân 89S52
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng:
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 thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng
cho giao tiếp với thiết bị bên ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có
tác dụng kép 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: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác
dụng kép Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 89S52 như ở bảng sau:
Trang 6Bit Tên Chức năng chuyển đổi
Ngõ vào dữ liệu nối tiếp
Ngõ xuất dữ liệu nối tiếp
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hànhchương trình trong ROM nội, PSEN ở mức cao
ALE (Address Latch Enable):
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và 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 ở 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
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, 89S52 thi hành chương trình
từ ROM nội Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ
Trang 7mở 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 89S52.
RST (Reset): Khi ngõ vào tín hiệu này
đưa lên mức cao ít nhất 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 phải tự động reset
Các giá trị tụ và điện trở được chọn là:
R1=10, R2=220, C=10 F
Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên
trong 89S52 Khi sử dụng 89S52,
người ta chỉ cần nối thêm thạch anh
và các tụ Tần số thạch anh tùy thuộc
vào mục đích của người sử dụng, giá
trị tụ thường được chọn là 33p
3.2 Tổ chức bộ nhớ bên trong AT89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM RAM trong 89S52 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
AT89S52 có bộ nhớ được tổ chức 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 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu bên ngoài
RAM bên trong AT89S52 đượ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
Trang 8a RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa dụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử lý bit
b Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh Các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi động thì hệ thống bank 0 được chọn
sử dụng
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanhghi được truy xuất bởi các thanh ghi R0 đến R7 Viêc thay đổi bank thanh ghi được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)
c Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi
bộ đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0 đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
d Thanh ghi trạng thái chương trình (PSW: Program Status Word)
L
ADDRES S
DESCRIPTION
PSW.7 CY D7H Cary Flag
PSW.6 AC D6H Auxiliary Cary Flag
PSW.5 F0 D5H Flag 0
PSW4 RS1 D4H Register Bank Select 1
PSW.3 RS0 D3H Register Bank Select 0
00=Bank 0; address 00H07H01=Bank 1; address 08H0FH10=Bank 2; address 10H17H11=Bank 3; address 18H1FH
Trang 9PSW.2 OV D2H Overlow Flag
PSW.1 - D1H Reserved
PSW.0 P DOH Even Parity Flag
e Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):Cờ nhớ thường nó được dùng cho
các lệnh toán học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn
- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những
giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của
người dùng
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa saukhi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết.Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là Bank 0, Bank1, Bank2 và Bank3
Trang 10bit Parity luôn luôn chẵn Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm
tra bit Parity sau khi thu.
3.2.2 Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc Người ta sử dụng các timer để:
o Định khoảng thời gian
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng
để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer
để đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung)
3.2.3 Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi
Trang 11Bit Ký
hiệu
Địa chỉ bit Mô tả
IP.7 _ _ Không được mô tả
IP.6 _ _ Không được mô tả
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại timer 2IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại cổng nối tiếp
IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại timer 1IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại ngắt ngoài 1IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại timer 0IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp
(=0) tại ngắt ngoài 0
Tóm tắt thanh ghi IP
Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn sẽ được phục vụ trước
Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự
ưu tiên được thực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer
0 – ngắt ngoài 1 – timer 1 – cổng nối tiếp – timer 2
Nếu chương trình của một ngắt có mức ưu tiên thấp đang
chạy mà có một ngắt xảy ra với mức ưu tiên cao hơn thì chương
trình này tạm dừng để chạy một chương trình khác có mức ưu tiên cao hơn
Cho phép và cấm ngắt:
Trang 12Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H.
Bit Ký hiệu Địa chỉ bit Mô tả
IE.7 EA AFH Cho phép / Cấm toàn bộ
IE.6 _ AEH Không được mô tả
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE
- Các cờ ngắt :
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ
đó được đặt lên mức cao để xác nhận ngắt
Trang 13Các loại cờ ngắt
- Các vectơ ngắt:
Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt Nó
là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau :
II.Tìm hiểu IC 74HC595 .
1, Chức năng :
Trang 14Là ic ghi dịch 8bit kết hợp chốt dữ liệu , đầu vào nối tiếp đầu
ra song song
Chức năng: Thường dùng trong các mạch quét led 7 , led
matrix …để tiết kiệm số chân VDK tối đa (3 chân) Có thể mở rộng
số chân vi điều khiển bao nhiêu tùy thích bằng việc mắc nối tiếp đầuvào dữ liệu các ic với nhau
2,Sơ đồ chân :
Giải thích ý nghĩa hoạt động của
một số chân quan trọng:
Chân 14 : đầu vào dữ liệu
nối tiếp Tại 1 thời điểm
xung clock chỉ đưa vào được
âm tại chân chốt 12
Chân 13 : Chân cho phép tích cực ở mức thấp (0) Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở,
không có đầu ra nào được cho phép
Chân 9: Chân dữ liệu nối tiếp Nếu dùng nhiều 74595 mắc nốitiếp nhau thì chân này đưa vào đầu vào của con tiếp theo khi
đã dịch đủ 8bit
Chân 11: Chân vào xung clock Khi có 1 xung clock tích cực
ở sườn dương(từ 0 lên 1) thì 1bit được dịch vào ic
Chân 12 : xung clock chốt dữ liệu Khi có 1 xung clock tích cực ở sườn dương thì cho phép xuất dữ liệu trên các chân output lưu ý có thể xuất dữ liệu bất kỳ lúc nào bạn muốn ,ví
dụ đầu vào chân 14 dc 2 bit khi có xung clock ở chân 12 thì dữliệu sẽ ra ở chân Qa và Qb (chú ý chiều dịch dữ liệu từ
Qa=>Qh)
Trang 15 Chân 10: khi chân này ở mức thấp(mức 0) thì dữ liệu sẽ bị xóatrên chip)
Sơ đồ hoạt động của chíp :
3, Bảng thông số chip:
Đây là ic đầu ra hoạt động ở 2 mức 0 &1 dòng ra tầm 35mA điện áp hoạt động <=7V Công suất trung bình 500m
Trang 16Dựa vào bảng tính toán được các thông số khi thiết kế mạch
Trang 17liệu này sẽ được dịch vào trong thanh ghi dịch (8-stage shift
register)
- Khi dịch đủ 8 bít và có 1 xung từ thấp lên cao trên chân RCK (chân 12) thì 8 bít dữ liệu sẽ được chốt vào thanh ghi chứa (8-bit storage register) Đồng thời 8 bít dữ liệu này vẫn tồn tại trong thanh ghi dịch
- Khi dữ liệu đã được chốt vào thanh ghi chứa mà chân G (chân 13)
ở mức thấp thì dữ liệu này sẽ được đẩy vào vùng đệm 3 trạng thái
và dữ liệu sẽ xuất hiện ở đầu ra song song QA…QHChân SCLR dùng để xóa thanh ghi dịch, nếu SCLR ở mức thấp, nội dung của thanh ghi dịch sẽ bị xóa
- Khi trong thanh ghi dịch đã đủ 8 bít mà đưa thêm vào bít thứ 9 thì bít đầu tiên sẽ bị đẩy ra đầu ra QH’ và bít thứ 9 sẽ nhảy vào thanh ghi dịch
Sơ đồ khối của mạch điều khiển
Trang 18Mạch Nguồn.
Đầu vào là 9v, Đầu ra là 3v dùng để nuôi các led
Sơ đồ nối gữa 89c52 với 595
Trang 19Các IC U1,U2,U3,U4 được mắc nối tiếp với nhau.
Chân nhận dữ liệu đầu vào DS được nối với cổng P2.0/A8
Chân Q7’ là chân dữ liệu đầu ra của U1 được nối với chân dữ liệu đầu ra của U2 và tiếp tục như vậy cho U3, U4
Các chân SH_CP của các U1,U2,U3,U4 cùng được nối vào
1 Tất cả các led đều mắc theo cấu hình ngược.
Một chân được nối với nguồn 3v
Chân còn lại nối với các chân đầu ra của mạch sử lý
- Khi chân đầu ra của mạch sử lý đưa ra điện áp 3V thì lúc này không có sự chênh áp giữa các chân của led nên led không sáng
- Khi các chân đầu ra của mạch sử lý đưa ra điện áp 0v thì lúc này có sự chênh áp giữa các chân nên Led sáng
2 Sơ đồ chi tiết:
Các chân đầu ra của U1,U2,U3,U4,
Gồm 32 chân, được nối với các Led từ D1-D32 là các Led thuộc vành ngoài ( Trái tim lớn)
Các chân t1 đến t8 của 89c52 được nối với các Led xếp thành hình chữ I
Các chân từ 10 đến 17 của 89c52 được nối với các Led xếp thànhhình chữ U
Các chân từ cc0 đến cc11 của 89c52 nối với các Led xếp thành hình trái tin nhỏ
Chương Trình điều khiển:
Dùng chương trình M-IDE Studio 5.1 làm phần mềm soạn thảo và biên dịch chương trình
- Chương trình:
Trang 20CLR P2.2 ; mo chan ST xuat ra ngoai NOP
TAT -MOV R6,#5
LOOP:
MOV R7,#32