Lêi nãi ®Çu Trong sự nghiệp công nghiệp hoá, hiện đại hoá đất nước vấn đề tự động hoá sản xuất có vai trò đặc biệt quan trọng Mục tiêu ứng dụng robot trong công nghiệp nhằm nâng cao năng
Trang 1Lêi c¶m ¬n
Em xin chân thành cảm ơn các thầy cô, đặc biệt các thầy trong bộ môn chế tạo máy đã tận tình tạo điều kiện học tập và truyền đạt kiến thức trong suốt khoá học để em được thực hiện đề tài này
Đặc biệt em xin chân thành cảm ơn thầy ThS Đặng Xuân Phương và KS Bùi Đức Hải đã hướng dẫn và giúp đỡ em tận tình trong thời gian vừa qua
Em cũng xin gửi lời cảm ơn tới gia đình, bạn bè đã giúp đỡ và động viên
em trong suốt thời gian học tập cũng như trong thời gian thực hiện đề tài
Trang 2
MỤC LỤC
Trang
LỜI CẢM ƠN
LỜI NÓI ĐẦU 1
PHẦNI: GIỚI THIỆU TỔNG QUAN 2
CHƯƠNG I: TỔNG QUAN VỀ ROBOT CÔNG NGHIỆP 2
I SỰ RA ĐỜI CỦA ROBOT CÔNG NGHIỆP 2
1 Sự ra đời của robot công nghiệp 2
2 Tình hình phát triển Robot công nghiệp 4
3 Ứng dụng robot công nghiệp 5
4 Các xu thế sử dụng robot trong tương lai 8
II TÌNH HÌNH TIẾP CẬN VÀ ỨNG DỤNG ROBOT CÔNG 11
NGHIỆP Ở VIỆT NAM CHƯƠNGII: GIỚITHIỆU VI ĐIỀU KHIỂN HỌ 8051 12
I GIỚI THIỆU 12
II KHẢO SÁT HỌ VI ĐIỀU KHIỂN 8051 12
1.Cấu trúc 12
2 Chức năng các chân vi điều khiển 14
III TẬP LỆNH CỦA 8051/8031 15
1 Các chế độ đánh địa chỉ 15
2 Các nhóm lệnh của 8051/8031 17
3 Nhóm lệnh xử lý số liệu 17
4 Nhóm lệnh luận lý 18
5 Nhóm lệnh truyền dữ liệu 20
6 Nhóm lệnh truyền điều 21
IV HOẠT ĐỘNG TIMER CỦA 8051 22
1 Giới thiệu 22
2 Thanh ghi Mode Timer Mode 23
3 Thanh ghi điều khiển Timer Tcon (Timer Control Resgister) 24
Trang 34 Các mode và cờ tràn (Timer Mode and Overflow) 24
V CÁC NGUỒN XUNG CLOCK (CLOCK SOURCES) 26
1 Sự bấm giờ bên trong (Interval Timing) 26
2 Sự đếm các sự kiện ( Event counting) 26
3 Sự bắt đầu, sự kết thúc và sự điều khiển các thanh ghi Timer 27
4 Sự khởi động và sự truy xuất các thanh ghi Timer 27
VI HOẠT ĐỘNG CỦA PORT NỐI TIẾP 8051 28
1.Gioi thiệu 28
VII HOẠT ĐỘNG NGẮT CỦA (INTERRUPT) CỦA 8051 31
1 Gíơi thiệu 31
2 Tổ chức Interrupt của 8051 31
2.1 Sự cho phép ngắt và sự cấm ngắt 32
2.2 Sự ưu tiên ngắt (Interrupt Priority) 33
2.3 Sự kiểm tra vòng quét liên tiếp 34
2.4 Việc xử lý các sự ngắt (processing Interrupt) 35
2.5 Các vectơ ngắt (Interrupt vectors) 35
CHƯƠNG III: MẠCH CHUYỂN ĐỔI ADC 37
I Gíơi thiệu ADC 0809 37
PHẦN 2: TÍNH TOÁN VÀ THIẾT KẾ CHƯƠNG I: TÍNH TOÁN VÀ THIẾT KẾ ĐỘNG HỌC VÀ ĐỘNG LỰC HỌC 40
I PHÂN TÍCH NHIỆM VỤ VÀ ĐẶC ĐIỂM PHÔI 40 II CHỌN PHƯƠNG ÁN THIẾT KẾ 40
1 Phân tích các phương án 41
2 Sơ đồ động và hệ toạ độ của Robot NTQP – 01 41
III TÍNH TOÁN ĐỘNG HỌC ROBOT 43
1 Giải bài toán thuận 45
2 Phương trình động học ngược của robot 2.1 Giải thích các ký hiệu và ý nghĩa của chúng 46
Trang 42.2 Xây dựng công thức 48
IV TÍNH TOÁN ĐỘNG LỰC HỌC ROBOT 51
1 Xây dựng công thức 51
2 Vận tốc, gia tốc 52
3 Động năng tay máy 53
4 Thế năng tay máy 56
5 Mô hình động lực học tay máy 57
6 Tính toán 58
CHƯƠNG II: THIẾT KẾ CHẾ TẠO BỘ PHẬN CƠ KHÍ 62
CHƯƠNG III: THIẾT KẾ CHẾ TẠO BỘ PHẬN ĐIỀU KHIỂN 65
I SƠ ĐỒ MẠCH KHỐI TRUNG TÂM 65
II SƠ ĐỒ MẠCH KHỐI GIAO TIẾP 67
III SƠ ĐỒ MẠCH CỦA BỘ CHUYỂN ĐỔI ADC 809 69
IV CẢM BIẾN 70
V SƠ ĐỒ MẠCH ĐIỀU KHIỂN ĐỘNG CƠ 71
CHƯƠNG IV: VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN 72
I: TÓM TẮT CHƯƠNG TRÌNH ĐIỀU KHIỂN 72
II: VIẾT CHƯƠNG TRÌNH CHO PC 74
1 Màn hình điều khiển 74
2 Chương trình 74
III: CHƯƠNG TRÌNH VIẾT CHO VI XỬ LÝ 92
CHƯƠNG V: KẾT QUẢ NGHIÊN CỨU 126
I MÔ HÌNH THẬT VÀ MÔ TẢ QUÁ TRÌNH TEST THỬ 126 1 Mô hình thật 127
2 Mô tả quá trình test thử 129 II HƯỚNG DẪN SỬ DỤNG 130
CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ XUẤT Ý KIẾN 132
I LỜI KẾT 132
Trang 5Lêi nãi ®Çu
Trong sự nghiệp công nghiệp hoá, hiện đại hoá đất nước vấn đề tự động hoá sản xuất có vai trò đặc biệt quan trọng
Mục tiêu ứng dụng robot trong công nghiệp nhằm nâng cao năng suất dây chuyền, nâng cao chất lượng và tăng khả năng cạnh tranh của sản phẩm, đồng thời cải thiện điều kiện làm việc Do đó yêu cầu hệ thống sản xuất phải có tính linh hoạt cao để đáp ứng với sự biến đổi thường xuyên của thị trường hàng hoá cạnh tranh Robot công nghiệp là một bộ phận cấu thành không thể thiếu trong việc tạo ra những hệ thống sản xuất tự động đó
Trong những năm gần đây phong trào nghiên cứu, và chế tạo robot thử nghiệm đã phát triển mạnh, nhất là từ năm 2002, khi sinh viên trong các trường đại học và cao đẳng trên cả nước tham gia cuộc thi Robocon được tổ chức hàng năm Năm qua trường ta cũng đã đạt kết quả khá tốt trong cuộc thi Robocon Vì vậy các thầy trong bộ môn đã tạo điều kiện cho em được thực hiện đề tài này để nghiên cứu và hiểu biết thêm một số lĩnh vực mới như : điện tử, điều khiển tự động , tin học
Tuy đã có nhiều cố gắng trong thời gian thực hiện đề tài song do khả năng bản thân còn nhiều hạn chế nên bài báo cáo của em không tránh khỏi những thiếu sót Vì vậy em rất kính mong các quý thầy cô và tất cả những ai quan tâm đến đề tài này góp ý để em hiểu và hoàn thiện đề tài
Trang 6
PHẦN I: GIỚI THIỆU TỔNG QUAN CHƯƠNG I
TỔNG QUAN VỀ ROBOT CÔNG NGHIỆP
I SỰ RA ĐỜI CỦA ROBOT CÔNG NGHIỆP
1 Sự ra đời của robot công nghiệp
Nhu cầu nâng cao năng suất và chất lượng sản phẩm ngày càng đòi hỏi các ứng dụng rộng rãi các phương tiện tự động hoá sản xuất Xu hướng tạo ra những dây chuyền về thiết bị tự động có tính linh hoạt cao đang hình thành Các thiết bị này đang thay thế dần các máy tự động “cứng” chỉ đáp một việc nhất định trong lúc thị trường luôn luôn đòi hỏi thay đổi mặt hàng về chủng loại, kích cỡ, tính năng… Vì thế ngày càng tăng nhanh nhu cầu ứng dụng Robot để tạo ra các hệ thống sản xuất tự động linh hoạt
Thuật ngữ “Robot” lần đầu tiên xuất hiện năm 1922 và vào khoảng những năm 50 của thế ký 20, ở Hoa Kỳ đã xuất hiện những tay máy chép hình điều khiển từ xa trong các phòng thí nghiệm vật liệu phóng xạ
Năm 1954 George C.Devol đã thiết kế một thiết bị có tên là “Cơ cấu bản lề” dùng trong chuyển hàng theo chương trình Đến năm 1956 Devol cùng với Joseph F Engelber, một kỹ sư trẻ của công nghiệp hàng không đã tạo ra loại Robot công nghiệp đầu tiên năm 1959 ở thành phố Unimation Chiếc Robot công nghiệp được đưa vào ứng dụng đầu tiên năm 1961 Ở một nhà máy ô tô của General Motors tại Trenton, New Jersey, Hoa Kỳ
Năm 1967 Nhật Bản mới nhập chiếc Robot công nghiệp đầu tiên từ công ty AMF của Hoa Kỳ Đến năm 1990 có hơn 40 công ty Nhật Bản, trong đó có những công ty khổng lồ như công ty Hitachi và công ty Mitsubishi, đã đưa ra thị trường quốc tế những loại robot nổi tiếng
Từ những năm 70 việc nâng các tính năng của robot đã chú ý lắp đặt thêm các cảm biến ngoại tín hiệu để nhận biết môi trường làm việc Tại trường đại học Stanfood đã tạo ra loại loại Robot lắp ráp tự động điều khiển bằng máy tính trên cơ sở xử lý thông tin từ cảm biến lực và thị giác Vào thời gian này công ty
Trang 7IBM đã chế tạo loại Robot có cảm biến xúc giác và cảm biến lực điều khiển bằng máy tính để lắp ráp các máy in gồm 20 cụm chi tiết
Vào giai đoạn này ở nhiều nước cũng tiến hành những nghiên cứu tương
tự, tạo ra các loại Robot điều khiển bằng máy tính, có lắp đặt các thiết bị cảm biến và các thiết bị giao tiếp người máy Hiện nay các loại xe Robot ( Robot Car) đang được ưa chuộng đưa vào hoạt động các hệ thống sản xuất tự động linh hoạt
Từ những năm 80, nhất là những năm 90, do áp dụng rộng rãi các tiến bộ
kỹ thuật về xử lý và công nghệ thông tin, số lượng Robot công nghiệp đã gia tăng Giá thành giảm tính năng có nhiều bước vượt bậc Nhờ vậy Robot công nghiệp đã có vai trò quan trọng trong các dây chuyền tự động sản xuất hiện đại Ngày nay chuyên ngành khoa học về Robot “Robotics” đã trở thành một lĩnh vực rộng trong khoa học, bao gồm các vấn đề cấu trúc cơ cấu động học, lập trình quỹ đạo, cảm biến tín hiệu, điều khiển chuyển động
Thuật ngữ “ Robot Công nghiệp” được hiểu là những thiết bị tự động linh hoạt Bắt chước được các chức năng lao động công nghiệp con người Nói đến thiết bị tự động linh hoạt là nhấn mạnh đến khả năng thao tác với nhiều bậc tự
do, được điều khiển tự động và lập trình thay đổi được Còn nói đến sự bắt chước các chức năng lao động công nghiệp của con người là nói đến sự không hạn chế từ các chức năng lao động chân tay đơn giản đến trí khôn nhân tạo Tuỳ theo loại hình công việc loại hình lao động cần đến chức năng đó hay không? Đồng thời cũng nói đến mức độ cần thiết bắt chước được như con người hay không?
2 Tình hình phát triển Robot công nghiệp
Gần nửa thế kỷ có mặt trong sản xuất, Robot công nghiệp đã có một lịch sử phát triển hấp dẫn Vì thế hiện nay Robot công nghiệp đang được ứng dụng rộng rãi trong các dây chuyền tự động sản xuất ở các nước phát triển
Biểu đồ sử dụng robot công nghiệp ở một số nước
Trang 83 Ứng dụng robot công nghiệp
3.1 Mục tiêu ứng dụng robot công nghiệp
Mục tiêu ứng dụng Robot công nghiệp nhằm nâng cao năng suất dây chuyền công nghệ, giảm giá thành, nâng cao chất lượng và khả năng cạnh tranh của sản phẩm, đồng thời cải tiến điều kiện lao động Những ưu điểm mà Robot công nghiệp mang lại:
Robot có thể thực hiện một quy trình thao tác hợp lý bằng hoặc hơn người thợ lành nghề một cách ổn định trong suốt thời gian làm việc Vì thế Robot có thể góp phần nâng cao chất lượng và tăng khả năng cạnh tranh của sản phẩm Hơn thế nữa Robot có thể nhanh chóng thay đổi công việc để thích nghi với sự biến đổi mẫu mã, kích cỡ sản phẩm theo yêu cầu của thị trường cạnh tranh
Khả năng giảm giá thành sản phẩm do ứng dụng Robot là vì giảm được đáng kể chi phí cho người lao động nhất là các nước có mức cao về tiền lương lao động cộng các khoản phụ cấp và bảo hiểm xã hội Theo số liệu của Nhật Bản thì nếu một Robot làm việc thay thế cho một người thợ thì tiền mua Robot chỉ
Trang 9việc mấy ca Còn ở Mỹ thì trung bình một giờ Robot làm việc đem lại tiền lời là 13USD
Việc áp dụng Robot có khả năng làm tăng năng suất dây chuyền công nghệ
Sở dĩ như vậy vì nếu tăng nhịp độ khẩn trương của dây chuyền sản xuất Nếu không thay thế con người bằng Robot thì người thợ không thể theo kịp hoặc chóng mệt mỏi Theo hãng Fanue, Nhật Bản thì năng suất có thể tăng lên tới 3 lần
Ứng dụng Robot có thể cải thiện điều kiện lao động Đó là ưu diểm nổi bật nhất mà chúng ta cần quan tâm Trong thực tế sản xuất có rất nhiều nơi người lao động phải làm việc suốt buổi trong môi trường rất bụi bặm, ẩm ướt, nóng nực, ồn ào quá mức cho phép nhiều lần Thậm chí nhiều nơi người lao động còn làm việc trong môi trường độc hại nguy hiểm đến sức khoẻ con người, dễ bị nhiễm chất độc…
3.2 Một số lĩnh ứng dụng Robot công nghiệp
Một trong các lĩnh vực đó là kỹ nghệ đúc Thường trong phân xưởng đúc công việc rất đa dạng, điều kiện làm việc nóng nực, bụi bặm, mặt hàng thay đổi luôn và chất lượng sản phẩm đúc phụ thuộc vào quá trình thao tác Việc tự động hoá hoàn toàn hay một phần quá trình đúc bằng các dây chuyền tứ động thông thường với các máy tự động chuyên dùng đòi hỏi phải có các thiết bị phức tạp đầu tư lớn Ngày nay ở nhiều nước sử dụng rộng rãi Robot tốt để tự động hoá công nghệ đúc, nhưng chủ yếu là để phục vụ các máy đúc áp lực Robot có thể làm nhiều việc như: rót kim loại nóng chảy vào khuôn, lấy vật đúc ra khỏi khuôn, cắt mép thừa, làm sạch vật đúc hoặc làm tăng bền vật đúc bằng cách phun cát… Dùng Robot phục vụ các máy đúc áp lực có nhiều ưu điểm ví dụ đảm bảo ổn định chế độ làm việc, chuẩn hoá về thời gian thao tác, về nhiệt độ và điều kiện tháo vật đúc ra khỏi khuân ép Bởi thế chất lượng vật đúc tăng lên Trong ngành gia công áp lực công việc cũng khá nặng nề, dễ gây mệt mỏi nhất là trong các xưởng, xưởng rèn, dập nên đòi hỏi phải sớm áp dụng robot
Trang 10công nghiệp Trong phân xưởng rèn Robot có thể thực hiện được nhiều việc, ví
dụ đưa phôi thừa vào lò nung, lấy phôi đã nung nóng ra khỏi lò, mang nó đến máy rèn, chuyển lật phôi tác dụng khi rèn và xếp lại vật đã rèn vào giá hoặc thùng Sử dụng các loại Robot đơn giản nhất cũng có thể tăng năng suất từ 1.5 đến 2 lần và hoàn toàn giảm nhẹ sức lao động của công nhân So với các phương tiện cơ giới và tự động khác phục vụ các máy rèn dập thì Robot có ưu điểm nhanh hơn và chính xác hơn,cơ động hơn
Các quá trình hàn và nhiệt luyện thường bao gồm nhiều công việc nặng nhọc, độc hại và ở nhiệt độ cao Do vậy cũng cần áp dụng Robot công nghiệp Robot được sử dụng rộng rãi nhất là trong việc tự động hoá quá trình hàn, đặc biệt trong kỹ nghệ ô tô
Robot được sử dụng rộng rãi trong gia công và lắp ráp Thường người ta sử dụng Robot cho các công việc tháo lắp phôi và sản phẩm cho các máy gia công bánh răng, máy khoan, máy tiện bán tự động
Trong ngành chế tạo máy và dụng cụ đo chi phí về lắp ráp thường chiếm đến 40% giá thành sản phẩm Trong lúc đó mức độ cơ khí hoá lắp ráp không quá
từ 10% đến 15% đối với sản phẩm hàng loạt là 40% Bởi vậy việc tạo ra và sử dụng Robot có ý nghĩa rất quan trọng
Trang 11
4 Các xu thế sử dụng robot trong tương lai:
Robot ngày càng thay thế nhiều lao động
Trong tương lai kỹ thuật Robot sẽ tận dụng hơn nữa các thành tựu khoa học liên nghành phát triển cả về phần cứng lẫn phần mềm và ngày càng chiếm lĩnh nhiều ‘trận địa’’trong công nghiệp Số lượng lao động được thay thế ngày càng nhiều vì một mặt Robot ngày càng rẻ do hàng vi điện tử giảm giá liên tục, mặt khác chi phí tiền lương và các khoản phụ cấp cho người lao động ngày càng tăng
Robot càng chở nên chuyên dụng
Trang 12Khi Robot công nghiệp ra đời người ta thường cố gắng để biểu thị hết khả năng của nó Vì thế xuất hiện nhiều loại Robot vạn năng có thể làm được nhiều việc trên dây chuyền Tuy nhiên, thực tế chứng tỏ rằng Robot chuyên dụng đơn giản hơn, chính xác hơn, học việc đơn nhanh hơn, quan trọng hơn là giá thành rẻ hơn so với Robot vạn năng Các Robot chuyên dụng hiện đại đều được cấu thành
từ các modun vạn năng Xu thế modun hoá Robot ngày càng phát triển nhằm chuyên môn hoá việc chế tạo các modun và từ các modun đó sẽ cấu thành các kiểu Robot khác nhau thích hợp với từng loại công việc
Robot ngày càng đảm nhận được nhiều loại công việc lắp ráp
Công đoạn lắp ráp thường chiếm tỷ lệ cao so với tổng thời gian sản xuất trên toàn bộ dây chuyền Công việc khi lắp ráp lại đòi hỏi phải rất cẩn thận, nhẹ nhàng, tinh tế, chính xác nên cần thợ có tay nghề cao và phải làm việc căng thẳng suốt ngày
Khả năng thay thế con người ở những khâu lắp ráp ngày càng hiện thực là
do đã áp dụng được nhiều thành tựu khoa học mới trong thiết kế chế tạo Robot
Ví dụ tạo ra những cấu hình đơn giản và rất chính xác dựa trên cơ sở sử dụng các vật liệu vừa bền, vừa nhẹ Đồng thời được thừa hưởng kỹ thuật nhận và biến đổi
tín hiệu (sensor) Đặc biệt là kỹ thuật nhận và xử lý ảnh (vision) cũng như kỹ
thuật tin học với các ngôn ngữ bậc cao, Robot công nghiệp đã xuất hiện trên nhiều công đoạn lắp ráp phức tạp
Robot di động càng trở nên phổ biến
Trong các nhà máy hiện đại tên gọi phương tiện dẫn đường tự động AVG
đã trở thành quen biết Loại đơn giản là những chiếc xe vận chuyển trong nội bộ phân xưởng được điều khiên theo chương trình với 1 quỹ đạo định sẵn Càng ngày các thiết bị loại này càng được hiện đại hoá nhờ áp dụng kỹ thuật vision 3 chiều, kỹ thuật sensor tín hiệu ra, kỹ thuật thông tin vô tuyến hoặc dùng tia hồng ngoại vv… Vì vậy AVG đã có thể hoạt động linh hoạt trong các phân xưởng Đó
là những Robot di động và gọi là Robocar Một hướng phát triển quan trọng của
Trang 13Robocar là không di chuyển bằng các bánh xe mà di chuyển bằng chân, thích nghi với mọi địa hình
Robot đi được bằng chân tự leo bậc thang là một đối tượng đang rất được chú ý trong nghiên cứu Không những sử dụng trong công nghiệp hạt nhân, hay công nghiệp quốc phòng mà phát triển trong cả công nghiệp dân dụng thông thường
Robot ngày càng trỏ nên tinh khôn hơn
Trí khôn nhân tạo là một vấn đề rất được quan tâm nghiên cứu với các mục đích khác nhau Kỹ thuật robot cũng từng bước áp dụng các kết quả nghiên cứu
về trí khôn nhân tạo và đưa vào ứng dụng công nghiệp Trước hết là sử dụng các
hệ chuyên gia các hệ thị giác nhân tạo, mạng nơron, nhận biết giọng nói, vv…Cùng với những thành tựu trong nghiên cứu trí khôn nhân tạo Robot ngày càng có khả năng đảm nhận nhiều nguyên công trên dây chuyền sản xuất đòi hỏi
“nhìn được” (vison robot), robot “lắp ráp” ( robot assembly), robot “cảnh báo” (alarm robot) vv…
Để thông minh hóa robot bên cạnh việc lắp thêm các modul cảm biến “nội tín hiệu” và các modul cảm biến “ngoại tín hiệu” thì đồng thời có thể thông minh hoá robot bằng các chương trình phần mềm có khả năng tự thích nghi và tự xử lý các tình huống vv
Trang 14Như vậy bằng cách bổ sung các modul cảm biến và các modul phần mềm phù hợp thì có thể nâng cấp cải tiến thông minh hoá nhiều loại Robot Tuy nhiên bản thân các robot này phải có các cơ cấu chấp hành linh hoạt và chính xác Ngày nay có nhiều loại robot tông minh khôngnhững có thể làm việc trong các phân xưởng công nghiệp mà còn thao tác được ở bênngoài, trên các địa hình phức tạp như các robot vũ trụ (spce robot), robot tự hành (walking robot), robot cần cẩu (roborane), tạo dựng từ các modun robot song song vv…
II TÌNH HÌNH TIẾP CẬN VÀ ỨNG DỤNG ROBOT CÔNG NGHIỆP
Ở VIỆT NAM
Trong giai đoạn trước năm 1990 hầu như trong nước chưa du nhập và kỹ thuật robot, thậm chí chưa nhận được nhiều thông tin kỹ thuật về lĩnh vực này Tuy vậy, với mục tiêu tiếp cận kỹ thuật mới mẻ này, trong nước đã triển khai các
đề tài nghiên cứu khoa học cấp nhà nước Đè tài 58.01.03 trong giai đoạn 81-85
và đề tài 52B0.03.01 trong giai đoạn 86-89 Kết quả của những đề tài này không những đáp ứng được yêu cầu tiếp cận mà còn có những ứng dụng ban đầu vào kỹ thuật bảo hộ lao động và phục vụ công tác đào tạo cán bộ ở nước ta
Giai đoạn tiếp theo 1990 các ngành công nghiệp trong nước bắt đầu đổi mới Nhiều cơ sở đã nhập ngoại nhiều dây chuyền thiết bị mới Đặc biệt là ở một
số doanh nghiệp liên doanh với nước ngoài đã nhập một số loại robot phục vụ một số công việc sau đây:
- Tháo lắp các dụng cụ cho các trung tâm gia công hoặc các máy CNC
- Lắp ráp các linh kiện điện tử
- Tháo sản phẩm ở các máy ép nhựa tự động trong đó có loại thao tác phối hợp với hệ thống giám sát, điều khiển bằng camera
- Hàn vỏ xe ô tô
- Phun phủ các bề mặt
Tuy nhiên còn có hàng chục cơ sở trong nước lúc mua dây chuyền đã không mua các Robot trong danh mục các thiết bị của dây chuyền chào hàng Trong đó một số cơ sở đã nhận thấy phải có robot mới đảm bảo chất lượng sản
Trang 15phẩm của dây chuyền như trong thiết kế Vì vậy đã xuất hiện các nhu cầu cần thiết các Robot đó
Một sự kiện đáng quan tâm là từ tháng 4/98 nhà máy Rorze/Robotech đã bước vào hoạt động ở khu công nghiệp Nomura Hải Phòng Đây là nhà máy đầu tiên ở Việt Nam chế tạo và lắp ráp Robot Đó là loại Robot có cấu trúc rất đơn giản nhưng chính xác dùng trong sản xuất chất bán dẫn Nhà máy Rozre/Robotech có vốn đầu tư 46 triệu USD do Nhật Bản đầu tư
Trong những năm gần đây thì việc áp dụng các loại Robot vào các dây chuyền sản xuất ngày càng được sử dụng rộng rãi ở các doanh nghiệp Ví dụ như các loại Robot: Robot hàn, Robot phun sơn ở các công ty sản xuất và lắp ráp ô
tô Đặc biệt là ở các công ty sản xuất và lắp ráp các linh kiện điện tử Đây là công việc đòi hỏi chính xác cao, và thường lặp lại nên dễ gây mệt mỏi cho người làm vì vậy sử dụng Robot ở các công ty này là rất phổ biến Ngoài ra hiện nay ở các phân xưởng sản xuất sử dụng rất nhiều loại xe Robocar hoặc ở các công việc trong môi trường độc hại, thường xuyên tiếp xúc với hoá chất độc hại thì cũng sử dụng Robot làm thay con người
Hiện nay ở một số trường Đại Học đã thành lập bộ môn chuyên ngành về Robot và đang rất được sự quan tâm của nhiều sinh viên mà tiêu biểu là các trường Đại Học Bách Khoa Hà Nội, Bách Khoa TPHCM, Đại Học Sư Phạm Kỹ Thuật TPHCM… Đặc biệt từ năm 2002 hàng năm VTV3 tổ chức cuộc thi sáng tạo Robot châu Á Thái Bình Dương Đây là sân chơi đã được rất nhiều sinh viên của các trường Đại Học kỹ thuật hưởng ứng tham gia Hiện nay tại trường Đại Học Nha Trang đã có bộ môn Cơ Điện Tử Tuy nhiên do mới thành lập nên môn học Robot chưa có nhiều điều kiện để phát triển và chưa có nhiều sinh viên tìm hiểu về lĩnh vực mới này Đây là đề tài đầu tiên nghiên cứu về lĩnh vực này, nên trong quá trình thực hiện còn gặp nhiều khó khăn
Trang 16
CHƯƠNG II
Hiện nay có rất nhiều họ vi điều khiển như 8051, AVR, 8088, vv Ở đề tài tôi dùng họ vi điều khiển 8051 cùng với các IC chuyên dùng để có thể giao tiếp với bên ngoài, đáp ứng đầy đủ các yêu của đề tài đặt ra Họ 8051 được chọn vì những lý do sau đây:
* Vi điều khiển 8051 trên thị trường phổ biến và giá thành chấp nhận được
* Các bus địa chỉ và các bus dữ liệu có thể mở rộng khả năng chuyển đổi
dữ kliệu cho nhau linh hoạt nhờ lập trình phần mềm
* Tính linh động của lập trình giúp cho việc mở rộng các ứng dụng
I GIỚI THIỆU
Bộ vi điều khiển viết tắt là: Micro_controller, là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian hoặc tiến hành đóng mở một cơ cấu nào đó Các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển , điều khiển hoạt động của TV, máy giặt, đầu lọc Laser, điện thoại, lò vi ba,…
Trong hệ thống sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuyền tự động Các hệ thống càng “thông minh” thì vai trò của hệ
vi điều khiển càng quan trọng
II KHẢO SÁT HỌ VI ĐIỀU KHIỂN 8051
1 Cấu trúc
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặc điểm:
- 4 byte ROM ( được lập trình bởi nhà sản xuất chí có ở 8051)
- 4 Port In/ Out 8 bit
- Hai bộ định thời gian 16 bit
- Giao tiếp nối tiếp
- 64 KB không gian bộ nhớ chương trình mở rộng
Trang 17- 64 KB không gian bộ nhớ dữ liệu mở rộng
- Một bộ xử lý luận lý ( thao tác trên các bit đơn)
- 210 bit được địa chỉ hoá
- Bộ nhân/ chia 4µs
Phần chính của vbi điều khiển 8051/8031 là bộ xử lý trung tâm (CPU: Central Processing Unit) bao gồm:
Thanh ghi tích luỹ A
Thanh ghi tích luỹ phụ B, dùng cho phép nhân và chia
Đơn vị logic học ( ALU: Arithmic Logical Unit)
Từ trạng thái chương trình (PSW: Prorgam Status Word)
Bốn băng thanh ghi
Con trỏ ngăn xếp
Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic
Đơn vị xử lý trung tâm nhập trực tiếp xung từ bộ giao động, ngoài ra còn
có khả năng đưa một tín hiệu giữ nhịp từ bên ngoài
Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt
ở bên trong Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định thời gian hoặc cũng có thể là giao diện nối tiếp
2 Chức năng các chân vi điều khiển
Trang 18a Port0: là port có 2 chức năng ở trên chân từ 32 đến 39 trong các thiết kế
cỡ nhỏ (không dùng bộ nhớ mở rộng) có 2 chức năng như các đường I/O Đối với các thiết kế cỡ lớn ( với bộ nhớ mở rộng) nó được kết hợp kênh giữa với các bus
b Port1: là một port I/O trên các chân 1_8 Các chân được ký hiệu P1.0, P1.1, P1.2… có thể dùng cho các thiết bị ngoài nếu cần Port1 không có chức năng khác, vì vậy chúng ta chỉ được dùng trong giao tiếp với các thiết bị ngoài
c Port2: là một port công dụng kép trên các chân 21_28 được dùng như các đường xuất nhập hoặc là các byte cao của bus địa chỉ đối với các thiết kế dùng
bộ nhớ mở rộng
d Port3: là một port công dụng kép trên các chân 10_17 Các chân của port này có nhièu chức năng, các công dụng chuyển đổi có liên hệ với các đặc tín đặc biệt của 8051 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu phát cho port nối tiếp
Trang 19P3.2 INTO Ngắt 0 bên ngoài
P3.3 INT1 Ngắt 1 bên ngoài
8051 vận hành với nguồn đơn +5V Vcc được nối và chân 40 và Vss (GND) được nối vào chân 20
Bộ nhớ bên trong bao gồm ROM (8501) và RAM trên chip, RAM trên chip bao gồm nhiều phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hoá từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt
RAM bên 8051/8031 được chia giữa các bank thanh ghi (00H_1FH), RAM địa chỉ hoá từng bit (20H_2FH), RAM đa dụng (30H_7FH) và các thanh ghi chức năng đặc biệt (80H_FFH)
III TẬP LỆNH CỦA 8051/8031
Tập lệnh 8051/8031 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2byte và 24 lệnh 3 byte
1 Các chế độ đánh địa chỉ
Trong tập lệnh có 8 chế độ đánh địa chỉ:
1.1 Thanh ghi địa chỉ
8051/8031 có 4 bank thanh ghi, mỗi bank có 8 thanh ghi đánh số từ R0 đến R7 Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực Muốn chọn bank thanh ghi nào ta chỉ cần gán các bit nhị phân thích hợp vào RSI(PSW.4) và RS0(PSW.3) trong thanh ghi trạng thái chương trình (PSW)
Ngoài ra, một số thanh ghi đặc biệt như thanh ghi tích luỹ, con trỏ dữ liệu
… cũng được xác định trong các lệnh nên không cần các bit địa chỉ Trong các lệnh này thanh ghi tích luỹ được xác định là “A”, con trỏ dữ liệu là “DPTR” thanh đếm chương trình là “PC”, cờ nhớ “C”, cặp thanh ghi tích luỹ B là “AB”
Trang 201.3 Địa chỉ gián tiếp
R0 và R1 được dùng để chứa địa chỉ ô nhớ mà lệnh tác động đến Người ta quy ước dùng dấu @ trước R0 hoặc R1
1.4 Địa chỉ tức thời
Người ta dùng dấu # trước các toán hạng tức thời Các hạng toán đó có thể
là một hằng số, một ký tự hay một biểu thức toán học… Trường hợp dịch sẽ tự động tính toán và thay thế dữ liệu trực tiếp vào mã lệnh
1.5 Địa chỉ tương đối
Địa chỉ tương đối được dùng trong các điểm nhảy 8051/8031 dùng giá trị 8 bit có dấu để cộng thêm vào thanh ghi đếm chương trình (PC) Tầm nhảy của lệnh này trong khoảng từ -128 đến 127 ô nhớ Trước khi cộng, thanh ghi PC sẽ tăng đến địa chỉ theo sau lệnh nhảy rồi tính toán địa chỉ offset cần thiết để nhảy đến địa chỉ yêu cầu Như vậy địa chỉ mới là địa chỉ tương đối so với lệnh kế tiếp chứ không phải là bản thân lệnh nhảy Thường lệnh này có liên quan đến nhãn được định nghĩa trước
1.6 Địa chỉ dài
Địa chỉ chỉ dùng cho lệnh LCALL và LJIMP Các lệnh này chiếm 3 byte và dùng 2 byte sau ( byte 2 và byte3) để định địa chỉ đích của lệnh (16 bit) Ưu điểm của lệnh này có thể có thể sử dụng trong toàn bộ vùng nhớ 64 Kbyte Tuy nhiên, lệnh này chiếm nhiều byte và lệ thuộc vào vị trí vùng nhớ
1.7 Địa chỉ tham chiếu
Địa chỉ tham chiếu dùng một thanh ghi cơ bản( hoặc thanh ghi đếm chương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ offset (trong thanh ghi
Trang 21tích luỹ A) để tạo địa chỉ được tác động cho các lệnh JMP hoặc MOVC Các bảng nhảy và bảng tìm kiếm dễ dàng được tạo ra để sử dụng địa chỉ tham chiếu
- 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ể dùng RAM dữ liệu trong (0_127) hoặc các thanh ghi chức năng đặc biệt
@Ri: 8 bit vùng RAM dữ liệu bên 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ứa trong câu lệnh
#Data16: 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à SJMP
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 có chức năng đặc biệt
3 Nhóm lệnh xử lý số liệu
ADD A,Rn (1 byte, 1 chu trình máy): 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 A
ADD A,#data (2,1): Cộng giữ liệu tức thời vào A
Trang 22ADD A,Rn (1,1): Cộng thanh ghi và cờ nhớ vào A
ADD 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ớ
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ù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 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
ANL A,#data (2,1): AND nội dung thanh ghi 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 A một dữ liệu tức thời
Trang 23ANL 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
ORL 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 ORLC,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
XRLA,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 data,#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 một bit trực tiếp
CLR A (1,1): Xoá thanh ghi A
CLR C (1,1): Xoá 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/2 byte)
Trang 245 Nhóm lệnh truyề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
MOV 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 tức thời 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 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 dữ liệu thanh 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 một dữ liệu tức thời vào dữ liệu gián tiếp MOV DPTR,#data (3,2):Chuyển 1 bít hằng 16 vào thanh con trỏ dữ liệu MOV C, bit (2,1):Chuyển 1 bít trực tiếp vào cờ nhớ
MOV bit, C (2,2): Chuyển cờ nhớ vào 1 bít trực tiếp
MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là
@A+DPTR vào thanh ghi A
MOV A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ
@A+PC thanh ghi A
MOV A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh
Trang 25MOVX 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 dữ liệu 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 thanh ghi Rn và thanh ghi A
XCH A,data (2,1): Trao đổi giũa thanh ghi A và 1 dữ liệu trực ti ếp
XCH A, @Ri (1,1): Trao đổi giữa thanh ghi A và dữ liệu gián tiếp
6 Nhóm lệnh truyền điều
ACALL addr11 (2,2): Gọi chương trình con dùng địa chỉ trực tiếp
LCALL addr16 (3,2): Gọi chương trình con dùng địa chỉ dài
RET (1,2): Trở về từ chương trình con
RETI (1,2): Trở về từ lệnh gọi ngắt
AJMP addr11 (2,2): Nhảy tuyệt đối
LJMP addr16 (3,3): 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=1
JC rel (2,2) : Nhảy nếu cờ nhớ được dặt
JNC rel (2,2): Nhảy nếu cờ nhớ không được đặt
JB bit,rel (3,2): Nhảy tương đương đối nếu bít trực tiếp được đặt
JNB bit,rel (3,2): Nhảy tương đối nếu bít trực tiêps không được đặt JBC bit,rel (3,2): Nhảy tương đối nếu bít trực tiếp được đặt, rồi xoá bit CJNE A,data,rel (3,2): So sánh dữ liệu tức thời với Avà nhảy nếu không bằng
Trang 26CJNE 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 @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
IV HOẠT ĐỘNG TIMER CỦA 8051
1 Giới thiệu
Bộ định thời của Timer là 1 chuỗi các Flip Flop được chia làm 2, nó nhận tín hiệu vào là 1 nguồn xung clock, xung clock đưa vào FlipFlop thứ nhất là xung clock của FlipFlop thứ 2 mà nó cũng chia tần số này cho 2 và cứ tiếp tục
Vì mỗi tầng kế tiếp chia cho 2, nên Timer tầng phải chia cho tần số clock ngõ vào cho 2n Ngõ ra của tầng cuối cùng là clock của FlipFop tràn Timer hoặc
cờ mà nó kiểm tra bằng phần mềm hoặc sinh ra ngắt.Gía trị nhị phân trong các
FF của bộ Timer có thể được nghỉ như đếm xung clock hoặc đếm các sự kiện quan trọng bởi vì Timer đựơc khởi động.Ví dụ Timer 16 bit có thể đếm từ FFFFH sang 0000H
Các Timer được ứng dụng thực tế cho các hoạt động định hướng 8051 có
bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động Các Timer dùng để đếm giờ, đếm các sự kiện cần thiết và sinh ra tốc độ của tốc độ Baud bởi sự gắn liền Port nối tiếp
Mỗi sự định thời là 1 Timer 16 bit,do đó tầng cuối cùng là tầng thứ 16 sẽ chia tần số clock vào cho 216 =65536
Trong các ứng dụng định thời, 1 Timer được lập trình để tràn ở 1 khoảng thời gian đều đặn và được set cờ tràn Timer Cờ được dùng để đồng bộ chương trình để thực hiện 1 hoạt động như việc đưa tới 1 tầng các ngõ vào hoặc gửi dữ liệu ra các ngõ ra.Các ứng dụng khác có sử dụng việc ghi gì đều đều của Timer
để đo thời gian đãtrôi qua 2 trạng thái (ví dụ đo độ rộng xung) Việc đếm một sự
Trang 27kiện được dùng để xác định số lần xuất hiện của sự kiện đó, tức thờii gian trôi qua giữa các sự kiện
2 THANH GHI MODE TIMER MODE
Thanh ghi mode gồm hai nhóm 4 bit: 4 bit thấp đặt mode hoạt động cho Timer0 và 4 bit cao đặt mode hoạt động cho Timer 1 8 bit của thanh ghi TMOD được tóm tắt như bảng sau:
C/T = 0 : Ghi giờ đều đặn
Hai bit M0 và M1 để chọn chế độ hoạt động của 2 Timer
Trang 28M1 M0 M
ODE
DESCRIPTION
TMOD không có bit định vị, nó thường được LOAD 1 lần bởi phần mềm ở đầu chương trình để khởi động mode Timer Sau đó sự định giờ có thể dừng lại, đựơc khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt của Timer khác
3 THANH GHI ĐIỀU KHIỂN TIMER TCON (TIMER CONTROL REGISTER)
Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1 Thanh ghi TCON có bit định vị Hoạt động của từng bit được tóm tắt như sau:
Cờ tràn Timer 1 Đặt bởi phần cứng khi tràn, xoá bằng phần mềm hoặc khi xử lý ngắt quãng
4 CÁC MODE VÀ CỜ TRÀN(TIMER MODE AND OVERFLOW)
Trang 298051 có 2 Timer là Timer 0 và Timer 1.Ta dùng ký hiệu TLx và THX để chỉ 2 thanh ghi byte thấp và byte cao của Timer 0 và Timer 1
Mỗi Timer có 4 chế độ hoạt động nhưng trong thực tế người ta thường dùng
2 chế độ là
4.1 Chế độ 16 bit (chế độ 1)
Tương ứng M1=0, M0 = 1 Xung clock được dùng kết hợp với các thanh ghi cao và thấp (TLx, TLx) Khi xung clock được nhận vào, bộ đếm Timer tăng lên 0000H, 0001H, 0002H,… , và một sự tràn sẽ xuất hiện khi có sự chuyển bộ đếm Timer từ FFFFH sang 0000H và set cờ tràn Timer, sau đó Timer đếm tiếp
Cờ tràn là bit TFx trong thanh ghi T.CON mà nó sẽ được đọc hoặc được ghi bởi phần mềm
Bit trọng số lớn nhất (MSB) của giá trị trong thanh ghi của Timer là bit 7
THx và bit trọng số nhỏ nhất (LSB) là bit không của TLx.Bit LSB đổi trạng thái
ở tần số clock và được chia cho 216 =65536
Các thanh ghi Timer THx và TLx có thể được đọc hoặc được ghi bởi phần mềm
4.2 Chế độ 8 tự động nạp lại (chế độ 2)
Ở chế độ này thì M0 = 0, M1 =1
Mode 2 là mode tự động nạp lại 8 bit, byte thấp TLxcủa Timer hoạt động như một Timer 8 bit trong khi byte cao THxcủa Timer giữ giá trị Reload Khi bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà cả giá trị trong
THxcung được nạp vào TLx: Bộ đếm tiếp tục từ gía trị này lên đến sự chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục Mode này phù hợp bởi vì các sự tràn xuất hiện cụ thể mà mỗi lúc thanh ghi TMOD và THxđược khởi động
Trang 30V CÁC NGUỒN XUNG CLOCK (CLOCK SOURCES)
Có 2 nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự đếm các sự kiện bên ngoài Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer được khởi động
1 Sự bấm giờ bên trong (Interval Timing)
Nếu bit C/T = 0 thì hoạt động của Timer liên tục được chọn vào bộ Timer được ghi giờ từ bộ dao động trên chíp Một bộ được chia 12 được thêm vào để giảm tần số clock tới 1 giá trị thích hợp hầu hết các ứng dụng Các thanh ghi
THx và TLx tăng tốc độ 1/12 lần tần số dao động trên chip Nếu dùng thạch anh 12MHz thì sẽ đưa đến tốc độ clock 1MHz
Các sự tràn Timer sinh ra sau 1 con số cố định của những xung clock, nó phụ thuộc vào giá trị được khởi tạo được LOAD vào các thanh ghi THx và TLx
2 Sự đếm các sự kiện ( Event counting)
Nếu bit C/T = 1 thì bộ đếm Timer được ghi giờ từ bộ nguồn bên ngoài trong nhiều ứng dụng, bộ nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trên
sự xảy ra sự kiện Sự định giờ là sự đếm sự kiện Con số sự kiện được xác định trong phần mềm bởi việc đọc các thanh ghi Timer TLx/THx, bởi vì các giá trị
16 bit trong các thanh ghi này tăng lên cho mỗi sự kiện
Trang 31Nguồn xung clock bên ngoài được đến chân P3.4 là ngõ nhập của xung clock bởi Timer 0 (T0) và chân P3.5 là ngõ nhập của xung clock bởi Timer 1(T1)
Trong các ứng dụng đếm thanh ghi Timer được tăng trong sự đáp ứng của
sự chuyển trạng thái từ 1 sang 0 của ngõ nhập Tx Tần số bên ngoài lớn nhất là 500KHz nếu dao động thạch anh 12 MHz
3 Sự bắt đầu, sự kết thúc và sự điều khiển các thanh ghi Timer
Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bằng phần mềm để bắt đầu hoặc kết thúc các Timer Để bắt đầu các Timer ta set các bit
TRx và để kết thúc các Timer ta clr TRx Ví dụ Timer 0 được bắt đầu bởi lệnh SETB TR0 và được kết thúc bởi lệnh CLR TR0 (bit GATE =0) Bit TRx bị xoá sau khi resethệ thống do đó các Timer bị cấm bằng sự mặc định
Thêm phương pháp nữa để điều khiển các Timer là dùng các bit GATE trong các thanh ghi TMOD và ngõ nhập bên ngoài INTx Điều này dùng để đo
độ rộng xung Gửixung đưa vào chân INT0 ta khởi động Timer 0 cho mode 1 là mode Timer 16 bit với TL0/TH0 =0000H, GATE = 1, TR0 =1 Như vậy khi INT0 =1 thì Timer “được mở cổng” và ghi giờ với tốc độ của tần số 1MHz Khi INT0 xuống thấp Timer “đóng cổng” và khoảng thời gian của xung tính bằng μs
là sự đếm được trong thanh ghi TL0/TH0
4 Sự khởi động và sự truy xuất các thanh ghi Timer
Các Timer đựoc khởi động 1 lần ở đầu chương trình để đặt mode hoạt động cho chúng Sau đó trong thân chương trình các Timer được bắt đầu , được xoá, các thanh ghi Timer được đọc và được cập nhật… theo yêu cầu của từng ứng dụng cụ thể
Mode Timer TMOD là thanh ghi đầu tiên được khởi gán, bởi vì đặt mode hoạt động cho các Timer Ví dụ khởi động cho Timer 1 hoạt động ở mode 1 (mode Timer 16 bit) và được ghi giờ bằng bộ dao động trên chip ta dùng lệnh : MOV TMOD, #00001000B Trong lệnh này M1 =0, M0 =1 để vào mode 1 và
Trang 32Timer 0 Sau lệnh trên Timer vẫn chưa đếm giờ, nó chỉ đếm giờ khi set bit điều khiển chạy TR1 của nó
Nếu ta không khởi gán các giá trị đầu cho các thanh ghi TLx/THx thì Timer
sẽ bắt đầu từ 0000H và khi tràn từ FFFFH sang 0000H nó sẽ bắt đầu tràn TFx rồi tiếp tục đếm từ 0000H lên…
Nếu ta khởi gán giá trị đầu cho THx/TLx, thì Timer sẽ bắt đầu đếm từ giá trị khỏi gán đó lên nhưng khi tràn từ FFFFH sang 0000H thì lại đếm từ 0000H lên
Chú ý cờ tràn TFx tự động được set bởi phần cứng sau mỗi sự tràn và sẽ được xoá bởi phần mềm Vì vậy chúng ta có thể lập trình chờ sau mỗi lần tràn ta
sẽ xoá cờ TFx và quay vòng lặp khởi gán cho TLx /TLx để Timer luôn luôn bắt đầu đếm từ giá trị khởi gán theo mong muốn của ta
Đặc biệt những sự khởi gán nhỏ hơn 256μs, ta sẽ gọi mode Timer tự động nạp lại 8 bit của mode 2 Sau khi khởi gán giá trị đầu vào THx, khi set bit TRxthì Timer bắt đầu đếm từ giá trị khởi gán và khi tràn từ FFH sang 00H trong
TLx, cờ TRx tự động được set đồng thời giá trị khởi gán mà ta khởi gán THx tự động nạp vào TLx và Timer lại đếm từ giá trị khởi gán này lên Nói cách khác sau mỗi lần tràn ta không cần khởi gán lại giá trị cho các thanh ghi của Timer mà chúng vẫn đếm lại được từ giá trị ban đầu
VI HOẠT ĐỘNG CỦA PORT NỐI TIẾP 8051
1.Gíơi thiệu
Port nối tiếp của 8051 có thể hoạt động trong các mode riêng biệt trên phạm
vi cho phép của tần số Chức năng chủ yếu của Port nối tiếp là thực hiện sự chuyển đổi song song thành nối tiếp cho dữ liệu ra và chuyển đổi nối tiếp thành song song của dữ liệu đầu vào
Phần cứng truy xuất tới Port nối tiếp qua các chân TXD (P3.1) và RXD (P3.0)
Trang 33Port nối tiếp tham dự hoạt động đầy đủ (sự phát và sự thu cùng lúc), và thu vào bộ đếm mà nó cho phép 1 ký tự được nhận vào và cất vào bộ đệm trong khi
ký tự thứ 2 được nhận vào Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ 2 được nhận vào hoàn toàn thì dữ liệu không bị mất
Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy
xuất đến Port nối tiếp là SBUF và SCON Sự đệm Port nối tiếp SBUF ở địa chỉ (99H) là 2 sự đệm thật sự: Ghi lên SBUF LOAD dữ liệu phát và đọc SBUF truy xuất dữ liệu đã nhận Đây là 2 thanh ghi riêng biệt và rõ rệt, mà thanh ghi phát chỉ ghi còn thanh ghi thu chỉ đọc
Thanh ghi điều khiển Pport nối tiếp SCON (98H) là thanh ghi được định vị bit bao gồm các trạng thái và các bit điều khiển Các bit điều khiển set mode của Port nối tiếp, còn các bit trạng thái cho biết sự kết thúc việc thu phát 1 ký tự Các bit trạng thái có thể được kiểm tra trong phần mềm hoặc lập trình sinh ra ngắt Tần số hoạt động của Port nối tiếp hoặc tốc độ BAUD có thể được lấy từ dao động trên chip 8051 hoặc thay đổi Nếu một tốc độ BAUD thay đổi được dùng, thì Timer cung cấp một tốc độ Baud ghi giờ và phải được lập trình phù hợp
Mode hoạt động của Port nối tiếp của 8051 được set bởi việc ghi lên thanh ghi mode của Port nối tiếp SCON ở địa chỉ 99H Bảng tóm tắt thanh ghi điều khiển Port nối tiếp SCON như sau:
Trang 34
Bảng các chế độ hoạt động của Port nối tiếp
Cờ ngắt thu RI và phát TI trong thanh ghi SCON vận hành 1 rơle quan trọng sự truyền nối tiếp 8051 Cả 2 bit đều được set bởi phần cứng nhưng phải được xoá bằng phần mềm
Điển hình là RI được set ở cuối sự thu ký tự và cho biết: “thanh ghi đệm thu
đã đầy” Điều kiện này có thể kiểm tra trong phần mềm hoặc có thể lập trình sinh
ra sự ngắt Nếu phần mềm muốn nhập một ký tự từ một thiết bị đã được kết nối tới Port nối tiếp, thì nó phải chờ đến khi RI được set,sau khi xoá RI và đọc ký tự
từ SBUF
TI được set ở cuối sự phát ký tự và cho biết “thanh ghi đệm của sự phát đã rỗng” Nếu phần mềm múò gửi 1 ký tự đến một thiết bị được nối đến Port nối tiếp, trước tiên nó phải kiểm tra xem Port nối tiếp đã sẵn sàng chưa
Nếu ký tự trước đã được gửi đi, thì nó phải chờ cho đến khi sự phát đi hoàn thành.Một việc quan trọng truyền thông nối tiếp là ta phải tạo tốc độ Baud Thường thì chúng ta dùng Timer 1 để tạo tốc độ Baud
Bảng sau sẽ cho chúng ta các giá trị Baud thường dùng:
Tốc độ Baud Tần số thạch anh SMOD TH1 Tốc độ thực tế Sai số
Trang 352400 11.059MHz 0 -12(F4H) 2400 0
1200 11.059MHz 0 -12(E8H) 1200 0
VII HOẠT ĐỘNG NGẮT CỦA (INTERRUPT) CỦA 8051
Trong nhiều ứng dụng đòi hỏi ta phải dùng phải ngắt mà không dùng Timer bởi vì nếu dùng Timer thì ta mất thời gian để cờ tràn Timer TFx được set mới xử
lý tiếp chương trình Do đó ta không có thời gian để làm các việc quan trọng khác mà ứng dụng đòi hỏi Đây là chương trình rất quan trọng của 8051
1 Gíơi thiệu
Interrupt là một sự cố điều kiện mà nó gây ra sự ngưng lại tạm thời của chương trình để phục vụ một chương trình khác Các Interrupt vận hành một Relay rất quan trọng trong thiết bị và cung cấp đầy đủ các ứng dụng vi điều khiển Chúng cho phép 1 hệ thống đáp ứng bộ đến sự kiện quan trọng và giải quyết sự kiện đó trong khi chương trình khác đang thực thi Một hệ thống được lái bởi Interrupt cho một kỹ xảo làm nhiều công việc cùng một lúc Tất nhiên CPU không thể thực hiện nhiều lệnh cùng một lúc, nhưng nó có thể tạm treo việc thực thi của chương trình để thực thi chương trình khác và sau đó quay trở lại
chương trình chính
Khi chương trình chính đang thực thi mà có một sự ngắt xảy ra thì chương trình chính ngưng thực thi và rẽ nhánh đến thủ tục phục vụ ngắt ISR ISR thực thi để thực hiện hoạt động và kết thúc với lệnh “trở lại từ sự ngắt”: Chương trình tiếp tục nơi mà nó dừng lại
2 Tổ chức Interrupt của 8051
8051 cung cấp 5 nguồn ngắt, 2 ngắt ngoài, 2 sự ngắt Timer, 1 ngắt Port nối tiếp Tất cả các Interrupt bị mất tác dụng bởi sự mặc định sau khi reset hệ thống
và được cho phép cá biệt bởi phần mềm
Trong trường hợp có 2 hoặc nhiều hơn sự ngắt xảy ra đồng thời hoặc một
sự ngắt đang được phục vụ mà xuất hiện một ngắt khác, thì sẽ có 2 cách thực hiện sự ngắt là sự kiểm tra liên tiếp và sự ưu tiên cấp 2
Trang 362.1 Sự cho phép ngắt và sự cấm ngắt
Mỗi nguồn Interrupt được cho phép riêng biệt hoặc sự cấm riêng biệt qua
thanh ghi chức năng đặc biệt có bit định vị IE (Interrupt Enable) tại địa chỉ
0A8H Cũng như sự cá biệt cho các bit của mỗi nguồn ngắt có 1 bit cho phép
(hoặc cấm ) chung mà nó được xoá để cấm tất cả các Interrupt hoặc được để cho
phép chung các Interrupt
Hoạt động của từng bit trong thanh ghi cho phép ngắt IE được tóm tắt trong
bảng sau:
Program excution with interrupt
Trong đó ký hiệu * cho biết ngắt chương trình chính để thực thi chương
trình con trong trình phục vụ ngắt ISR Còn ký hiệu ** cho biết quay trở lại
chương trình chính thực thi tiếp kết thúc chương trình con trong ISR
Trang 37IE0 EX0 A8H Cho phép ngắt ngoài Exxternal 0
Hai bit phải set cho một sự ngắt nào đó : Là bit cho phép riêng và bit cho phép chung Ví dụ để cho phép ngắt Timer 1 ta có thể thực hiện trên bit: SETB ET1 và SETB EA hoặc sự thực hiện trên byte: MOV IE, #10001000B Cả 2 phương pháp này đều có kết quả chính xác sau khi reset hệ thống, nhưng kết quả khác nhau nếu thanh ghi IE được ghi trên tuyến ở giữa chương trình
Giải pháp thứ nhất không có tác dụng trên các bit còn lại trong thanh ghi IE, còn giải pháp thứ 2 xoá các bit còn lại trong thanh ghi IE Ở đầu chương trình ta nên khởi gán IE với lệnh MOV BYTE, nhưng sự cho phép ngắt và sự cấm ngắt trên tuyến trong 1 chương trình, dùng các lệnh SET BIT và CLR BIT để tránh kết quả phụ với các bit khác trong thanh ghi IE
2.2 Sự ưu tiên ngắt (Interrupt Priority)
Mỗi nguồn ngắt được lập trình cá biệt đến một trong 2 mức ưư tiên qua thanh ghi chức năng đặc biệt có định vị IP (Interrupt Priority) tại địa chỉ 0B8H Hoạt động của từng bit trong thanh ghi IP được tóm tắt trong bảng sau:
BBH Ưu tiên cho phép ngắt Timer 1
Trang 38sự ngắt ở mức ưu tiên thấp hơn sự mặc định.Ý tưởng “các sự ưu tiên” cho phép 1 thủ tục phục vụ ngắt ISR mới được ngắt nếu sự ngắt mới này ưu tiên cao hơn sự ngắt hiện hành đang phục vụ
Trên 8051 có 2 mức ưu tiên cao và 2 mức ưu tiên thấp Nếu một thủ tục phục vụ ngắt có mức ưu tiên thấp đang thực thi mà có một ngắt có mức ưu tiên cao hơn xuất hiện, thì thủ tục phục vụ ngắt đó bị ngắt để thực thi thủ tục ngắt mới Ngược lại thủ tục phục vụ ngắt có mức ưu tiên cao hơn đang thực thi mà có một ngắt ưu tiên thấp hơn xuất hiện, thì nó không bị ngắt mà phải chờ thực thi xong thủ tục phục vụ cao hơn mới nhảy tới thủ tục phục vụ ngắt thấp
Chương trình thực thi ở mức cơ bản và không kết hợp với sự ngắt nào, nó
có thể luôn luôn bị ngắt bất chấp sự ưu tiên ngắt ở mức cao hay thấp Nếu 2 sự ngắt của các ưu tiên khác nhau xuất hiện đồng thời, sự ngắt ưu tiên cao hơn sẽ đựơc phục đầu tiên
2.3 Sự kiểm tra vòng quét liên tiếp
Nếu 2 sự ngắt có cùng mức ưu tiên cùng xuất hiện đồng thời, thì sự kiểm tra vòng quét sẽ ấn định sự ngắt nào được thực thi trước Sự kiểm tra vòng quét liên tiếp ưu tiên từ trên xuống dưới theo thứ tự là: External 0, Timer 0, External 1, Timer1, SERIAL Port, Timer 2
Hình trên minh hoạ 5 nguồn ngắt của 8051, các kỹ xảo cho phép ngắt
riêng và chung, kiểm tra vòng quát liên tiếp và mức ưu tiên Trạng thái của tất cả các nguồn ngắt có hiệu lực thông qua các bit cờ tương ứng trong các thanh ghi đặc biệt Nếu có sự ngắt nào bị cấm thì sự ngắt đó không xuất hiện nhưng phần mềm vẫn kiểm tra cờ ngắt
Trang 39Sự ngắt của Port nối tiếp đưa đến cổng OR logic của sự ngắt thu RI (Receive Interrupt) hoặc sự ngắt phát TI (Transmit Interrupt) Tương tự sự ngắt của Port nối tiếp, các sự ngắt của Timer 2 có thể được sinh ra bởi cờ tràn TF2 hoặc cờ nhập ngoài EXF2 (External Input Flag)
2.4 Việc xử lý các sự ngắt (processing Interrupt)
Khi một sự ngắt xuất hiện và được chấp nhận bởi CPU thì chương trình chính bị ngắt Các hoạt động sau đây xuất hiện
• Lệnh hiện hành và kết thúc thực thi
• Bộ đếm chương trình PC được cất giữ vào Stack
Trang 40• Trạng thái ngắt hiện hành được cất giữ vào bên trong
• Những sự ngắt bị ngăn lại tại mức ngắt
Bộ đếm chương trình PC được LOAD với địa chỉ vectơ của thủ tục phục vụ ngắt ISR
Thủ tục phục vụ ngắt ISR được thực thi
Thủ tục phục vụ ngắt ISR thực thi và đưa hạt động vào đáp ứng ngắt, thủ tục phục vụ ngắt ISR kết thúc với lệnh RETTI (quay trở về chương trình chính từ Stack) Điều này khôi phục lại giá trị cũ của bộ đếm chương trình từ Stack và hoàn toàn dừng lại ở trạng thái cũ Sự thực thi chương trình chính tiếp tục ở nơi
mà nó ngừng lại
2.5 Các vectơ ngắt (Interrupt vectors)
Khi có một sự ngắt được nhận giá trị được LOAD vào PC được gọi bởi
vectơ ngắt Nó là địa chỉ của sự khởi động thủ tục phục vụngắt ISR của nguồn ngắt Các vectơ được cho trong bảng sau:
Vectơ reset hệ thống RST tại địa chỉ 0000H được tính trong bảng này, bởi
vì trong ý nghĩa này nó giống như 1 Interupt: nó ngắt chương trình và LOAD vào PC với giá trị mới
Khi đưa một vectơ ngắt đến sự ngắt thì cờ của nó gây ra sự ngắt, tự