THIẾT KẾ CÁNH TAY ROBOT GẮP KHỐI DÙNG VI ĐIỀU KHIỂN PIC 16F877A
Trang 1KHOA ĐIỆN- ĐIỆN TỬ ĐIỀU KHIỂN TỰ ĐỘNG
Ks BÙI THANH HUYỀN Lớp : BT03TDH
TP.HOÀ CHÍ MINH, Tháng 5/2008
Trang 2TRƯỜNG ĐH BÁCH KHOA oOo
oOo
Số: ……./BKĐT KHOA : ĐIỆN-DIỆN TỬ NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG HỌ VÀ TÊN :DƯƠNG BÌNH THẠNH MSSV: 403T0254 NGÀNH : ĐIỀU KHIỂN TỰ ĐỘNG LỚP :BT03TĐH 1 Đầu đề luận án : THIẾT KẾ MÔ HÌNH CÁNH TAY MÁY ROBOT SÁU BẬC TỰ DO DÙNG VI ĐIỀU KHIỂN PIC 2 Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu):
3 Ngày giao nhiệm vụ luận án : ………
4 Ngày hoàn thành nhiệm vụ : ………
5 Họ tên người hướng dẫn: Phần hướng dẫn: 1/ TS Hoàng Minh Trí Toàn phần 2/ ………… …………
3/ ………… …………
Nội dung và yêu cầu của LATN đã được thông qua bộ môn Ngày … tháng … năm 2008 Chủ nhiệm bộ môn Người hướng dẫn chính (ký tên và ghi rõ họ tên) (ký tên và ghi rõ họ tên) TS NGUYỄN ĐỨC THÀNH TS HOÀNG MINH TRÍ PHẦN DÀNH CHO KHOA, BỘ MÔN Người duyệt(chấm sơ bộ):………
Đơn vị: ………
Trang 3NAM
KHOA ĐIỆN- ĐIỆN TỬ ĐỘC LẬP- TỰ DO- HẠNH PHÚC
oOo oOo
Ngày ….tháng … năm 2008 PHIẾU CHẤM BẢO VỆ LUẬN VĂN (Dành cho người hướng dẫn / phản biện) 1 Họ và tên SV: ………
MSSV:……… Ngành (chuyênngành):………
2 Đề tài:………
3 Họ tên người hướng dẫn / phản biện:………
4 Tổng quát về bản thuyết minh: Số trang :……… Số chương: ………
Số bản số liệu:……… Số hình vẽ:………
Số tài liệu tham khảo:……… Phần mềm tính Toán:………
Hiện vật(sản phẩm):………
5 Tổng quát về các bản vẽ -Số bản vẽ: bản A1 bảnA2 khổ khác -Số bản vẽ tay Số bản vẽ trên máy tính 6 Những ưu điểm chính của LVTN :………
7 Những thiếu sót chính của LVTN:………
……… ………
8 Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ không được bảo vệ 9 Câu hỏi SV phải trả lời trước hội đồng(CBPB ra ít nhất 02 câu): a ………
b ………
c ………
10 Đánh giá chung(bằng chữ: giỏi, khá ,TB): Đi ểm: ……./10
Ký tên (ghi rõ họ tên)
Trang 4NAM
KHOA ĐIỆN- ĐIỆN TỬ ĐỘC LẬP- TỰ DO- HẠNH PHÚC
oOo oOo
Ngày ….tháng … năm 2008 PHIẾU CHẤM BẢO VỆ LUẬN VĂN (Dành cho người hướng dẫn / phản biện) 1 Họ và tên SV: ………
MSSV:……… Ngành (chuyênngành):………
2 Đề tài:………
3 Họ tên người hướng dẫn / phản biện:………
4 Tổng quát về bản thuyết minh: Số trang :……… Số chương: ………
Số bản số liệu:……… Số hình vẽ:………
Số tài liệu tham khảo:……… Phần mềm tính Toán:………
Hiện vật(sản phẩm):………
6 Tổng quát về các bản vẽ -Số bản vẽ: bản A1 bảnA2 khổ khác -Số bản vẽ tay Số bản vẽ trên máy tính 6 Những ưu điểm chính của LVTN:………
7 Những thiếu sót chính của LVTN:………
……… ………
8 Đề nghị: Được bảo vệ: Bổ xung thêm để bảo vệ không được bảo vệ
9 Câu hỏi SV phải trả lời trước hội đồng(CBPB ra ít nhất 02 câu): a ………
b ………
c ………
10 Đánh giá chung(bằng chữ: giỏi, khá ,TB): Đi ểm: ……./10
Ký tên (ghi rõ họ tên)
Trang 5
GVHD
Trang 6
GVPB
Trang 7Đề tài được hoàn thành trong sự hỗ trợ và động viên rất nhiều từ gia đình, người thân, thầy cô cũng như bạn bè thân thuộc Đó là những tình cảm thật đáng trân trọng không sao đền đáp hết, và thật phấn khởi biết bao khi thấy mọi người vẫn luôn ở bên cạnh mình trong những hoàn cảnh khó khăn nhất Dù ở bất kỳ nơi đâu, tôi sẽ vẫn nhớ và ghi sâu những tình cảm cao đẹp này
Cảm ơn ba mẹ đã luôn cùng con đi suốt những tháng ngày khó khăn qua
Cảm ơn ông, bà, và các cô chú vẫn luôn động viên và ủng hộ con
Đặc biệt cảm ơn thầy Hoàng Minh Trí và cô Bùi Thanh Huyền đã tạo điều kiện
và hướng dẫn em cách học tập cũng như nghiên cứu để hoàn thành tốt đề tài này
Chân thành cảm ơn những người bạn vẫn luôn đồng hành cùng mình cả trong những lúc khó khăn nhất
Cảm ơn quý thầy cô trong Khoa Điện tử – Tự động hóa Trường Đại học Bách Khoa luôn cảm thông và tạo điều kiện tốt cho em trong suốt thời gian học tập tại trừơng
thầy cô trong Hội đồng bảo vệ khóa luận tốt nghiệp
Cuối cùng xin chúc gia đình, người thân, quý thầy cô cùng bạn bè nhiều sức khỏe và thành công trong mọi việc
Trang 8Từ các thông tin trên các diễn đàn Internet và các trung tâm học tập thực hành, cho thấy nhu cầu học tập và nghiên cứu cũng như tự mài mò tìm hiểu về nhiều lĩnh vực trong ngành điện tử nói chung, tự động hóa nói riêng là rất cao Trong nhiều lĩnh vực được quan tâm, có một lĩnh vực về vi điều khiển được quan tâm rất nhiều hiện nay đó là vi điều khiển PIC Việc tìm hiểu và ứng dụng hết khả năng của nhiều loại PIC là cả một quá trình dài lý thú và hữu ích, vì sự thuận tiện, tinh gọn, khả năng phát triển cũng như sự đa dạng các dòng sản phẩm phù hợp nhiều quy mô ứng dụng của
nó
Một lĩnh vực khác được quan tâm đông đảo trên các diễn đàn học tập ngành điện tử và tự động hóa, nhưng chưa có một tài liệu chính thống phổ biến hướng dẫn hay cung cấp thông tin về nó, cũng như chưa được giảng dạy ở nhiều trung tâm đó là ứng dụng PIC 16f877 điều khiển cánh tay ROBOT và thể hiện một sự linh hoạt mà trong thực tế rất phù hợp với nhu cầu s ản x ấut đa dạng trong các hệ thống từ công nghiệp cho đến dân dụng Thuận tiện cho người vận hành cũng như cũng như năng xuất và chất lượng sản phẩm, trình bày một cách sinh động hơn
Lựa chọn PIC trong đề tài này là một bước đi phù hợp với những yêu cầu giới hạn cần có của một đề tài tốt nghiệp cũng như đáp ứng những nhu cầu ứng dụng thực
tế trong các lĩnh vực của ngành điện tử và tự động hóa đã theo học
Tuy đã có nhiều cố gắng nhưng do vốn kiến thức còn hạn chế cũng như thời gian còn hạng chế nên sẽ không tránh khỏi những sai sót và khuyết điểm trong qúa trình tính toán cũng như thi công công mô hình, rất mong được sự thông cảm và góp ý kiến của qúi thầy cô cũng như các bạn sinh viên
Trang 9Thực hiện đề tài “THIẾT KẾ & ĐIỀU KHIỂN MÔ HÌNH CÁNH TAY
MÁY SÁU BẬC TỰ DO”
Thực hiện đề tài nghiên cứu khái niệm, nguyên lý làm việc của cánh tay máy sử dụng step motor để di chuyển sản phẩm
Cành tay máy sẽ di chuyển vật theo lộ trình định trước, và lập lại thao tác tương tự khi ấn phím enter
Ứng dụng phần mềm PCWH 3.227 sử dụng ngơn ngữ lập trình C (CCSC) để biên dịch và nạp cho vi xử lí PIC
Hiển thị trạng thái hoạt động của cành tay máy thơng qua màn hình tinh thể lỏng LCD
Ứng dụng phần mềm OrCAD hổ trợ thiết kế mạch in
Trang 10Chương 1: TỔNG QUAN Trang
1.2 Tình hình phát triển của Robot hiện nay 2
1.3 Tình hình phát triển của ngành TDH ở nước ta hiện nay 3
Chương 2: GIỚI THIỆU ĐỀ TÀI VÀ PHƯƠNG PHÁP NGHIÊN CỨU
Chương 3 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC16F877A
3.3 Các Port xuất nhập và thanh ghi điều khiển 10
3.6 Vấn đề cấp nguồn chi vi điều khiển 14
Chương 4: MÔ-ĐUN MÀN HÌNH TINH THỂ LỎNG LCD(LIQUID CRYSTAL
DISPLAY)
4.2 Module LCD hi ển th ị k ý t ự theo d òng LMB 162ABC 18
Chương 5: BIÊN DỊCH PCWH 3.227 SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C
5.3 Chương trình nạp Vi điều khiển PIC qua cổng LPT WinPic800 42
Chương 6: GIỚI THIỆU SƠ LƯỢC VỀ ĐỘNG CƠ BƯỚC
6.1 Nguyên lí hoạt động của động cơ bước 50
6.2 Giới thiệu các motor dùng trong cánh tay máy 55
Trang 117.2 Tính vận tốc và moment của động cơ bước 59
7.3 Tính toán phần cơ của cánh tay máy 60
7.4 Thiết kế bo mạch điều khiển cho cánh tay máy 68
Chương8: KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Trang 12CHƯƠNG 1:
TỔNG QUAN
1.1 LỊCH SỬ PHÁT TRIỂN CỦA ROBOT
Thuật ngữ ROBOT xuất hiện vào năm 1920 trong một tác phẩm văn học
của nhà văn Tiệp Khắc có tên Karel Capek
Thuật ngữ Inducstrial Robot (IR) - xuất hiện đầu tiên ở Mỹ do công ty
AMF (American Manchine and Foundry company) quảng cáo mô tả một thiết bị
mang dáng dấp và có một số chức năng như tay người được điều khiển tự động để
thực hiện một số thao tác sản xuất thiết bị có tên gọi Versatran
Quá trình phát triển của IR có thể tóm tắt như sau:
- Từ những năn 50 ở Mỹ xuất hiện viện nghiên cứu đầu tiên
- Đang đầu những năm 60 xuất hiện sản phẩm đầu tiên tên Versatran của
- Châu Á có Nhật bắt đầu nghiên cứu ứng dụng IR từ năm 1968
Đến nay trên thế giới có khoảng trên 20 công ty sản xuất IR trong số đó có
80 công ty của Nhật , 90 công ty của các nước Tây Âu, 30 công ty của Mỹ và một
số công ty ở Nga, Tiệp …
Theo chủng loại, mức độ điều khiển, và khả năng nhận biết thông tin của
tay máy - người máy đã được sản xuất trên thế giới có thể phân loại các IR thành
các thế hệ sau:
Thế hệ 1 : thế hệ có kiểu điều khiển theo chu trình dạng chương trình cứng
không có khả năng nhận biết thông tin
Thế hệ 2 : thế hệ có kiểu điều khiển theo chu kỳ dạng chương trình mềm
bước đầu đả có khả năng nhận biết thông tin
Thế hệ 3 : thế hệ có kiểu điều khiển dạng tinh khôn ,có khả năng nhận biết
thông tin và bước đầu đã có một số chức năng lý trí của con người
Đối với tay máy công nghiệp đã có hơn 250 loại ,trong số đó có hơn 40% là
loại tay máy có kiểu điều khiển đơn giản thuộc thế hệ thứ nhất
Sự xuất hiện của robot và sự gia tăng vai trò của chúng trong sản xuất
và xã hội loài người làm xuất hiện một ngành khoa học mới là ngành robot
học (Robotic) trên thế giới ở nhiều nước đã xuất hiện những viện nghiên
cứu riêng về robot Ở Việt Nam, từ những năm giữa của thập kỷ 80 đã có
viện nghiên cứu về robot
1.2 TÌNH HÌNH PHÁT TRIỂN CỦA ROBOT TRÊN THẾ GIỚI
Trang 13Sự phát triển của khoa học kỹ thuật ngày càng nhanh góp phần nâng cao năng
suất lao động Đặt biệt sự ra đời và phát triển của công nghệ chế tạo Robot nhằm
tạo ra sự tự động hóa trong quá trình sản xuất giảm đi sức lao động bằng chân tay
của người lao động
Đối với các nưước ngoài lãnh vực tự động hóa đã xuất hien rất sớm ,tới nay
ngành tự động hóa đã đạt được những thành tựu hết sức to lớn ,hỗ trợ đắc lực con
nguoi trong nhiều lãnh vực như :
+ROBOT Công nghiệp
CÁNH TAY MÁY 5 BÂËC DÙNG TRONG CÔNG NGHIỆP CUA HÃNG
SANYO DENKI Hình 2.1
+Không gian:
Xe tự hành Spirit của NASA đang thám hiểm sao hỏa
Hình 2.2
Trang 14Hình 2.3
Tự động hóá đã trở thành một trông những ngành mũi nhọn của nhiều nước
trên thế giới,với sự phát triển không ngừng của công nghệ bán dẫn,công nghệ
thông tin, trí tụê nhân tạo va cơ khí chính xác, robot khơng con la những cổ máy vô
tri,vô giac chi biết lạp đi lập lại một công vi c nhất định mà nó đã bắt đầu có cảm
súc ,suy nghĩ va hành động như một sinh vật, từ đó nghành tự động hóa đẩ mở ra
nhiều ứng dụng hết sức phong phú những thế hệ robot gân giống con người lần
lượt được các hãng như HONDA ASIMO,MITSUBITSI,SONY, cho ra đời chứng
tỏ tương sự phát triển va tương lai của ngành tự đông hóa là rất mạnh mẽ
1.3 TÌNH HÌNH PHÁT TRIỂN CỦA NGHÀNH TỰ ĐỘNG HÓA & ROBOT
TẠI VIỆT NAM
Riêng ở nước ta lĩnh vực này còn khá mới mẽ.chúng ta đang ở giai đoạn
đầu của thời kỳ công nghiệp hóa và hiện dại hóa đất nươc, đa số các máy móc của
chúng ta trong các nhà máy xí ngiệp đều đã lỗi thời và hết sức lạc hạâu ,chúng
không còn thích hơp cho việc sản xuất.Việc đầu tư mới các thiết bị này là hết sức
cần thiết nhưng hiện nay phần lớn cacù trang thiết bị này ta đều phải nhập ngoại mà
chưa thể tự chế tạo được ,do đó tự động hoá đươc xem nhu một trong bảy nghành
công nghiệp mũi nhọn cần đầu tư phát triển để nó có thể đáp ứng trước sự đòi hỏi
của nghành công nghiệp nước nhà Để có thể có thể làm được điều đó chúng ta
cần có một lực lượng nhận lực hùng hâụ cả về số lượng lẩn trình độ chuyên môn
cùng với sự đầu tư về trang thiết bị và cơ sơ vật chất
Nhiều cuộc thi về tự động hóa đã diễn ra nhằm khuyến khích lòng xay mê sáng
tạo trong giới trẻõ đã được tổ chức như :ROBOCON,EUREKA, đã nhận được
sự ủng hộ nhiệt tình trong sinh viên và góp phần tích cực vao việc thúc đẩy sự đam
mê và lòng ham thích của sinh viên VIETNAM trên con đường xây dựng đất
nước
Đứng trước nhu cầu đó trước nhu cầu thực tế đó cộng với lòng đam mê của bạn
thân, chúng em đã bắt tay vào thực hiện đề tài này với sự giúp đỡ nhiệt tình về
Trang 15kiến thức, tài chính và sự động viên nhiệt tình cua thâỳ cơ Mong đóng góp một
phần sức lực vào sự phát triển cuả nước nhà
1.4 NỘI DUNG CỦA ĐỀ TÀI:
Yêu cầu của đề tài là chế tạo hoàn thiện phần cơ-điện của một cánh tay
máy 6 bậc tự do có chiều dài tổng công là 60cm(dài bằng tay người),tuy nhiên để
chứng tỏ tính ứng dụng cao của cánh tay máy em đã thiết kế thêm phần băng
chuyền và cảm biến vật thể
Ở Việt Nam nói chung công nghệ chế tạo cơ khí chính xác con chưa phát
triển nếu không muốn nói là con số không, chúng ta hoàn toàn chưa có khả năng
chế tạo các bộ phận cấu thành của tay máy đạt tiêu chuẩn quốc tế (có độ chính
xác và độ bền cao) Tận dụng những vật liệu có sẳn để gia công các chi tiết cơ khí
cũng như linh kiện, thiết bị điện do nước ngòai sản suất để thiết kế thành những
sản phẩm cụ thể trước hết là ứng dụng làm phương tiện giảng dạy trong trường học
và từ đó phát triển cao hơn để ứng dụng vào trong sản suất đã và đang là hướng đi
đúng đắng của các nhà khoa học và kỹ sư ở Việt Nam Đề tài : “THIẾT KẾ &
ĐIỀU KHIỂN MÔ HÌNH CÁNH TAY MÁY SÁU BẬC TỰ DO” không nằm
ngoài nhận định trên Điều quan trọng hơn hết là các vấn đề liên quan đến việc
tính toán thiết kế, chế tạo, nguyên lý hoạt động của tay máy và phần lý thuyết ve
àmạch giao tiếp công suất và mạch điều khiển hệ thống bằng vi điều khiển Nó sẽ
là nguồn thông tin hửu ích cho những ai muốn tìm hiểu về lĩnh vực tự động hóa nói
chung và lãnh vực cánh tay máy nói riêng
1.5 GIỚI HẠN VẤN ĐỀ
Tay máy rất đa dạng về nguồn gốc và chủng loại đây là lần đầu thực hiện
nghiên cứu đề tài: “THIẾT KẾ & ĐIỀU KHIỂN MÔ HÌNH CÁNH TAY MÁY
SÁU BẬC TỰ DO” trong điều kiện:
• Thời gian thực hiện đề tài chỉ trong một học kỳ
• Kinh nghiệm thực tế chưa có nhiều
• Tài liệu về vi xử lí và tay máy còn hiếm
• Vật tư và linh kiện không đồng bộ
Vì vậy chúng em đã thực hiện nghiên cứu đề tài với những đặc điểm chính sau
đây:
• Thiết kế & chế tạo cánh tay máy 5 bậc tự do & hệ thống băng chuyền
• Thiết kế & chế tạo mạch giao tiếp công suất của cánh tay máy
• Thiết kế& chế tạo mạch điều khiển cánh tay máy & băng chuyền
• Lập trình bằng vi xử lí PIC16F877A
• Xây dựng những chương trình tiêu biểu
Trang 16: GIỚI THIỆU ĐỀ TÀI VÀ PHƯƠNG PHÁP
• Thiết kế bo mạch điều khiển với sự hổ trợ của phần mềm OrCAD
(electronic design automation)
• Các khâu truyền động cơ khí giửa các khớp của cánh tay Robot
# Ý nghĩa đề tài
Đề tài điều khiển cánh tay Robot là một ứng dụng thực tế mà hiện nay dang phát triển
mạnh mẽ, đa dạng và sinh động, nó được ứng dụng nhiều trong các nhà máy sản xuất
nhầm giảm bớt công sức lao động của con người dồng thời nâng cao số lượng cũng
như chất lượng của sản phẩm, nên nó phù hợp nhiều ứng dụng thực tế,
Việc trình bày thao tác đối với cánh tay Robot, nhất là động cơ bước (step
motor),Tuy nhiên Step motors hiện nay các nước tiên tiến đã sản xuất và ứng dụng
trong một số lĩnh vực, trong công nghiệp hiện nay người ta dùng một loại motor mới
(Servo motor AC) Loại motor này vận hành ở tốc độ cao hơn công suất lớn hơn và tiết
kiệm năng lượng hơn tuy nhiên giá thành sẽ cao hơn rất nhiều Từ đó các nghiên cứu
trong lĩnh vực này sẽ thuận lợi hơn, sáng tạo hơn và chuyên nghiệp hơn
2.2 Giới hạn nghiên cứu:
• Động cơ step motor
• Vi điều khiển PIC 16F877A
• Phần mềm CCS ( ngôn ngữ C) hổ trợ lập trình và biên dịch chương trình vi
xử lí
• Phần mềm OrCAD hổ trợ thiết kế mạch in
2.3 Giới hạn áp dụng:
Điều khiển cành tay Robot để di chuyển vật trên lộ trình đã định
2.4 Phương pháp nghiên cứu:
Trang 17# Tìm hiểu vi xử lí PIC16F877A phần cứng và tập lệnh
# Tìm hiểu màn hình LCD
# Tìm hiểu ngôn ngữ lập trình và biên dịch CCS, viết chương trình và biên
dịch ra file.hex nạp cho vi điều khiển PIC.Viết chương trình diều khiển cho
một motor bước quay một góc x ác định bằng kit thực hành đa năng theo
# Thiết kế phần cơ và chế tạo cánh tay robot
# Thiết kế mạch công suất và thử nghiệm cho quay từng khớp cuả cánh tay
máy
# Thiết kế hệ thống băng chuyền các sensor và mạch điều khiển
# Lập trình và hoàn thiện cánh tay robot
Trang 18CHƯƠNG 3: GIỚI THIỆU VI ĐIỀU KHIỂN PIC 16F877A
3.1 Vi điều khiển PIC16F877A:
Hình 3.1 Sơ đồ chân của PIC16FxxxA 3.1.1Giới thiệu chung
PIC là tên viết tắt của Máy tính khả trình thông minh (Programable Intelligent
Computer) do hãng General Instrument đặt tên, con vi điều khiển đầu tiên của họ là
PIC1650 Hãng Microchip tiếp tục phát triển các dòng sản phẩm này Cho đến nay,
các sản phẩm vi điều khiển PIC của Microchip đã gần 100 loại, từ họ 10Fxxx đến các
họ 12Cxxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxxA, 16LFxxxA, 18Fxxx 18LFxxx,
Bảng 3.2 Sơ đồ chân của PIC16FxxxA
Trang 193.1.2 Phân loại PIC theo ký tự:
• Nhóm thứ nhất có ký tự C, họ PIC xxCxxx được đưa vào một nhóm, gọi là
OTP (One Time Programable) chỉ có thể lập trình một lần duy nhất
• Nhóm thứ hai có ký tự F, LF, họ PIC xxFxxx, xxFxxx, gọi là Flash, cho
phép ghi/xóa nhiều lần bắng các mạch điện thông thường
3.1.3 Phân loại PIC theo ký số:
• Loại thứ nhất là dòng PIC cơ bản (Base-Line), gồm các PIC 12Cxxx, có độ
dài lệnh là 12 bit
• Loại thứ hai là các dòng PIC 10F, 12F, và 16F, gọi là dòng phổ thông
(Mid-Range), có độ dài lệnh là 14 bit
• Loại thứ ba là dòng PIC 18F (High-End), có độ dài lệnh là 16 bit
PIC là một vi điều khiển với kiến trúc RISC, sử dụng microcode đơn giản đặt
trong ROM, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động) PIC nhờ có
EEPROM nên tạo thành 1 bộ điều khiển vào ra khả trình, có rất nhiều dòng PIC với
hàng loạt các mô-đun ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ
chương trình từ 512 Word đến 32K Word PIC16F877A là dòng PIC phổ biến nhất,
đủ mạnh về tính năng, 40 chân, bộ nhớ đủ lớn cho hầu hết các ứng dụng thông thuờng
3.2 Cấu trúc tổng quát PIC16F877A gồm:
• 8 K Flash ROM
• 368 bytes RAM
• 256 bytes EEPROM
• 5 Port I/O (A, B, C, D, E), ngõ vào/ra với tín hiệu điều khiển độc lập
• 2 bộ định thời 8 bit Timer 0 và Timer 2
Trang 20• 1 bộ định thời 16 bit Timer 1, có thể hoạt động trong cả chế độ tiết kiệm
năng lượng (Sleep Mode) với nguồn xung clock ngoài
• 2 bộ CCP, Capture/Compare/PWM - tạm gọi là: Bắt giữ / So sánh / Điều
biến xung
• 1 bộ biến đổi tương tự – số (ADC) 10 bit, 8 ngõ vào
• 2 bộ so sánh tương tự (Comparator)
• 1 bộ định thời giám sát (WDT – Watch Dog Timer)
• 1 cổng song song (Parallel Port) 8 bit với các tín hiệu điều khiển
• 1 cổng nối tiếp (Serial Port)
• 15 nguồn ngắt (Interrupt)
• Chế độ tiết kiệm năng lượng (Sleep Mode)
• Nạp chương trình bằng cổng nối tiếp ICSPTM (In-Circuit Serial Programing)
• Nguồn dao động lập trình được tạo bằng công nghệ CMOS
• 35 tập lệnh có độ dài 14 bit
• Tần số hoạt động tối đa là 20 MHz
* Cấu trúc phần cứng PIC16F877A:
PIC là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4
chu kỳ của bộ dao động)
PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng khác
nhau Trong đó có một số chân đa công dụng (đa hợp), mỗi chân có thể hoạt động như
một đường xuất/nhập (I/O) độc lập hoặc là một chức năng đặc biệt dùng để giao tiếp
với các thiết bị ngoại vi
Trang 21Hình 3.4 Sơ đồ khối của PIC16F877A 3.3 Các Port x và thanh ghi TRISx [ x={A,B,C,D,E} ]
3.3.1Port A và thanh ghi TRISA
Trang 22Bảng 3.5 Các thanh ghi liên quan đến Port A
Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi Các ô tô bóng
không được dùng bởi Port A Port A gồm 6 chân RA0-RA5, việc ghi các giá trị nào vào thanh ghi TRISA sẽ quy định các chân của Port A là Input hay Output, 0 = Output, 1 = Input
Việc đọc thanh ghi Port A sẽ đọc các trạng thái chân cảu Port A Việc ghi giá trị vào thanh ghi Port A sẽ thay đổi các trạng thái của các chân của Port A
Riêng chân RA4 được tích hợp thêm chức năng cung cấp xung clock
ngoài cho Timer 0 (RA4/T0CLKI)
Các chân khác của Port A được đa hợp với các chân Analog của bộ
ADC và chân ngõ vào điện thế so sánh của bộ so sánh Comparator Hoạt động của các
chân này được quy định bằng các bit ADCON1 và CMCON1
Khi các chân của Port A được sử dụng là ngõ vào thì các bit của thanh
ghi TRISA phải luôn bằng 1
3.3.2 Port B và thanh ghi TRISB
Bảng 3.6 Các thanh ghi liên quan đến Port B
Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi Các ô tô bóng
không được dùng bởi Port B Port B gồm 8 chân RB0-RB7, việc ghi các giá trị nào vào thanh ghi TRISB sẽ quy định các chân của Port B là Input hay Output, 0 = Output, 1 = Input
Việc đọc thanh ghi Port B sẽ đọc các trạng thái chân cảu Port B Việc ghi giá trị vào thanh ghi Port B sẽ thay đổi các trạng thái của các chân của Port B
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và
Low Voltage Programing Function là RB3/PGM, RB6/PGC, RB7/PGD Việc thay đổi
chức năng của ba thanh ghi này được đề cập trong phần các thanh ghi chức năng đặc
biệt
Mỗi chân của Port B có một transistor kéo lên nguồn Vdd , chức năng này hoạt động khi bit RBPU OPTION<7> được xóa, chức năng này sẽ tự động tắt khi
chân Port B được quy định là Input Bốn chân RB4-RB7 có chức năng ngắt (interrupt)
khi trạng thái chân Port thay đổi (khi chân Port được quy định là output thì chức năng
Trang 23khi có 2 trạng thái sai lệch giữa 2 giá trị này, ngắt sẽ xảy ra với cờ ngắt RBIF
INTCON<0> bật lên, ngắt có thể làm cho vi điều khiển thoát khỏi trạng thái Sleep
Mode
Bất cứ hoạt động truy xuất nào trên Port B sẽ xóa trạng thái sai lệch, kết thúc ngắt và cho phép xóa cờ RBIF
3.3.3 Port C và thanh ghi TRISC
Bảng 3.7 Các thanh ghi liên quan đến Port C
Ghi chú: x – giá trị không rõ, u – giá trị
không thay đổi
Port C gồm 8 chân từ RC0-RC7, việc ghi các giá trị nào vào thanh ghi TRISC sẽ quy định các chân của Port C là Input hay Output, 0 = Output, 1 = Input
Việc đọc thanh ghi Port C sẽ đọc các trạng thái chân cảu Port C Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi các trạng thái của các chân của Port C
Các chân của Port C được đa hợp với các chức năng ngoại vi Khi các
hàm chức năng ngoại vi được cho phép, thì cần quan tâm chặt chẽ tới giá trị các bit
của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi các giá trị 0 đè lên các bit của
thanh ghi TRISC và mặc định các chân là ngõ vào Do đó cần phải xem xét kỹ các
tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho
chính xác
3.3.4 Port D và thanh ghi TRISD
Bảng 3.8 Các thanh ghi liên quan đến Port D
Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi Các ô tô bóng
không được dùng bởi Port D Port D gồm 8 chân từ RD0-RD7 Ngoài việc Port D được cấu trúc là một Port xuất nhập, nó còn có thể hoạt động như một cổng song song phụ tá (Parallel
Slave Port) bằng cách đặt bit PSPMODE(TRIS<4>) lên 1, trong chế độ này buffer của
ngõ vào là linh kiện TTL
3.3.5 Port E và thanh ghi TRISE
Trang 24Bảng 3.9 Các thanh ghi liên quan đến Port E
Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi Các ô tô bóng
không được dùng bởi Port E Port E có 3 chân RE0/RD/AN5, RE1/WR/AN6, và RE2/CS/AN7 có thể
được cấu hình là các chân xuất nhập
Các chân của Port E có thể trở thành các chân điều khiển cho các cổng
của vi xử lý khi bit PSPMODE(TRISE<4>) được đặt lên 1 Trong chế độ này, phải
đảm bảo rằng các bit từ 0 đến 2 của thanh ghi TRISE phải được đặt lên 1 để các chân
này được cấu hình như là chân ngõ vào
Ngoài ra, các chân của Port E còn được cấu hình như các ngõ vào
Analog, ở chế độ này khi đọc trạng thái các chân của Port E sẽ cho ta giá trị 0
Thanh ghi TRISE quy định chức năng xuất nhập của các chân Port E
ngay cả khi nó được sử dụng là các ngõ vào Analog, khi đó các chân Port E phải là
thạch anh nối vào 2 chân OSC1 và OSC2 để thiếp lập
dao động Việc mắc thêm các tụ lọc giúp tăng tính ổn
định của bộ dao động, tuy nhiên giá trị của tụ không
quá lớn hay quá nhỏ để dao động ổn định và thời gian
khởi động ngắn Với điện thế Vdd > 4.5V thì nên dùng
tụ có trị số 33pF
Đối với một số ứng dụng mà độ chính xác của thời
gian không quan trọng, có thể dùng dao động RC
như một giải pháp tiết kiệm Tần số dao động được
xác định bởi giá trị của điện trở R và tụ C
3.5 MCLR (Master Clear):
Ngõ vào Master Clear (RESET PIC) trên chân số 1 của vi điều khiển PIC Khi đưa MCLR
xuống thấp, các thanh ghi bên trong vi điều khiển PIC
sẻ được tải những giá trị thích hợp để khởi động lại hệ
thống
h
Hình 3.9 Sơ đồ mạch Master Clear (Reset PIC)
Trang 253.6 Nguồn cấp cho PIC16F877A:
PIC16F877A vận hành với nguồn đơn 5V Vdd (chân nguồn dương)
được nối váo chân số 11 và 32 của PIC Vss (chân mass) được nối vào chân số 12 và
31 của PIC Cả 4 chân này phải được nối nguồn thì PIC mới hoạt động được
3.7 Tổ chức bộ nhớ:
Có tất cả 3 khối bộ nhớ riêng biệt trong PIC16F877A bao gồm: Bộ nhớ
dữ liệu, Bộ nhớ chương trình, và Bộ nhớ EEPROM
PIC16F877A có bộ đếm chương trình (Program Counter) dài 13 bit có
thể định địa chỉ cho 8K không gian bộ nhớ, 8K không gian bộ nhớ được chia làm 8
trang bộ nhớ Mọi sự truy cập ngoài vùng không gian này sẽ không có tác dụng Bộ
nhớ chương trình còn có các ngăn xếp (stack) với 8 mức Vector reset được đặt ở địa
chỉ 0000h và vector ngắt ngoại vi được đặt ở địa chỉ 0004h, khi PIC được reset thì
chương trình sẽ nhảy về vị trí vector reset và bắt đầu thực hiện tại đó
Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank 1, Bank 2, và Bank 3 Mỗi Bank có
dung lượng 128 Bytes, bao gồm vùng RAM đa mục đích và vùng các thanh ghi chức
năng đặc biệt SFRs (Special Function Registers)
Các Bank này được lựa chọn bằng bit RP0 và RP1 ở thanh ghi Status
Bảng 3.10 Lựa chọn Bank của Bộ nhớ dữ liệu trong PIC
Các vùng RAM đa mục đích (GPR – General Purpose RAM) có chiều
rộng là 8 bit và được truy cập trực tiếp hoặc gián tiếp thông qua thanh ghi chức năng
đặc biệt
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm
và các hàm chức năng ngoại vi để điều khiển hoạt động của các thiết bị Các thanh ghi
chức năng đặc biệt được chia làm 2 loại, loại thứ nhất dùng cho các chức năng ngoại
vi (ngắt, so sánh, điều biến xung PWM, ) loại thứ hai dùng cho các chức năng bên
trong của vi điều khiển (các phép tính số học, truy xuất dữ liệu, )
Phần thông tin cơ bản về vi điều khiển PIC16F877A tạm gác ở đây, thông tin
thêm về Các thanh ghi chức năng đặc biệt SFR, bộ định thời, Các chế độ ngắt, Bộ biến
đổi ADC 10 bit, Sử dng EEPROM, Tập lệnh hợp ngữ của PIC, có thể tra cứu, tham
khảo trong datasheet PIC16F87xA của Microchip (microchip.com)
Các phần ứng dụng điều khiển dùng PIC16F877A sẽ được trình bày cụ thể
trong các phần tiếp theo, ví dụ như việc truy xuất các port I/O, delay, Bộ biến đổi
ADC, hay ngắt, Có thể khái quát một điều là việc truy xuất dữ liệu trong PIC cần
được thực hiện theo một trình tự như sau:
• Đầu tiên : Chọn và thiết lập các Bank 0, 1, 2, 3 trong bộ nhớ dữ liệu bằng
các thanh ghi chức năng đăc biệt
• Tiếp theo : Chọn và thiết lập thanh ghi TRISx để định hướng Port, thiết lập
các bit điều khiển liên quan
• Cuối cùng : Chọn và tác động các Port, hoặc các thanh ghi chức năng khác
cần cho việc điều khiển
Trang 26Thông tin thêm: Khi khai báo một biến int i; sẽ sử dụng 8 bit cho thanh ghi i ở
trong RAM tại các thanh ghi đa mục đích của RAM Có tổng cộng là 368 byte RAM
trong các thanh ghi đa mục đích để sử dụng
Trang 27Hình 3.11: Bản đồ cấu trúc bộ nhớ dữ liệu của PIC16F877A
Trang 28CHƯƠNG 4 : MÔ-ĐUN MÀN HÌNH TINH THỂ LỎNG LCD
(LIQUID CRYSTAL DISPLAY) 4.1Giới thiệu chung:
Màn hình LCD có rất đa dạng và được ứng dụng trong nhiều lĩnh vực khác
nhau từ công nghiệp cho đến dân dụng Các LCD cấp thấp đơn sắc (có màu xám, xanh
lá vàng, xanh dương, ), trung và cao cấp thì có các loại màn hình LCD theo các
chuẩn VGA, với độ phân giải điểm ảnh cũng như độ phân giải màu cao, ngoài ra
còn có nhiều loại LCD được ứng dụng làm các màn hình cảm ứng rất hay
Các loại LCD đơn sắc có thể tìm hiểu để úng dụng nghiên cứu dưới đây được
thiết kế dưới dạng các mô-đun Các mô-đun gồm phần màn hình LCD, chip điều
khiển quy định các tập lệnh tác động lên LCD (mã lệnh dưới dạng các tín hiệu bit qua
các chân điều khiển và chân dữ liệu của LCD), quy định quá trình khởi động LCD
hoặc thiết lập liên kết các vùng màn hình LCD khác nhau, Việc còn lại vẫn đòi hỏi
cần có một mạch điều khiển ngoài dùng vi xử lý để lập trình hiển thị và giao tiếp của
LCD với các phần cứng khác (như đọc tín hiệu từ bàn phím, ma trận phím, ADC, tính
toán, rồi hiển thị lên LCD, hoặc giao tiếp máy tính hiển thị lên LCD,
• LCD 7 đoạn, LCD nền xám sáng, được thiết kế từng khu vực riêng,
thường được dùng trong các máy tính (Calculator), các đồng hồ đeo tay,
treo tường, Chúng hiển thị theo các khu vực segment đã được thiết lập
trước, hoặc hiển thị như LED 7 đoạn với 7 segment mỗi khu vực Thường
không có mô-đun
• LCD hiển thị ký tự theo dòng hay đồ họa ký tự, chúng hiển thị bằng cách
chia màn hình ra làm nhiều ô, thể hiện được các ký tự chỉ đọc (ROM
character - lưu trong DDRAM) hoặc các biểu tượng (thiết kế trong
CGRAM) trên mỗi ô; độ phân giải của từng ô tùy kích thước do nhà thiết kế
quy định Riêng LCD đồ họa ký tự thì có khác đôi chút, như kích thước
màn hình lớn hơn, các ô liền nhau như là ma trận điểm toàn màn hình, các
ký tự thường có 2 bảng mã ASCII và 1 bảng mã chữ riêng (có kích thước ô
lớn hơn, như tiếng Hoa, tiếng Nhật, ); ngoài ra nó được mở rộng để hiển
thị đồ họa (chế độ mở rộng – thiết kế hiển thị qua GDRAM)
• LCD đồ họa điểm ảnh (ma trận điểm toàn màn hình) thì hoàn toàn không có
bảng mã nào trong bộ nhớ, cũng không có tập lệnh cụ thể để thao tác cho
các mục đích truy cập mà hình LCD, nhưng có quy định các mã cơ bản để
thiết lập các trạng thái tín hiệu cho các điểm ảnh, và có quy định quá trình
khởi động cho LCD – đây là điều quan trọng đầu tiên khi điều khiển LCD
Từ những điều đó, mà lập ra các tổ hợp lệnh hay chương trình để kích hoạt
các điểm ảnh tương ứng nhằm hiển thị đúng như mong muốn của chương
trình
Ngoài ra mỗi mô-đun LCD còn có các chân để chỉnh tín hiệu độ sáng màn hình
(CONTRAST), đôi khi có thêm đèn nền (Back Light)tùy theo sự thiết lập của nhà
thiết kế
Trang 29
H ình 4.1 Một số lo ại LCD tiêu biểu
4.2 Mô-đun LCD hiển thị ký tự theo dòng LMB162ABC
+Phương thức điều khiển:
1/16 (duty) tác vụ – xử lý từng ô địa chỉ trên tổng số 16 ô của mỗi
đoạn trong thanh địa chỉ bộ nhớ DDRAM [(*) – do tự hiểu]
1/5 (bias) độ thiên lệch – xử lý từng hàng một trên tổng số 4 hàng tối đa cho phép trong chip quy định (+1 hàng là để quay về vị trị đầu sau khi cuộn dọc) (trên thị trường có loại tối đa là 4 hàng – số cột tùy
loại chip có thể là 16, 20, 40) [(*) – do tự hiểu]
Trang 305 R/W Ngõ vào Bus điều khiển đọc/ghi (Read/Write Control Bus)
- R/W=HIGH: Chế độ đọc - R/W=LOW: Chế độ ghi
6 E Ngõ vào Bật dữ liệu (Data Enable)
7 DB0
: :
14 DB7
Ngõ vào/ra
Bus dữ liệu ba trạng thái hai chiều vào/ra
- Chế độ giao tiếp 8 bit, DB0-DB7 đều được sử dụng
- Chế độ giao tiếp 4 bit, DB4-DB7 được sử dụng, DB0-DB3 để hở
15 BLA (+) Nguồn cấp Cung cấp nguồn cho cực dương đèn nền
16 BLK (–) Nguồn cấp Cung cấp nguồn cho cực âm đèn nền
Bảng 4.3 Chức năng của các chân LCD LMB162ABC B) Giá trị cho phép
Điện áp cấp nguồn: Vdd: 0V ~ 6V [Vss=0V]
Điện áp tín hiệu ngõ vào: Vin: 0V ~ Vdd (V) [Vss=0V]
Nhiệt độ khi hoạt động: Thđ: -20 Æ 70OC Nhiệt độ khi lưu trữ: Tlt: -30 Æ 80OC
C) Đặc trưng về điện
Điện thế hoạt động: V dd = 5V [Min=4.7V ~ Max=5.3V] Æ Vdd
Điện thế ngõ vào mức cao: VIH=0.8Vdd Æ RS, R/W, E, DB0-DB7 Điện thế ngõ vào mức thấp: VIL=Vss~0.5V Æ RS, R/W, E, DB0-DB7 Điện thế ngõ ra mức cao: VOH=0.7Vdd ~ Vdd Æ RS, R/W, E, DB0-DB7 Điện thế ngõ ra mức thấp: VOL=Vss~0.5V Æ RS, R/W, E, DB0-DB7
Dòng hoạt động: I dd = 1.3mA [Max=3mA] Æ Vdd Điện áp duy trì đèn nền 4.9V, dòng duy trì đèn nền tối đa 150mA
Các thông số khác có thể tham khảo thêm ở datasheet LMB162ABC
Chỉnh độ tương phản của LCD bằng cách dùng một biến trở VR 5K hay 10K
cũng được, nối lên nguồn dương +5V, và chỉnh cho đến khi có độ sáng vừa phải
b) Tập lệnh
Trang 31Để điều khiển mô-đun LCD một cách chính xác và hiển thị bình thường, hãy
dùng những thiết lập cơ bản sau: (Xem thêm trong Bảng mô tả bên dưới)
N=1, chế độ hiển thị được cả 2 dòng F=0, Font chữ 5x8 chấm điểm ở mỗi ô cột D=1, bật hiển thị
Những thiết lập này sẽ tác động đến mô-đun LCD khi khởi động
Khi cấp nguồn Vdd và Vss , mô-đun LCD sẽ tự động chạy reset trong 50ms Sau
khi reset, mô-đun LCD sẽ có trạng thái sau:
N=0, chế độ hiển thị chỉ 1 dòng DL=1, chế độ giao tiếp 8 bit F=0, Font chữ 5x8 chấm điểm ở mỗi ô cột D=0, tắt hiển thị
C=0, tắt con trỏ B=0, tắt chớp nháy con trỏ I/D=1, tăng theo cấp +1 S=0, không có dịch Reset có thể không tạo thiết lập cơ bản N=1, F=0, D=1
Trong mô-đun này có 2 khu vực nhớ chính để hiển thị là:
• CGRAM – Bộ nhớ RAM để thiết kế ký tự (Character Generator RAM)
o Kiểu ký tự 5x8 chấm (ngang 5, cao 8)
o Được truy xuất qua DB4 – DB0, còn DB7 – DB5 không dùng
o Mã ký tự do người dùng định nghĩa Có 8 địa chỉ 00h – 07h, để
định nghĩa các mã ký tự, tức có thể tạo được 8 ký tự (font 5x8 chấm điểm)
• DDRAM – Bộ nhớ hiển thị dữ liệu (Display Data RAM)
o Kiểu ký tự 5x8 chấm (ngang 5, cao 8)
o Các ký tự ROM (bộ nhớ chỉ đọc) (mã 10h – FFh) được viết vào DDRAM để hiển thị, các ký tự do người dùng định nghĩa trong CGRAM 00h – 07h cũng được sử dụng Tương ứng, việc gọi mã
ký tự 08h – 0Fh cũng sẽ gọi ra các ký tự do người dùng định nghĩa
Tức là bộ nhớ DDRAM sẽ quản lý tất cả nội dung dữ liệu để hiển thị, dù đó là
ký tự có sẵn trong ROM hay do người dùng thiết kế trong CGRAM
Trang 32Hình 4.4 Bản đồ địa chỉ CRRAM
Hình 4.5 Bản đồ địa chỉ DDRAM
Nhìn vào hình ta thấy, DDRAM có tổng cộng 2 dãy địa chỉ để hiện thị dữ liệu
là: 00h-0Fh và 40h-4Fh, tương ứng cho hiển thị 2 hàng 16 ô cột ký tự được hiển thị
trên màn hình
• Hàng 1 địa chỉ 00h-0Fh, có tổng cộng 16 cột
• Hàng 2 địa chỉ 40h-4Fh, có tổng cộng 16 cột Như vậy để truy cập đến ô nào của hàng nào, ta cần biết địa chỉ của ô cột ở
hàng đó
Ví dụ:
Để hiện thị được ký tự ‘A’ ở ô 1 hàng 1 (ô đầu tiên), thì truy cập và đưa
dữ liệu ký tự ‘A’ vào địa chỉ 00h của DDRAM - đây cũng là địa chỉ mặc định
của DDRAM sau khi LCD khởi động
Trang 33Cần thấy rằng các điều khiển của LCD hoạt động nhưng một “người gác cổng”
mà điển hình như DDRAM ở trên Mỗi ký tự cần hiển thị phải được thiết kế hoặc lưu
sẵn ở một nơi (ROM, CGRAM), khi cần hiển thị thì đưa vào DDRAM mới hiển thị
được – đó là quy định
Ngoài ra, trong một giao thức đọc/ghi dữ liệu của LCD, trước tiên cần bật/tắt
tín hiệu điều khiển phù hợp, sau đó đưa dữ liệu đến “ngõ” quy ước, tiếp theo là bật/tắt
các tín hiệu điều khiển tại “ngõ” đó như một “người gác cổng”, thì dữ liệu mới lưu
chuyển Sau khi dữ liệu lưu chuyển qua “ngõ” đó rồi thì phải đóng “ngõ” đó lại (như
hành động hạ thanh chắn ngang xuống sau khi qua cổng kiểm soát vậy)
Bảng 4.6 Các lệnh hiển thị LCD LMB162ABC c) Lưu đồ khởi động
Trang 34Tra cứu các mã lệnh ở Bảng 4.6 trang trước để rõ hơn
Ví dụ Port B là Port dữ liệu, khi gán mã lệnh thì đưa dữ liệu đó ra Port B
Các chân tín hiệu điều khiển RS, R/W, E được điều khiển riêng
o Thiết lập mở các cổng điều khiển
RS = 0 : Bật chế độ truyền lệnh
R/W = 0 : Bật chế độ ghi
E = 0 : Tắt dữ liệu
Æ Sẵn sàng cho việc ghi lệnh
o Đưa con trỏ về đầu bộ nhớ dữ liệu DDRAM
Gán giá trị 2 hoặc 3 cho Port dữ liệu (0x02 hoặc 0x03)
Bật cổng cho dữ liệu qua E=1, delay 1 chút chờ dữ liệu
qua
Đóng cổng sau khi dữ liệu đã qua E=0, delay cổng đóng
Æ Có thể lặp lại vài lần như vậy để đảm bảo LCD đã cập nhật
o Thiết lập các giá trị ban đầu cho LCD như đã đề cập ở phần trước:
DL=1 (0x30) : Chế độ giao tiếp 8bit, Port dữ liệu
DB0-DB7 (xem mục số 6 bảng mã lệnh)
D=1 (0x0c) : Bật màn hình (mục 4 bảng mã lệnh)
Xóa dữ liệu nếu có trong DDRAM (0x01) (mục 1)
d) Sơ đồ kết nối ứng dụng với vi điều khiển
Trang 35Hình 4.7 Sơ đồ kết nối PIC16F877A với LCD LMB162ABC
4.3 Lưu đồ khởi động:
Tra cứu các mã lệnh ở Bảng 4.6 ở những trang trước để rõ hơn
Ví dụ Port B là Port dữ liệu, khi gán mã lệnh thì đưa dữ liệu đó ra Port B
Các chân tín hiệu điều khiển RS, R/W, E, hay PSB, /RST được điều khiển
Trang 36 R/W = 0 : Bật chế độ ghi
E = 0 : Tắt dữ liệu
Æ Sẵn sàng cho việc ghi lệnh
o Đưa con trỏ về đầu bộ nhớ dữ liệu DDRAM
Gán giá trị 2 hoặc 3 cho Port dữ liệu (0x02 hoặc 0x03)
Bật cổng cho dữ liệu qua E=1, delay 1 chút chờ dữ liệu
qua
Đóng cổng sau khi dữ liệu đã qua E=0, delay cổng đóng
Æ Có thể lặp lại vài lần như vậy để đảm bảo LCD đã cập nhật
o Thiết lập các giá trị ban đầu cho LCD như đã đề cập ở phần trước:
DL=1 (0x30) : Chế độ giao tiếp 8bit, Port dữ liệu
DB0-DB7 (xem hàng thứ 6 bảng mã lệnh cơ bản – Function
Set)
D=1 (0x0c) : Bật màn hình (hàng thứ 4 bảng mã lệnh cơ
bản)
Xóa dữ liệu nếu có trong DDRAM (0x01) (hàng thứ 1)
4.4 Sơ đồ kết nối ứng dụng với vi điều khiển:
Hình 4.7 Sơ đồ kết nối PIC16F877A với LCD LM3033B-0BR2
Trang 37CHƯƠNG 5: TRÌNH BIÊN DỊCH PCWH 3.227 SỬ DỤNG
NGÔN NGỮ LẬP TRÌNH C (CCSC):
Dưới đây là khung cửa sổ chính của chương trình CCSC
Trình biên dịch PCWH sử dụng ngôn ngữ lập trình C còn gọi là chương trình
CCSC, gồm: PCB, PCM, và PCH Phiên bản hiện dùng là 3.227 có nhiều hàm và chức
năng mới cập nhật, lập trình cho các họ PIC 12 bit, 14 bit, 16 bit
Việc cài đặt chương trình tạm thời không đề cập ở đây, có thể tham khảo thêm
thông tin trên các diễn đàn như diendandientu.com hay picvietnam.com
Giả sử quá trình cài đặt chương trình mặc định đã hoàn tất và không bị
giới hạn sử dụng Để bắt đầu chương trình, nhấp trái chuột lên biểu tượng
Pcw bên cạnh để kích hoạt
Cửa sổ chương trình xuất hiện như trên Vào File – New để tạo một chương
trình mới
Khi soạn thảo chương trình, nhớ chọn đúng loại PIC đang dùng bằng cách chọn
ô có “Microchip 14 bit” ở góc trên bên phải màn hình
Chọn “Microchip 12 bit” để viết chương trình cho PIC 12 bit, “Microchip 14
bit” để viết chương trình cho PIC 14 bit (như PIC16F877A chẳng hạn) và “Microchip
18 bit” để viết chương trình cho PIC 18 bit (như dsPIC chẳng hạn)
Trang 38Sau khi viết chương trình xong, nhấn F9 hay biểu tượng Compile như hình trên
để biên dịch Chương trình sẽ thông báo các tình trạng cho ta biết, như có lỗi nào sai
về cú pháp khi viết chương trình không, hay có cảnh báo nào không, và chương trình
chiếm không gian bộ nhớ như thế nào,
Hình trên mô tả quá trình biên dịch của chương PCWH (CCSC) Kết quả cho
thấy chương trình tốt, không lỗi hay cảnh báo nào, chương trình chiếm 2% của 368
bytes của bộ nhớ RAM, và chiếm 2% của 256 bytes của bộ nhớ ROM
khảo
CCSC dùng ngôn ngữ C trực quan nên có nhiều thuận lợi hơn ngôn ngữ
ASSEMBLER (Hợp ngữ) Tuy nhiên trong một số trường hợp, CCSC có thể sinh mã
Trang 39không sai, ví dụ như, sinh nhiều mã lệnh không quan trọng khi thực thi hàm ngắt) làm
chậm tốc độ thực thi chương trình, có thể ảnh hưởng nhiều đến việc xử lý đòi hỏi tốc
độ cao như điều biến xung PWM, Nhưng trong CCSC vẫn cho phối hợp
ASSEMBLY cùng với C, nên chương trình sẽ rất uyển chuyển, kết hợp được sức
mạnh của cả hai ngôn ngữ, dù việc phối hợp này có thể làm cho việc viết chương trình
trở nên khó khăn hơn
CCSC cung cấp các công cụ tiện ích giám sát hoạt động của chương trình
như:
• C/ASM List : Cho phép xem mã ASM của file biên dịch (View – C/ASM
List), giúp ích cho việc quản lý mã, biết được mã sinh ra và chạy như thế
nào, là công cụ rất quan trọng giúp gỡ rối chương trình và nắm bắt được
hoạt động của nó
• Symbol Map : Hiển thị bộ nhớ cấp phát cho từng biến, giúp quản lý bộ nhớ
các biến của chương trình (View - Symbol Map)
• Call Tree : Hiển thị việc phân bổ bộ nhớ .v v
Xem thêm trong Menu View của chương trình Ngoài ra còn có thêm nhiều
công cụ hữu dụng khác trong Menu Tools của chương trình, tuy nhiên nên cẩn thận
khi sử dụng, một số công cụ đòi hỏi nhiều kiến thức hơn về nó
5.2 Cách Viết một chương trình trong CCSC:
Cấu trúc chương trình trong CCSC có các phần chính tương tự lập trình C như
• Khai báo các chỉ thị tiện xử lý
• Khai báo các biến, mảng
• Khai báo các hàm, các thủ tục tự tạo (chương trình con)
Trang 40void main() // Chương trình chính
Æ Khai báo chỉ dẫn tới các tập tin tiêu đề h , c có chứa các thủ tục, các hàm
cần cho chương trình Khai báo này luôn đặt ở dòng đầu tiên Tập tin này nằm ở trong
các thư mục chuẩn của chương trình đã cài đặt (như Devices, Drivers, Examples),
hoặc nằm cùng cấp với tập tin hiện đang viết chương trình, nếu không thì phải ghi rõ
#DEVICE chip option
Æ Khai báo thiết bị sử dụng
chip
Là tên vi điều khiển PIC được sử dụng, không cần dùng tham số này nếu
đã khai báo tên chip ở #include
option
*=x
*=5 – dùng poiter 5 bit (cho tất cả các loại PIC)
*=8 – dùng pointer 8 bit (cho PIC 14 bit, PIC 18 bit)
*=16 – dùng pointer 16 bit (cho PIC 14 bit, PIC 18 bit) ADC=x
Chỉ ra sử dụng ADC x bit (8,16,32,… bit tuỳ chip) Khi dùng hàm read_adc() , chương trình sẽ trả về giá trị theo x bit
ICD=true
Dùng để tạo mã tương thích debug phần cứng Microchip
Khai báo pointer 8 bit *=8 chỉ sử dụng được tối đa 256 byte RAM cho tất cả
biến của chương trình, trong khi có tới 368 byte RAM, nên sử dụng không hết RAM
Khai báo pointer 16 bit *=16 sẽ sử dụng được hết số RAM của vi điều khiển