Chương 4: Xây dựng hệ thống bài thực tập kỹ thuật vi điều khiển dùng trong đào tạo hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định.. Bộ vi điều khiển dùng tr
Trang 1Bộ CÔNG thương TRƯờNG CAO ĐẳNG CÔNG NGHIệP NAM ĐịNH
Báo cáo TổNG HợP kết quả nghiên cứu
Chủ nhiệm đề tài: ThS Bùi tiến dũng
7812
22/3/2010
Nam định, 2009
Trang 2Bộ CÔNG thương TRƯờNG CAO ĐẳNG CÔNG NGHIệP NAM ĐịNH
Báo cáo kết quả nghiên cứu đề tài kH-cn cấp bộ
M∙ số:
Những người tham gia nghiên cứu
1 Cần Cẩm Giang Thư ký
2 Vũ Trọng Nghị ủy viên
3 Phạm Đức Cường ủy viên
4 Phạm Hồng Phong ủy viên
Nam định, 2009
Trang 3Mục lục
trang
Mục lục
Mở đầu
1 Tính cấp thiết của vấn đề nghiên cứu
2 Mục đích nghiên cứu
3 Đối tượng nghiên cứu
4 Giả thuyết khoa học
3
4
4
4
5 Nhiệm vụ nghiên cứu
6 Giới hạn và phạm vi nghiên cứu
Chương 1: kỹ thuật vi điều khiển và đào tạo kỹ thuật
vi điều khiển trong các trường cao đẳng
1.1.Bộ vi điều khiển (microcontroller - àC)
1.2 ứng dụng của bộ vi điều khiển
1.3 Mục đích và yêu cầu của môn học kỹ thuật vi điều khiển
1.4 Mục tiêu của đề tài
Chương 2: Giới thiệu vi điều khiển AT89S8252 và công cụ
phát triển của AT89S8252
2.1 Giới thiệu vi điều khiển AT89S8252
2.2 Các công cụ phát triển cho vi điều khiển AT89S8252
13
13
31
Chương 3: Nghiên cứu chế tạo KIT vi điều khiển dùng
trong đào tạo hệ cao đẳng ngành điện tự động hóa
3.1 Thiết lập sơ đồ khối của bộ KIT vi điều khiển
3.2 Chọn thiết bị cho bộ KIT vi điều khiển
36
36
37
Trang 43.3 Sơ đồ nguyên lý bộ KIT vi điều khiển 70
Chương 4: Nghiên cứu XÂY DựNG Hệ THốNG BàI THựC TậP
vi điều khiển dùng trong đào tạo hệ cao đẳng ngành
điện tự động hóa
Bài số 1: Điều khiển đầu ra số
73
73 Bài số 2: Điều khiển động cơ DC
Bài số 3: Điều khiển động cơ bước
Bài số 4: Điều khiển LED 7 thanh
76
81
85 Bài số 5: Giải mã bàn phím
Bài số 6: Hiển thị LCD
Bài số 7: Điều khiển ADC
Bài số 8: Điều khiển DAC
88
91
95
97 Bài số 9: Điều khiển ma trận Led
Bài số 10: Điều khiển bộ đếm
Trang 5Mở đầu
1 Tính cấp thiết của vấn đề nghiên cứu
Kỹ thuật vi điều khiển (KTVĐK) là nền tảng để nghiên cứu, thiết kế, khai thác trong các hệ thống điều khiển số hiện đại
Bộ vi điều khiển dùng trong các thiết kế nhỏ, với số thành phần thêm vào
tối thiểu nhằm thực hiện các hoạt động hướng điều khiển ( điều khiển thiết bị
ở nước ta
Nhận thức được vai trò quan trọng của kỹ thuật vi điều khiển, trong những năm gần đây các viện nghiên cứu, các trường Đại học, Cao đẳng và các cơ quan ứng dụng ở nước ta đã tích cực tìm hiểu, học tập, giảng dạy và sử dụng kỹ thuật
vi điều khiển
Vì vậy, muốn đào tạo sinh viên cao đẳng ngành Điện tự động hóa có khả năng sẵn sàng đáp ứng yêu cầu thực tế, khả năng làm được và làm tốt các ứng dụng điều khiển, khả năng vận dụng ngay các kiến thức đã học vào cuộc sống thực tiễn Các trường Cao đẳng Kỹ thuật Công nghiệp nói chung và trường Cao
đẳng Công nghiệp Nam Định nói riêng trong quá trình đào tạo Kỹ thuật vi điều khiển cần nghiên cứu đổi mới nội dung đào tạo, gắn đào tạo với thực tiễn sản xuất
Từ những lý luận trên chúng tôi chọn đề tài:
“ Nghiên cứu chế tạo KIT vi điều khiển dùng trong đào tạo hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định ”
Trang 62 Mục đích nghiên cứu
Chế tạo KIT và xây dựng hệ thống bài thực tập phục vụ dạy và học môn học kỹ thuật vi điều khiển cho sinh viên hệ Cao đẳng ngành Điện tự động hóa trường Cao đẳng Công nghiệp Nam Định
3 Đối tượng nghiên cứu
Quá trình dạy, học và đánh giá kết quả học tập kỹ thuật vi điều khiển dựa trên nănh lực thực hành của sinh viên hệ Cao đẳng ngành Điện tự động hóa trường Cao dẳng Công nghiệp Nam Định
4 Giả thuyết khoa học
Nếu xây dựng được bộ KIT và hệ thống bài thực tập cho sinh viên một cách khoa học và khả thi sẽ góp phần nâng cao chất lượng dạy và học môn học
kỹ thuật vi điều khiển
5 Nhiệm vụ nghiên cứu
* Xây dựng cơ sở lý luận, tổng quan về kỹ thuật vi điều khiển
* Nghiên cứu chế tạo KIT và xây dựng hệ thống bài thực tập mẫu hỗ trợ dạy và học môn học kỹ thuật vi điều khiển cho sinh viên Cao đẳng ngành Điện tự động hóa
* Thực nghiệm sư phạm
6 Giới hạn và phạm vi nghiên cứu
* Giới hạn: Phục vụ dạy và học môn học kỹ thuật vi điều khiển cho sinh viên Cao đẳng ngành Điện tự động hóa
* Phạm vi: Việc khảo sát, đánh giá thực trạng tiến hành ở một số trường Cao
đẳng thuộc Bộ Công Thương
Tổ chức thực nghiệm tại trường Cao đẳng Công nghiệp Nam Định
7 Phương pháp nghiên cứu
* Nghiên cứu lý luận: Tài liệu về kỹ thuật vi điều khiển trong và ngoài nước
* Nghiên cứu thực tiễn: Điều tra, khảo sát thực trạng dạy và học môn học kỹ thuật vi điều khiển cho sinh viên Cao đẳng ngành Điện tự động hóa ở một số trường Cao đẳng thuộc Bộ Công Thương
Trang 7* Phương pháp chuyên gia: Lấy ý kiến các chuyên gia
* Phương pháp thực nghiệm sư phạm: Kiểm tra giả thuyết đề tài
Chương 1: Kỹ thuật vi điều khiển và đào tạo Kỹ thuật vi điều khiển trong
các trường Cao đẳng Công nghiệp
Chương 2: Giới thiệu vi điều khiển AT89S8252 và công cụ phát triển của
AT89S8252
Chương 3: Nghiên cứu chế tạo KIT vi điều khiển dùng trong đào tạo hệ
Cao đẳng ngành Điện tự động hóa
Chương 4: Xây dựng hệ thống bài thực tập kỹ thuật vi điều khiển dùng
trong đào tạo hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định
Kết luận
Danh mục các tài liệu tham khảo
Phụ lục
Trang 8Chương 1
kỹ thuật vi điều khiển và đào tạo kỹ thuật
vi điều khiển trong các trường cao đẳng
1.1 Bộ vi điều khiển ( microcontroller - àC )
1.1.1 Khái niệm
Bộ vi điều khiển là một vi mạch đơn chứa bên trong một CPU và các mạch khác như RAM, ROM, mạch giao tiếp nôí tiếp, giao tiếp song song, bộ định thời, các mạch điều khiển ngắt để tạo nên một hệ máy tính đầy đủ
1.1.2 Sự phát triển của các bộ vi điều khiển
Năm1976, hãng Intel giới thiệu bộ vi điều khiển 8748 là vi mạch chứa
17000 transistor bao gồm 1 CPU, 1Kbyte EPROM, 64 byte RAM, 27 cổng xuất nhập và 1 bộ định thời 8 bit
IC này và các IC tiếp theo của họ MCS - 48 nhanh chóng trở thành chuẩn công nghiệp trong các ứng dụng hướng điều khiển thay thế các thành phần cơ
điện trong các sản phẩm như máy giặt, bộ điều khiển đèn giao thông, các thiết bị công nghiệp, dân dụng…
Độ phức tạp, kích thước và khả năng của các bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển đầu tiên của họ vi điều khiển MSC-51 So với 8048, chíp 8051 chứa trên
60000 transistor bao gồm 1 CPU, 4Kbyte EPROM, 128 byte RAM, 32 đường xuất nhập, 1port nối tiếp, 2 bộ định thời 16 bit
Họ MCS -51 ngày càng phát triển và là một trong các bộ vi điều khiển 8 bit mạnh và linh hoạt trở thành bộ vi điều khiển hàng đầu trong những năm gần
đây
1.1.3 Giới thiệu sơ lược cấu trúc của bộ vi điều khiển
Cấu trúc cơ bản của một bộ vi điều khiển gồm hai phần chính là phần cứng và phần mềm
Phần cứng là toàn bộ các thiết bị vật lý xây dựng nên bộ vi điều khiển
Trang 9Ví dụ: CPU, bộ nhớ, cổng vào / ra, các thiết bị ngoại vi, nguồn cung cấp Cùng với sự phát triển của công nghệ chế tạo mạch tích hợp, phần cứng của bộ vi
điều khiển càng gọn nhẹ, tích hợp nhiều chức năng và tiêu thụ năng lượng ít
Phần mềm của bộ vi điều khiển bao gồm các chương trình điều hành và chương trình ứng dụng Để thiết kế bộ vi điều khiển, người sử dụng được hỗ trợ bởi các công cụ phát triển Công cụ phát triển bộ vi điều khiển gồm một thiết bị mô phỏng và phần mềm lập trình cho àC Để giảm nhẹ việc phát triển phần mềm, các công cụ phần mềm thường được trang bị bộ trình biên dịch ngôn ngữ bậc cao như C
1.1.4 Các tiêu chuẩn lựa chọn một bộ vi điều khiển
* Tiêu chuẩn đầu tiên trong lựa chọn một bộ vi điều khiển là nó phải đáp ứng nhu cầu mặt công suất tính toán và giá thành hiệu quả
Những tiêu chuẩn được đưa ra là:
- Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu
- Kiểu đóng vỏ: DIP hay QFP ( DIP là đóng vỏ theo 2 hàng chân QFP là
*Tiêu chuẩn thứ ba trong lựa chọn một bộ vi điều khiển là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương lai
Trang 10Hiện nay, các bộ vi điều khiển 8 bit họ 8051 có số lượng lớn các nhà cung cấp đa dạng Nhà cung cấp có nghĩa là nhà sản xuất bên cạnh nhà sáng chế của bộ vi điều khiển Trong trường hợp 8051 thì nhà sáng chế của nó là Intel, nhưng hiện nay có rất nhiều hãng sản xuất nó
Các hãng này bao gồm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra và Dallas, Semicndictior
1.2 ứng dụng của Bộ vi điều khiển
Do đòi hỏi phát triển của sản xuất và xã hội, với sự phát triển mạnh mẽ của kỹ thuật điện tử phát triển với tốc độ cực kỳ nhanh chóng đã tạo nên một nền tảng vững chắc cho ngành vi điều khiển
Bộ vi điều khiển dùng trong các thiết kế nhỏ, với số thành phần thêm vào tối thiểu nhằm thực hiện các hoạt động hướng điều khiển ( điều khiển thiết bị xuất nhập) do vậy các bộ vi điều khiển thường được lập trình thường trực cho một công việc và có các tập lệnh cung cấp các điều khiển xuất nhập
Các bộ vi điều khiển ra đời đã đem lại hiệu quả kỹ thuật và kinh tế vô cùng to lớn Các bộ vi điều khiển được ứng dụng rất phổ biến để chế tạo các bộ
điều khiển số điều khiển tự động quá trình sản xuất, điều khiển robot, điều khiển máy công cụ Việc ứng dụng kỹ thuật vi điều khiển làm tăng độ bền vững, độ tin cậy, độ mềm dẻo và tính chống nhiễu cho các thiết bị số
1.3 Đào tạo kỹ thuật vi ĐIềU KHIểN trong các trường cao đẳng
1.3.1 Mục đích và yêu cầu của môn học kỹ thuật vi điều khiển
a Mục đích
Môn học Kỹ thuật vi điều khiển là môn học kỹ thuật chuyên môn dùng cho
đào tạo hệ Cao đẳng chuyên ngành Điện tự động hoá tại trường Cao đẳng Công nghiệp Nam Định Môn học được giảng dạy sau các môn: Kỹ thuật điện tử, Điều khiển logic Trong môn học Kỹ thuật vi điều khiển, các kiến thức của các môn học nói trên được coi là những kiến thức cơ sở cần thiết để tiếp thu các vấn đề của Kỹ thuật vi điều khiển
Trang 11Môn học trang bị cho sinh viên những khái niệm chủ yếu về một bộ vi điều khiển: cấu trúc, nguyên tắc hoạt động của một bộ vi điều khiển gồm CPU cùng các mạch phụ trợ, tập lệnh, cách lập trình bằng hợp ngữ, các phương thức điều khiển vào / ra dữ liệu và các phương pháp ghép nối các thiết bị ngoại vi
Ví dụ:
- Các bộ vi điều khiển của Intel: 8051
- Các bộ vi điều khiển của Motorola
-Về thực hành: Cần thiết kế được các mạch ứng dụng vi điều khiển, đồng thời
sử dụng thành thạo các phần mềm lập trình như: Reads51, Keil C51, Proload
1.3.2 Chương trình đào tạo môn học kỹ thuật vi điều khiển hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định
( Phụ lục 1 )
1.3.3 Khảo sát, đánh giá thực trạng đào tạo môn học kỹ thuật vi điều khiển
hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định
a Khảo sát đối tượng:
* Lấy ý kiến của 60 giáo viên thông qua phiếu trưng cầu ý kiến về nội dung, phương pháp giảng dạy môn học kỹ thuật vi điều khiển hệ Cao đẳng ngành
Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định ( Phụ lục 2)
*Lấy ý kiến của 150 sinh viên khoa điện - điện tử ( khóa CĐ47E, C::35ả35::I, CĐ49E ) thông qua phiếu trưng cầu ý kiến về nội dung, phương pháp
Trang 12học tập môn học kỹ thuật vi điều khiển hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định ( Phụ lục 2)
b Đánh giá:
*ý kiến của giáo viên:
-Về nhu cầu sử dụng lao động thuộc chuyờn ngành Điện tự động húa hiện nay ở khu vực đồng bằng sụng Hồng là:
10 % số giáo viên được hỏi cho là cao 70% số giáo viên được hỏi cho là trung bình
20 % số giáo viên được hỏi cho là thấp
- Về chất lượng đào tạo Kỹ thuật viờn ngành Điện tự động húa tại trường Cao đẳng Cụng nghiệp Nam Định hiện nay là:
10 % số giáo viên được hỏi cho là tốt
60% số giáo viên được hỏi cho là trung bình
30 % số giáo viên được hỏi cho là kém
- Về mức độ phự hợp giữa nội dung giảng dạy về Kỹ thuật vi điều khiển tại trường Cao đẳng Cụng nghiệp Nam Định và nhu cầu của thị trường lao động tại khu vực đồng bằng sụng Hồng là:
30 % số giáo viên được hỏi cho là không phù hợp
60% số giáo viên được hỏi cho là phù hợp
10 % số giáo viên được hỏi cho là rất phù hợp
- 100 % số giáo viên được hỏi cho rằng tính khách quan, tính thực tiễn, tính toàn diện trong giảng dạy về kỹ thuật vi điều khiển trong ngành Điện tự động húa là quan trọng
- 100 % số giáo viên được hỏi cho rằng tính mềm dẻo linh hoạt, tính thực tiễn, tính toàn diện trong thiết kế chế tạo thiết bị giảng dạy Kỹ thuật vi điều khiển ngành Điện tự động húa là quan trọng
- 80 % số giáo viên được hỏi cho rằng hệ thống bài thực tập đúng vài trũ cao trong giảng dạy Kỹ thuật vi điều khiển ngành Điện tự động húa
Trang 13- 20 % sè gi¸o viªn ®−îc hái cho r»ng hệ thống bài thực tập đóng vài trò trung b×nh trong giảng dạy Kỹ thuật vi điều khiển ngành §iện tự động hóa
* ý kiÕn cña sinh viªn:
- VÒ mức độ phù hợp giữa nội dung giảng dạy về Kỹ thuật vi điều khiển tại trường Cao đẳng Công nghiệp Nam Định và nhu cầu thùc tÕ:
30 % sè sinh viªn ®−îc hái cho lµ kh«ng phï hîp
70% sè sinh viªn ®−îc hái cho lµ phï hîp
- VÒ mức độ phù hợp giữa nội dung häc lý thuyÕt vµ häc thùc hµnh trong m«n häc Kỹ thuật vi điều khiển tại trường Cao đẳng Công nghiệp Nam Định:
30 % sè sinh viªn ®−îc hái cho lµ kh«ng phï hîp
60% sè sinh viªn ®−îc hái cho lµ phï hîp
10 % sè sinh viªn ®−îc hái cho lµ rÊt phï hîp
-100 % sè sinh viªn ®−îc hái cho r»ng tÝnh mÒm dÎo linh ho¹t, tÝnh thùc tiÔn, tÝnh toµn diÖn trong thiết kế chế tạo thiết bị giảng dạy Kỹ thuật vi điều khiển ngành §iện tự động hóa lµ quan träng
- 70 % sè sinh viªn ®−îc hái cho r»ng hệ thống bài thực tập đóng vài trò cao trong giảng dạy Kỹ thuật vi điều khiển ngành §iện tự động hóa
- 30 % sè sinh viªn ®−îc hái cho r»ng hệ thống bài thực tập đóng vài trò trung b×nh trong giảng dạy Kỹ thuật vi điều khiển ngành §iện tự động hóa
Trang 141.4 mục tiêu của đề tài
Với đề tài: “ Nghiên cứu chế tạo KIT vi điều khiển dùng trong đào tạo
hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam
Định” nhằm phục vụ thực hành cho sinh viên, hỗ trợ công tác giảng dạy môn học “ Kỹ thuật vi điều khiển ”
Qua nghiên cứu lý thuyết và khảo sát thiết bị thực tế trên thị trường, chúng tôi đã lựa chọn họ vi điều khiển họ MSC-51để chế tạo KIT vi điều khiển Kết quả đã thiết kế hoàn chỉnh bộ KIT với các thiết bị vào ra và ngoại vi phong phú cùng các bài tập mẫu và tài liệu hướng dẫn sử dụng Hy vọng rằng đây sẽ là thiết
bị để hỗ trợ tốt cho sinh viên học môn “ Kỹ thuật vi điều khiển”
Trang 15Chương 2 Giới thiệu vi điều khiển AT89S8252
và công cụ phát triển của AT89S8252
2.1 Giới thiệu vi điều khiển AT89S8252
2.1.1 Đặc điểm chung
AT89S8252 thuộc họ MCS -51, có những đặc điểm chính sau:
* 8K Bytes bộ nhớ Rom Flash
*Giao diện SPI để Download chương trình (Serial Peripheral Interface)
* Có thể ghi, xoá
* 2K Bytes EEPROM có thể ghi, xoá
* Điện áp hoạt động 4 - 6 Volt
* Dải tần số: 0 – 20 MHz
* 3 mức chốt bộ nhớ chương trình
* 256 Bytes RAM nội
* 4 port xuất nhập (I/O) 8 bit
* 3 Timer/Counter 16 bit
* 6 vector ngắt
* Không gian nhớ chương trình ngoài 64K Bytes
* Không gian nhớ dữ liệu ngoài 64K Bytes
* Bộ xử lý bit
* 2 con trỏ dữ liệu (Data Pointer)
Vi điều khiển AT89S8252 tương thích với tập lệnh và chuẩn công nghiệp MCS -51 Flash trên vi điều khiển AT89S8252 cho phép bộ nhớ chương trình
được lập trình trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung quy ước (chương trình có thể được nạp trực tiếp qua cổng máy in hoặc qua bộ nạp) Việc kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn làm cho
Trang 16AT89S8252 trở thành một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển
Trang 172.1.2 Sơ đồ bố trí chân của AT89S8252 và chức năng hoạt động của các chân
2.1.2.1 Sơ đồ bố trí chân của AT89S8252
2.1.2.2 Chức năng hoạt động của các chân
Port 0: (các chân 32 đến 39) được kí hiệu là P0.0, P0.1, P0.2, , P0.7 Port 0
được dùng làm I/O khi không sử dụng bộ nhớ ngoài Trong các thiết kế có bộ nhớ ngoài port 0 được sử dụng là Bus địa chỉ và Bus dữ liệu đa hợp
Port 1 : (từ chân 1 đến chân 8) được kí hiệu là P1.1, P1.1, P1.2, , P1.7 Port
1 chỉ có công dụng I/O Riêng chân P1.0, P1.1 hoặc làm đường xuất nhập hoặc làm các ngõ vào cho bộ định thời thứ 3
Port 2 : (các chân 21 đến 28) được kí hiệu là P2.1, P2.2, , P2.7 Port 2 được
dùng làm I/O khi không sử dụng bộ nhớ ngoài Trong các thiết kế có bộ nhớ ngoài lớn hơn 256 byte port 2 được sử dụng là byte cao địa chỉ
Port 3 : (các chân 10 đến 17) được kí hiệu là P3.0, P3.1, , P3.7 Port 3 được
dùng làm I/O khi không sử dụng bộ nhớ ngoài Trong các thiết kế có bộ nhớ
Trang 18ngoài mỗi chân của Port 3 có chức năng riêng Cụ thể chức năng của từng chân
được chỉ ra trên Bảng 2.1:
P3.0 RXD(Chân nhận dữ liệu của port nối tiếp)
P3.1 TXD(Chân phát dữ liệu của port nối tiếp)
P3.2 INT (Đầu vào ngắt ngoài 0) 0
P3.3 INT (Đầu vào ngắt ngoài 1) 1
P3.4 T0 (Đầu vào của bộ Timer/Counter 0)
P3.5 T1 (Đầu vào của bộ Timer/Counter 1)
P3.6 WR (Điều khiển ghi bộ nhớ dữ liệu ngoài)
P3.7 RD (Điều khiển đọc bộ nhớ dữ liệu ngoài)
Bảng 2.1: Chức năng các chân của Port 3
PSEN/ (Program store enable): là tín hiệu xuất hiện trên chân 29 Đây là tín
hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài Chân này thường được nối với chân cho phép xuất OE/ ( Output Entable) của EPROM (hoặc của ROM) để cho phép đọc các byte lệnh Tín hiệu PSEN/ ở logic 0 trong suốt thời gian tìm lạp lệnh Khi thực thi một chương trình trong ROM nội, PSEN/ ở logic 1
ALE (address latch entable): Là tín hiệu xuất ra ở chân thứ 30 để giải đa hợp
bus địa chỉ và bus dữ liệu Trong 1/2 chu kỳ đầu bộ nhớ, chân ALE xuất tín hiệu
để chốt địa chỉ (byte thấp của bus địa chỉ 16 bit) vào thanh ghi ngoài khi ta sử dụng Port 0 làm byte thấp địa chỉ Trong 1/2 chu kỳ bộ nhớ còn lại Port 0 sẽ xuất / nhập dữ liệu Chân ALE còn được dùng để nhập xung ngõ vào lập trình cho EPROM hoặc Flash ROM
EA/ (External Access) là chân 31 của chip AT89S8252 Chân này được nối
lên 5v khi thực thi chương trình trong ROM nội Chân này được nối đất, chương
Trang 19trình cần thực thi chứa ở bộ nhớ ngoài Chân này cũng có thể nhận điện áp cho phép lập trình 12v (VPP - programming enable voltage) trong khi lập trình Flash
Chân RESET: Dùng để thiết lập lại trạng thái ban đầu cho hệ thống Khi
chân này được treo ở logic 1 tối thiểu trong 2 chu kỳ máy, các thanh ghi bên trong của 89S8252 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống
Chân XTAL1 và XTAL2
Mạch dao động bên trong chip 89S8252 được ghép với thạch anh bên ngoài ở
2 chân XTAL1, XTAL2 Tần số của thạch anh là 12MHz
mạch tạo xung clock từ bên trong chip
Vcc: (chân 40) được nối lên nguồn 5v
2.1.3 Tổ chức bộ nhớ của AT 89S8252
Chip AT89S8252 có không gian bộ nhớ riêng cho chương trình và dữ liệu Cả bộ nhớ chương trình và bộ nhớ dữ liệu đều nằm trong chip Tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64K cho bộ nhớ chương trình và 64K cho
30pF
XTAL1
Hình 2.3: Mạch ghép nối thạch anh
Trang 20ngắt cách nhau 8 byte Ví dụ INTR0/ có địa chỉ 0003H, TIMER 0 có địa chỉ
000BH, INTR1/ có địa chỉ 0013H Ta sẽ xét các hoạt động của các ngắt sau
Nếu một chương trình nhỏ ta có thể dùng ROM nội, khi một chương trình lớn ta
có thể mở rộng chương trình bởi ROM ngoài Khi thực thi chương trình trong ROM nội, chân EA/ nối đất Còn khi thực thi chương trình trong ROM ngoại,
chân EA/ nối 5v ( hình 2.4) Khi có ROM ngoài cần có tín hiệu PSEN/
Khi sử dụng bộ nhớ ngoài port 0 trở thành bus địa chỉ (A0, A1, ,A7) và bus dữ liệu(D0, D1, ,D7) ALE chốt byte thấp địa chỉ Vì vậy ta chỉ cần 16 Khi sử dụng bộ nhớ ngoài, port 0 trở thành port địa chỉ (A0-A7) và port dữ liệu (D0-D7) ALE chốt byte thấp địa chỉ vì vậy ta chỉ cần 16 chân là được 16
đường địa chỉ và 8 đường dữ liệu
Đối với bộ nhớ chương trình ngoài là bộ nhớ chỉ đọc được cho phép bởi tín hiệu PSEN/ , EA/ nối đất Việc kết nối được chỉ ra như hình 2.5
Hình 2.4: Tổ chức bộ nhớ chương trình
Trang 212.1.3 2 Bộ nhớ dữ liệu RAM
AT89S8252 có 256 byte RAM ở bên trong chip Chúng được chia làm nhiều vùng khác nhau: vùng RAM đa mục đích, vùng RAM định địa chỉ bit, các dãy thanh ghi, và các thanh ghi chức năng đặc biệt lần lượt được chỉ ra trên hình 2.6 và 2.7
Hình 2.6: Tổ chức bộ nhớ dữ liệu Hình 2.5: Truy xuất bộ nhớ chương trình ngoài
Trang 222.1.4 Hoạt động định thời của AT89S8252
Các bộ định thời dùng để định thời trong một khoảng thời gian, đếm sự kiện hoặc dùng để tạo tốc độ baud cho việc truyền thông nối tiếp Trong AT89S8252
có ba bộ định thời là T0, T1 và T2
2.1.4 1 Bộ định thời T0 và T1
Việc lựa chọn chế độ hoạt động cho các Timer 0 và timer 1 nhờ vào thanh ghi TMOD Còn việc điều khiển các Timer hoạt động nhờ vào thanh ghi TCON
Có 4 mode hoạt động cho các Timer
Mode 0: Đây là chế độ định thời 13-bit của Timer Byte cao của bộ định
thời THx ( x = 0 or x =1) đ−ợc ghép với 5-bit thấp của bộ định thời TLx để tạo ra
bộ định thời 3-bit cao của TLx không đ−ợc sử dụng
Hình 2.7: Các thanh ghi chức năng đặc biệt
Trang 23Mode 1: Đây là chế độ định thời 16-bit Nó cũng giống chế độ định thời
13-bit Bộ định thời đếm từ giá trị 0000H đến giá trị FFFFH Cờ tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFH xuống 0000H Cờ này được ghi / xoá bằng phần mềm hoặc được tự xoá khi có trình phục vụ ngắt Timer tương ứng được gọi
Mode 2: Đây là chế độ tự nạp lại 8-bit Byte thấp của bộ định thời TLx ( x=
0 or x = 1) được hoạt động định thời 8- bit trong khi byte cao của bộ định thời, lưu giữ giá trị nạp lại, khi số đếm tràn từ FFH xuống 00H, không chỉ cờ tràn của
bộ định thời được set lên 1 mà giá trị trong THx còn được nạp vào trong TLx việc đếm sẽ tiếp tục từ giá trị này cho đến khi xảy ra tràn (FFH về 00H) kế tiếp Chế độ này khá thuận lợi do bởi việc tràn bộ định thời xảy ra ở những khoảng thời gian xác định và tuần hoàn một khi các thanh ghi TMOD và THx được khởi
động
Mode 3 : Đây là chế độ định thời chia sẻ Có hoạt động khác nhau cho từng
bộ định thời, bộ định thời 0 ở chế độ 3 được chia làm hai bộ định thời 8 bit hoạt
động riêng rẽ TL0 và TH0, mỗi bộ định thời sẽ set những cờ tràn tương ứng TF0
Hình 2.9: Mode 2 của bộ định thời 1
Hình II.8 : Mode 0 của bộ định thời 1
Hình 2.8: Mode 0 của bộ định thời1
Trang 24Bộ định thời 1 không hoạt động ở chế độ 3 nhưng có thể được khởi động
bằng cách chuyển bộ định thời này vào một trong các chế độ khác nhau Giới hạn duy nhất là cờ tràn TF1của bộ định thời 1 không bị ảnh hưởng bởi bộ định thời 1 khi bộ này xảy ra tràn vì TF1 được nối với bộ định thời 8 bit TH0
2.1.4.2 Bộ định thời 2 của AT89S8252
AT89S8252 có thêm bộ định thời thứ ba làm tăng khả năng của vi điều khiển Các thanh ghi liên quan đến bộ định thời 2 bao gồm: các thanh ghi định thời TL2, TH2; thanh ghi điều khiển định thời T2CON; các thanh ghi thu nhận RCAP2L, RCAP2H Các chế độ hoạt động được điều khiển bằng thanh ghi T2CON
Bit Ký hiệu Địa chỉ
bit
Chức năng
T2CON.7 TF2 CFH Cờ tràn của bộ định thời 2 ( không được set khi tclk
hoặc rclk =1 ) T2CON.6 EXF2 CEH Cờ ngoài của bộ định thời 2 Cờ được set khi có sự thu
nhận hoặc nạp lại xảy ra do bởi sự chuyển trạng thái 1 xuống 0 ở chân T2EX và EXF2=1; Khi các ngắt do bộ
định thời được phép, EXF2 =1 làm cho CPU trỏ tới trình phục vụ ngắt EXF2 được xoá bởi phần mềm T2CON.5 RCLK CDH Clock thu của bộ định thời 2 Khi được set, bộ định
Hình 2.10: Mode 3 của bộ định thời 0 và 1
Trang 25thời 2 cung cấp tốc độ baud khi thu cho port nối tiếp;
bộ định thời 1 cung cấp tốc độ baud khi phát
T2CON.4 TCLK CCH Clock phát của bộ định thời 2 Khi đ−ợc set, bộ định
thời 2 cung cấp tốc độ baud cho port nối tiếp( khi phát ); bộ định thời 1 cung cấp tốc độ baud (khi thu )
T2CON.3 EXEN2 CBH Cho phép từ bên ngoài Khi đ−ợc set, việc thu nhận và
nạp lại xuất hiện khi có sự chuyển trạng thái 1 xuống 0
ở chân T2EX
T2CON.2 TR2 CAH Bit điều khiển hoạt động của bộ định thời 2 Bit này
đ−ợc set hoặc đ−ợc xoá bởi phần mềm để điều khiển
bộ định thời 2 hoạt động hoặc không
T2CON.1 C/T2 C9H Bit chọn chức năng đếm hoặc định thời của bộ định
thời 2 C/T2=1 đếm sự kiện; C/T2=0 đến thời gian.T2CON.0 CP/
C2RL
C8H Cờ thu nhận, nạp lại của bộ định thời 2 Khi đ−ợc set,
việc thu nhận xuất hiện khi có sự chuyển trạng thái 1 xuống 0 ở T2ex nếu EXEN2 =1; khi đ−ợc xoá, tự
động nạp lại xuất hiện khi có tràn bộ định thời hoặc sự chuyển trạng thái ở T2ex nếu EXEN2 =1; nếu RCLK hoặc TCLK =1, bit này đ−ợc bỏ qua
Bộ định thời 2 có 3 chế độ hoạt động: tự nạp lại, thu nhận và tạo tốc độ
baud (bảng 2.3)
Bảng 2.2: Chức năng của thanh ghi T2CON
Trang 26- Chế độ tự nạp lại
CP/RL2 C = 0 bộ định thời 2 hoạt động ở chế độ tự nạp lại
TL2/TH2 làm nhiệm vụ các thanh ghi định thời
RCAP2L/RCAP2H lưu giữ giá trị nạp lại
Bộ định thời 2 luôn là bộ định thời 16 bit ngay cả ở chế độ tự nạp lại Việc nạp lại xảy ra khi có tràn số đếm từ FFFFH xuống 0000H ở TL2/TH2 và thiết lập TF2 = 1 Điều kiện này được xác định bởi phần mềm hoặc được lập trình để tạo ra 1 ngắt Với vả hai cách vừa nêu, TF2 phải được xoá bởi phần mềm trước khi cờ này được set lần nữa EXEN2 = 1 và có sự chuyển trạng thái từ 1 xuống 0 của tín hiệu đặt vào chân T2EX (P1.1) cũng xảy ra chế độ tự nạp lại Sự chuyển trạng thái từ 1 xuống 0 của tín hiệu đặt vào chân T2EX thiết lập bit EXF2 =1 EXF2 cũng được kiểm tra bởi phần mềm hoặc tạo ra một ngắt EXF2 phải được xoá bởi phần mềm Chế độ hoạt động này được chỉ ra trên hình 2.11
- Chế độ thu nhận
CP/RL2C =1 bộ định thời 2 hoạt động ở chế độ thu nhận Bộ định thời 2 hoạt động như là một bộ định thời 16 bit Khi có tràn số đếm từ FFFFH xuống 0000H ở TL2/TH2 sẽ thiết lập TF2 = 1 TF2 được kiểm tra bởi phần mềm hoặc
Hình 2.11: Chế độ tự nạp lại của bộ định thời 2
Trang 27tạo ra một ngắt Để cho phép chế độ này hoạt động, EXEN2 phải được set bằng
1 EXEN2 =1 và tín hiệu đặt ở T2EX chuyển trạng thái từ 1 xuống 0 sẽ đưa các
giá trị trong các thanh ghi định thời TL2/TH2 vào trong các thanh ghi RCAP2L/RCAP2H
Việc nạp lại giá trị này được điều khiển bởi xung clock Cờ EXF2 cũng
được set bằng 1, được kiểm tra bằng phần mềm hoặc tạo ra một ngắt Chế độ thu nhận được chỉ ra trên hình 2.12
- Đặt tốc độ baud
Hai thanh ghi định thời TL2/TH2 hoạt động định thời 16 bit ( chú ý
là fOSC được chia 2 ) Trong khi đó 2 thanh ghi thu nhận RCAP2L/RCAP2H của bộ định thời lưu giữ giá trị nạp lại Khi có tràn số đếm từ FFFFH xuống 0000H ở TL2/TH2 sẽ tạo ra 1 ngắt và giá trị trong 2 thanh ghi thu nhận
RCAP2L/RCAP2H của bộ định thời còn được nạp vào TL2/TH2
Trang 28- Nếu bit SMOD = 1: Tốc độ baud = tốc độ tràn của bộ định thời 1
chia cho 16
+ Bộ định thời 2:
Tốc độ baud = tốc độ tràn của bộ định thời 2 chia cho 16
Để lựa chọn bộ định thời 2 hoạt động ở chế độ tạo tốc độ baud cho port nối tiếp thì bit TCLK hoặc RCLK phải đ−ợc set bằng 1 RCLK =1 bộ định thời
2 hoạt động ở chế độ tạo tốc độ baud thu TCLK =1 bộ định thời 2 hoạt động ở chế độ tạo tốc độ baud thu Tốc độ baud phát và thu có thể sẽ khác nhau nếu ta kết hợp cả bộ định thời 1 & 2 ( hình 2.13)
Khi EXTE2 đ−ợc set bằng 1, T2EX chuyển trạng thái từ 1 xuống 0 sẽ set EXF2 nh−ng không nạp lại giá trị trong 2 thanh ghi thu nhận RCAP2L / CAP2H vào TL2 / TH2
2.1.5 Hoạt động của Port nối tiếp
Chức năng cơ bản của port nối tiếp là chuyển đổi dữ liệu từ song song thành nối tiếp khi phát và từ nối tiếp thành song song khi thu Dữ liệu đ−ợc truyền đi hoặc nhận về thông qua bộ đệm dữ liệu nối tiếp SPUF (Serial Data Buffer ) Khi truyền đi, dữ liệu đ−ợc chuyển từ song song sang nối tiếp thông qua chân TXD Khi thu, dữ liệu đ−ợc chuyển từ nối tiếp sang song song thông qua chân RXD
Hình 2.13: Đặt tốc độ baud
Trang 29Thanh ghi SPUF có địa chỉ 99H Việc ghi dữ liệu cho SPUF tức là phát dữ liệu, việc đọc SPUF tức truy xuất dữ liệu nhận được ( thu dữ liệu ) Điều khiển port nối tiếp thông qua thanh ghi SCON có địa chỉ là 98H, thanh ghi này là thanh ghi
định địa chỉ từng bit cho ta xác định được các chế độ làm việc của port nối tiếp (thông qua hai bit MS0 & MS1) Port nối tiếp có 4 chế độ hoạt động sau :
Chế độ 0: Trong chế độ này cổng RXD vừa nhận dữ liệu, vừa phát dữ liệu
có độ dài 8 bit Bit trẻ nhất được phát / truyền đầu tiên Tốc độ truyền là fosc /12 (fosc tần số xung clock) TXD được dùng làm chân xuất xung clock dịch bit Việc phát dữ liệu được khởi động bằng một lệnh ghi dữ liệu vào SBUF Dữ liệu được dịch ra ngoài trên chân RxD với các xung clock dịch bit được gửi ra trên chân TxD Mỗi một bit hợp lệ được truyền đi trên chân RxD trong một chu kỳ máy
Chế độ 1: Đây là chế độ truyền thông UART 8-bit có tốc độ baud thay đổi
Port nối tiếp hoạt động như một bộ thu phát không đồng bộ 8-bit có tốc độ baud thay đổi UART là một bộ thu và phát dữ liệu nối tiếp với mỗi một ký tự dữ liệu
được đứng trước bởi một bit start (logic 0) và được đứng sau bởi một bit stop (logic 1) Như vậy ở chế độ 1 ta có 10- bit được thu trên chân RxD và 10-bit
được phát trên chân TxD cho mỗi ký tự dữ liệu
Chế độ 2 : Đây là chế độ truyền thông UART 9-bit có tốc độ baud cố định
Có 11 bit được thu hoặc phát cho mỗi ký tự dữ liệu: gồm 1bit start, 8 bit dữ liệu, bit thứ 9 ( số thứ tự 10) là bit có thể lập trình được, bit cuối cùng là bit stop Dữ liệu được nhận qua cổng RxD và được phát qua cổng TxD Khi phát, bit thứ 9 là bit bất kỳ được đặt vào bit TB8 trong thanh ghi SCON (có thể là bit chẵn lẻ) Khi thu bit thứ 9 nhận được sẽ đặt vào bit RB8 trong thanh ghi SCON Tốc độ baud không thay đổi có thể fosc/32 hoặc fosc/64 tuỳ thuộc vào bit SMOD của thanh ghi
điều khiển nguồn PCON Nếu SMOD = 0 thì tốc độ truyền fosc/32, nếu SMOD =1 thì tốc độ truyền fosc/64
Chế độ 3: Đây là chế độ truyền thông UART 9-bit có tốc độ baud thay đổi
Nó hoạt động tương tự như chế độ 2 nhưng tốc độ truyền có thể thay đổi được
Trang 30Muốn thay đổi tốc độ truyền có thể sử dụng bộ định thời 1, hoặc bộ định thời 2 của 8052, hoặc cả hai
2.1.6 Hoạt động của ngắt trong AT89S8252
Có 6 nguyên nhân để tạo ra ngắt trong AT89S8252 Đó là 2 ngắt ngoài, 3 ngắt do bộ định thời và một ngắt do port nối tiếp Khi ta thiết lập trạng thái ban
đầu (sau khi RESET), tất cả các ngắt đều bị vô hiệu hoá và sau đó chúng được cho phép riêng rẽ bằng phần mềm
Khi chương trình đang thực hiện, nếu có ngắt với ưu tiên cao xuất hiện, trình phục vụ ngắt cho ngắt có mức ưu tiên thấp tạm dừng Ta không thể tạm dừng một chương trình ngắt có mức ưu tiên cao hơn
Hình 2.14: Các véc tơ ngắt của AT89S8252
Khi có 2 ngắt khác nhau xuất hiện đồng thời, ngắt có mực ưu tiên cao sẽ
được phục vụ trước IE0 là ngắt có ưu tiên cao nhất sau đó là TF0, IE1, TF1, RI,
TI và cuối cùng TF2 và EXF2 là thấp nhất Khi một ngắt được chấp nhận, giá trị
được nạp cho bộ đếm chương trình được gọi là vector ngắt Vector ngắt là địa chỉ bắt đầu của trình phục vụ ngắt của các ngắt tương ứng Các vector ngắt được cho
ở bảng 2.4:
Trang 31Nguồn ngắt Cờ Địa chỉ vector ngắt
2.1.7 Hoạt động RESET của AT89S8252
AT89S8252 được reset bằng cách giữ chân RST ở mức cao tối thiểu hai chu
kỳ máy và sau đó chuyển về mức thấp
Khi reset hệ thống thanh ghi PC được nạp địa chỉ 0000H, khi đó chương trình sẽ bắt đầu từ địa chỉ đầu tiên trong bộ nhớ chương trình Nội dung RAM của trên chip không bị ảnh hưởng khi ta reset hệ thống
2.1.8 Lập trình cho Flash ROM và EEPROM
AT98S8252 của hãng Atmel có 8K byte Flash ROM và 2K byte EEPROM Bình thường Flash ROM và EEPROM ở trạng thái bị xoá (toàn bộ nội dung là FFH) và sẵn sàng để được lập trình Mạch giao tiếp lập trình nhận điện áp cao 12v ở chế độ lập trình song song và điện áp thấp 5v ở chế độ lập trình nối tiếp Chế độ lập trình nối tiếp thích hợp để Dowmload AT89S8252 bên trong hệ thống của người sử dụng, chế độ lập trình song song tương thích với các thiết bị lập trình cho Flash ROM và EEPROM Ta chỉ xét chế độ lập trình nối tiếp
Chế độ lập trình nối tiếp
Cả dãy bộ nhớ Flash và EEPROM đều có thể được lập trình bằng cách sử dụng bus nối tiếp SPI (Serial Peripheral Interface) khi chân RTS được kéo lên
Trang 32Vcc Giao diện lập trình nối tiếp bao gồm các chân SCK, MOSI ( input) và MISO (output) Sau khi chân RST được đưa lên mức cao, lệnh cho phép lập trình được thực hiện đầu tiên trước khi việc lập trình hoặc xoá được thực hiện
Một chu trình xoá tự động được tạo ra trong hoạt động lập trình tự định thời (chỉ có trong chế độ lập trình nối tiếp) và không cần thiết thực hiện lệnh xoá chip trừ khi các bit khóa được lập trình Việc xoá chip trả về tại tất cả các ô nhớ trong Flash và EEPROM giá trị FFH
Phân vùng không gian địa chỉ như sau:
Code memory (Flash): 0000H đến 1FFFH
Data memory (EEPROM): 000H đến 7FFH
Tần số xung clock nối tiếp (SCK) nên nhỏ hơn 1/40 tần số dao động thạch
anh
Thuật giải lập trình nối tiếp
Để lập trình và kiểm tra AT89S8252 trong chế độ lập trình nối tiếp, phải thực hiện theo các bước sau:
Bước 1: Trình tự cấp nguồn:
Cấp nguồn cho chân Vcc, đất cho chân GND
Set chân RST lên “1”
Cấp xung 3-24 MHz vào chân XTAL1 và đợi ít nhất 10ms
Bước 2: Gửi một lệnh cho phép lập trình nối tiếp tới chân MOSI (P1.5)
Tần số xung dịch cấp cho chân SCK (P1.7) phải nhỏ hơn 1/40 tần số dao
động thạch anh ở chân XTAL1
Bước 3: Dãy bộ nhớ mã và dữ liệu được lập trình một byte tại một thời điểm bằng cách cung cấp địa chỉ và dữ liệu cùng nhau với lệnh ghi thích hợp Trước khi được ghi, ô nhớ được chọn tự động được xoá Chu trình ghi là tự định thời và thường mất khoảng 2,5 ms ở 5v
Bước 4: Mọi ô nhớ đều có thể được kiểm tra bằng cách sử dụng lệnh đọc trả về nội dung của ô nhớ có địa chỉ được chọn ở đầu ra nối tiếp MISO (P1.6)
Trang 33Bước 5: Tại điểm kết thúc của quá trình lập trình, chân RST có thể được đặt mức
logic thấp để bắt đầu hoạt động bình thường
Trình tự tắt nguồn (nếu cần thiết)
Set chân XTAL1 xuống “0”
Set chân RST xuống “0”
Tắt nguồn Vcc
Hình 2.15: Sơ đồ nạp chương trình Hình 2.16: Sơ đồ kiểm tra Flash
Cho Flash ROM
2.2 Các công cụ phát triển cho vi điều khiển AT89S8252 2.2.1 Phần mềm Keil của hãng Keil Software
Phầm mềm Keil àVision là một chương trình biên dịch cho phép người sử dụng có thể viết được các chương trình điều khiển cho họ vi điều khiển MSC-51 bằng ngôn ngữ C và cả ASM Nó có chứa hầu hết các hàm chuẩn của ANSI-C
Điều này giúp cho người sử dụng có thể tận dụng được những hàm chuẩn của C
để viết chương trình cho vi điều khiển Việc tổ chức chương trình thành các modul nhỏ cũng rất dễ thực hiện Chương trình biên dịch cho ngôn ngữ C của nó chính là Cx51 Compiler Sau đây ta sẽ xem xét một vài đặc điểm của phần mềm này
Trang 34Các kiểu dữ liệu trong chương trình:
Cx51 Compiler hỗ trợ tất cả các kiểu dữ liệu chuẩn của C như: char, short, int, long, float Ngoài ra nó còn có một vài kiểu dữ liệu đặc biệt tương thích với
định nghĩa từng bit cho các bit trong các thanh ghi đặc biệt mà có thể định địa chỉ bit
Ví dụ khai báo :
Cách tổ chức bộ nhớ của vi điều khiển trong phần mềm Keil C51
- Bộ nhớ chương trình: Đây là vùng nhớ chỉ đọc trong vi điều khiển Nó có thể có dung lượng tới 64KB Trong phầm mềm Keil C51 thì vùng nhớ này được
định dạng bằng từ khoá code
Trang 35Ví dụ khai báo biến thuộc vùng code:
char code str[]={“CD CNND”}; //Khai báo một mảng ký tự chứa trong vùng nhớ code
- Bộ nhớ dữ liệu bên trong vi điều khiển: Đây là vùng nhớ có thể vừa ghi và
đọc Có 3 kiểu vùng nhớ dữ liệu ở bên trong vi điều khiển Đó là các kiểu: data, idata, bdata Vùng nhớ dữ liệu kiểu data là vùng nhớ chứa 128 byte dữ liệu đầu tiên của vi điều khiển Vùng nhớ này có thể truy cập thông qua địa chỉ trực tiếp
đ−ợc Vùng nhớ dữ liệu kiểu idata là vùng nhớ 256 byte dữ liệu truy nhập thông qua địa chỉ gián tiếp Vùng nhớ dữ liệu kiểu bdata là vùng nhớ chứa 16 byte định
địa chỉ bit từ địa chỉ 20H đến 2FH
Ví dụ khai báo biến trong vùng nhớ dữ liệu trong:
unsigned char data v1; //Khai báo biến v1
unsigned int idata v2; //Khai báo biến v2
char bdata v3; //Khai báo biến v3
- Bộ nhớ dữ liệu ngoài: Có 2 kiểu dữ liệu ngoài ở trong Keil C51 là XDATA và PDATA XDATA là vùng nhớ dữ liệu ngoài có thể định địa chỉ đ−ợc
đến 64 KB dữ liệu PDATA là vùng nhớ chứa từng trang dữ liệu Mỗi trang dữ liệu ngoài chứa đ−ợc 256 byte Để có thể truy cập đ−ợc bộ nhớ dữ liệu ngoài, ta
phải dùng từ khoá _at_ để định địa chỉ cho các biến
Ví dụ khai báo biến trong vùng nhớ dữ liệu ngoài:
float xdata a1 _at_ 0x4000; //Khai báo biến a1 có địa chỉ 4000H
unsigned long pdata a2 _at_ 0x2005; // Khai báo biến a2
Con trỏ trong phần mềm Keil C51
Con trỏ trong Keil C51 đ−ợc khai báo giống nh− khai báo con trỏ trong ngôn ngữ C
Ví dụ về khai báo con trỏ:
char *s; //Con trỏ của một string
int *p; //Con trỏ kiểu int
Trang 36Con trỏ được sử dụng để truy cập tới bất cứ phần bộ nhớ nào của vi điều khiển Có hai cách khai báo sử dụng con trỏ Generic Pointers là kiểu con trỏ dùng chung Khai báo con trỏ sẽ chiếm 3 byte của vùng nhớ dữ liệu mà nó trỏ
đến Con trỏ còn có thể khai báo vùng nhớ dữ liệu cho con trỏ
Ví dụ:
char data *str; /* ptr to string in data */
int xdata *numtab; /* ptr to int(s) in xdata */
long code *powtab; /* ptr to long(s) in code */
Sử dụng ngắt của vi điều khiển trong Keil C51
Phần mềm Keil C51 được thiết kế sử dụng ngắt rất đơn giản và dễ sử dụng
Từ khoá khai báo để sử dụng ngắt là interrupt(bảng 2.5)
Chương trình con ví dụ về việc sử dụng ngắt:
void InterruptTimer0(void) interrupt 1 {
//Các câu lệnh trong chương trình phục vụ ngắt
}
Ngoài ra, Keil C51 còn là chương trình mô phỏng chip rất tốt bằng chương trình tích hợp Scope Nó cho phép người sử dụng mô phỏng chương trình viết trong C chạy trên nền chip giống như thật Người sử dụng có thể dễ dàng theo dõi giá trị của Timer, trạng thái các ngắt, đầu ra cổng nối tiếp, đầu ra các port P0….P3
Bảng 2.5: Các vecter ngắt trong phần mềm
Trang 38Chương 3 Nghiên cứu chế tạo KIT vi điều khiển dùng trong đào tạo hệ cao đẳng ngành điện tự động hóa
Theo nội dung đề tài:“ Nghiên cứu chế tạo KIT vi điều khiển dùng trong
đào tạo hệ Cao đẳng ngành Điện tự động hóa tại trường Cao đẳng Công nghiệp Nam Định” nhằm phục vụ dạy và học môn học kỹ thuật vi điều khiển
cho sinh viên hệ Cao đẳng ngành Điện tự động hóa trường Cao đẳng Công nghiệp Nam Định
Để thiết kế được bộ KIT vi điều khiển ngoài mục đích điều khiển, bộ KIT
còn phải sử dụng dễ dàng, thân thiện với người sử dụng, các bước cần thực hiện cho việc xây dựng bộ KIT vi điều khiển là:
Khối CPU : Nhận chương trình, điều khiển thiết bị ngoại vi
Khối LCD : Là màn hình tinh thể lỏng dùng để hiển thị các thông số
Khối LED : Dùng để hiển thị các thông số
Khối Keyboad: Là khối bàn phím dùng để nhập các thông số của chương
trình
Khối ADC: Là bộ biến đổi ADC dùng để biến đổi tín hiệu từ dạng tương tự
sang dạng số
Khối DAC : Là bộ biến đổi từ số sang tương tự dùng để biến đổi các tín
hiệu rời rạc sang dạng tín hiệu liên tục
Khối động cơ một chiều: Bao gồm mạch điều khiển và động cơ
Khối động cơ một bước: Bao gồm mạch điều khiển và động cơ
Trang 393.2.2 Khối giao tiếp vi điều khiển với bàn phím
Bàn phím là một thiết bị rất thông dụng trong các bộ vi điều khiển Có thể chỉ là một công tắc có gắn phím nối vào một chân nào đó của bộ vi điều khiển hoặc cũng có nhiều công tắc có gắn phím đ−ợc tổ chức theo một ma trận Có rất nhiều loại công tắc đ−ợc dùng trong phối ghép với bộ vi điều khiển nh−ng có thể xếp chúng vào hai nhóm:
+ Công tắc có tiếp xúc cơ khí ( kiểu điện trở: điện trở thay đổi khi ấn và khi nhả phím )
+ Công tắc không có tiếp xúc cơ khí ( kiểu điện dung: điện dung thay đổi khi ấn và khi nhả phím hoặc kiểu hiệu ứng Hall: điện áp thay đổi khi ấn và nhả phím )
Trong các loại công tắc đó, loại công tắc điều khiển điện trở dựa trên tiếp xúc cơ khí là rất thông dụng trong thực tế Trên hình 3.2 là cách nối công tắc vào mạch điện và đáp ứng của nó khi có lực tác động vào bàn phím (ấn phím )
Vi điều khiển
Trang 40Nhìn đáp ứng về mặt cơ điện của công tắc ta nhận thấy: vì công tắc là một
hệ thống có quán tính, do đó khi ta ấn phím rồi nhả phím, xung điện thu được ở
đầu ra của nó không phải là liên tục mà bị đứt quãng tại các giai đoạn quá độ ( lúc bắt đầu ấn phím và lúc bắt đầu nhả phím ) Điều này xảy ra là do trong kết cấu của công tắc có các bộ phận đàn hồi, khi bị tác động của lực bên ngoài các kết cấu động của công tắc bị dao động làm cho bề mặt tiếp xúc của công tắc bị biến đổi
Trong thực tế thì mỗi quá trình quá độ kéo dài khoảng 10-20 ms Nếu trong thời kỳ quá độ ta đọc thông tin từ công tắc thì rất dễ nhận được thông tin sai lệch
về trạng thái của công tắc, vì vậy người ta thường phải chờ 10-20 ms sau khi công tắc ấn hoặc nhả để đọc được trạng thái của công tắc trong giai đoạn xác lập
Khi một công tắc được nối thẳng vào một chân nào đó của bộ vi điều khiển hoặc các mạch phụ trợ, có một cách để tránh các hiệu ứng phụ không muốn có thể tác động lên hoạt động của bộ vi điều khiển do việc công tắc bị rung gây ra
là dùng các mạch tích phân nối bên cạnh công tắc như trong trường hợp tạo đầu vào cho RESET của hệ vi điều khiển
Để nhận được thông tin chính xác về trạng thái của một phím trong các hệ thống nhiều phím ta thường phải làm 3 khối công việc chính như sau:
F(N)
t(s) Ura(v)
t(s)
5v
Ura F
5v R
Hình 3.2: ảnh hưởng độ rung của công tắc