Hầu hết các hệ thống đèn đư¬ờng giao thông của Việt Nam là sử dụng nguyên tắc thời gian đóng cắt trong khoảng thời gian nhất định, sử dụng hệ thống này đã không ít gây sự khó chịu cho các phương tiện tham gia giao thông, khi mà lượng xe trên một tuyến rất đông thì đèn xanh cũng chỉ có 30s và nếu ít xe thì cũng 30s. Hệ thống giao thông nói chung của ta chư¬a có sự giám sát và điều khiển tự động bằng hệ thống Camera để phân khoảng thời gian đèn xanh, đèn đỏ hợp lý
Trang 1Lời nói đầu
Hiện nay hệ thống giao thông Việt Nam còn rất phức tạp, có nhiều nhức nhối, bức xúc đã và đang xảy ra các vụ tai nạn chết người, gây thương vong đến thể xác vật chất và tinh thần, không những ảnh hưởng về kinh tế mà còn ảnh hưởng đến cả người thân, gia đình họ hàng Ở đây có rất nhiều nguyên nhân chủ quan lẫn khách quan gây ra tai nạn giao thông Nguyên nhân chủ yếu là ý thức của những người tham gia giao thông còn chưa cao, do không hiểu biết về luật giao thông hay hiểu rõ mà không thực hiện đúng Bên cạnh
đó, do nền kinh tế nước ta đang phát triển, cơ sở vật chất hạn chế kéo theo
hệ thống đường giao thông lạc hậu chưa đáp ứng đư ợc nhu cầu của cuộc sống Việc xây dựng, sửa chữa chưa có quy hoạch, nhiều tỉnh thành phố trong cả nước chưa có đèn giao thông Vì vậy, hệ thống đèn giao thông rất quan trọng trong việc chỉ dẫn, điều khiển các phương tiện đi lại, tránh xảy ra trường hợp tắc nghẽn giao thông, gây ra tai nạn Từ yêu cầu thực tế như vậy,
ở đề tài này chúng em đã đưa ra một số phương pháp điều khiển đèn đường giao thông thông thường, hiện đại ở đất nước ta và thế giới đang sử dụng, nghiên cứu
“ Ứng dụng vi điều khiển AT89C52 trong điều khiển đèn đường giao thông ”.
Em xin chân thành cảm ơn!
Trang 2CHƯƠNG I: VÀI NÉT CHUNG VỀ HỆ THỐNG ĐÈN ĐƯỜNG
GIAO THÔNG VIỆT NAM.
1 1.TỔNG QUAN CHUNG
Hầu hết các hệ thống đèn đường giao thông của Việt Nam là sử dụng nguyên tắc thời gian đóng cắt trong khoảng thời gian nhất định, sử dụng hệ thống này đã không ít gây sự khó chịu cho các phương tiện tham gia giao thông, khi mà lượng xe trên một tuyến rất đông thì đèn xanh cũng chỉ có 30s
và nếu ít xe thì cũng 30s Hệ thống giao thông nói chung của ta chưa có sự giám sát và điều khiển tự động bằng hệ thống Camera để phân khoảng thời gian đèn xanh, đèn đỏ hợp lý
Hiện nay ở nước ta cũng có một số nút giao thông được đánh giá là mới
và hiện đại nhất ở Việt Nam Trong đó phải kể đến nút giao thông ở ngã tư Daewoo đường Nguyễn Chí Thanh Hà Nội Nút giao thông này được phân luồng rất hợp lý cho nên đã không xảy ra ách tắc giao thông cũng như tai nạn tại nút này Đây là nút giao thông lớn cần phân luồng hợp lý chính xác cho các phương tiện tham gia giao thông, đồng thời kết hợp cả hệ thống điều khiển giám sát bằng hệ thống Camera Cho nên nút giao thông tuy lớn lượng phương tiện tham gia nhiều vẫn không xảy ra ách tắc
Ở đề tài này chúng em cũng đưa ra một số phương pháp điều khiển dùng
vi điều khiển AT89C52 để điều khiển nút giao thông này
Ở nút này các luồng xe được phân thứ tự Ví dụ: như tuyến 1 khi có tín hiệu đèn xanh thì chỉ cho phép đi thẳng và rẽ phải chứ không được rẽ trái và tất nhiên khi đó người đi bộ ở tuyến 2 được phép đi, đèn đỏ tuyến 2 đang sáng, khi hết tín hiệu đèn xanh thì chuyển sang tín hiệu đèn được rẽ trái tuyến 1 còn các tuyến khác như đi thẳng tuyến 1 đi thẳng tuyến hai đèn đỏ
ở đây có sự phân luồng rõ rệt không có sự đan chéo của các tuyến lên không gây ra tai nạn giao thông
Tương tự như vậy với tuyến 2
Với nút giao thông có đường tàu đi qua ngã tư thì nguyên tắc hoạt động cũng tương tự như nút giao thông trên với những lúc không có tàu đi qua Chỉkhác khi có tàu đi qua thì chương trình điều khiển sẽ được chuyển sang chương trình điều khiển 2 Giả sử nút giao thông này đang hoạt động bình thường thì không có gì phải bàn, sau một khoang thời gian nào đó có đoàn tàu chuẩn bị qua thì Sensor đo độ rung sẽ báo là có đoàn tàu chuẩn bị qua, khi đó chương trình điều khiển đèn sẽ chuyển sang chương trình 2, nghĩa là tuyến đường song song với đoàn tàu vẫn tiếp tục đi thẳng đèn xanh, còn tuyến vuông góc với đoàn tàu thì đèn đỏ Khi nào đoàn tàu qua thì chương trình 2 chuyển về chương trình 1 và hoạt động bình thường
1.2 MỘT SỐ GIẢI PHÁP TỰ ĐỘNG HOÁ ĐO LƯỜNG CÁC THÔNG TIN GIAO THÔNG.
Trang 3Trong bất kỳ hệ thống điều khiển nào điều quan trọng đầu tiên là làm sao
đo được các đại lượng cần thiết Trong điều hành và điều khiển các hệ thống giao thông vận tải cũng vậy Ở đây các thông tin chủ yếu cần thu thập là lưu lượng, tốc độ dòng xe ( Dạng thông tin thứ nhất ) và vị trí, tốc độ của phương tiện cụ thể ( Dạng thông tin thứ hai ) Dạng thông tin thứ nhất có tầm quan trọng đặc biệt cho các công tác quản lý, điều hành, tổ chức giao thông như phân luồng, phân tuyến, điều khiển đèn tín hiệu …Dạng thông tin thứ hai là không thể thiếu được trong bài toán quản lý điều hành phương tiện vận tải như taxi ,
xe buyt, … Do tầm quan trọng của chúng mà trên thế giới từ lâu vấn đề đo các đại lượng cần thiết trên đã được quan tâm nghiên cứu giải quyết
Để đo lưu lượng , tốc độ dòng xe trên đường có nhiều hướng giải quyết như sử dụng ra đa, sóng vi ba cực ngắn , thiết bị ống cảm ứng, cảm ứng vòng dây,… trong đó hiện đại nhất là công nghệ sử lý ảnh camera Tuy nhiên, tất cả các phương án sẵn có trên đều không có tính khả thi ở việt nam do thực tế không phân làn đường ( trừ một số điểm đặc biệt như trạm thu phí …) và dòng
xe đa phương tiện của chúng ta Vì vậy trong nước có thể coi như chưa có thiết
bị giám sát dòng xe trên đường, các camera giám sát lắp đặt tại một số nút giao thông mới chỉ đơn thuần cung cấp cho người điều hành bức tranh về trạng thái giao thông mà chưa thể cho biết thông tin về lưu lượng, tốc độ dòng xe Hậu quả là chưa thể đưa ra các biện pháp điều khiển đèn giao thông, kịp thời, chẳng hạn như việc đặt chu kỳ đèn tín hiệu là hoàn toàn cưỡng bức, không phù hợp với trạng thái thực của hệ thống giao thông
Về giám sát hành trình xe về vị trí tốc độ, hiện nay trong nước mới áp dụng hai hình thức: dựa trên thông báo của lái xe trên bộ đàm như các hãng taxi hoặc thông qua dạng hộp đen trên xe buýt như tổng công ty vận tải hà nội
Ở phương án thứ nhất không đảm bảo tính khách quan chính xác của thông tin còn ở phương án thứ hai thông tin chưa được cập nhật trực tuyến về trung tâm
và giá thành cơ sở còn cao
Một phương án mới tự động đo và truyền những thông tin giao thông nói trên vừa mang tính hiện đại vừa có tính khả thi cao, đó là đánh giá dòng giao thông bằng camera và giám sát hành trình xe dựa trên công nghệ định vị toàn
cầu GPS (Gobal Positiau System )
Thiết bị giám sát dòng xe trên đường bằng CAMERA.
Giải pháp hợp lý đề ra ở đây là khai thác công nghệ sử lý ảnh camera để chế tạo thiết bị giám sát xe Về mặt cấu trúc thiết bị gồm : camera công nghiệp
để thu hình và một máy tính nhúng tốc độ cao làm nhiệm vụ xử lý ảnh, truyền các thông tin kết quả ( Lưu lượng từng loại xe, vận tốc dòng xe… ) về trung tầm qua hệ thống cáp quang Thiết bị được đặt trên đường, ở độ cao 10 – 15 m, vuông góc với mặt đường
Hạt nhân của hệ thống là phần mềm xử lý ảnh Nguyên tắc cơ bản sử nhận dạng thông qua việc phát hiện 1 khuôn hình chuyển động Phần mềm này cho phép đếm và phân loại các xe ( Xe buyt, xe con, ôtô con, xe máy ), tính toán
Trang 4vận tốc trung bình của dòng dù các xe chạy không theo làn cố định Ngoài ưu điểm chính này, so với các phương thức đếm xe phổ biến khác như cảm ứng vòng từ, phương án sử dụng camera còn có một số ưu điểm khác như rẻ, ít bị
hư hỏng, dễ lắp đặt và bảo dưỡng…
Thiết bị giám sát hành trình xe trên cơ sở công nghệ GPS ( Gobal Positiau System )
Đây là thiết bị đặt trên xe nhằm mục đích thu thập các thông tin về vị trí
và tốc độ sử dụng hệ thống định vị toàn cầu GPS Những thông tin này cho phép người quản lý giám sát được chính xác hành trình xe để có thể đưa các biện pháp quản lý, điều hành hợp lý Thiết bị bao gồm các phần chính là ăng ten GPS ( Có thể đặt trong xe hoặc trên nóc xe ), các mạch điện tử và phần mềm thu thập, xử lý truyền thông tin Nguồn điện cho thiết bị đặt trên xe được lấy từ nguồn điện sẵn có trên xe thông qua phích cắm
Tuỳ theo phương thức truyền thông tin thiết bị được chế tạo dưới hai dạng: offine ( không trực tuyến ) và online ( trực tuyến )
Thiết bị giám sát hành trình offline ( kiểu hộp đen )
Thiết bị thu thập các thông tin nói trên với chu kỳ lấy mẫu mặc định là 10s ( hoặc có thể lựa chọn từ 1 đến 300s ) và lưu trữ được 6144 lần ( hoặc có thể mở rộng đến 12288 lần ) Sau khi kết thúc hành trình các thông tin này được đổ ra máy tính qua cổng nối tiếp theo chuẩn RS232 hoặc thiết bị truyền
vô tuyến ( trong phạm vi 50 - 60 m ) nhờ phần mềm đi kèm Nhờ đó người sử dụng có thể dễ dàng ra lệnh đọc dữ liệu, phân tích các trạng thái hoạt động của
xe trong suốt hành trình, ghi lại những trạng thái vượt quá mức độ cho phép Ngoài ra phần mềm này còn có một số chức năng khác tạo sự thân thiện với người sử dụng như cho phép đặt lại các định dạng thời gian lưu xoá các thông tin không cần thiết ,…
Thiết bị giám sát hành trình online ( trực tuyến )
Thiết bị cho phép truyền các thông tin về vị trí và tốc độ xe trực tiếp về trung tâm điều hành thông qua mạng điện thoại di động, thiết bị có hai phần : trên xe
và trung tâm Thông tin được truyền dưới dạng tin nhắn SMS, CSD, hoặc chuyển mạch gói GPRS
CSD ( Curcuit Switch Data ) cho phép một moden điện thoại di động kết nối với moden khác theo kênh được quy định ở mạng di động, sau khi kết nối
có thể trao đổi dữ liệu theo phương pháp điểm - điểm, GPRS là một chuẩn truyền dữ iệu thông qua mạng di động theo một phương pháp khác với CSD Bản chất của phương pháp sử dụng chuẩn GPRS là thực hiện một kết nối vào internet và dữ liệu truyền đi từ thuê bao di động là gói dữ liệu dạng UPD/TCP/IP Tốc độ truyền dữ liệu tối đa là 171,2 kpbs, tức là nhanh gấp 10 lần so với phương pháp CSD
Chế độ truyền là liên tục với chu kỳ đặt trước hoặc theo chỉ thị từ trung tâm Tại trung tâm người quản lý có thể giám sát hành trình xe trực tiếp trên bản đồ số
Trang 5Cỏc thiết bị giỏm sỏt hành trỡnh đó được nắp thử nghiệm trờn xe buyt của Tổng cụng ty vận tải Hà Nội và được đỏnh giỏ là tốt, đạt yờu cầu đề ra Toàn bộ
dữ liệu cú thể hiển thị trờn bản đồ số GIS tiện cho việc quản lý giỏm sỏt Thiết lập kờnh thụng tin trực tuyến giữa trung tõm và từng xe trờn tuyến cho phộp kiểm tra trực tiếp tốc độ, vị trớ tại của xe Nhờ kờnh thụng tin này cú thể thụng bỏo hai chiều giữa lỏi xe và trung tõm trong những trường hợp cần thiết như thụng bỏo hỏng húc của xe, tắc đường trờn tuyến
Kết Luận :
Trờn đõy trỡnh bầy một số giải phỏp đo lường cỏc thụng tin cần thiết về hệ thống giao thụng vận tải Những giải phỏp này cú ưu điểm chớnh là đỏp ứng được yờu cầu đo cỏc thụng tin cần thiết về trạng thỏi giao thụng cú tớnh đặc thự trong nước phục vụ bài toỏn quản lý , điều hành và điều khiển giao thụng
Chương II : Họ vi điều khiển 2.1 Vi điều khiển 89C52
2.1.1 VI ẹIEÀU KHIEÅN HOẽ MCS-51
MCS-51TM laứ hoù vi ủieàu khieồn do
haừng INTEL saỷn xuaỏt vaứo ủaàu nhửừng naờm
80 vaứ ngaứy nay ủaừ trụỷ thaứnh moọt chuaồn
trong coõng nghieọp Baột ủaàu từ IC tieõu bieồu
laứ 8051 ủaừ cho thaỏy khaỷ naờng thớch hụùp
vụựi nhửừng ửựng duùng mang tớnh ủieàu khieồn
Vieọc xửỷ lớ treõn byte vaứ caực pheựp toaựn soỏ hoùc ụỷ caỏu truực dửừ lieọu nhoỷ ủửụùc thửùc hieọn baống nhieàu cheỏ ủoọ truy xuaỏt dửừ lieọu nhanh treõn RAM noọi Taọp leọnh cung caỏp moọt baỷn tieọn duùng cuỷa nhửừng leọnh soỏ hoùc 8 bit goàm caỷ leọnh nhaõn vaứ leọnh chia Noự cung caỏp nhửừng hoó trụù mụỷ roọng on-chip duứng cho nhửừng bieỏn 1 bit nhử laứ kieồu dửừ lieọu rieõng cho pheựp quaỷn lớ vaứ kieồm tra bit trửùc tieỏp trong ủieàu khieồn vaứ nhửừng heọ thoỏng logic ủoứi hoỷi xửỷ lý luaọn lý Sau ủaõy laứ baỷng so saựnh caực IC trong hoù MCS-51TM :
Trang 68951 4 KB Flash ROM 128 bytes 2
2.1.2 VI ĐIỀU KHIỂN AT89C52
Do họ MCS-51TM đã trở thành chuẩn công nghiệp nên có rất nhiều hãng sản xuất ra nó, điển hình là ATMEL Corporation Hãng này đã kết hợp rất nhiều tính năng dựa trên nền tảng kỹ thuật của mình để tạo ra các vi điều khiển tương thích với MCS-51TM nhưng mạnh mẽ hơn
AT89C52 là một vi điều khiển 8 bit do ATMEL sản xuất, chế tạo theo công nghệ CMOS, có chất lượng cao, công suất thấp với 8 KB Flash (flash programmable and erasable read only memory) Thiết bị này được chế tạo bằng cách sử dụng kỹ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL và tương thích với chuẩn công nghiệp MCS-51TM về tập lệnh và các chân ra Flash on-chip cho phép bộ nhớ lập trình được lập trình trong hệ thống bởi một lập trình viên bình thường Bằng cách nối 1 CPU 8 bit với một Flash trên một chip đơn, AT89C52 là một vi điều khiển mạnh (có công suất lớn), cung cấp một sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển
Các đặc điểm chủ yếu của AT89C52 :
· Tương thích hoàn toàn với họ MCS-51TMcủa Intel
· Bộ nhớ chương trình 8K Byte thuộc loại Flash Memory
· Độ bền : 1000 lần ghi/xóa
· Tần số hoạt động : 0 Hz đến 24 MHz
· 3 chế độ khóa bộ nhớ
· 256 x 8-Bit RAM nội
· 32 đường I/O lập trình được (4 port)
· 3 timer/counter 16-bit
· 8 nguồn ngắt
· Chế độ hạ nguồn và chế độ lười tiêu tốn công suất thấp
2.1.2.1 Cấu tạo chân
Trang 7Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản
phẩm ứng dụng có thể chọn một trong 3 kiểu chân do ATMEL đưa ra
Trang 82.1.2.2 Sơ đồ khối
2.1.2.3 Mô tả chức năng của các chân
Vcc : ¸p nguồn.
GND : §ất.
Port 0 : Là một cỉng vµo ra I/O 8-bit hai chiều, cực máng hở Khi xuất ra,
mỗi chân cđa cỉng có thể ®a 8 đầu vào TTL Nếu ghi các mức 1 ra các chân port thì các chân này có thể dùng như các đầu vào trở kháng cao
Port 0 cũng có thể được cấu hình thành một bus multiplex giữa địa chỉ thấp và dữ liệu khi truy cập chương trình hay dữ liệu từ bên ngoài Trong chế độ này, port 0 có điện trở kÐo ë bªn trong
Port 0 cũng nhận các byte mã chương trình khi lập trình Flash và xuất ra mã chương trình khi kiểm tra, khi đó cần có điện trở kÐo bên ngoài
Trang 9Port 1 : Là một port I/O
8 - bit hai chiều có pullup nội
Đầu ra port 1 có thể l¸ùi 4 đầu vào
TTL Khi biết các mức 1 ra các
chân port thì chúng được kéo lên do có điện trở nội và có thể dùng làm đầu vào Khi vai trò là cổng nhập, những chân của port 1 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên
Hơn nữa, P1.0 và P1.1 có thể được dùng như là đầu vào bộ đếm timer/counter 2 bên ngoài (P1.0/T2) và xung kích (P1.1/T2EX)
Port 1 cũng nhận những byte địa chỉ thấp trong khi lập trình Flash và trong khi kiểm tra Flash
Port 2 : Là một port I/O 8-bit hai
chiều có pullup nội, ®ầu ra port 2
có thể lái 4 đầu vào TTL Khi biết
các mức 1 ra các chân port thì chúng được kéo lên do có điện trở nội và có thể dùng làm đầu vào Khi vai trò là cổng nhập, những chân của port 2 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên
Port 2 phát byte địa chỉ cao trong khi nhận lệnh từ bộ nhớ chương trình ngoài và trong lúc truy xuất đến bộ nhớ dữ liệu ngoài mà có sử dụng địa chỉ
16 bit (MOVX A, @DPTR) Trong ứng dụng này nó dùng điện trở nội kéo lên mạnh khi xuất 1ra cỉng Port 2 Khi truy xuất bộ nhớ dữ liệu ngoài dùng địa chỉ 8 bit, port 2 sẽ phát nội dung của thanh ghi P2
Port 2 cũng nhận byte địa chỉ cao trong lúc lập trình Flash và trong lúc kiểm tra Flash
Port 3 : Là một port I/O 8-bit hai chiều có pullup nội, ®ầu ra port 3 có 4
đầu vào TTL Khi ®a các mức 1 ra các chân port thì chúng được kéo lên do có điện trở nội và có thể dùng làm đầu vào Khi vai trò là cổng nhập, những chân của port 3 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên
Port 3 cũng có những chức năng của họ MSC-51 được liệt kê ở bảng sau:
BIT TÊN ĐỊA CHỈ BIT CHỨC NĂNG THAY THẾ
P3.0 RXD B0H Nhận dừ liệu cho port nối tiếp
P3.1 TXD B1H Truyền dừ liệu cho port nối tiếp
P3.4 T0 B4H Ngõ vào từ bên ngoài cho timer/counter
0
P1.1 T2EX (xung kích capture/reload
cho Timer/Counter 2 và điều khiển trực tiếp
Chân Chức năng thay thế
P1.0 T2 (đầu vào đếm cho
Timer/Counter 2)
Trang 10P3.5 T1 B5H Ngõ vào từ bên ngoài cho timer/counter
1 P3.6 WR B6H Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Xung đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận vài tín hiệu điều khiển trong lúc lập trình Flash và trong lúc kiểm tra Flash
RST : là ngõ vào Reset Khi ngõ này được đưa lên cao (trong ít nhất
hai chu kì máy), các thanh ghi bên trong AT89C52 được tải những giá trị thích hợp để khởi động hệ thống
ALE/PROG (Address Latch Enable) : ALE là xung xuất cho phép
chốt byte địa chỉ thấp khi truy cập bộ nhớ ngoài, chân này còn là ngõ vào của xung lập trình (PROG) khi lập trình Flash
Trong hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao động on-chip và có thể được dùng như xung thời gian chuẩn bên ngoài Tuy nhiên, cần chú ý là một xung ALE sẽ bị mất khi truy cập bộ nhớ ngoài
Có thể hủy bỏ chức năng của ALE bằng cách set bit 0 của thanh ghi ở
vị trí 8EH Một khi bit này được set, ALE chỉ tích cực khi có lệnh MOVX hoặc MOVC Nếu không có các lệnh này thì ALE ở mức cao Việc set bit 0 của thanh ghi ở vị trí 8EH không làm ảnh hưởng đến vi điều khiển khi truycập bộ nhớ ngoài
PSEN (Program Store Enable) : PSEN là xung strobe báo hiệu việc
đọc bộ nhớ chương trình ngoài, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy, ngoại trừ hai xung PSEN bị mất khi truy xuất dữ liệu ngoài Khi thi hành chương trình trong RAM nội, PSEN sẽ ở mức thụ động (mức cao)
EA/V PP (External Access) : EA là ngõ vào để cho phép truy xuất bộ
nhớ chương trình từ bên ngoài khi được nối với GND Khi EA được treo lên nguồn VCC, chương trình sẽ được thực thi trong ROM nội, chân này cũng nhận điện áp 12v (VPP) trong khi lập trình Flash
XTAL1 : Đầu vào của bộ khuếch đại dao động đảo và cũng là đầu
vào đến mạch tạo xung clock nội
XTAL2 : Đầu ra của bộ khuếch đại dao động đảo.
Trang 112.1.2.4 Các thanh ghi chức năng (SFR-Special Funtion Reisters)
AT89C52 có 26 thanh ghi chức năng được thiết kế như là một thành phần của RAM on-chip Do đó mỗi thanh ghi có một địa chỉ của nó, nằm trong vùng từ 80H đến FFH Tuy nhiên, vùng này cũng là vùng bộ nhớ nên việc truy cập các thanh ghi này thông qua các lệnh dùng định vị trực tiếp khác với việc truy cập vùng nhớ dùng định vị gián tiếp
Trang 12Bảng vị trí các thanh ghi chức năng :
Chú ý : Là không phải tất cả các địa chỉ đều có các thanh ghi, những địa chỉ không có thanh ghi có thể không có trên chip, ®ọc những địa chỉ này sẽ có những giá trị ngẫu nhiên và ghi những giá triï này có những tác độngkhông xác định trước
Phần mềm của người dùng không nên ghi những giá trị 1 đến
các vị trí trªn, bởi vì chúng có thể được dùng trong tương lai Trong
trường hợp đó, giá trị của các bit luôn là 0 Ngoài những thanh ghi
tương tự 8051, AT89C52 có thêm :
Ký hiệu Chức năng
TF2 Cờ tràn Timer 2, set khi Timer 2 tràn và phải được clear bằng phần
mềm TF2 sẽ không set khi RCLK = 1 hoặc TCLK = 1.
EXF2 Cờ ngoài của Timer 2, set khi xảy ra capture hoặc reload do T2EX
Trang 13Các thanh ghi Timer 2 : Các bit điều khiển và trạng thái chứa trong thanh
ghi T2CON và T2MOD cho Timer 2 Cặp thanh ghi RCAP2H và RCAP2L là những thanh ghi Capture/Reload trong chế độ capture 16 bit hay chế độ auto-reload 16 bit
Các thanh ghi ngắt : Tập các bit riêng lẻ cho phép ngắt chứa trong thanh
ghi IE Thiết lập hai mức ưu tiên cho 6 nguồn ngắt bằng cách set các bit thanh ghi IP
xuống thấp và EXEN2 = 1 Nếu ngắt Timer 2 được kích hoạt, EXF2 =
1 sẽ làm CPU trỏ đến ISR của Timer 2 EXF2 phải được xóa bằng phần mềm EXF2 không gây nên ngắt trong chế độ đếm lên/xuống (DCEN = 1).
RCLK Kích hoạt xung clock bộ thu Khi set, các xung tràn Timer 2 sẽ là xung
clock cho bộ thu port nối tiếp trong mode 1 và 3 RCLK = 0 thì bộ thu port nối tiếp sẽ dùng các xung tràn của Timer 1.
TCLK Kích hoạt xung clock bộ phát Khi set, các xung tràn Timer 2 sẽ là
xung clock cho bộ phát port nối tiếp trong mode 1 và 3 TCLK = 0 thì bộ phát port nối tiếp sẽ dùng các xung tràn của Timer 1.
EXEN2 Kích hoạt bên ngoài Khi set, cho phép capture hay reload khi T2EX
xuống thấp (nếu Timer 2 không sử dụng cho port nối tiếp) EXEN2 = 0 làm cho Timer 2 bỏ qua các sự kiện trên T2EX.
TR2 Khởi động/Dừng Timer 2 TR2 = 1 làm khởi động Timer 2.
C/T2 Bit lựa chọn timer hay counter C/T2 = 0 : timer C/T2 = 1 : counter
đếm sự kiện bên ngoài (kích cạnh xuống).
CP/RL2 Lựa chọn capture hay reload CP/RL2 = 1: capture xảy ra khi T2EX
xuống thấp nếu EXEN2 = 1 CP/RL2 = 0 : reload xảy ra khi Timer 2 tràn hoặc khi T2EX xuống thấp nếu EXEN2 = 1 Nếu TCLK hay RCLK = 1, bit này bị bỏ qua và timer bị ép vào chế độ reload khi Timer 2 tràn.
Trang 142.1.2.5 Bộ nhớ dữ liệu
AT89C52 có 256 byte bộ nhớ RAM on-chip Trong đó, 128 byte trên có cùng địa chỉ với vùng thanh ghi chức năng nhưng có cấu tạo vật lý riêng biệt
Khi một lệnh truy cập một vị trí nội có địa chỉ trên 7FH, chế độ địa chỉ nó sử dụng sẽ báo cho CPU biết vùng địa chỉ nào nó cần truy cập : RAM hay SFR Các lệnh dùng địa chỉ trực tiếp sẽ truy cập vùng SFR Ví dụ như lệnh sau đây sẽ truy cập SFR ở địa chỉ 0A0H (port 2)
II.1.2.6 Đặc tính bộ dao động
XTAL1 là đầu vào và đầu ra
tương ứng của bộ khuếch đại đảo
được dùng làm bộ dao động nội
on-chip Có thể dùng thạch anh hay bộ
cộng hưởng ceramic đều được
Để lái vi điều khiển từ nguồn xung
clock bên ngoài, XTAL2 phải được để
trống trong khi XTAL1 nối đến nguồn
lái.Không có yêu cầu gì về duty cycle
nhưng phải chú ý đến thời gian tối đa
và tối thiểu của mức điện áp cao cũng
như mức điện áp thấp
2.1.2.7 Chế độ kh«ng sư dơng.
Trang 15Trong chế độ kh«ng sư dơng, CPU rơi vào trạng thái “ngủ” trong khi tất cả thiết bị ngoại vi vẫn còn tích cực Chế độ này được tạo ra bằng phầnmềm Nội dung của RAM on-chip và giá trị của các SFR vẫn được giữ nguyên Kết thúc chế độ kh«ng sư dơng bằng cách kích hoạt một ngắt hoặc reset phần cứng.
Chú rằng khi kết thúc chế độ kh«ng sư dơng bằng cách reset phần cứng thì thông thường vi điều khiển sẽ gọi lại chương trình mà nó vừa thoát, cho đến hai chu kỳ máy trước khi thuật toán reset chiếm quyền điều khiển Phần cứng cấm truy cập RAM nội trong trường hợp này nhưng không cấm truy cập đến các chân port, do đó có thể xảy ra những trường hợp không mong muốn Để loại bỏ trường hợp này, lệnh ngay sau lệnh gọi chế độ kh«ng sư dơng không nên là lệnh ghi port hay ghi bộ nhớ ngoài
2.1.2.8 Chế độ hạ nguồn.
Trong chế độ hạ nguồn, bộ dao động ngừng và lệnh gọi hạ nguồn là lệnh cuối cùng được thực thi RAM on-chip và SFR duy trì giá trị của nó cho đến khi kết thúc chế độ hạ nguồn
Kết thúc chế độ hạ nguồn chỉ bằng một cách duy nhất : Reset phần cứng Reset sẽ tạo lại giá trị cho SFR nhưng không thay đổi nội dung của RAM on-chip Không nên reset trước khi Vcc phục hồi mức điện áp thông thường của nó và phải giữ đủ lâu để bộ dao động phục hồi và ổn định
2.1.2.9 Trạng thái của một số chân trong chế độ kh«ng sư dơng và chế độ hạ nguồn
2.1.2.10 Các thông số kỹ thuật
Trang 19Chương III: Ngôn ngữ lập trình
Trang 203.1 vi điều khiển at89c52.
Chương trình lập trình cho 89C52 được viết trên ngôn ngữ Assemble.Phần mềm được sử dụng là 8051 IDE Đây là phần mềm được sử dụng để lập trình cho họ vi điều khiển 8051 và 8052 của hãng InTel
Bộ vi điều khiển AT 89C51 và AT89C52 là phiên bản của 8051 Phiên bản này rất thích hợp cho các ứng dụng nhanh và do hãng Atmel Corporatoin sản xuất
* Lệnh nhảy có điều kiện :
+ Lệnh JZ ( Nhảy nếu A = 0 )
ở lệnh này nội dung của thanh ghi A được kiểm tra Nếu A = 0 thì chương trình nhảy đến địa chỉ đích
+ Lệnh JNC ( Nhảy nếu cờ nhớ CY = 0 )
ở lệnh này, bít cờ nhớ của thanh ghi cờ PSW được dùng làm điều kiện nhảy Khi thực hiện lệnh ² JNC nhan ², bộ xử lý kiểm tra cờ nhớ xem có bật không ( CY = 1 ) Nếu không được bật thì CPU sẽ thực hiện lệch từ địa chỉ của nhãn Nếu cờ CY = 1 thì chương trình không thực hiện lệnh nhảy mà thực hiện lệnh kế tiếp sau lệnh JNC
Các lệnh nhảy đều là các lệnh nhảy ngắn có nghĩa là địa chỉ của đích đều phải nằm trong khoảng – 127 đến + 127 Byte tức là đã chứa đủ trong bộ đếm chương trình PC
Bảng lệnh nhảy có điều kiện
Trang 21JNB Nhảy nếu bit = 0
* Lệnh nhảy không có điều kiện.
Lệnh nhảy không điều kiện là lệnh nhảy trong đó điều kiện được truyền không có điều kiện đến địa chỉ đích Bộ vi điều khiển 89C52 có hai lệnh nhảy không điều kiện đó là : nhảy dài LJMP và nhảy ngắn SJMP
+ Lệnh nhảy dài LJMP ( Long Jump )
Lệnh nhảy dài là lệnh 3 byte, trong đó byte đầu tiên là mã lệnh, hai byte còn lại là địa chỉ 16 bit của đích Địa chỉ đích 2 byte cho phép lệnh có thể nhảy đến bất kỳ vị trí nhớ nào trong không gian nhớ 0000H - FFFFH
+ Lệnh nhảy ngắn ( Short Jump )
Lệnh nhảy ngắn dài 2 byte, byte đầu tiên là mã lệnh, byte thứ hai là địa chỉ đích tương đối Địa chỉ tương đối có phạm vi 00H - FFH , được chia thành
địa chỉ nhảy tiến và nhảy lùi Dù lệnh nhảy tiến hay nhảy lùi thì đối với mọi lệnh nhảy ngắn bất kỳ, địa chỉ đích không được ngoài vùng – 127 đến +127
+ Lệnh gọi dài LCALL ( Long Call )
Đây là lệnh dài 3 byte Byte đầu tiên là mã lệnh, còn hai byte sau là
địa chỉ của chương trình đích Như vậy, LCALL có thể dùng để gọi chươngtrình con ở bất kỳ chỗ nào trong không gian bộ nhớ Sau khi thực hiện xong chương trình con, để vi điều khiển biết được chỗ quay về thì địa chỉ đứng ngay sau lệnh gọi LCALL sẽ tự động cất vào ngăn xếp Khi chương trình con được gọi, điều khiển được chuyển đến chương trình con, lúc này bộ xử lý cất bộ
đếm chương trình PC vào ngăn xếp và bắt đầu nạp lệnh rồi thực hiện lệnh của chương trình con Sau khi thực hiện xong, lệnh RET sẽ chuyển về chương trình vừa gọi nó Chương trình con luôn kết thúc bằng lệnh RET
+ Lệnh gọi tuyệt đối ACALL ( Absolute call )
Lệnh ACALL là lệnh 2 byte, khác với lệnh LCALL dài 3 byte Do ACALL chỉ có 2 byte nên địa chỉ đích của chương trình còn phải nằm trong khoảng 2 Kbyte địa chỉ và chỉ có 11 bit của 2 byte được dùng để xác định địa chỉ đích Do vậy, lệnh LCALL và lệnh ACALL khác nhau ở chỗ: lệnh LCALL
có thể nằm bất kỳ chỗ nào của bộ nhớ 64 Kbyte, còn lệnh ACALL nằm trong khoảng 2 Kbyte
3.1.3 Lệnh xử lý BIT.
Các lệnh xử lý bit.
Trang 22Lệnh Chức Năng
Setb bit Thiết lập bit ( bit = 1 )
CLR bit Xoá bit về 0 ( bit = 0 )
CPL bit Bù bit ( bit = NOT bit )
JB bit, đích Nhảy về đích nếu bit = 1
JNB bit , đích Nhảy về đích nếu bit = 0
JBC bit, đích Nhảy về đích nếu bit = 1và sau đó xoá bit
Bộ điều khiển có bốn cổng I/O 8 bit là P0, P1, P2, P3 Chúng ta có thể truy
cập toàn bộ 8 bit hoặc bit bất kỳ mà không làm thay đổi các bit còn lại Nếu muốn truy cập từng bit của cổng, có thể sử dụng lệnh ² SETB X Y² với X là
số của cổng, Y là vị trí bit từ 0 đến 7
3.1.4 Lập trình cho bộ định thời.
Để lập trình cho bộ định thời ta chọn Timer 0 và chế độ 1( Mode 1 )
Đó là bộ định thời 16 bit, do vậy giá trị nằm trong khoảng từ 0000H – FFFFH
có thể được nạp vào thanh ghi TL và TH của bộ định thời Sau khi TL và TH
được nạp giá trị ban đầu 16 bit thì bộ định thời được khởi động Thực hiện
điều này nhờ lệnh ² SETB TR0 ² Bộ định thời sau khi được khởi động thì bắt
đầu tiến hành đếm tăng Bộ định thời đếm lên cho đến khi đạt tới giới hạn FFFFH Khi đó bộ định thời sẽ quay vòng từ FFFFH về 0000H và bật cờ bộ
định thời TF ( Timer Flag ) lên mức cao Cờ bộ định thời có thể kiểm tra được Khi cờ bộ định thời được thiết lập, muốn dừng bộ định thời bằng phần mềm có thể sử dụng lệnh CLR TF0 cho Timer 0 Mỗi bộ định thời đều có cờ nhớ TF riêng Bộ định thời sau khi đạt giá trị giới hạn thì thực hiện quay vòng về 0
Để lặp lại quá trình đếm của bộ định thời, các thanh ghi TH và TL phải được nạp lại giá trị ban đầu và cờ TF cần được xoá về 0
Cách tạo giá trị cần nạp vào bộ định thời :
Trang 23Chương IV.Thiết kế phần cứng, viết chương trình.
4.1 Thiết kế phần cứng.
Để đạt được yêu cầu thiết kế, ta xây dựng hai mô hình
+ Trạm giao thông ngã tư có đường tàu
+ Trạm giao thông kiểu mới và hiện nay được sử dụng nhiều
Sơ đồ điều khiển
Hệ điều khiển gồm :
* KHOÁI XệÛ LYÙ TRUNG TAÂM
Hinh 4.1ẹoựng vai troứ boọ ủieàu khieồn trung taõm, chũu traựch nhieọm veà taỏt caỷ caực hoaùt ủoọng cuỷa maùch Board maùch cung caỏp moọt coõng cuù ủeồ coự theồ ủieàu khieồn theo baỏt cửự phửụng phaựp naứo, mieón laứ coự giaỷi thuaọt vaứ vieỏt chửụng trỡnh naùp cho AT89C52
ẹửựng ụỷ trung taõm laứ vi ủieàu khieồn AT89C52 Sụỷừ dú duứng AT89C52 maứ khoõng duứng caực IC khaực trong hoù MCS-51TMlaứ vỡ IC naứy coự 3 timer 16-bit,
Khối
nguồn Khối xử lý trung tâm Khối mạch lực
Khối hiện thị thời gian thực
Khối đèn tín hiệu
Trang 24phù hợp cho hoạt động điều khiển như : Một timer cung cấp xung để tạo baudrate cho truyền thông nối tiếp RS-232, một timer đếm thời gian thực, một timer tạo các khoảng thời gian trễ cho lập trình.
· Chân EA được nối đến một switch và điện trở 4.7KW cho phép tùy chọn nối lên +5V hay nối xuống GND, điều này tương ứng với việc AT89C52 sẽ thực thi chương trình bên trong bộ nhớ nội hay chương trình bên ngoài RAM
· Bộ dao động gồm thạch anh X1 và 2 tụ C1, C2 được nối đến chân XTAL1 và XTAL2 Xung clock cho các hoạt động bên trong của AT89C52 sẽ có tần số bằng tần số của thạch anh chia cho 12 Thông thường, người ta hay dùng thạch anh 12MHz để tần số xung clock là 1MHz, tương ứng với một chu kỳ máy lµ 1ms nên rất dễ tạo một timer thời gian thực chính xác Hoạt động tạo baudrate có thể giải thích như sau : đối với họ MCS-51TM, người ta phải dùng một timer (thường là timer1) và tốc độ tràn của nó sẽ tạo ra baudrate Khi đó, ta có công thức:
BAUDRATE = TỐC ĐỘ TRÀN TIMER1 ¸ 12
Ví dụ, giả sử ta muốn có tốc độ 1200 baud thì tính như sau :
1200 = tốc độ tràn timer1 ¸ 12
Þtốc độ tràn timer1 = 1200x32 = 38,4KHzNếu thạch anh có tần số 12MHz thì timer1 được clock với tần số 1MHz hay 1000KHz Để có tốc độ tràn là 38,4KHz thì timer1 phải tràn sau mỗi 1000 ¸ 38,4 = 26,04 xung clock (làm tròn là 26) Do timer đếm lên và sẽ tràn khi chuyển từ FFh sang 00h, cần phải nạp số - 26 vào timer và thế là baudrate được tạo ra
Như ta đã thấy, trong phép tính trên có làm tròn, điều này dẫn đến sai số trong baudrate Từ đó ta cần phải tìm thạch anh có tần số sao cho baudrate không có sai số để việc truyền thông đảm bảo chính xác Qua các phép tính thì thạch anh 11,059MHz cho baudrate rất chính xác Bảng sau sẽ cho thấy sự so sánh sai số khi dùng thạch anh 12MHz và thạch anh 11,059MHz trong một số baudrate thông dụng :
(Nếu SMOD = 1 thì baudrate = tốc độ tràn timer1 ¸ 16)
· Mạch reset gồm C3, R2 cho tác dơngï Auto-reset (reset khi mới cấp nguồn) Ngoài ra còn có R1 và SW1 cho tác dơng manual - reset (reset bằng tay khi ấn phím SW1 bất cứ khi nào)
Trang 25ã Chaõn P3.2 vaứ P3.3 laứ ngoừ ra cuỷa Port3 cuừng ủoàng thụứi laứ ngoừ vaứo cuỷa ngaột ngoaứi Trong thieỏt keỏ khoõng duứng ủeỏn neõn boỷ troỏng.
ã Chân ở các cổng Port 1, Port 0 dùng làm đầu ra điều khiển sự đóng mở của đèn
ã Các chân ở cổng Port 2 dùng để hiển thị cho bộ đếm
e
f
g
Led 1 Led 2