Ngoài ra P0 và P2 còn được xử dụng để truy cập bộ nhớ ngoài với các chương trình ứng dụng này cổng P0 sẽ đưa ra địa chỉ Byte thấp và P2 đưa ra địa chỉ cao + Cổng port 3 có hai công dụng
Trang 1MỤC LỤC
Trang
LỜI NÓI ĐẦU……… 02
A - PHƯƠNG ÁN THIẾT KẾ……… 04
I - SƠ ĐỒ KHỐI HỆ THỐNG MẠCH ĐÈN GIAO THÔNG……
II - PHƯƠNG ÁN THIẾT KẾ………
B - THIẾT KẾ ……… 07
I - GIỚI THIỆU VỀ VĐK 8051……… 07
1 Cấu trúc của VĐK 8051……… 07
2 Các nhóm lệnh của VĐK 8051……… 16
II - THIẾT KẾ PHẦN CỨNG……… 23
1 Khối Giải mã……… 23
2 Khối xử lý ……… 25
3 Khối hiển thị ……… … 27
4 Sơ đồ nguyên lý hệ thống……… 29
5 Sơ đồ mạch in của hệ thống……… 30
III - THIẾT KẾ PHẦN MỀM……… 31
CHƯƠNG TRÌNH ĐIỀU KHIỂN HỆ THỐNG
C - NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG … 35
Trang 2LỜI NÓI ĐẦU
Trong thời đại ngày nay khi nhân loại đang trải qua những bước tiến vượt bậc
về khoa học công nghệ, thì ngành điện tử cũng có những bước tiến quan trọngđặc biệt là trong lĩnh vực vi điều khiển Các bộ vi xử lý ngày càng phát triển vàhoàn thiện hơn,được sử dụng trong hầu hết các hệ thống điều khiển tự động trongcông nghiệp,khoa học kĩ thuật,cũng như trongcác thiết bị dân dụng Chính nhờ vaitrò,chức năng của vi xử lý đã đem lại nhiều ưu điểm, nhiều tính năng đặc biệt chocác hệ thống điều khiển thay thế con người trong các công việc đòi hỏi sự phức tạp vàyêu cầu kỹ thuật cao
Để áp dụng tính năng đặc biệt đó của vi xử lý vào thực tiễn,nhóm sinh viênchúng em gồm các thành viên:
1- Nguyễn Phùng Thịnh
2- Lê Tiến Phong
3- Nguyễn Huy Yên
Dưới sự hướng dẫn nhiệt tình và chu đáo của thầy giáo Nguyễn Đình Thư, nhóm chúng em đã tiến hành nghiên cứu và hoàn thành đồ án với đề tài: THIẾT KẾ
MẠCH ĐÈN GIAO THÔNG SỬ DỤNG HỌ 8051
Trong hệ thống này nhóm em đã sử dụng IC AT89S52 là IC điều khiển chính.Ngoài việc sử dụng IC 89S52 còn sử dụng một số linh kiện phụ trợ khác
Trang 3Mặc dù đã cố gắng nhiều nhưng vì kinh nghiệm chưa có nhiều và sự khác biệt giữa lýthuyết – thực hành nên trong quá trình thực hiện còn nhiều thiếu sót Mong được sựgóp ý chân tình từ thầy cô và các bạn!
Chúng em chân thành cám ơn các thầy,các cô giáo dã nhiệt tình giúp đỡ nhóm
em trong thời gian hoàn thành đồ án.Cám ơn các anh chị sinh viên đi trước và các bạnsinh viên đã cùng đóng góp ý kiến, thảo luận và giúp đỡ
Đặc biệt chúng em xin chân thành cám ơn Thầy giáo hướng dẫn Nguyễn Đình
Thư,cô giáo Trần Thị Thương đã nhiệt tình hướng dẫn và giúp đỡ chúng em hoàn
thành đồ án này
Chúng em xin chân thành cám ơn!
Vinh,ngày 05 tháng 09 năm 2010
Trang 4Phương án này có đặc điểm là mạch gọn nhẹ, không quá phức tạp, cách thức bố trílinh kiện dễ dàng, lập trình đơn giản, dễ chỉnh sửa.
Do đề tài yêu cầu:
“ Thiết kế mạch đèn giao thông sử dụng họ VĐK 8051”
Nên chúng ta sẽ chọn :
Trang 5+ VĐK AT89S52 ( Họ VĐK 8051) làm khối điều khiển chính của hệ thốngmạch đèn giao thông.
+ Để điều khiển hệ thống , ta sử dụng khối giải mã bao gồm IC SN
74LS247N
+ Để hiển thị thời gian ta sử dụng các Led 7 thanh
+ Ngoài ra , ta còn sử dụng 1 số điện trở, tụ diện transistor và 1 số linh kiệnphụ trợ khác
Trang 6
Điều khiển ngắt Các thanh ghi khác 128 byte RAM ROM
4k - 8051
Timer1 Timer0
Port nối tiếp Các Port xuất/nhập
Điều khiển Bus Mạch dao động
CPU
Timer1 Timer2 Port nối tiếp
INT1 INT0
P0 P2 P1 P3 TXD RXD
EA RST
ALE PSEN
Địa chỉ/dữ liệu
T1 T0
B - THIẾT KẾ
I - GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051
1 - CẤU TRÚC CỦA VĐK 8051
1.1 - Sơ đồ khối và sơ đồ chõn của VĐK 8051
Hỡnh 2: Sơ đồ chõn của VĐK 8051
Trang 7Hình 3: Sơ đồ chân của VĐK 8051
18 XTAL1
XTAL2
PSEN ALE
RST EA
40 VCC
INT0 INT1 TXD RXD
T0 T1 WR RD
20 VSS
29 30 31 9
17 16 15 14 13 12 11 10
32 33 34 35 36 37 38 39
8 7 6 5 4 3 2 1
28 27 26 25 24 23 22 21
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
P2.3 P2.1 P2.0 P2.2
P2.6 P2.5 P2.4 P2.7
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6
P0.7 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
A15 A14 A13 A12 A11 A10 A9 A8 8051
Trang 8+ 1 cổng ra nối tiếp (Seral port)
+ 4 cổng xuất nhập P0 - P3 (I/O port)8 bit
+ Mạch giao tiếp nối tiếp
+ Không gian nhớ chương trình ngoàI 64K
+ 210 vị trí nhớ được định địa chỉ , mỗi vị trí 1 bit
+ Bộ xử lý bit (thao tác trên các bit riêng lẻ )
+ Một bộ điều khiển ngắt:Interruptcontrol
+ Một mạch dao động bên trong và một bộ điều khiển Bus
+ Các cổng P0-P3 là các cổng vào ra hai chiều Ngoài ra P0 và P2 còn được xử
dụng để truy cập bộ nhớ ngoài với các chương trình ứng dụng này cổng P0
sẽ đưa ra địa chỉ Byte thấp và P2 đưa ra địa chỉ cao
+ Cổng port 3 có hai công dụng :
Khi hoạt động ở chế độ xuất nhập mỗi một cổng của P3 có một chứcnăng riêng
+ RxD : chân nhập dữ liệu cổng nối tiếp
+ TxD : phát dữ liệu cổng nối tiếp
+ INT : ngắt ngoài
+ INT1 : Ngõ ngoài của bộ định thời không và ngõ vào của bộ định thời 1 + OE : ( outront enable) cho phép đọc các byte lệnh trong thời gian lấy lệnh + Trong thời gian lấy lệnh tín hiệu PSEN=0
Trong thời gian thực hiện lệnh PSEN=1
+ ALE (address lacht Enable): là tín hiệu để chốt địa chỉ
+ EA : truy xuất bên ngoài
+ 8051 thực hiện chương trình trong Rom nội Ngoài ra EA được dùngchân nhận điện áp 21V cho việc lập trình Eprom
+ RST : (reset) là chân dùng thiết lập trạng thái ban đầu cho hệ thống
Trang 9+ WR : tín hiệu đIều khiển ghi nhớ ngoài
+ RD : tín hiệu đIều khiển đọc bộ nhớ ngoài
+ PSEN : (Program store Enable) là tín hiệu điều khiển cho phép truy xuất bộnhớ ngoài , tín hiệu này được nối với OE
1.2 - Chức năng các chân của VĐK 8051
Vcc : chân cấp điện
Vss : Chân nối đất (0 V)
32 chân trong số 40 chân của 8051 có công dụng xuất/nhập, tuy nhiên 24 trong
32 đường này có 2 mục đích (công dụng) Mỗi một đường có thể hoạt động xuất/nhậphoặc hoạt động như một đường địa chỉ/dữ liệu của bus địa chỉ/dữ liệu đa hợp
32 chân nêu trên hình thành 4 port 8-bit Với thiết kế yêu cầu một mức tốithiểu bộ nhớ ngoài hoặc các thành phần bên ngoài khác, ta có thể sử dụng các portnày làm nhiệm vụ xuất/nhập 8 đường cho mỗi port có thể được xử lý như một đơn vịgiao tiếp với các thiết bị song song như máy in, bộ biến đổi D-A v.v hoặc mỗi đường
có thể hoạt động độc lập giao tiếp với một thiết bị đơn bit như chuyển mạch, LED,BJT, FET, cuộn dây, động cơ, loa,
Port 0 : Port 0 ( các chân từ 32 đến 39 trên 8051 ) có hai công dụng Trong các thiết
kế có tối thiểu thành phần, port 0 được sử dụng làm nhiệm vụ xuất/nhập Trong cácthiết kế lớn hơn có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp( byte thấp của bus địa chỉ)
Port 1 : Port1 chỉ có một công dụng là xuất/nhập ( các chân từ 1 đến 8 trên 8051 )
Trang 10
Các chân của port 1 được ký hiệu là P1.0, P1.1, , P1.7 và được dùng để giao tiếpvới thiết bị bên ngoài khi có yêu cầu Không có chức năng nào nữa gán cho các châncủa port 1, nghĩa là chúng chỉ được sử dụng để giao tiếp với các thiết bị ngoại vi.
Port 2 : Port 2 ( các chân từ 21 đến 28 trên 8051 ) có 2 công dụng, hoặc làm nhiệm vụ
xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộ nhớchương trình ngoài hoặc các thiết kế có nhiều hơn 256 bytes bộ nhớ dữ liệu ngoài
Port 3 : Port 3 ( các chân từ 10 đến 17 trên 8051 ) có 2 công dụng Khi không hoạt
động xuất/nhập, các chân của port 3 có nhiều chức năng riêng ( mỗi chân có chứcnăng riêng liên quan đến các đặc trưng cụ thể của 8051 )
Bảng sau đây cho ta chức năng của các chân của port 3 :
Bit Tên Địa chỉ bit Chức năng
ngoài
Trang 11Chân cho phép bộ nhớ chương trình PSEN :
8051 cung cấp cho ta 4 tín hiệu điều khiển bus Tín hiệu cho phép bộ nhớ chương trình PSEN ( program store enable) là tín hiệu xuất trên chân 29 Đây là tínhiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài Chân này thườngnối với chân cho phép xuất OE ( output enable ) của EPROM ( hoặc ROM ) để chophép đọc các file lệnh
Tín hiệu PSEN ở logic 0 trong suốt thời gian tìm nạp lệnh Các mã nhị phâncủa chương trinh hay opcode ( mã thao tác ) được đọc từ EPROM, qua bus dữ liệu vàchốt vào thanh ghi lệnh IR của 8051 để được giải mã
Khi thực thi một chương trình chứa trong ROM nội , PSEN được duy trì ởlogic không tích cực ( logic 1 )
Chân cho phép chốt địa chỉ ALE :
8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE( address latch enable ) để giải đa hợp ( demultiplexing ) bus dữ liệu và bus địa chỉ.Khi port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp, chân ALE xuất tín hiệu đểchốt địa chỉ ( byte thấp của địa chỉ 16 bit) vào một thanh ghi ngoài trong suốt nửa đầucủa chu kỳ bộ nhớ ( memory cycle ) Sau khi điều này đã được thực hiên, các châncủa port 0 sẽ xuất/nhập dữ liệu hợp lệ trong suốt nửa thứ hai của chu kỳ bộ nhớ
Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong chip viđiều khiển và có thể dùng làm xung clock cho phần còn lại của hệ thống Nừu mạchdao động có tần số 12 MHz, tín hiệu ALE có tần số 2 MHz Ngoại lệ duy nhất làtrong thời gian thực thi lệnh MOVX, một xung ALE sẽ bị bỏ qua Chân ALE cònđược dùng để nhận xung ngõ vào lập trình cho EPROM trên chip đối với các phiênbản có EPROM này
Chân truy xuất ngoài EA
Trang 12Ngõ vào này ( chân 31 ) có thể được nối với 5 V ( logic 1 ) hoặc với GND
( logic 0 ) Nếu chân này nối lên 5 V, 8051 thực thi chương trình trong ROM nội
( chương trình nhỏ hơn 4K ) Nếu chân này nối với GND ( và chân PSEN cũng ở
logic 0 ), chương trình cần thực thi chứa ở bộ nhớ ngoài Nếu chân EA ở logic 0 ,
ROM nội bên trong chip được vô hiệu hoá và chương trình cần thực thi chứa ở
EPROM bên ngoài
Chân RESET ( RST )
Ngõ vào RST ( chân 9 ) là ngõ vào xoá chính ( master reset ) của 8051 dùng để
thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống Khi ngõ vào
này được treo ở logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi bên trong của 8051 được
nạp các giá trị thích hợp cho việc khởi động lại hệ thống
Các chân XTAL1 và XTAL2
Mạch dao động bên trong chip 8051 được ghép với thạch anh bên ngoài ở hai
chân XTAL1 và XTAL2 ( chân 18 và 19 ) Tần số danh định của thạch anh là 12 MHz
cho hầu hết các chip của họ MCS-51
XTAL1 : Ngõ vào đến mạch khuếch đại đảo của mạch dao động
XTAL2 : Ngõ ra từ mạch khuếch đại đảo của mạch dao động
1.3- Bộ nhớ trên chip
* RAM trong:
Bộ vi điều khiển 8051 có 128 byte RAM trong bao gồm 32 byte đầu tiên (00H đến 1FH) dành cho các thanh ghi, 16 byte tiếp theo (20H đến 2FH) là vùng RAM định địa chỉ theo bit, sau đó là 80byte RAM nháp
Vùng thanh ghi có 32 byte, chia thành 4 khối (bank 0 đến bank 3),mỗi khối có 8 thanh ghi (từ R0 đến R7)
Trang 13 Ở vùng RAM định địa chỉ theo bit, các bit được dánh địa chỉ từ 00H đến 7FH.
Các thanh ghi chuyên dụng (SFRs – Special Function Registers):
Các thanh ghi này có địa chỉ từ 80H đến FFH Chúng chứa nội
dung của các thanh ghi điều khiển
Sau đây là một số thanh ghi chuyên dụng:
CHỐT CỔNG Port0 P0 80H
CHỐT CỔNG Port1 P1 90H
CHỐT CỔNG Port2 P2 AOH CHỐT CỔNG Port3 P3 BOH
Điền khiển chế độ bộ định thời/bộ đếm TMOD 89H
Bộ vi điều khiển AT89S52 có 4KB FLASH lập trình được
ROM luôn chiếm vùng địa chỉ thấp nhất trong bộ nhớ chương trình
1.4-Các Bộ định thời/Bộ đếm:
Bộ vi điều khiển 8051 có 2 Bộ định thời/Bộ đếm là Bộ định thời/Bộ đếm 0 và
Trang 14Bộ định thời/Bộ đếm 1.Chúng có thể hoạt động như là bộ định thời hoặc bộ đếm.Chế độ hoạt động của các Bộ định thời/Bộ đếm được cất trong thanh ghi TMODGATE1 C/T1 M1(1) M0(1) GATE0 C/T0 M1(0) M0(0)
Nếu bit GATE xóa, các Bộ định thời/Bộ đếm được phép hoạt đông khi bit TR# tương ứng trong thanh ghi TCON thiết lập Ngược lại, nếu GATE thiết lập thì các Bộ định thời/Bộ đếm chỉ hoạt động khi các chân INT# tương ứng tích cực (mức thấp)
Bit C/T# dùng để lựa chọn chế độ hoạt động bộ đếm hay bộ định thời Nếu được thiết lập thì nó hoạt đông theo chế độ đếm sự kiện,lúc này nguồn xung cho bộ đếm là xung ngoài đưa vào từ chân T# tương ứng (chân 14, 15) Nếu bị xóa,thì nó hoạt động theo chế độ định thời với nguồn xung là xung tạo ra từ bộ tạo dao đông trên
chip sau khi chia 12
Sự hoạt động của các Bộ định thời/Bộ đếm được điều khiển bởi thanh ghi TCON:
Trang 15Các bit TR# cho phép Bộ định thời/Bộ đếm hoạt động (nếu được thiết lập) hoặckhông cho phép chúng hoạt động (nếu bị xóa).
Các bit TF# là các cờ tràn tương ứng với các Bộ định thời/Bộ đếm Chúngđược thiết lập khi xảy ra tràn và được xóa bằng phần cứng nếu khi đó bộ xử lý rẽnhánh đến chương trình phục vụ ngắt tương ứng
Các bit IT# là các bit ngắt Thiết lập IT# tạo ra chế độ ngắt cạnh,chân INT# nhận ramột ngắt khi nhận ra có một sườn âm (↓) của tín hiệu vào Xóa IT# tạo ra chế độ ngắtmức, tức là ngắt được tạo ra khi tín hiệu vào ở mức thấp (0) Ở chế độ ngắt mức, khitín hiệu vào còn ở mức thấp thì ngắt được tạo ra liên tục cho đến khi tín hiệu vàochuyển lên mức cao hoặc thiết lập IT#
Các bit IE# là các cờ ngắt cạnh, được thiết lập khi dò thấy ngắt cạnh
1.5-Điều khiển ngắt
Bộ vi điều khiển 8051 có 5 nguồn ngắt: TF0, TF1, INT0, INT1 và ngắt do cổng nốitiếp Sự điều khiển hoạt động ngắt được cất trong 2 thanh ghi là thanh ghi cho phépngắt IE (Interrupt Enable) và thanh ghi xác định thứ tự ưu tiên ngắt IP (InterruptPriority)
Các bit và chức năng của chúng trong thanh ghi IE như sau (thiết lập là cho phép,xóa là cấm):
Trang 164 ES Cho phép ngắt do cổng nối tiếp
Bảng 3: Các bit và chức năng của nó trong thanh ghi IE
Với thanh ghi IP:
Bảng 4: Các bit và chức năng của chúng trong thanh ghi IP
- Chuyển điều khiển
Các chi tiết thiết lập lệnh:
Rn :Thanh ghi R0 đến R7 của bank thanh ghi được chọn
Data : 8 bit địa chỉ vùng dữ liệu bên trong Nó có thể là vùng RAM dữ liệu
trong (0-127) hoặc các thanh ghi chức năng đặc biệt
Trang 17@Ri : 8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ gián tiếp qua
thanh ghi R0 hoặc R1
#data : Hằng 8 bit chức 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à AJMP
Rel: Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệ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 chức năng đặc biệt
a – Nhóm lệnh 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 khai báo trong Ri vào thanh ghi AADD 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ớ
SUBB A,@Ri (1,1): Trừ gián tiếp A cho một số và cờ nhớ
Trang 18SUBB 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ù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 dữ liệu trực tiếp 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 dng 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
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 RAMANL A,#data (2,1): AND nội dung thanh ghi với dữ liệu tức thời
ANL data,#data (2,1): AND một dữ liệu trực tiếp với A
ANL C,bit (3,2): AND một dữ liệu trực tiếp với A 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 data,A (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,@Ri (2,1): OR thanh ghi A với một dữ liệu trực tiếp
ORL A,#data (1,1): OR thanh ghi A với một dữ liệu gián tiếp
ORL data,A (2,1): OR thanh ghi A với một dữ liệu tức thời
ORL data,#data (2,1): OR một dữ liệu trực tiếp với thanh ghi A