Bài tập lớn vi xử lý
Đề tài: Hệ thống điều khiển đèn giao thông tại 1 ngã tư.
Mục lục
I.Tài liệu tham khảo.............................................................................................2
II. Đặt vấn đề........................................................................................................2
III. Phương án giải quyết......................................................................................2
IV. Mô tả hệ thống.........................................
34 trang |
Chia sẻ: huyen82 | Lượt xem: 3663 | Lượt tải: 2
Tóm tắt tài liệu Hệ thống điều khiển đèn giao thông tại 1 ngã tư, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
......................................................3
1. Khối chế độ……………………………………………………………5
2. Khối điều khiển trung tâm…………………………………………….5
3. Khối giải mã………………………………………………………. .22
4. Khối hiển thị…………………………………………………………. 25
V. Code………………………………………………………………………. 28
VI. Sơ đồ mạch điều khiển.................................................................. ............. 30
VII. Sơ đồ mạch in……………....................................................................... 31
VIII. Nguyên lý hoạt động……........................................................................ 31
IX. Mở rộng thêm các chức năng của chương trình.................................... ......32
X. Kết luận……………………………………………………………… …. ..34
I.Tài liệu tham khảo
1. Họ vi điều khiển 8051_ tác giả: Tống Văn On- Hoàng Đức Hải
2. Cấu trúc và lập trình họ vi điều khiển 8051_ tác giả: Nguyễn Tăng Cường
3. Lập trình hợp ngữ( Assembly) và máy tính IBM-PC_ Biên dịch: Quách Tuấn Ngọc- Đỗ Tiến Dũng- Nguyễn Quang Khải
II. Đặt vấn đề
Hệ thống giao thông là vấn đề rất quan trọng trong một đô thị văn minh. Nhưng hiện nay tại Hà Nội và một số thành phố lớn nói chung vẫn thường xuyên xảy ra tai nạn và ách tắc giao thông đặc biệt là vào các giờ cao điểm. Hệ thống đèn báo hiệu tại các ngã tư hoạt động chưa đạt được hiệu quả tối ưu, chưa tiện lợi cho người đi đường. Do vậy việc thiết kế hệ thống đèn báo hiệu hợp lý, hiệu quả là rất cần thiết.
III. Phương án giải quyết
Xuất phát từ việc cần thiết phải có một hệ thống điều khiển đèn giao thông khoa học và đạt hiệu quả. Nhóm thiết kế chúng em đã chọn đề tài thiết kế hệ thống điều khiển đèn giao thông có hiển thị đồng hồ đếm ngược báo hiệu thời gian hiển thị các đèn. Việc có đồng hồ đếm thông báo hoạt động của các đèn làm cho người tham gia giao thông chủ động trong việc chấp hành luật giao thông, đẩy lùi tan nạn và ách tắc giao thông.
Lưu đồ giảithuật
BEGIN
Công tắc chuyển mạch
So sánh chọn chế độ
S
D
DK=1
Chế độ tự động
Chế độ đèn vàng nhấp nháy
Khối hiển thị
END
DK: Bít điều khiển chế độ
IV. Mô tả hệ thống
1. Các khối của hệ thống
Gồm 4 khối hoạt động liên quan chặt chẽ với nhau
- Khối chế độ: là khối đặt các chế độ để điều khiển đèn
- Khối điều khiển trung tâm: là khối quan trọng nhất của cả hệ thống, điều khiển đèn bằng các lệnh đã được lập trình sẵn.
- Khối giải mã: giải mã tín hiệu nhận được từ khối điều khiển trung tâm rồi đưa tín hiệu ra khối hiển thị
- Khối hiển thị: là khối hiển thị thời gian hoạt động từng đèn
Khối điều khiển trung tõm
Khối Hiển thị
Khối chế độ
Khối giải mó
Sơ đồ khối của hệ thống
2. Khối Chế độ hoạt động
Hệ thống điều khiển đèn giao thông hoạt động ở 2 chế độ khác nhau, đó là: Tự động và chế độ ban đêm. Khối chế độ làm nhiệm vụ chuyển chế độ khi có yêu cầu của người điều khiển. Thực chất bên trong khối chế độ là một hệ thống chuyển mạch dùng các công tắc bấm
- Chế độ tự động( chế độ 2): Tất cả các khối đều hoạt động. Sử dụng chế độ này tại các thời điểm có lưu lượng xe tham gia giao thông bình thường. Các đèn hoạt động theo chế độ đã được định từ trước trong bộ diều khiển.
Chế độ ban đêm( chế độ đèn vàng nhấp nháy- chế độ1): Các khối điều khiển trung tâm, khối giải mã và đồng hồ bị ngắt bằng cách cắt nguồn. Chế độ này dùng vào các thời điểm vắng vẻ, cụ thể là vào ban đêm. Lưu lượng xe tham gia hoạt động giao thông nhỏ, nên việc sử dụng các đèn điều khiển là không cần thiết. Hoạt động của các cột đèn ở chế độ này là đèn vàng nháy liên tục theo xung đồng hồ. Các xe được đi liên tục không cần dừng lại.
3. Khối điều khiển trung tâm
Đối với hệ thống điều khiển đèn giao thông, khối điều khiển là khối quan trọng nhất, nó là trung tâm nhận tín hiệu và phát các tín hiệu điều khiển đèn của hệ thống. Hệ thông giao thông mà ta thiết kế có sử dụng bộ đồng hồ đếm ngược, để khi hiển thị đèn đỏ thì đồng hồ đếm ngược từ 29 về 0, đèn xanh thì đồng hồ đếm ngược từ 26 về 0, đèn vàng 3s. Ta thấy đồng hồ đếm ngược có những giá trị ban đầu khác nhau ứng với mỗi tín hiệu hiển thị của đèn. Vì vậy, khối vi điều khiển không những dùng để điều khiển các đèn mà còn dùng để thiết lập giá trị ban đầu của bộ đông hồ đếm ngược.
Sơ đồ chân của AT89C52
Khối điều khiển trung tâm là bộ não của toàn bộ hệ thống điều khiển đèn giao thông. Cấu tạo của khối chỉ bao gồm một IC vi điều khiển AT89C51 như hình bên. Xử lý bên trong thông qua phần mềm lập trình sẵn đã được nạp trong ROM của VĐK, đưa tín hiệu điều khiển các đèn đường P1, tín hiệu ra đồng hồ là các chân P0,P2.Chân P3.0 nối với khối chế độ. Các port 0,1,2 ở đây đều được dùng để xuất dữ liệu, port 3.0 dùng nhận tín hiệu được đưa vào từ khối chế độ. , chân 18,19 nối với bộ tạo dao động thạch anh 12MHz,
Vi điều khiển họ 80x51
Đây là họ vi xử lý loại one chip 8 bit thông dụng, nó rất phù hợp cho các ứng dụng trong đo lường và điều khiển mức độ vừa phải. Trong thiết kế em dùng loại chip AT89C51, nhưng nó thuộc họ 80x51 nên em xin trình bày các đặc điểm tổng quát của họ vi xử lý này.
Các đặc điểm chung của MC8051:
MC - 51 là họ Micro Controller được chế tạo ban đầu bởi công ty Intel. mC8051có các đặc điểm sau:
CPU 8-bít thích hợp với các ứng dụng đo lường, điều khiển.
Có khả năng xử lý từng bít.
Cho phép địa chỉ hoá 64Kbyte bộ nhớ chương trình.
Cho phép truy nhập 64Kbyte bộ nhớ chương trình.
4Kbyte bộ nhớ chương trình trên Chip (ROM, EPROM, EEPROM).
128 byte bộ nhớ dữ liệu trên chíp (với 8952 là 256 byte).
32 đường vào ra có địa chỉ riêng biệt.
2 bộ Timer/Counter (với 8952 thì có 3 bộ Timer/Counter)
Cổng truyền thông tin nối tiếp hoạt động ở chế độ Full- Duplex.
Cấu trúc ngắt gồm 6 nguồn ngắt và 5 Véc tơ ngắt với 2 mức ưu tiên.
Có thể phát xung clock trên Chip.
Sơ đồ chân linh kiện:
Sơ đồ. Bố trí chân của mC 8051
Đây là loại vi xử lý có 40 chân và bố trí như sau:
Chân 32 á 39 là cổng P0
Chân 1 á 8 là cổng P1
Chân 21 á 28 là cổng P2
Chân 10 á 17 là cổng P3
Chân 9 là RESET
Chân 29 là PSEN
Chân 30 là ALE
Chân 31 là để chọn chế độ làm việc với ROM ngoài hay ROM trong
Nguồn cấp vào chân 20 và 40
Cấu trúc bên trong của mC 8051
Hình 3. Cấu trúc bên trong của mC 8051
Tổ chức bộ nhớ trong mC 8051
mC 8051 có hai khoảng địa chỉ độc lập cho bộ nhớ chương trình và bộ nhớ số liệu. Sự độc lập của bộ nhớ chương trình và bộ nhớ số liệu cho phép bộ nhớ dữ liệu được xử lý bởi địa chỉ 8 bit. Tuy nhiên địa chỉ 16 bit cũng có thể được sử dụng thông qua thanh ghi DPTR.
Bộ nhớ chương trình (ROM, EPROM ) là bộ nhớ chỉ có đọc. Bộ nhớ này có thể lên tới 64Kbyte. Trong 8051 4Kbyte thấp nhất của bộ nhớ chương trình là trên chíp. Bộ nhớ ngoài có thể đọc được nhờ tín hiệu chốt của chân PSEN.
Bộ nhớ số liệu độc lập với bộ nhớ chương trình. 128 Byte thấp nhất của bộ nhớ dữ liệu ở trên chíp và nó có thể truy nhập đến 64Kbyte ngoài CPU sẽ phát ra các tín hiệu và cần thiết trong suốt quá trình xử lý bộ nhớ số liệu.
Bộ nhớ chương trình
Sau khi Reset CPU bắt đầu thực hiện từ địa chỉ 0000H. Bảng vector ngắt bắt đầu từ địa chỉ 0003H đến 002BH. Mỗi một ngắt được xác định tại một vị trí cố định trong bộ nhớ chương trình. Khi một ngắt xảy ra CPU sẽ nhảy tới vị trí mà nó yêu cầu phục vụ. Mỗi một vector ngắt có độ dài 8 Byte. Nếu chương trình ngắt đủ ngắn thì ta chứa ngay trong 8 Byte này, nếu chương trình ngắt dài thì nó chỉ chứa một lệnh nhảy tới chương trình phục vụ.
4Kbyte (hoặc 8Kbyte, 16Kbyte ) phần thấp nhất của bộ nhớ chương trình có thể ở ROM trong hoặc ở ROM ngoài. Điều này được thực hiện bởi nối chân lên mức logic 1 hay 0 ( = 1 thì ROM trong = 0 thì ROM ngoài). Khi truy cập bộ nhớ ngoài MCS - 8051 sử dụng P0 và P2 làm 16 đường vào ra, trong đó P0 làm chức năng Bus địa chỉ và Bus dữ liệu. P0 là Byte địa chỉ phần thấp của bộ nhớ chương trình còn P2 là byte địa chỉ phần cao.
Địa chỉ của bộ nhớ chương trình luôn có độ rộng là 16 bít.
Bộ nhớ dữ liệu
Bộ nhớ số liệu có thể truy nhập tới 64Kbyte bộ nhớ dữ liệu ngoài. Địa chỉ của bộ nhớ ngoài có thể là 1 Byte hoặc 2 Byte. Bộ nhớ số liệu trong được chia làm 3 khối, 128 Byte thấp, 128 Byte cao và khối thanh ghi chức năng đặc biệt. Bộ nhớ trong luôn sử dụng địa chỉ 1 Byte. Sơ đồ bộ nhớ dữ liệu trong:
Chỉ xử lý bởi địa chỉ gián tiếp
Xử lý bởi địa chỉ trực tiếp hoặc gián tiếp
Xử lý bởi địa chỉ trực tiếp
FFH
80H
FFH
80H
7FH
00H
Thanh ghi chức năng đặc biệt
Phần trên128
Phần dưới 128
Các bít trạng thái và các bít điều khiển cổng, các thanh ghi thời gian, thanh chứa con trỏ ngăn xếp
Hình 4. Sơ đồ bộ nhớ dữ liệu trong
* Phần Lower 128 Bytes được chia thành 3 vùng:
+ Vùng 1: Địa chỉ từ 00H đến 1FH là phần thấp nhất được chia thành 4 khối của 8 thanh ghi. Các lệnh của chương trình sẽ gọi các thanh ghi này từ R0 đến R7. 2 bít trong thanh ghi trạng thái (RS0, RS1 ) sẽ lựa chọn 4 khối này.
+ Vùng 2: Địa chỉ từ 20H đến 2FH bao gồm 16Byte là vùng ô nhớ địa chỉ theo Bit. Tập lệnh của MC - 51 bao gồm sự lựa chọn độ rộng của câu lệnh theo từng Bit và 128 Bits trong vùng này có thể được xử lý bởi các câu lệnh trực tiếp hoặc gián tiếp. Địa chỉ các Bits này là từ 00H đến 7FH.
+ Vùng 3: Địa chỉ từ 30H đến 7FH làm chức năng thông thường của bộ nhớ RAM.
Tất cả các Bytes trong 128 Bytes Lower đều có thể được xử lý bởi địa chỉ trực tiếp hoặc gián tiếp.
* Phần Upper 128 Bytes chỉ có thể được xử lý bởi địa chỉ gián tiếp và phần này không có trong 8051.
* Vùng các thanh ghi chức năng đặc biệt (SFR). SFRs bao gồm bộ chốt các cổng, Timer, điều khiển ngoại vi. Các thanh ghi này chỉ có thể được xử lí bởi địa chỉ trực tiếp. 16 địa chỉ trong vùng thanh ghi chức năng đặc biệt là địa chỉ theo Bytes và Bits. Địa chỉ theo Bits trong vùng này là từ 80H đến FFH.
Thanh ghi trạng thái chương trình (Program Status Word: PSW )
Thanh ghi trạng thái chứa các Bits ảnh hưởng đến trạng thái của CPU. Cấu trúc của thanh ghi trạng thái:
CY
AC
F0
RS1
RS0
0V
P
Thanh ghi trạng thái nằm trong vùng các thanh ghi chức năng đặc biệt. Nó chứa bit Carry, bit Carry phụ (dùng cho hoạt động BCD), 2 bit lựa chọn nhóm thanh ghi, cờ tràn, cờ dấu và 2 cờ trạng thái mà người dùng có định nghĩa.
Các chế độ địa chỉ
Các chế độ địa chỉ trong tập lệnh của MCS -51 như sau:
- Chế độ địa chỉ trực tiếp: Chế độ địa chỉ trực tiếp sử dụng địa chỉ 8 bit. Chỉ có RAM trong và các thanh ghi chức năng đặc biệt có thể sử dụng địa chỉ trực tiếp.
- Chế độ địa chỉ gián tiếp: Trong chế độ địa chỉ gián tiếp các câu lệnh thanh ghi nơi chứa địa chỉ của toán hạng. Cả RAM trong và RAM ngoài đều là địa chỉ gián tiếp.
Thanh ghi địa chỉ đối với địa chỉ 8 bit có thể là R0 hoặc R1 của nhóm thanh ghi được lựa chọn hoặc của con trỏ ngăn xếp. Thanh ghi địa chỉ 16 bits dùng cho địa chỉ 16 bits chỉ có thể là thanh ghi con trỏ dữ liệu 16 bits, DPTR.
- Câu lệnh thanh ghi đặc biệt: Một vài câu lệnh luôn luôn hoạt động trên thanh chứa (Acc), hoặc con trỏ dữ liệu (DPTR ). Vì vậy nó không cần byte địa chỉ nào để chỏ tới nó. Bản thân mã lệnh của nó sẽ làm điều đó.
- Chế độ địa chỉ hằng số trực tiếp: Giá trị của hằng số theo mã lệnh trong ô nhớ chương trình.
- Chế độ địa chỉ chỉ số: Chỉ có bộ nhớ chương trình có thể được xử lý với địa chỉ chỉ số và nó chỉ có thể được đọc. Chế độ này có xu hướng dùng để đọc bảng trong bộ nhớ chương trình. Một thanh ghi cơ sở 16 bit (DPTR hoặc PC ) trỏ tới địa chỉ cơ sở của bảng và thanh chứa Acc được thiết lập với số lượng danh mục của bảng. Địa chỉ của danh mục trong bộ nhớ chương trình hình thành bởi thêm dữ liệu thanh chứa vào con trỏ cơ sở.
Một loại khác của chế độ địa chỉ chỉ số là sử dụng trong câu lệnh "Jump". Địa chỉ đích được xác định bởi tổng của con trỏ cơ sở và dữ liệu thanh chứa.
Cổng I/O song song
mC 8051 có 4 cổng vào ra song song P0. P1, P2 và P3. Trong hầu hết các ứng dụng với bộ nhớ ngoài thì cổng P0 được sử dụng như là Bus dữ liệu và địa chỉ phần thấp còn P2 tương ứng với byte cao của địa chỉ.
Tất cả các chân của P3 và 2 chân của P1 (P1.0, P1.1) là đa chức năng, các chức năng của chúng được thể hiện ở bảng sau:
Port in
Chức năng khác
P1.0
T2 (Đầu vào bên ngoài của Timer/Counter 2)
P1.1
T2EX (Trigger lạp lại của Timer/Counter 2)
P3.0
RXD (Cổng đầu vào nối tiếp)
P3.1
TXD (Cổng đầu ra nối tiếp)
P3.2
(Ngắt ngoài)
P3.3
(Ngắt ngoài)
P3.4
T0 (Đầu vào bên ngoài của bộ Timer/Counter 0 )
P3.5
T1 (Đầu vào bên ngoài của bộ Timer/Counter 1 )
P3.6
(Xung chốt để viết bộ nhớ dữ liệu ngoài )
P3.7
(Xung chốt để đọc bộ nhớ dữ liệu ngoài )
Tất cả bộ chốt các cổng đều được đặt ở mức logic "1" khi Reset.
Timer/ Counter
MC 8051 có hai thanh ghi Timer/Counter 16 bit: Timer 0 và Timer 1. Các thanh ghi này đều có thể hoạt động ở chế độ Timer hoặc Couter.
Trong chế độ Timer nội dung của thanh ghi sẽ tăng sau mỗi chu kỳ máy và tần số của đồng hồ bằng 1/12 tần số máy phát thạch anh.
Trong chế độ Counter nội dung của thanh ghi sẽ tăng khi có sự chuyển từ 1đ 0 tại chân tín hiệu T0 hoặc T1. Trong chế độ này đầu vào sẽ được lấy mẫu tại S5P2 của chu kỳ máy vì vậy tần số đếm lớn nhất bằng 1/24 tần số máy phát thạch anh.
Chức năng Timer hoặc Counter được chọn bởi bit điều khiển trong thanh ghi
chức năng đặc biệt TMOD. Timer 0 và Timer 1 có chế độ hoạt động được lựa chọn bởi cặp bit (M0, M1 ).
TCON:Thanh ghi điều khiển Timer/Counter. Địa chỉ hoá theo bit
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
- TF1: Cờ báo Timer 1 tràn.
- TR1: Bit điều khiển làm việc của Timer 1..
- TF0: Cờ báo Timer 0 tràn.
- TR0: Bit điều khiển làm việc của Timer 0.
- IE1: Cờ cho phép chân có thể hoạt động.
- IT1: Bit điều khiển ngắt ở chân .
- IE0: Cờ cho phép chân có thể hoạt động.
- IT0: Bit điều khiển loại ngắt ở chân .
Thanh ghi điều khiển chế độTimer/Counter:TMOD
GATE
C/
M1
M0
GATE
C/
M1
M0
TIMER 1
TIMER 1
- GATE: Khi TRx được thiết lập và GATE = 1, thì TIMER/COUNTERx sẽ chỉ chạy trong khi chân INTx ở mức cao. Khi GATE = 0 thì TIMER/COUNTERx sẽ chỉ chạy trong khi TRx = 1.
- : Bit lựa chọn Timer hoặc Counter.
- M1: Bit lựa chọn chế độ.
- M2: Bit lựa chọn chế độ.
M1
M0
Chế độ hoạt động (Operating Mode)
0
0
0 Timer 13 bit
0
1
1 Timer/Counter 16 bit
1
0
2 Timer/Counter tự đông lạp 8 bit
1
1
3 (Timer 0) TL0 là bộ Timer/Counter 8 bit được điều khiển bởi các bit điều khiển Timer 0, TH0 là bộ Timer 8 bit và được điều khiển bởi những bit điều khiểu Timer 1.
1
1
3 (Timer 1) Timer/Counter 1 dừng.
- Mode 0: Cả 2 Timer trong Mode 0 là một bộ đếm 8 bit với đầu vào đã được chia cho 32. Đây là bộ timer 13 bit. ở chế độ này thanh ghi Timer được định dạng như là thanh ghi 13 bit. Tín hiệu Gate có thể là 1 bit trong thanh ghi TMOD hay là tín hiệu tại chân ngoài.
- Mode 1: Mode 1 giống Mode 0 ngoại trừ là thanh ghi Timer hoạt động với địa chỉ 16 bit.
- Mode 2: Định dạng thanh ghi Timer như là một bộ đếm 8 bit (TL1 ) với chức năng tự động lạp lại giá trị. Khi TL1 đếm tràn nó sẽ đặt cờ TF1 và lạp lại nội dung TH1 đã được đặt trước bằng phần mềm.
- Mode 3: Timer 1 là một bộ đếm, nó sẽ hoạt động khi TR1 được đặt bằng 1. Timer 0 thiết lập TL0 và TH0 như 2 bộ đếm độc lập.
Giao diện cổng nối tiếp
Cổng nối tiếp hoạt động ở chế độ Full duplex, có nghĩa là nó có thể truyền và nhận tại cùng một thời điểm. Thanh ghi truyền và nhận của cổng thông tin nối tiếp, cả hai truy nhập tại thanh ghi chức năng đặc biệt SBUF. Khi ta viết tới SBUF thì là thanh ghi truyền và khi đọc SBUF ta sẽ truy nhập tới thanh ghi nhận độc lập. Cổng thông tin nối tiếp có thể hoạt động ở 4 chế độ:
- Mode 0: Số liệu nối tiếp vào và ra thông qua chân RXD, TXD. Truyền và nhận 8 bit. 8 bit dữ liệu (đầu tiên là trọng số nhỏ nhất LSB ). Tốc độ truyền cố định bằng 1/12 tần số máy phát.
- Mode 1: 10 bit được truyền thông qua chân TXD. Nhận thông qua chân RXD: 1 bit Start (0 ), 8 bit dữ liệu (LSB ) đầu tiên), 1 bit Stop (1 ). Khi nhận bit Stop sẽ được đặt vào RB8 trong thanh ghi SCON. Tốc độ truyền có thể thay đổi.
- Mode 2: 11 bit được truyền thông qua chân chân TXD hoặc được nhận thông qua chân RXD. 1 bit Start (0 ), 8 bit dữ liệu (bit đầu tiên là LSB ), 1 bit dữ liệu thứ 9 có thể được đặt, 1 bit Stop (1 ). Khi phát bit thứ 9 sẽ được đặt tại TB8 thanh SCON. Khi nhận bit thứ 9 sẽ được đặt vào RB8 trong thanh ghi SCON. Tốc độ độ truyền có thể đặt bằng 1/32 hoặc bằng 1/64 tần số máy phát.
- Mode 3: 11 bit được truyền thông qua chân TXD hoặc nhận thông qua RXD. 1 bit Start (0 ), 8 bit dữ liệu, bit dữ liệu thứ 9 có thể được đặt, 1 bit Stop (1 ). Mode 3 tương tự Mode 2 nhưng tốc độ truyền có thể thay đổi.
Trong tất cả 4 Mode trên, chế độ truyền được khởi đầu bằng câu lệnh, trong đó thanh ghi SBUF được sử dụng giống như thanh ghi đích, chế độ nhận được khởi đầu trong Mode 0 bởi điều kiện RI = 0 và REN = 1. Nhận được khởi đầu trong các chế độ khác bởi đặt bit Start nếu REN = 1.
SCON: Thanh ghi điều khiển cổng nối tiếp. Địa chỉ hoá theo bit.
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
- SM0: Xác định chế độ cổng nối tiếp.
- SM1: Xác định chế độ cổng nối tiếp.
- SM2: Trong chế độ 2 hoặc 3, nếu SM2 được lập bằng 1 thì sau đó RI sẽ không được hoạt động nếu bit dữ liệu thứ 9 được nhận bằng 0. Trong chế độ 1, nếu SM2 = 1 thì RI sẽ không được hoạt động nếu bit Stop không được nhận bằng 1. Trong Mode 0, SM2 = 0.
- REN: Được thiết lập hoặc xoá bằng phần mềm để cho phép chế độ nhận hoạt động hoặc không hoạt động.
- TB8: Bit dữ liệu thứ 9 sẽ được truyền trong Mode 2, 3. Được thiết lập hoặc xoá bằng phần mềm.
- RB8: Trong Mode 2 và 3 là bit dữ liệu thứ 9. Trong Mode 1, nếu SM2 = 0 RB8 là bit Stop, trong Mode 0 thì RB8 không được sử dụng.
- TI: Cờ cho phép ngắt truyền, được thiết lập bằng phần cứng tại cuối bit thứ 8 trong Mode 0, hoặc tại thời điểm bắt đầu của bit Stop trong các chế độ khác. Phải được xoá bằng phần mềm.
- RI: Cờ cho phép ngắt nhận. Được thiết lập bằng phần cứng tại thời điểm cuối của bit thứ 8 trong Mode 0, hoặc tại thời điểm bắt đầu bit Stop trong các chế độ khác. Phải được xoá bằng phần mềm.
SM0
SM1
Mode
Descreption
Baurate
0
0
0
Thanh ghi dịch
Fosc/12
0
1
1
8 bit UART
Thay đổi
1
0
2
9 bit UART
Fosc/64 hoặc Fosc/32
1
1
3
9 bit UART
Thay đổi
Thiết lập cổng nối tiếp:
MODE
SCON
Sự thay đổi của SM2
0
10H
Môi trường xử lý đơn chức năng
(SM2 = 0)
1
50H
2
90H
3
D0H
0
NA
Môi trường xử lý đa chức năng
(SM2 = 1)
1
70H
2
B0H
3
F0H
Phát tốc độ:
*. Cổng nối tiếp trong Mode 0:
Chế độ 0 có tốc độ cố định bằng 1/12 máy phát tần số. Trong chế độ này chỉ cần định nghĩa thanh ghi SCON:
Baud rate =
*. Cổng nối tiếp trong Mode 1:
Tốc độ trong chế độ này thay đổi. Nó được phát bởi Timer 1.
Baud Rate =
- Nếu SMOD = 0 thì K = 1.
- Nếu SMOD = 1 thì K = 2.
Với
TH1 =
Chú ý: TH1 phải có giá trị nguyên.
*. Cổng nối tiếp trong Mode 2:
Tốc độ trong chế độ này cố định là1/32 hoặc 1/64 tốc độ của tần số phát phụ thuộc vào bit SMOD trong thanh PCON.
- SMOD = 1, Baud Rate = 1/32*Fosc.
- SMOD = 0, Buad Rate = 1/64*Fosc.
Để thiết lập bit SMOD thực hiện câu lệnh:
ORL PCON, #80H.
Địa chỉ của thanh ghi PCON là 87H.
*. Cổng nối tiếp trong Mode 3:
Tốc độ trong chế độ 3 thay đổi và thiết lập giống trong chế độ 1.
Ngắt
8051 cung cấp 5 nguồn ngắt 2 ngắt ngoài, 2 ngắt của bộ Timer và 1 ngắt của cổng nối tiếp.
Hệ thống điều khiển ngắt
Ngắt ngoài và
Có thể hoạt động theo mức hay theo sườn phụ thuộc vào bit IT0 và IT1 trong thanh ghi TCON.
Ngắt của bộ Timer 0 và Timer 1 được phát bởi TF0 và TF1, chúng được thiết lập trong thanh ghi Timer/Counter (ngoại trừ Timer 0 trong chế độ 3 ). Khi ngắt Timer hoạt động, thì cờ phát ra nó được xoá bởi phần cứng ở trên chip khi thứ tự phục vụ được trỏ tới.
Ngắt của cổng nối tiếp được tạo ra bởi phép lôgic OR giữa chân RI và TI. Nó sẽ được xoá bởi phần cứng khi thứ tự phục vụ được trỏ tới. Trong thực tế thứ tự phục vụ sẽ không phải xác định đó là RI hoặc TI phát ra lệnh ngắt và bit này sẽ phải xoá bằng phần mềm.
Trình tự thực hiện bất kỳ một lệnh ngắt nào cũng đều được thực hiện theo 3 bước sau:
- Thiết lập bit EA = 1 trong thanh ghi IE.
- Thiết lập bit tương ứng trong thanh ghi IE bằng 1.
- Bắt đầu thực hiện tại địa chỉ của vector tương ứng theo bảng sau:
Nguồn ngắt
Địa chỉ của vector ngắt
IE0
0003H
TF0
000BH
IE1
0013H
TF1
001BH
RI va TI
0023H
TF2 và EXF2
002BH
Mỗi một nguồn ngắt có thể hoạt động hoặc không hoạt động một cách riêng biệt bởi sự thiết lập hoặc xoá bit trong thanh ghi chức năng đặc biệt IE:
EA
----
ET2
ES
ET1
EX1
ET0
EX0
- EA: Nếu EA = 0 ngắt sẽ không được thực hiện. Nếu EA = 1 thì mỗi nguồn ngắt có thể hoạt động hoặc không hoạt động tùy thuộc vào việc thiết lập hoặc xoá bit cho phép của nó.
- ET2: dành cho người sử dụng.
- ES: Cho phép ngắt của cổng nối tiếp hoạt động hoặc không hoạt động.
- ET1: Cho phép ngắt tràn của bộ Timer 1 tích cực hoặc không tích cực.
- EX1: Cho phép chân tích cực hoặc không tích cực.
- ET0: Cho phép ngắt tràn của bộ Timer 0 tích cực hoặc không tích cực.
EX0: Cho phép chân tích cực hoặc không tích cực.
Cấu trúc mức ưu tiên:
Mỗi nguồn ngắt cũng có thể được lập trình một cách độc lập một trong hai mức ưu tiên tuỳ thuộc vào việc thiết lập hoặc xoá bit trong thanh ghi chức năng đặc biệt IP:
-----
-----
PT2
PS
PT1
PX1
PT0
PX0
- -----: Dành cho người sử dụng.
- PT2: Định nghĩa mức ưu tiên ngắt cho bộ Timer 2.
- PS: Định nghĩa mức ưu tiên ngắt cho cổng nối tiếp.
- PT1: Định nghĩa mức ưu tiên ngắt cho bộ Timer 1.
- PX1: Định nghĩa mức ưu tiên ngắt cho chân .
- PT0: Định nghĩa mức ưu tiên ngắt cho bộ Timer 1.
- PX0: Định nghĩa mức ưu tiên ngắt cho chân .
Nếu có hai yêu cầu của hai mức ưu tiên khác nhau được nhận cùng một thời điểm, thì yêu cầu nào có mức ưu tiên cao hơn sẽ được thực hiện. Nếu yêu cầu có cùng mức ưu tiên thì nó sẽ được thực hiện theo trình tự sau:
Thứ tự
Nguồn
Mức ưu tiên
1.
IE0
Cao nhất
2.
TF0
3.
IE1
4.
TF1
5.
RI+TI
6.
TF2+EXF2
Thấp nhất
Trên đây là một số chức năng đặc biệt của vi xử lý họ 8051 cần quan tâm và nắm được trong quá trình thiết kế.
Giới thiệu qua về AT89C52:
AT89c52 là một hệ vi tính 16 bit đơn chip CMOS co hiệu xuất cao công xuất nguồn tiêu thụ thấp và có 4k bộ nhớ ROM flash xoá được/ lập trình được. Chip này được sả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ủa Atmel. AT89c52 có các đặc trưng chuẩn sau: 8k flash, 256byte RAM, 32 đường xuất nhập, 3 bộ định thời/ đếm 16 bit, một cấu trúcngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, 1 port nối tiếp song công, mạch dao động và mạch tạo xung clock trên chip. Ngoài ra AT89c52 được thiết kế với logic tĩnh cho hoạt động có tần số giảm xuống và hỗ trợ 2 chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời / đếm hoạt động, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao đông cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo.
4. Khối giải mã
Xuất phát từ ý tưởng khi hệ thống điều khiển đèn giao thông hoạt động, trên các cột đèn ngoài các đèn đường còn có các đồng hồ đếm ngược thời gian hoạt động của đèn. Vì các đèn hoạt động với những khoảng thời gian khác nhau (Đỏ 30s, Xanh 26s, vàng 4s), đèn của các trục hoạt động không giống nhau, do vậy ta phải lập trình để sao cho đồng hồ có thể đếm ngược . Trong mỗi chu kỳ hoạt động của hệ thống điều khiển, các bộ đếm lại có những giá trị ban đầu khác nhau tương ứng với thời gian đếm của các đèn. Để giải quyết vấn đề này ta phải dùng tính năng của Vi điều khiển để nạp giá trị ban đầu cho bộ đếm của mỗi trục.
Thực hiện khối giả mã:
Khối giải mã là bộ chuyển đổi từ BCD( dùng IC giải mã 74LS47) à LED 7 thanh
Bộ giải mã:
Để hiển thị đèn đếm để thông báo thời gian hoạt động của đèn. Vì đầu ra là mã BCD nên để hiển thị dưới dạng số thập phân ta phải giải mã BCD thành số thập phân. Để thực hiện ta dùng IC74LS47 và đèn LED 7 thanh. Sơ đồ chân của IC 74LS47 như hình bên. A0, A1, A2, A3 là các đầu vào BCD. Trong đó các chân 1,2,6,7 là các đầu vào mã BCD, các chân 9,10,11,12,13,14,15 là các chân ra LED 7 thanh( mức tích cực thấp)
Sơ đồ cấu tạo trong của 74LS47
Bảng chân lý của 7447:
5. Khối hiển thị
Đây là khối thể hiện kết quả của hệ thống điều khiển. Các chế độ của hệ thống được hiển thị tại khối hiển thị.
Khối hiển thị gồm 2 phần:
Đèn đường
Đồng hồ
a. Đèn đường: Có 2 loại
- Đèn cho các phương tiện tham gia giao thông: Đỏ, Xanh, Vàng
- Đèn cho người đi bộ: Đỏ, Xanh
Các cột đèn hiển thị theo: Xanh à Vàng à Đỏ à Xanh ….
Đèn đỏ hiển thị trong 30 giây và đếm hiển thị từ 29 à 0.
Đèn xanh hiển thị trong 27 giây và đếm hiển thị từ 26 à 0.
Đèn vàng hiển thị trong 03 giây
Đèn cho người đi bộ: Hoạt động dựa trên hoạt động của các cột đèn. Chỉ có hai trạng thái là Đỏ và Xanh, khi đường giao thông ở chế độ đỏ thì đèn cho người đi bộ bật xanh, còn khi đèn đường là xanh và vàng thì đèn cho người đi bộ bật đỏ. Thời gian hiển thị đèn đỏ cho người đi bộ bằng thời gian hiển thị đèn vàng và đèn xanh của các phương tiện giao thông.
b. Đồng hồ: Đồng hồ đếm theo đèn của các phương tiện giao thông. Với đèn đỏ 30s (29à0), đèn xanh 27s (26à0), đèn vàng 3s
Bảng hiển thị:
Định thời
Thời gian hiển thị trục 1
Đèn trục 1
X V Đ
Đèn trục 2
X V Đ
Thời gian hiển thị trục 2
00
27
1 0 0
0 0 1
29
27
3
0 1 0
0 0 1
Tiếp tục đếm
30
29
0 0 1
1 0 0
26
57
Tiếp tục đếm
0 0 1
0 1 0
3
Trong đề tài này để biểu diễn đèn đường và đồng hồ, sử dụng LED đơn và LED 7 thanh với sơ đồ chân như sau:
Để thực hiện việc điều khiển trên của Vi điều khiển, ta phải thực hiện lập trình cho Vi điều khiển. Từ các công việc của vi điều khiển ta xây dựng lưu đồ thuật toán sau đây:
DH2=3
Vàng 1 & đỏ 2 sáng
Đếm được 3s
DH1=29, DH2=26
Đỏ 1 & xanh 2 sáng
Đếm được 26s
Đỏ 1 & vàng 2 sáng
Đếm được 3s
Chế độ2
DH1=26, DH2=29
Xanh 1 & đỏ 2 sáng
Đếm được 26s
DH1=3
ĐK=0
Chế độ1
Vàng 1 và vàng 2 sáng
đếm 1s
Vàng 1 & vàng2 tắt
Đếm 1s
Lưu đồ thuật toán lập trình
Đ
S
S
Đ
S
Xanh 1 & đỏ 2 sáng
DH1=25, DH2=29
Chế độ2
Đếm được 5s
Vàng 1 & đỏ 2 sáng
Bam=0
Xanh 1 & đỏ 2 sáng
chế độ1
ĐK=0
Đ
Đ
SĐ
ĐS
S
S
S
S
S
Đ
Đ
Đ
Đ
Đ
SĐ
ĐS
S
S
S
Đ
Đ
Đ
Đ
V. Phần code(ASSEMBLY CODE): Mã nạp cho vi điều khiển:
ORG 0000H ; Dia chi goc
; DINH NGHIA KI HIEU CHAN
; DO1: P1.0
; VANG1: P1.1
; XANH1: P1.2
; XANH DI BO 1: P1.3
; DO DI BO 1: P1.2
; DO2: P1.4
; VANG2: P1.5
; XANH2: P1.6
; XANH DI BO 2: P1.7
; DO DI BO 2: P1.6
; CHAN DK CHEDO: P3.0
; *************************************************************
; Chuong trinh chinh
; *************************************************************
DK BIT P3.0 ; Dinh nghia BIT chan P3.0
LOOP: ; BAT DAU VONG LAP
MOV C, DK ; NAP DK VAO C
JNC CHEDO2 ; DK= 0, THUC HIEN CHEDO2
sJMP CHEDO1 ; DK= 1, THUC HIEN CHEDO1
CHEDO1: ; BAT DAU THUC HIEN CHEDO1
MOV P0,#00H
MOV P2,#00H
CLR P1.0 ; TAT DEN D01
CLR P1.2 ; TAT DEN XANH 1
CLR P1.3 ; TAT DEN DI BO1
CLR P1.4 ; TAT DEN DO2
CLR P1.6 ; TAT DEN XANH2
CLR P1.7 ; TAT DEN XANH DI BO2
SETB P1.1 ; DEN VANG1 BAT
SETB P1.5 ; DEN VANG COT 2 BAT
aCALL TRE500MS; TRE 0.5s
CLR P1.1 ; DEN VANG1 TAT
CLR P1.5 ; DEN VANG2 TAT
aCALL TRE500MS;TRE 0.5s
sjmp loop
RET ; KET THUC CHUONG TRINH CON CHEDO1
CHEDO2: ; BAT DAU CHUONG TRINH CON CHEDO2(
; CHE DO DIEU KHIEN TU DONG
;:CHU KI 1 DONG HO TRUC 1 LA 26,
; DONG HO TRUC LA 29, KHI TRUC 1 DEM VE 0 THI DUNG LAI,
; TRUC 2 DEM HET VE 0.KHI CA 2 TRUC DEU DEM VE 0 THI BAT
; DAU CHU KI TIEP THEO
MOV P1, #01001001B; RA DEN GIAO THONG
MOV R2,#29 ; NAP GIA TRI 29 VAO R2
MOV R3,#26 ; NAP GIA TRI 26 VAO R3
MOV R4,#26 ; NAP GIA TRI 26 VAO R4
HERE1:
aCALL RAPORT2 ; RA LED DEM CUA COT 1
aCALL RAPORT0 ; RA LED DEM CUA COT2
aCALL TRE500MS; TRE 500MS
aCALL TRE500MS; TRE 500MS
DJNZ R4,HERE1;
MOV P1,#00101001B;
MOV R2,#3; NAP GIA TRI 3 VAO R2
MOV R4,#3; NAP GIA TRI 3 VAO R4
MOV P0,#00H;
HERE2:
ACALL RAPORT2 ; RA LED DEM CUA COT1
ACALL TRE500MS; TRE 500MS
ACALL TRE500MS; TRE 500MS
DJNZ R4, HERE2
MOV P1,#10010100B
MOV R2,#26; NAP 26 VAO R2
MOV R3,#29; NAP 29 VAO R3
MOV R4,#26; NAP 26 VAO R4
HERE3:
ACALL RAPORT2 ; RA LED DEM CUA COT 1
ACALL RAPORT0 ; RA LED DEM CUA COT 2
ACALL TRE500MS; TRE 500MS
ACALL TRE500MS; TRE 500MS
DJNZ R4,HERE3
MOV P1,#10010010B
MOV R3,#3; NAP 3 VAO R3
MOV R4,#3; NAP 3 VAO R4
MOV P2,#00H
HERE4:
ACALL RAPORT0 ; RA PORT0
ACALL TRE500MS; TRE 500MS
ACALL TRE500MS; TRE 500MS
DJNZ R4,HERE4
sjmp loop
RET
TRE500MS: ; BAT DAU CHUONG TRINH CON TRE 500MS
PUSH 00H
PUSH 01H
MOV R1,#250
D1:
MOV R0,#250
DJNZ R0,$
MOV R0,#250
DJNZ R0,$
DJNZ R1,D1
MOV R1,#250
D2:
MOV R0,#250
DJNZ R0,$
MOV R0,#250
DJNZ R0,$
DJNZ R1,D2
POP 01H
POP 00H
RET ; KET THUC CHUONG TRINH CON TRE 500MS
RAPORT2: ; DUA TIN HIEU RA PORT2
MOV B,#10
MOV A,R2
DIV AB
SWAP A
ADD A,B
MOV P2,A
DEC R2
RET ; KET THUC CHUONG TRINH CON RAPORT2
RAPORT0: ; DUA TIN HIEU RA PORT0
MOV B,#10
MOV A,R3
DIV AB
SWAP A
ADD A,B
MOV P0,A
DEC R3
RET ; KET THUC CHUONG TRINH CON RAPORT0
END ; KET THUC CHUONG TRINH
; **********************************************************
; THE END
; **********************************************************
VI. Phương án kiểm tra
-Sơ đồ chạy mô phỏng mạch sử dụng phần mềm Proteus 6.7 Sp3:
sơ đồ mạch chạy mô phỏng
VII. Sơ đồ mạch in
Sơ đồ mạch in
VIII. Nguyên lý hoạt động của mạch
Khi khởi động cho hệ thống, các khối được bật nguồn và để hệ thống làm việc ở chế độ tự động( DK=1). Vi điều khiển chỉ thị trục 1 đèn xanh sáng,đèn đỏ cho người đi bộ sáng đồng thời đồng hồ trục 1 hiển thị đếm từ 26 và trục 2 đèn đỏ sáng, đèn xanh cho người đi bộ sáng, đồng hồ trục 2 hiển thị đếm từ 29. Sau 26s đồng hồ trục 1 đếm đến 0, đồng hồ trục 2 đếm đến 3 thì VĐK chỉ thị trục 1 đèn vàng sáng đồng hồ dừng đếm, đèn cho người đi bộ vẫn đỏ, trục 2 đèn cho người đi bộ chuyển sang đỏ. Khi cả 2 đồng hồ đếm về 0 thì trục 1 đèn đỏ bắt đầu sáng,đèn cho người đi bộ chuyển sang mầu xanh, đồng hồ lại bắt đầu đếm ngược từ 29, trục 2 đèn xanh bật, đèn cho người đi bộ đỏ, đồng thời đồng hồ hiển thị 2._.
Các file đính kèm theo tài liệu này:
- DAN038.doc