Chương I: CƠ SỞ LÝ THUYẾT HỌ VI ĐIỀU KHIỂNBộ vi xử lý là một hệ thống thao tác trên các bit 0 và 1, nhưng bản thân hệ thốngkhông giải quyết được vấn đề gì cả, mà bài toán chỉ được giải k
Trang 1MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
LỜI NÓI ĐẦU 5
Chương I: CƠ SỞ LÝ THUYẾT HỌ VI ĐIỀU KHIỂN T89C51 6
1.1 Tổng quan về bộ vi điều khiển 8051 6
1.1.1 Định nghĩa : 6
1.1.2 Sự phát triển của bộ điều khiển 8051 6
1.1 3 Sơ đồ chức năng 8051 7
1.2 Sơ đồ, chức năng các chân của 8051 10
1.2.1 Chức năng các chân của 8051 11
1.2.2 Nhóm chân cổng vào ra 11
1.2.3 Nhóm chân nguồn dao động và điều khiển 12
1.2.4 Các thanh ghi đặc biệt: 13
1.2.5 Lệnh Reset 14
1.3 Hoạt động của bộ định thời (timer) 15
1.3.1 Giới thiệu 15
1.3.2 Thanh ghi điều khiển timer (TCON): 15
1.3.3 Thanh ghi chế độ timer (TMOD): 16
1.3.4 Các chế độ timer: 16
1.3.5 Nguồn tạo xung nhịp: 18
1.3.6 Bắt đầu dừng và điều khiển các timer 19
1.3.7 Khởi động và truy xuất các thanh ghi timer 20
1.4 Tập lệnh của 8051: 20
Chương II : ỨNG DỤNG ĐIỀU KHIỂN ĐÈN BÁO HIỆU TRẠM THU PHÍ GIAO THÔNG 26
2.1 Nguyên lý hoạt động của mạch 26
2.2 Sơ đồ khối của hệ thống 27
2.2.1 Khối VĐK 27
Trang 22.2.2 Khối Hiển Thị 28
2.2.3 Khối giao tiếp vi điều khiển với bàn phím 35
2.3 Một số linh kiện và công cụ khác 38
Chương III : CHƯƠNG TRÌNH MÔ PHỎNG ĐÈN BÁO HIỆU TRẠM THU PHÍ 39
3.1 Chương trình cho mạch điều khiển đèn hiệu trạm thu phí giao thông 39
3.2 Mã lệnh của chương trình 45
3.3 Chương trình mô phỏng 49
3.4 Mạch đèn thu phí giao thông demo 56
3.4.1 Các khối và linh kiện 56
3.4.2 Hoạt động của mạch 57
KẾT QUẢ 60
HƯỚNG PHÁT TRIỂN 61
TÀI LIỆU THAM KHẢO 62
Trang 3LỜI NÓI ĐẦU
Kỹ thuật vi xử lý ngày nay rất phát triển, nó được ứng dụng rất nhiềutrong các lĩnh vực như sản xuất công nghiệp,tự động hóa và nhiều lĩnh vực khácnữa.So với kĩ thuật số thì kĩ thuật vi xử lí nhỏ gọn hơn nhất nhiều do nó đượctích hợp lại và được lập trình để điều khiển
Với tính ưu việt của vi xử lý thì trong phạm vi đồ án tốt nghiệp này em chỉtiến hành việc dùng vi xử lí, vi điều khiển trong điều khiển đền báo hiệu tại trạmthu phí giao thông , đây chỉ là một ứng dụng nhỏ của nó trong những ứng dụngcủa nó
Nhữn kiến thức được học cộng với sự hiểu biết từ các tài liệu tham khảotuy có thể hoàn thành đồ án này nhưng không thể tránh khỏi thiếu sót mong thầy
cô giáo khi xem bài báo cáo này có thể thông cảm cho em
Để hoàn thành bài báo cáo này em đã nhận được sự chỉ bảo tận tình của côgiáo hướng dẫn.Cuối cùng chúng em xin chân thành cảm ơn cô giáo bộ mônhướng dẫn Bùi Thị Mai Hoa và các thầy cô trong bộ môn kĩ thuật máy tính
Trang 4Chương I: CƠ SỞ LÝ THUYẾT HỌ VI ĐIỀU KHIỂN
Bộ vi xử lý là một hệ thống thao tác trên các bit 0 và 1, nhưng bản thân hệ thốngkhông giải quyết được vấn đề gì cả, mà bài toán chỉ được giải khi bộ vi xử lýthực hiện tất cả các chương trình ứng dụng mà ngươi lập trình đưa vào
1.1.2 Sự phát triển của bộ điều khiển 8051
Sự phát triển của kĩ thuật vi xử lý gán liền với sự phát triển của bộ vi điều khiển.Intel hãng sản xuất bộ vi sử lý đầu tiên và là hãng có bộ vi điều khiển lớn nhất vàphong phú nhất
Trong các họ vi điều khiển 8 bít hàng đầu thì 8051 có số lượng lớn nhất và cónhiều hãng cung cấp nhất Nhà cung cấp lầ nhà sản xuất bên cạnh nhà sáng chế
bộ vi điều khiển đối với 8051 thì nhà sáng chế là Intel Nhưng hiên nay có rấtnhiều hãng cung sản xuất Các hãng này gồm Intel , Atmel , Philips/
Signetics , AMD , Simens , Matra , Pallas
Năm 1981 hãng Intel cho ra mắt bộ vi điều khiển được gọi là 8051 Bộ vi điềukhiển này là một vi mạch tổng quát của họ MCS – 51 , bộ vi điều khiển
này có các thống số và các đặc trưng như sau
- 4KB ROM
- 128 byte RAM
- 4 port xuất nhập ( 4 cổng vào/ra) 8bít
- 2bộ định thời 16 bít
- Mạch giao tiếp nối tiếp
- Không gian nhớ chương trình ( mã) ngoài 64K
- Bộ xử lý bít
- 210 vị trí nhớ được định địa chỉ , mỗi vị trí 1 bít
Trang 5- Nhân / chia trong 4μs
8051 đã trở nên rất phổ biến sau khi Intel cho phép các nhà sản xuất khác sảnxuất và bán bất kì biến dạng nào của 8051 nhưng với điều kiện họ phải mãchương trình tương thích với 8051 mặc dù do các hãng sản xuất khác nhau nêntốc độ và dung lượng nhớ của ROM trên chíp là khác nhau nhưng tất cả các lệnh
đó đều tương thích với 8051 ban đầu
Trang 6Sơ đồ khối của 8051
Trang 7+ Bộ nhớ trong bao gồm 2 thành phần ROM và RAM
ROM ( Read only memory ) : Là bộ nhớ cố định có đặc điểm thông tin chỉ có thểđọc thông tin ra và thông tin không bị mất khi mất điện Bộ nhớ ROM được dùng
để chứa chương trình chính hoặc chứa chương trình điều hành hay chương trìnhhướng dẫn
RAM ( ) là bộ nhớ động có đặc điểm là thông tin có thể ghi hoặc đọc ramột ra một cách tuỳ ý và thông tin đó sẽ bị mất đi khi mất điện
RAM được sử dụng để nạp phần còn lại của hệ điều hành từ đĩa khởi động hoặcnạp vào các chương trình ứng dụng từ bộ nhớ ngoài, lưu trữ số liệu và trạng thái
hệ thống trong quá trình làm việc
+ Bộ nhớ ngoài gồm băng từ, đĩa từ được sử dụng nhiều vì giá thành rất rẻ vàđược dùng để lưu trữ thông tin và dữ liệu
Trang 8+ Bus dữ liệu: Là hệ thống đường truyền song song được dùng để trao đổi dữ liệugiữa CPU với các thành phần bên ngoài và giữa các thành phần với nhau
+ Bus điều khiển: Gồm các đường dây dùng để truyền tín hiệu điều khiển cầnthiếu giúp cho CPU điều khiển việc trao đổi dữ liệu, xử lý sự cố và đồng bộ toàn
hệ thống
1.2 Sơ đồ, chức năng các chân của 8051
Sơ đồ chân của 8051
Sơ đồ chân của 8051
Trang 91.2.1 Chức năng các chân của 8051
Chíp 8051 có 40 chân trong đó có 32 chân có công dụng xuất/ nhập tuy nhiên 24trong 32 chân này có 2 mục đích sử dụng Mỗi một chân này có thể hoạt độngxuất/nhập như một đường địa chỉ/dữ liệu của bus địa chỉ/dữ liệu đa hợp, 32 chânnày hình thành 4 port 8 bít 8 chân cho một bort và có thể sử dụng như một đơn
vị giao tiếp song song như máy in, bộ biến đổi DA
Các chân còn lại dành cho nguồn Vcc , đất GND, các chân dao động XTAL1
Cổng Port0 Có 8 chân (Chân từ 32 đến 39) bình thường đây là cổng ra, vào hoặc
ra nhưng nó có hai tác dụng trong các thiết kế tối thiểu thì Port 0 được sử fụnglàm nhiệm vụ xuất nhập còn trong các thiết bị lớn hơn thì Port trở thành
bus địa chỉ và bus dữ liệu đa hợp
b Cổng Port 1
Cổng Port 1 cũng có các chân ( Các chân từ 1 đến 8) các chân này chỉ có một tácdụng là dùng để giao tiếp với các thiết bị ngoại vi (làm đường xuất nhập hoặclàm các ngõ vào cho các mạch dịch thời thứ 3) Để chuyển cổng port 1 thành đầuvào cần lập trình bằng cách ghi 1 đến tất cả các bít của cổng
c Cổng port 2
Cổng Port 2 có 8 chân( từ chân 24 đến chân 28) có thể được sử dụng làm đầu vàohoặc đầu ra Cổng này có hai chức năng là chuyển địac hỉ và dữ liệu, byte địa chỉcao của bus địa chỉ 16 bít cho các thiết kế có bộ nhớ chương
trình ngoài
d Cổng Port 3
Cổng Port có 8 chân từ chân 10 đến chân 17 Cổng này có thể được sử dụng làmđầu vào hoặc đầu ra Khi không làm nhiệm vụ xuất nhập thì nó sẽ có các chứcnăng riêng liên quan đến các đặc trung cụ thể của 8051 , tuy nhiên cổng Port3còn có một chấc năng quan trọng khác là cung cấp một số tín hiệu đặc biệt chẳnghạn như ngắt
Bảng chức năng của cổng Port3
Bít Tên Địa chỉ bít Chức năng
Trang 10P3.0 RXD B0H Chân nhận dữ liệu của Port nối tiếp
P3.1 TXD B1H Chân phát dữ liệu của Port nối tiếp
P3.2 INT0 B2H Ngõ vào ngắt ngoài 0
P3.3 INT1 B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của bộ định thời / đếm 0
P3.5 T1 B5H Ngõ vào của bộ định thời / đếm 1
P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài
1.2.3 Nhóm chân nguồn dao động và điều khiển
a Nhóm chân nguồn
+ Chân Vcc: Chân 40 cung cấp điện áp nguồn +5V cho chíp
+ Chân GND: Chân số 20 là cung cấp nguồn âm (là chân mát)
b Nhóm chân dao động
Nhóm chân XTAL1 và XTAL2 là các chân 18 và 19 của chíp 8051
hiện tại đã có môt bộ dao động đồng hồ ở bên ngoài dùng để kích hoạt và hai hânnày cần được nối với bộ dao động thạch anh ở ngoài va khi đó được mắc với các
tụ ổn định tần số dao động cho thạch anh
Tần số danh định của thạch anh là 12 MHz cho tất cả họ vi điều khiển 8051 Bộdao động tạo xung đồng hồ không nhất thiết là bộ dao động dùng thạch anh màcũng có thể dùng bộ dao động TTL khi đó dao động được nối tới chân XTAL1còn chân XTAL2 để hở
c Nhóm chân điều khiển
+ Chân RESET ( chân số 9 ) là chân khởi động lại trạng thái ban đầu của hệthống Khi có xung cao đặt tới chân này thì bộ vi điều khiển 8051 sẽ kết thúcmọi hoại động hiện tại và tiến hành khởi động lại Quá trình này xảy ra hoàntoàn tương tự như khi bật nguồn và khi đó mọi giá trị trên thanh ghi đều bị xoáhết
Chân EA ( Chân số 31 ) Là chân truy xuất ngoài có thể được nối với +5V khi cómức logic1 và nối đất khi có mức logic 0
Nếu có mức logic 1 thì nó sẽ thực thi chương trình trong ROM
Nếu có mức logic 0 và chân PSEN cũng ở mức 0 thì chương trình cần thực thichứa ở bộ nhớ ngoài vì trong chíp không có bộ nhớ chương trình
+ Chân PSEN (chân 29 )
Trang 11Là chân ra có chức năng cho phép cất chương trình 1 và cho phép bộ nhớ chươngtrình cung cấp cho ta 4 tín hiệu điều khiển bus và là tín hiệu xuất trên chân này
và đây cũng là tín hiệu cho phép truy xuất bộ nhớ chương trình ngoài và được nốivới OE
Tín hiệu PSEN ở mức logic 0 khi thực hiện thời gian tìm nạp lệnh
Tín hiệu PSEN ở mức logic 1 khi thực hiện 1 chương trình chứa ở ROM
+ Chân chốt địa chỉ ALE ( Chân 30 )
Là chân có mức tích cực cao và là chân xuất tín hiệu cho phép xuất địa chỉ ALE Khi pỏt được chọn làm bus địa chỉ / dữ liệu thi chân ALE xuất tín hiệu để chốtđịa chỉ và sau khi chốt các chân của port sẽ xuất / nhập dữ liệu hợp lệ trong suốt1/2 thứ 2 của chu kì bộ nhớ
Chân ALE còn được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối tớichân G của chíp 74LS373
Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động , chân ALE còn dùnglàm chân nhận xung ngõ vào lập trình cho EDROM
1.2.4 Các thanh ghi đặc biệt:
a.Các thanh ghi port xuất nhập:
Các port của 8051 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H,port 2 ởđịa chỉ A0H, port 3 ở địa chỉ B0H.Tất cả các port đều được địa chỉ hóa từngbit.Điều đó cung cấp một khả năng giao tiếp thuận lợi
b.Các thanh ghi timer:
8051 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đém
sự kiện.Time 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao).Time 1 ởđịa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao).Việc vận hành timer đượcset bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiểntimer(TCON) ở địa chỉ 88H.Chỉ có TCON được địa chỉ hóa từng bit
c Các thanh ghi port nối tiếp:
8051 chứa một port trên chip dành cho việc trao đổi thông tin với các thiết bịnhư máy tính ,modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nốitiếp (có bộ chuyển đổi A/D, các thanh ghi dịch…)
Trang 12d Các thanh ghi ngắt:
8051 có cấu trúc 5 nguồn ngắt và 2 mức ưu tiên.Các ngắt bị cấm sau khi reset hệthống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt(IE) ở địa chỉ8AH.Cả 2 thanh ghi đều được địa chỉ hóa từng bit
e Các thanh ghi điều khiển công suất:
thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển
1.2.5 Lệnh Reset.
8051 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kì máy
và trả nó về mức thấp.RST có thể được kích khi cấp điện đùng một mạch R-C
Mạch reset hệ thống Trạng thái của tất cả các thanh ghi 8051sau khi reset hệ thống được tóm tắttrong bảng sau:
Trang 13Quan trọng nhất trong các thanh ghi trên là thanh ghi đém chương trình , nóđược đặt lại 0000H Khi RST trở lại mức thấp, việc thi hành chương trình luônbắt đầu ở địa chỉ đầu tiên trong bộ nhớ chương trình : địa chỉ 0000H.Nội dungRAM trên chip không bị thay đổi khi sử dụng lệnh reset.
1.3 Hoạt động của bộ định thời (timer)
1.3.1 Giới thiệu
Một định nghĩa đơn giản của timer là chuỗi các flip-flop chia đôi tàn số nối tiếpvới nhau, chúng nhận tín hiệu và làm nguồn xung nhịp.Ngõ ra của tần số cuốilàm nguồn xung nhịp cho flip-flop báo tràn của timer(flip-flop cờ).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 khởi động timer ví dụ timer 16 bit sẽ đếm lên từ 0000H đénFFFFH
8051 có 2 timer 16 bit, mỗi timer có 4 cách làm việc
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở mộtkhoảng đều đặn va đạ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 cửa ngõ vào hoặc gửicác sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng để 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 độ xung) Đếm sự kiện dùng để xác định số lần xảy ra của một sự kiện.Một sự kiện là bất
cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên chân của 80
1.3.2 Thanh ghi điều khiển timer (TCON):
Thanh ghi TCON chứa các bit trang thái và các bit điều khiển cho timer 0 và timer 1
Bảng tóm tắt thanh ghi TCON
1.3.3 Thanh ghi chế độ timer (TMOD):
Trang 14Thanh ghi TMOD chứa 2 nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0 vàtimer 1.
khi INT1 ở mức cao
1=bộ đếm sự kiện0=bộ định khoảng thời gian
00: chế độ 0:timer 13 bit01: chế dộ 1: timer 16 bit10: chế độ 2: tự động nạp lại 8255Abit
hoạt động như timer 16 bit đầy đủ
Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm
Trang 15MSB của các giá trị trong các thanh ghi timer là bit của THx và LBS là bit 0của TLx Các thanh ghi timer(TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nàobằng phần mềm.
Chế độ 0 , chế độ tự động nạp lại 8 bit.
TLx hoạt động như 1 timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị dượcnạp Khi số đếm bị tràn từ FFH đến 00H, không những cờ timer được set mà giátrị trong THx cũng đồng thời được nạp vào trong TLx việc đếm được tiếp tục từgiá trị này lên đến FFH xuống 00H và được nạp lại…chế độ này rất thông dụng
vì sự tràn timer xảy ra trong những khoảng thời gian nhất định và tuần hoàn 1 khi
đã khởi động TMOD và THx
Trang 16Khi timer 0 ở chế độ 3 ,có thể cho timer 1 chạy và ngưng bằng cách chuyển nó
ra ngoài và vào chế độ 3
Trang 171.3.5 Nguồn tạo xung nhịp:
Có 2 nguồn xung nhịp có thể được chọn bằng cách ghi vao bit C/T(counter/timer) trong TMOD khi khởi động timer Một nguồn xung nhịp dùngcho định khoảng thời gian , cái khác cho đếm sự kiện
Trang 18-Định khoảng thời gian(interval timing)
Nếu C/T=0 hoạt động timer liên tục được chọn và timer được dùng cho việcđịnh khoảng thời gian.Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip.Bộchia 12 được thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho phầnlớn các ứng dụng.Như vậy thạch anh 12 MHZ sẽ cho tốc độ xung nhịp timer 1MHZ Báo tràn timer xảy ra sau một số (cố định) xung nhịp phụ thuộc vào giá trịban đầu dược nạp vào các thanh ghi timer(TLx/THx)
-Đếm sự kiện(Event Counting)
-Nếu C/T=1, timer lấy xung nhịp từ nguồn bên ngoài.Trong hầu hết các ứng dụngnguồn bên ngoài này cung cấp cho timer 1 xung khi xảy ra 1 “sự kiện” ,timer dùnđém sự kiện được xác định bằng phần mềm bằng cách đọc các thanh ghiTLx/THx vì giá trị 16 bit trong các thanh ghi này tăng thêm 1 cho mỗi sự kiện Nguồn xung nhịp bên ngoài có thể làm thay đổi chức năng của các chân port3.Bit 4 của port 3 (P3.4) dùng làm ngõ vào tạo xung nhịp bên trong timer 0 vàđược gọi là “T0” và P3.5 hay “T1” là ngõ vào tạo xung nhịp cho timer 1
1.3.6 Bắt đầu dừng và điều khiển các timer
Phương pháp mới đơn giản nhất để bắt đầu và dừng các timer là sử dụng các bitdiều khiển chạy:TRx trong TCON,TRx bị xóa sau khi reset hệ thống Như vậy làcác timer theo mặc nhiên là bị cấm.TRx dược đặt lên bằng 1 để cho các timerchạy
Trang 19Vì TRx ở trong thanh ghi TCON có địa chỉ bit nên dễ dang trong việc điều khiểncác timer trong chương trình.Ví dụ: cho timer chạy bằng lệnh: SETB TR0 vàdừng bằn lệnh: CLR TR0
Trình biên dịch sẽ thực hiện việc chuyển đổi kí hiệu cần thiết “TR0” sang địa chỉbit đúng SET TR0 chính xác giống như SETB 8CH
1.3.7 Khởi động và truy xuất các thanh ghi timer.
Thông thường các thanh ghi dược khởi động một lần ở đầu chương trình để đặtchế độ làm việc cho đúng Sau đó trong thân chương trinh các timer được chochạy,dừng các bít cờ được kiểm tra và xóa , các thanh ghi timer được đọc và cậpnhật …theo đòi hỏi của các ứng dụng
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoat động
Trang 20Các chi tiết thiết lập lệnh
Rn : Thanh ghi R0 đến R7 của bảng thanh ghi được chọn
Data : 8 bit địa chỉ vung dữ liệu bên trong Nó có thể là vùng Ram hoặccác thanh ghi chức năng đặc biệt
@Ri : 8 bit vung RAM dữ liệu trong được đánh giá giá địa chỉ gián tiếpqua thanh ghi R0 hoặc R1
#data : Hằng 8 bit chứa trong câu lệnh
#data 16 : Hằng 16 bit chứa trong câu lệnh
Addr16 : 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP.Addr11 : 11 bit địa chỉ đích được dùng trong lệnh LCALL và ẠJMP.Rel : Byte offset 8 bit có dấu được dùng trong lệnh SJMP và nhữnglệnh nhảy có điều kiện
Bit : Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các thanh ghi đặc biệt
a.Nhóm lệnh xử lý số học:
ADD A,Rn : Cộng nội dung thanh ghi Rn vào thanh ghi A
ADD A,data (2,1): Cộng trực tiếp 1 byte vào thanh ghi A
ADD A,@Ri (1,1): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khaibáo trong Ri vào thanh ghi A
ADD A,#data (2,1) : Cộng dữ liệu tức thời vào A
ADD A,Rn (1,1) : Cộng thanh ghi và cờ nhớ vào A
ADD A,data (2,1 ) : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A
ADDC A,@Ri (1,1) : Cộng gián tiếp nội dung RAM và cờ nhớ vào A
ADDC A,#data (2,1) :Cộng dữ liệu tức thời và cờ nhớ vào A
SUBB A,Rn (1,1) : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và
cờ nhớ
SUBB A,data (2,1) : Trừ trực tiếp A cho một số và cờ nhớ
Trang 21SUBB A,@Ri (1,1) : Trừ gián tiếp A cho một số và cờ nhớ.
SUBB A,#data (2,1) : Trừ nội dung A cho một số tức thời và cờ nhớ
INC A (1,1) : Tăng nội dung thanh ghi A lên 1
INC Rn (1,1) : Tăng nội dung thanh ghi Rn lên 1
INC data (2,1) : Tăng dữ liệu trực tiếp lên 1
INC @Ri (1,1) : Tăng gián tiếp nội dung và vùng RAM lên 1
DEC A (1,1) : Giảm nội dung thanh ghi A xuống 1
DEC Rn (1,1) : Giảm nội dung thanh ghi Rn xuống 1
DEC data (2,1) : Giảm trực tiếp dữ liệu xuống 1
DEC @Ri (1,1) : Giẳm gián tiếp nội dung vùng RAM xuống 1
INC DPTR (1,2) :Tăng nội dung con trỏ dữ liệu lên 1
MUL AB (1,4) : Nhân nội dung thanh ghi A với nội dung thanh ghi B.DIV AB (1,4) : Chia nội dung thanh ghi A cho nội dung thanh ghi B
DA A (1,1) : Hiệu chỉnh thập phân thanh ghi A
b Nhóm lệnh Logic :
ANL A,Rn (1,1) : AND nội dung thanh ghi A với nội dung thanh ghi Rn.ANL A,data (2,1) : AND nội dung thanh ghi A với dữ liệu trực tiếp ANL A,@Ri (1,1) : AND nội dung thanh ghi A với dữ liệu gián tiếp trong RAM
ANL A,#data (2,1) : AND nội dung thanh ghi A với dữ liệu tức thời
ANL data,A (2,1) : AND một dữ liệu trực tiếp với A
ANL data,#data (3,2) : AND một dữ liệu trực tiếp với một dữ liệu tức thời ANL C,bit (2,2) : AND cờ nhớ với 1 bit trực tiếp
ANL C,/bit (2,2) : AND cờ nhớ với bù 1 bit trực tiếp
ORL A,Rn (1,1) : OR thanh ghi A với thanh ghi Rn
ORL A,data (2,1) : OR thanh ghi A với một dữ liệu trực tiếp
ORL A,@Ri (1,1) : OR thanh ghi A với một dữ liệu gián tiếp
ORL A,#data (2,1) :OR thanh ghi A với một dữ liệu tức thời
ORL data,A (2,1) : OR một dữ liệu trực tiếp với thanh ghi A
Trang 22ORL data,#data (3,1) :OR một dữ liệu trực tiếp với một dữ liệu tức thời
ORL C,bit (2,2) : OR cờ nhớ với một bit trực tiếp
ORL C,/bit (2,2) : OR cờ nhớ với bù của một bit trực tiếp
XRL A,Rn (1,1) : XOR thanh ghi A với thanh ghi Rn
XRL A,data (2,1) : XOR thanh ghi A với một dữ liệu trực tiếp
XRL A,@Ri (1,1) : XOR thanh ghi A với một dữ liệu gián tiếp
XRL A,#data (2,1) : XOR thanh ghi A với một dữ liệu tức thời
XRL data,A (2,1) : XOR một dữ liệu trực tiếp với thanh ghi A
XRL dara,#data (3,1) : XOR một dữ liệu trực tiếp với một dữ liệu tức thời SETB C (1,1) : Đặt cờ nhớ
SETB bit (2,1) : Đặt 1 bit trự tiếp
CLR A (1,1) : Xóa thanh ghi A
CLR C (1,1) : Xóa cờ nhớ
CPL A (1,1) : Bù nội dung thanh ghi A
CPL C (1,1) : Bù cờ nhớ
CPL bit (2,1) : Bù một bit trực tiếp
RL A (1,1) : Quay trái nội dung thanh ghi A
RLC A (1,1) : Quay trái nội dung thanh ghi A qua cờ nhớ
RR A (1,1): Quay phải nội dung thanh ghi A
RRC A (1,1) : Quay phải nội dung thanh ghi A qua cờ nhớ
SWAP (1,1) : Quay trái nội dung thanh ghi A 1 nibble (1/2byte)
c Nhóm lệnh chuyển dữ liệu:
MOV A,Rn (1,1):Chuyển nội dung thanh ghi Rn vào thanh ghi A MOV A,data (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A
MOV A,@Ri (1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A
MOV A,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi A
MOV Rn,data (2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn
MOV Rn,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn
Trang 23MOV data,A (2,1): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp MOV data,Rn (2,2): Chuyển nội dung thanh ghi Rn vào một dữ liẹu trực tiếp MOV data,data (3,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp MOV data,@Ri (2,2): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp MOV data,#data (3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp MOV @Ri,A (1,1): Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp MOV @Ri,data (2,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp MOV @Ri,#data (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp.
MOV DPTR,#data16 (3,2): Chuyển một hằng số 16 bit vào thanh ghi con trỏ dữliệu
MOV C,bit (2,1): Chuyển một bit trực tiếp vào cờ nhớ
MOV bit,C (2,2): Chuyển trực tiếp một bit vào cờ nhớ
MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+DPRT vào thanh ghi A
MOVC A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là
@A+PC vaò thanh ghi A
MOV A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A
MOVX A,@DPTR (1,2): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A MOVX @Ri,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ)
MOVX @DPTR,A (1,2): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ)
PUSH data (2,2) : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP
POP data (2,2) : Chuyển dữ liệu trực tiệp vào ngăn xếp và giảm SP
XCH A,Rn (1,1) : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A
XCH A,data (2,1) : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp
XCH A,@Ri (1,1) : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp
XCHD A,@R (1,1) : Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN Của dữ liệu gián tiếp
Trang 24d Nhóm lệnh rẽ nhánh:
ACALL addr11 (2,2): Gọi chương trình con dùng địa chỉ tuyệt đối
LCALL addr16 (3,2): Gọi chương trình con dùng địa chỉ dài
RET (1,2): Trở về từ lệnh gọi chương trình con
RET1 (1,2): Trờ về từ lệnh gọi ngắt
AJMP addr11 (2,2): Nhảy tuyệt đối
LJMP addr16 (3,2): Nhảy dài
SJMP rel (2,2): Nhảy ngắn
JMP @A+DPTR (1,2): Nhảy gián tiếp từ con trỏ dữ liệu
JZ rel (2,2): Nhảy nếu A=0
JNZ rel (2,2): Nhảy nếu A không bằng 0
JC rel (2,2): Nhảy nếu cờ nhớ được đặt
JNC rel (2,2): Nhảy nếu cờ nhớ không được đặt
JB bit,rel (3,2): Nhảy tương đói nếu bit trực tiếp được đặt
JNB bit,rel (3,2): Nhảy tương đói nếu bit trực tiếp không được đặt
JBC bit,rel (3,2): Nhảy tương đói nếu bit trực tiếp được đặt ,rồi xóa
CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không bằng CJNE Rn,#data,rel (3,2): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và nhảy nếu không bằng
CJNE @Ri,#data,rel (3,2): So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu không bằng
DJNZ Rn,rel (2,2): Giảm thanh ghi Rn và nhảy nếu không bằng
DJNZ data,rel (3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng
Trang 25
Chương II : ỨNG DỤNG ĐIỀU KHIỂN ĐÈN BÁO HIỆU
TRẠM THU PHÍ GIAO THÔNG
2.1 Nguyên lý hoạt động của mạch
Thiết kế cụm đèn báo hiệu sáng theo chu trình
- Đèn đỏ sáng 15s, đèn vàng sáng nhấp nháy liên tục, đèn xanh sáng liên tục
- Trong khoảng thời gian các đèn sáng, 2 LED 7 thanh làm nhiệm vụ đếmngược thời gian đặt trước về 00 rồi tác động đèn màu tương ứng
- Chu trình được lặp lại vô tận
- Đèn xanh: Sáng báo hiệu cho xe tham ra giao thông vừa thu phí xongđược phép đi qua Thời gian sáng của đèn này có thể điều chỉnh được
- Đèn đỏ: Sáng mặc định 15s báo hiệu cho xe đi đầu tiên dừng lại để nộpphí và các xe tham ra giao thông khác sau cũng vậy
- Đèn vàng: Nháy sáng liên tục thông báo cho các phương tiện giao thôngbiết đường đi lúc đó lưu thông tự do trong những ngày lễ hay sự kiện quantrọng và ban đêm…
- Sử dụng các nút nhấn A,B,C,D … Để điểu khiển tăng giảm thời gian sángcác đèn hay nhấn trong trường hợp khẩn cấp
Trang 262.2 Sơ đồ khối của hệ thống
2.2.1 Khối VĐK.
a Vai trò, chức năng, nhiệm vụ của khối :
Khối này có nhiệm vụ xử lý tất cả các công việc mà mã lệnh chỉ ra(lập trình), xử lý xong đưa ra các khối để hoàn tất công việc, chuyển bị vàonhiệm vụ mới
Nếu ta không sử dụng VĐK mà sử dụng các IC logic…thì cũng có thểthực hiện được các công việc đề ra nhưng phần cứng sẽ cồng kềnh, phức tạp hơn
so với việc dùng VĐK
Ngày nay, người ta không cần thiết sử dụng VĐK AT89C51,mà ta có thể
sử dụng AVR, PLC, PIC…Vì sử dụng VĐK có nhược điểm là chỉ xử lý tối đađược 8 bit, dữ liệu lớn hơn 8 bit khó xử lý và tốc độ xử lý chậm
Khối VĐK đóng vai trò hết sức quan trọng trong hệ thống để điều khiển
hệ thống điều khiển Hay khối này đóng vai trò trung tâm của một hệ thống Vì
Khối Bàn Phím
Khối Bàn Phím
Khối VĐK
Khối VĐK Hiển Thị Hiển Thị
Đầu Vào
Đầu Vào
Trang 27toàn bộ dữ liệu mà ta thiết kế để điều khiển hệ thống đèn báo trạm thu phí giaothông đều được chứa trong bộ nhớ của VĐK.
b Phương án thiết kế.
Lý do chúng em chọn chip vi điều khiển AT89C51 là vì AT89C51 có giáthành phù hợp và các chỉ tiêu kĩ thuật của nó thỏa mãn được yêu cầu của đề bàiđặt ra như : bộ nhớ, công suất nguôn tiêu thụ thấp…
Vi điều khiển AT89C51 là một vi điều khiển thuộc họ 8051,AT89C51 làmột hệ vi tính 8-bit đơn chip CMOS có hiệu suất cao,công suất nguồn tiêu thụthấp và có 4K byte bộ nhớ ROM Flash xóa được / lập trình được.Chip này đượcsản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao củaAtmel
AT89C51 có các đặc trưng chuẩn sau : 4K byte Flash,128 byte RAM,32đường suất nhập (Port0-Port3),2 bộ định thời / đếm 16-bit, một cấu trúc ngắt 2mức ưu tiên và 5 nguyên nhân ngắt ,một port nối tiếp song công,mạch dao động
và tạo xung clock trên chip
Ngoài ra, AT89C51 được thiết kế với logic tĩnh cho hoạt động có tần
số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọnbằng phần mềm
2.2.2 Khối Hiển Thị
a.Vai trò, nhiệm vụ, chức năng của khối :
Khối này hiển thị thời gian đếm lùi khi các đèn sáng, báo cho người tham gia giao thông biết được thời gian chờ đợi khi các đèn sáng
b Phương án thiết kế.
Ở đây ta sử dụng các led 7 thanh để hiển thị thời gian đếm lùi Có thể sửdụng các mạch điều khiển LED 7 thanh chuyên dụng (sn7447) để đảm bảo đưa rađược tín hiệu với công suất nhất định cần thiết cho hoạt động của LED, hoặc cóthể nối trực tiếp với các chân của VĐK thông qua mạch khuyếch đại công suất đểđảm bảo cho led hoạt động được…
Trang 28Phương án 1 : sử dụng IC 74ls47.
Do khối hiển thị chỉ đơn thuần là hiển thị thời gian đếm ngược khi các đènsáng Do đó ta dùng các LED 7 thanh ( LED 7 thanh lọai Anode chung, Hình 3)
để tạo thành bộ hiển thị thời gian đếm lùi từ 0-99 & sử dụng IC 74ls47 để giải
mã cho LED 7 thanh
IC chốt 74LS47
Table of Contents
+ Chân 1, 2, 6, 7: Chân dữ liệu BCD vào dữ liệu này được lấy từ IC
+ Chân 9, 10, 11, 12, 13, 14, 15: Các chân ra tác động mức thấp (0) và được nối với LED 7 đoạn
Trang 29+ Chân 8: GND.
+ Chân 16: Vcc = 5V
+ Chân 4: chân Vcc
+ Chân 5: Ngõ vào
+Chân 3: Chân này cũng thế cho nó lên Vcc = 5V
Bảng chân lý các giá trị IO của 74LS47
Sự hoạt động của mạch được thể hiện ở bảng chân lý, trong đó đối với các ngõ ra
H là tắt và L là sáng, nghĩa là nếu 74LS47 thúc đèn led 7 đoạn thì các đoạn a, b,
c, d, e, f, g của đèn sẽ sáng hay tắt tuỳ vào ngõ ra tương ứng của 74LS47 là L hay
H nên do đó ta phải dùng LED anot chung
Trang 30Led 7 thanh
Dạng Led:
- Led Anode chung:
Đối với dạng Led anode chung, chân COM phải có mức logic 1 và muốn sángLed thì tương ứng các chân a – f, dp sẽ ở mức logic 0