Vận dụng những kiến thức và kinh nghiệm đã được học, nhóm sinh viên đã khảo sát được sơ đồ nguyên lí, đặc tính kỹ thuật của từng module trên bộ Kit thực hành, xây dựng các chương trình ứ
DẪN NHẬP
ĐẶT VẤN ĐỀ
Ngày nay, kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng Từ các dây chuyền sản xuất lớn trong công nghiệp đến các dây chuyền sản xuất nhỏ lẻ hay đến một số thiết bị trong gia đình đều thấy sự hiện diện của vi điều khiển Các ứng dụng phức tạp có thể đƣợc sử dụng tối ƣu hóa bởi các bo mạch vi điều khiển nhỏ gọn, dễ sử dụng Vì vậy, để nước ta có thể đuổi kịp trình độ về kỹ thuật, công nghệ, xa hơn là nền kinh tế thì việc trang bị kiến thức môn vi điều khiển đến sinh viên là một vấn đề cấp thiết
Với sự phát triển mạnh mẽ của khoa học công nghệ, những nền tảng thiết bị phần cứng hỗ trợ cho nghiên cứu, học tập cũng luôn luôn biến đổi cho phù hợp nhu cầu công nghệ hiện nay Trong quá khứ, các nhà giáo dục gặp nhiều khó khăn trong việc tiếp cận với các công cụ và công nghệ với giá thành phải chăng để cung cấp cho sinh viên những kinh nghiệm thực hành Trong khi đó, nhu cầu của người học cần được vận dụng những lí thuyết một cách trực quan lên những mô hình thực hành, thí nghiệm là rất lớn
Vì vậy, với sự phát triển của công nghệ kỹ thuật hiện nay, những thiết bị mô hình hiện đại phục vụ cho việc học tập không còn khan hiếm như trước nên nhu cầu khai thác những mô hình này đƣa vào giảng dạy thực là vấn đề cần thiết và cấp bách
Trên thế giới cũng có rất nhiều mô hình thực hành vi điều khiển, nước ta cũng đã có thể sản xuất đƣợc nhiều bộ rất hiện đại nhƣng số lƣợng vẫn còn hạn chế MULTIPURPOSE TRAINING KIT là một mô hình mới mẻ sẽ góp phần giúp cho sinh viên kĩ thuật có thể đa dạng hơn trong tiếp cận môn học vi xử lý thông qua các buổi thực hành, thí nghiệm trực quan, từ đó tích lũy đƣợc kinh nghiệm để ứng dụng vào thực tiễn sau này.
LÝ DO CHỌN ĐỀ TÀI
Ngày nay khoa học kỹ thuật phát triển rất mạnh mẽ, những phát minh công nghệ lao động Đối với sinh viên cũng không nằm ngoài quy luật đó, do vậy sinh viên luôn phải trao dồi, tìm hiểu và nghiên cứu kiến thức mới để làm chủ công nghệ, những kiến thức mới đƣợc phát triển dựa trên những kiến thức cơ bản Mà ở đây việc tìm hiểu và nghiên cứu một bộ Kit mới, một phương pháp lập trình mới là ưu tiên hàng đầu, đây cũng là một thách thức lớn Qua những tiếp cận tìm hiểu nghiên cứu sinh viên sẽ kiểm tra lại những kiến thức cơ bản đã học kết hợp với những kiến thức mới để tạo ra một ứng dụng thực tế Để dễ dàng nắm bắt tốt tính năng, đặc điểm của Kit MULTIPURPOSE TRAINING và các phần mềm lập trình cho từng vi điều khiểntrên Kit, đồng thời xây dựng tài liệu giảng dạy xoay quanh mô hình, người nghiên cứu cần phải phát huy tối đa khả năng tìm hiểu cấu tạo, ngôn ngữ lập trình, vận dụng những kiến thức đã đƣợc học để xây dựng cơ sở lí thuyết xoay quanh vi điều khiển (PIC, AVR) và bộ Kit, phát triển những ví dụ minh họa để người học dễ dàng tiếp cận với mô hình MULTIPURPOSE TRAINING này Nhận thấy đƣợc tính cần thiết của nhiệm vụ và những yêu cầu về năng lực khi thực hiện đề tài là phù hợp với khả năng của nhóm, cho nên nhóm thực hiện đồ án quyết định thực hiện đề tài: “Nghiên cứu Kit Vi điều khiển MULTIPURPOSE TRAINING và biên soạn tài liệu hướng dẫn thực hành kỹ năng nghề cho sinh viên ngành sƣ phạm Kỹ thuật Điện- Điện tử.”
ĐỐI TƢỢNG NGHIÊN CỨU
Trong giới hạn của đề tài, người thực hiện đề tài chỉ tập trung nghiên cứu đặc tính kỹ thuật của kit MULTIPURPOSE TRAINING,dựa vào đó có thể trực quan hóa đặc tính của kit MULTIPURPOSE TRAININGthông qua các phần mềm lập trình cho vi điều khiển nhƣ CCS cho PIC, CODEVISION cho AVR, từ đó đi xây dựng tài liệu giảng dạy thực hành trên kit MULTIPURPOSE TRAINING cho sinh viên nghề và sinh viên ngành sƣ phạm kỹ thuật điện-điện tử
Dù còn hạn chế về thời gian và kiến thức chuyên môn, chưa nắm vững hoàn toàn công nghệ kỹ thuật của MULTIPURPOSE TRAINING để khai thác triệt để các đặc tính, người thực hiện đề tài đã nỗ lực hoàn thiện được một số ứng dụng trên KIT MULTIPURPOSE TRAINING, chứng tỏ tiềm năng của công nghệ này trong thực tiễn.
MỤC TIÊU VÀ GIỚI HẠN ĐỀ TÀI
Nhóm sinh viên sẽ tiến hành khảo sát mô hình MULTIPURPOSE TRAINING, biểu diễn mối liên hệ thông qua sơ đồ khối, vẽ lại sơ đồ nguyên lý của từng Module có trên mô hình MULTIPURPOSE TRAINING Viết chương trình mẫu cho các Mudule ứng với các vi điều khiển AVR (ATMEGA32), PIC (16F877A) Xây dựng bài giảng tích hợp thực hành trênmô hình MULTIPURPOSE TRAINING cho đối tƣợng sinh viên trung cấp nghề và sinh viên sƣ phạm kỹ thuật điên-điện tử
- Khảo sát tìm hiểu sơ đồ nguyên lí các module trên Kit MULTIPURPOSE
- Biên soạn tài liệu hướng dẫn thực hành kỹ năng nghề cho sinh viên trung cấp nghề và sinh viên ngành sƣ phạm kỹ thuật điện-điện tử Bao gồm:
Bài giảng tích hợp thực hành bao gồm đề cương chi tiết, nội dung và giáo án cho vi xử lí PIC16F877A trên Kit MULTIPURPOSE TRAINING
Bài giảng tích hợp thực hành bao gồm đề cương chi tiết, nội dung và giáo án cho vi xử lí ATEMEGA32 trênKit MULTIPURPOSE TRAINING.
DÀN Ý NGHIÊN CỨU
- Tổng quan về MULTIPURPOSE TRAINING Kit
- Sơ đồ nguyên lí các Module
- Ngôn ngữ lập trình CCS
- Ngôn ngữ lập trình CodeVision
1.5.2.CÁC CHUẨN GIAO TIẾP VỚI KIT
- Biên soạn bài giảng tích hợp thực hànhbao gồm đề cương chi tiết và giáo án
- Biên soạn bài giảng tích hợp thực hành bao gồm đề cương chi tiết và giáo án cho vi xử lí AVR (ATMEGA32) trên kit MULTIPURPOSE TRAINING.
TÌNH HÌNH NGHIÊN CỨU
MULTIPURPOSE TRAINING là một bộ kit thực hành vi điều khiển còn mới lạ và ít được biết đến tại các trường Đại học, Cao đẳng Có rất ít thông tin về mô hình cũng nhƣ tài liệu về bộ kit này
Hiện tại trường Trung học Kỹ Thuật Thực Hành TPC-HCMUTE đã trang bị 10 bộ kit MULTIPURPOSE TRAINING song các bộ kit vẫn chƣa đƣợc tìm hiểu, nghiên cứu sâu Do đó nghiên cứu kit MULTIPURPOSE TRAINING là công việc cần thiết cho việc học tập và tiếp cận dễ dàng đối với mô hình thực tập mới.
Ý NGHĨA THỰC TIỄN
Việc khảo sát và biên soạn tài liệu thực hành cho kit sẽ là nền tảng cho các nghiên cứu tiếp theo, đồng thời giúp bộ kit được khai thác và vận dụng hiệu quả nguồn tài nguyên có sẵn Quá trình này nhằm phục vụ nhu cầu học tập của sinh viên bằng cách nâng cao tính thực tế và chất lượng tài liệu hướng dẫn Nhờ đó, kit có thể được triển khai rộng rãi trong giảng dạy và nghiên cứu, đóng góp vào sự phát triển năng lực tự học và tiếp cận nguồn tài nguyên giáo dục phong phú của nhà trường.
Kit lập trình cùng với các bài tập mẫu giúp người nghiên cứu có cái nhìn trực quan hơn với những kiến thức đã tiếp nhận, từ đó nâng cao thêm hiệu quả học tập, rút ngắn khoảng cách giữa lý thuyết và thực tiễn.
KIT MULTIPURPOSE TRAINING
TỔNG QUAN VỀ KIT MULTIPURPOSE TRAINING
MULTIPURPOSE TRAINING kit là một mô hình thực hành vi điều khiển đƣợc tích hợp rất nhiều Module khác nhau với mục đích phục vụ thực hành, áp dụng những kiến thức lý thuyết đƣợc học kiểm chứng trực quan lên mô hình Thông qua những buổi thực tập, sinh viên nắm vững, hiểu sâu hơn những kiến thức lý thuyết, vận dụng đƣợc vào thực tế
Bộ kit có trang bị sẵn 3 Module vi điều khiển là Module vi điều khiển PIC, Module vi điều khiển AVR và Module vi điều khiển họ AT89 Vì vậy bộ kit có thể thực hành đƣợc với nhiều loại vi điều khiển khác nhau.
CẤU TẠO KIT MULTIPURPOSE TRAINING
Hình 2-1: Bộ thí nghiệm Vi điều khiển MULTIPURPOSE TRAINING
Hình 2-2: Sơ đồ khối bố trí các module trên bộ thí nghiệm Vi điều khiển
Bộ kit vi điều khiển MULTIPURPOSE TRAINING đƣợc tích hợp rất nhiều Module phục vụ cho việc thực hành
Các Module trên kit thực hành vi điều khiển bao gồm:
Các module vi điều khiển
Các vi điều khiển đƣợc đặt trên những module riêng, và đƣợc kết nối với các pin header ra bên ngoài, kết nối sẵn với mạch reset và dao động Khi muốn sử dụng vi điều khiển mình cần thì chỉ cần chọn module vi điều khiển đó, cắm vào bộ thí nghiệm, kết nối nguồn cho module vi điều khiển thì có thể sử dụng
Hình 2-3 : Module vi điều khiển PIC ( PIC16F877A, PIC16F628A,PIC18F2550)
Hình 2-4 : Module vi điều khiển họ AT (AT89S52, AT89C2051)
Hình 2-5 : Module vi điều khiển AVR ( ATMEGA32,ATMEGA8, ATTINY2313V)
Led sẽ đƣợc sáng khi đƣợc cấp điện áp mức cao ( mức 1) và tắt khi đƣợc cấp điện áp mức thấp ( mức 0 ) Đây là một trong những ứng dụng đơn giản giúp chúng ta dễ dàng tiếp cận với lập trình cho các vi điều khiển
Hình 2-7: Sơ đồ nguyên lý Module led đơn
Module bao gồm 8 button và 8 switch
Button và switch đƣợc kết nối với GND, tức là khi nhấn (button) hoặc gạc qua vị trí ON (switch) thì tín hiệu điện áp sẽ đƣợc đƣa xuống mức thấp ( mức 0 ) và ngƣợc lại, khi ở trạng thái bình thường sẽ là điện áp mức cao ( mức 1)
Hình 2-9 : Sơ đồ nguyên lý Module button và switch
Hình 2-8: Module button và switch
Hình 2-11 : Sơ đồ nguyên lý Module led 7 đoạn
Module led 7 đoạn giúp người điều khiển hiển thị thông tin ra bên ngoài để dễ dàng cho việc theo dõi
Module này được thiết kế theo phương pháp quét led để giao tiếp với 4 led 7 đoạn anode chung Mục đích chính của việc sử dụng phương pháp quét led là để tiết kiệm đƣợc số chân điều khiển từ các vi xử lý
Hình 2-10 : Sơ đồ nguyên lý Module led 7 đoạn
Hình 2-13 : Sơ đồ nguyên lý kết nối ma trận led 8x8 2 màu đỏ và vàng
Hình 2-12 : Module led ma trận 8x8 2 màu đỏ và vàng
LCD có 11 đường giao tiếp để điều khiển: 8 đường dùng để truyền dữ liệu và 3 đường điều khiển
Có 2 loại truyền dữ liệu là truyền 8 bit và truyền 4 bit Với loại truyền 4 bit thì t chỉ cần kết 4 đường ( D4,D5,D6 và D7), 4 đường còn lại thì t sẽ kết nối với GND Như vậy, với kết nối theo kiểu truyền dữ liệu 4 bit thì ta chỉ cần 1 Port để điều khiển
Hình 2-15: Sơ đồ kết nối module LCD Hình 2-14 : Module LCD 16x2
Trong sơ đồ trên sử dụng ADC0809 có thể chuyển đổi 8 kênh dữ liệu ngõ vào tương tự Các đường tín hiệu điều khiển bao gồm:
- 8 đường dữ liệu số truyền tải kết quả chuyển đổi từ tương tự sang số: D0 đến D7 – tín hiệu ra
- 3 đường tín hiệu điều khiển để chọn kênh: AA, AB, AC – tín hiệu vào
- 2 đường tín hiệu điều khiển EOC để cho biết quá trình chuyển đổi kết thúc hay chƣa – tín hiệu ra
Hình 2-17 : Sơ đồ nguyên lý module ADC0809
Module RTC: kết nối giao tiếp với DS1307
Module RTC tích hợp IC DS1307 có chức năng lưu giá trị thời gian thực, module kết nối với vi điều khiển dùng làm đồng hồ số, hiển thị thời gian
Hình 2-19: Sơ đồ nguyên lý kết nối của DS1307 Hình 2-18: Module giao tiếp DS1307
Module Relay giúp cho việc điều khiển những tải lớn trở nên dễ dàng hơn Bản thân các vi điều khiển cho có thế điều khiển thiết bị với điện áp thấp (khoảng 5V), vì thế đối với những tải có công suất lớn hơn thì vi điều khiển phải điều khiển gián tiếp thông qua những thiết bị hổ trợ điều khiển khác
Hình 2-21: Sơ dồ nguyên lý của Module Relay
Module DC motor có tích hợp 1 động cơ DC 12V,giao tiếp với vi điều khiển thông qua IC L292 Module giúp ta làm quen với việc điều khiển động cơ DC bằng các loại vi xử lí
Hình 2-23: Sơ đồ nguyên lý module DC motor
Module step motor tích hợp 1 động cơ bước 12VDC, được điều khiển thông qua 4 transistor TIP122, vi điều khiển giao tiếp với động cơ thông qua 4 transistor này Module giúp ta tiếp cận và làm quen với việc điều khiển động cơ bước bằng các loại vi xử lí
Hình 2-25: Sơ đồ nguyên lý kết nối của Module Step Motor
Module tích hợp IC DAC0808 giúp chuyển tín hiệu tương tự thành tín hiệu số
Hình 2-27: Sơ đồ nguyên lý Module DAC0808
Module giao tiếp RS232/RS485
Module tích hợp cổng COM và 2 IC MAX232, MAX485 giúp vi điều khiển giao tiếp với máy tính, truyền và nhận dữ liệu thông qua hai giao diện RS232 và RS485
Hình 2-29 : Sơ đồ nguyên lý mạch giao tiếp RS232
Hình 2-28: Module giao tiếp RS232
Module LPT có tích hợp cổng LPT 25 chân và các IC giúp vi điều khiển giao tiếp với máy tính
Hình 2-31 : Sơ đồ nguyên lý mạch giao tiếp LPT
Hình 2-30: Module giao tiếp LPT
Module Graphic LCD đƣợc trang bị một màn hình LCD 64x128, hiển thị các dạng text, kí tự, ảnh động…Module giao tiếp với vi điều khiển với 2 nhóm chân chính là nhóm chân điều khiển và nhóm chân dữ liệu
Hình 2-33 : Sơ đồ nguyên lý kết nối của module GLCD
Module Analog tích hợp 2 ngõ ra điện áp 0-5 VDC, dùng để cấp tín hiệu tương tự cho vi điều khiển khi cần hoặc trong quá trình thực hành cần đến tín hiệu tương tự
Tương tự như Module Aalog, Module Pulse Power cung cấp một nguồn ra chuẩn có giá trị điện áp là 5V, dùng để cấp nguồn khi cần trong quá trình thực hành
MẠCH NẠP BURN-E CHO CÁC VI ĐIỀU KHIỂN
So với một số mạch nạp cho vi điều khiển khác thì mạch mạch nạp Burn-E khá là nhỏ gọn, gần giống như những USB thông thường mà chúng ta thường sử dụng Mạch nạp Burn-E đƣợc cấu thành bởi 3 yếu tố gắn bó mật thiết với nhau: Hardware, Firmware và Software Các yếu tố này đƣợc Pduytech phát triển và phối hợp ƣu điểm từ tính tiện lợi, mềm dẻo trong điều chỉnh Configuration registers của GTP-USB [Plus] và tính an toàn trong cấp nguồn cùng với tính đa dạng, dễ dàng nâng cấp của PICKit 2
Hệ điều hành mà Burn-E sử dụng đƣợc bao gồm Window XP, Window Vista, Window 7/8 cả 32-bits và 64-bits.Burn-E không yêu cầu cài đặt driver, sản phẩm có chức năng Plug and Play
Phần mềm Burn-E khá là dễ sử dụng và có thể dùng để nạp code cho nhiều họ vi điều khiển khác nhau ( ví dụ : họ AVR, PIC….)
2.3.2 NẠP CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN SỬ DỤNG MẠCH
Hình 2-37: Kết các chân vi điều khiển với mạch nạp BURN-E
Bước 1: Mở phần mềm BURN-E PROGRAMMER
Bước 2: Chọn họ vi điều khiển cần nạp như mục số 1 hình 2-37
Bước 3: Kết nối các chân vi điều khiển với mạch nạp BURN-E theo đúng thông tin ở mục số 2 hình 2-37
Nạp chương trình: Để nạp một file Hex cho vi điều khiển chúng ta sẽ thực hiện một số bước như sau:
Bước 1: Khởi động Burn-E Programmer và chọn vi điều khiển muốn sử dụng như hình:
Hình 2-38: Chọn chip vi điều khiển cần nạp
Bước 2: Chọn biểu tương Detect Device để kiểm tra kết nối giữa vi điều khiển với chương trình, ví dụ như trong hình 2-39 khi bảng thông báo để “Detected a PIC16F877A” thì xem nhƣ đã kết nối vối PIC thành công
Bước 3: Chọn thư mục chứa file Hex cần nạp cho vi điều khiển như hình:
Hình 2-40: Chọn file Hex cần nạp cho vi điều khiển
Hình 2-39 : Kiểm tra kết nối với giữa mạch nạp với vi điều khiển
Bước 4: Chọn vào biểu tượng Program All như hình 2-41 để tiến hành nạp file cho vi điều khiển:
Nếu phần mềm thông báo Programming Successful thì xem nhƣ đã nạp thành công
Hình 2-41: Tiến hành nạp file Hex cho vi điều khiển.
CÁC CHUẨN GIAO TIẾP MỞ RỘNG
CHUẨN GIAO TIẾP I2C
3.1.1 GIỚI THIỆU Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây đƣợc gọi là I2C I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit Đây là đường Bus giao tiếp giữa các IC với nhau I2C mặc dù đƣợc phát triển bới Philips, nhƣng nó đã đƣợc rất nhiều nhà sản xuất IC trên thế giới sử dụng I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có thể kể ra đây một vài tên tuổi ngoài Philips nhƣ: Texas Intrument(TI), MaximDallas, analog Device, National Semiconductor Bus I2C đƣợc sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau nhƣ các loại Vi điều khiển 8051, PIC, AVR, ARM chip nhớ nhƣ: RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự(DAC), IC điểu khiển LCD, LED
Hình 3.1 Bus I2C và các thiết bị ngoại vi
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL) SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng Như ta thấy trên hình 3.2, khi một thiết bị ngoại vi kết nối vào đường bus I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCL sẽ nối với
Hình 3.2 Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ nhanh (Fast mode)
Mỗi dây SDA hãy SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên (pullup resistor) Sự cần thiết của các điện trở kéo này là vì chân giao tiếp I2C của các thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay opencollector) Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1K đến 4.7k
Mỗi thiết bị kết nối đến bus I2C sẽ đƣợc nhận ra bởỉ một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối Mỗi thiết bị có thể hoạt động nhƣ là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hãy tớ (slave)
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó còn đƣợc cấu hình là thiết bị chủ hay tớ Tại sao lại có sự phân biệt này? Đó là vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ-tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá trình giao tiếp Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong việc giao tiếp.Theo Hình 3.4 ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, còn luồng dữ liệu có thể đi theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ
Hình 3.3 Truyền và nhận giữa thiết bị chủ/tớ
Các bus I2C có thể hoạt động ở ba chế độ, hay nói cách khác các dữ liệu trên bus I2C có thể đƣợc truyền trong ba chế độ khác nhau:
- Chế độ tiêu chuẩn (Standard mode)
- Chế độ nhanh (Fast mode)
- Chế độ cao tốc High-Speed (Hs) mode
- Đây là chế độ tiêu chuẩn ban đầu đƣợc phát hành vào đầu những năm 80
- Nó có tốc độ dữ liệu tối đa 100kbps
- Nó sử dụng 7-bit địa chỉ, và 112 địa chỉ tớ
- Tốc độ dữ liệu tối đa đƣợc tăng lên đến 400 kbps
- Để ngăn chặn gai tiếng ồn, Ngõ vào của thiết bị Fast-mode là Schmitt- triggered
- Chân SCL và SDA của một thiết bị tớ I2C ở trạng thái trở kháng cao khi không cấp nguồn
Chế độ cao tốc (High-Speed):
Chế độ này đã đƣợc tạo ra chủ yếu để tăng tốc độ dữ liệu lên đến 36 lần nhanh hơn so với chế độ tiêu chuẩn Nó cung cấp 1.7 Mbps (với Cb = 400 pF), và 3.4Mbps (với C> b = 100pF)
Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:
- Một chủ nhiều tớ (one master - multi slave)
- Nhiều chủ nhiều tớ (Multi master - Multi slave)
Thiết lập giao tiếp giữa 2 thiết bị:
START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập giao tiếp với một thiết bị nào đó trên bus I2C START là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp Hình dưới đây mô tả điều kiện START và STOP
Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức cao (SDA = SCL = HIGH) Lúc này bus I2C đƣợc coi là rỗi (“bus free”), sẵn sàng cho một giao tiếp Hai điều kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các thiết bị I2C với nhau Giao thức I2C đƣợc thể hiện trong hình 3.5
Hình 3.4 Giao thức I2C Điều kiện START: một sự chuyển đồi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện START Đỉều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao Cả hai điều kiện START và STOP đều đƣợc tạo ra bởi thiết bị chủ Sau tín hiệu START, bus I2C coi nhƣ đang trong trạng thái làm việc (busy) Bus I2C sẽ rỗi, sẳn sàng cho một giao tiếp mới sau tín hiệu STOP từ phía thiết bị chủ
Trong giao thức I2C, khi một điều kiện START được thiết lập, quá trình giao tiếp bắt đầu và nếu tín hiệu START được lặp lại thay vì tín hiệu STOP, bus I2C vẫn ở trạng thái bận để tiếp tục truyền dữ liệu Tín hiệu START và tín hiệu lặp lại START (Repeated START) có chức năng giống nhau: khởi tạo một giao tiếp mới trên bus I2C, cho phép các thiết bị tiếp tục trao đổi dữ liệu mà không cần gửi tín hiệu STOP giữa các phiên giao tiếp.
CHUẨN GIAO TIẾP UART (truyền dữ liệu nối tiếp)
UART (Universal Asynchronous Receiver Transmitter) bộ truyền/ nhận nối tiếp không đồng bộ, là chuẩn truyền thông đƣợc thực hiện vào những năm 60
Hình 3.5 Mô tả kết nối UART
- UART có 2 đường truyền và nhận dữ liệu riêng biệt do đó nó có thể đồng thời vừa truyền, vừa nhận dữ liệu một lúc (truyền song công)
- UART: giao tiếp không đồng bộ , vì thế hai bên muốn giao tiếp với nhau cần quy định các đặc điểm tốc độ truyền , cấu trúc khung truyền giống nhau
- Tốc độ truyền nhận dữ liệu của UART gọi là Baud Rate (tốc độ Baud): Số bit truyền đƣợc trong 1s
Dữ liệu đƣợc truyền/nhận theo dạng frame khung truyền, hình 3.14 thể hiện một định dạng frame khung truyền trong chuẩn truyền thông UART
Hình 3.6 định dạng khung truyền dữ liệu UART
Start bit: start là bit đầu tiên đƣợc truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp đƣợc truyền tới Luôn luôn ở mức thấp
Data bit: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận Số lƣợng bit của data có thể là 5, 6, 7, 8 hoặc 9 Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất (MSB – Most Significant Bit, bit bên trái)
Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối) Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity)
Stop bits: stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã đƣợc gởi xong Sau khi nhận đƣợc stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu Stop bits là các bits bắt buộc xuất hiện trong khung truyền, stop bit có thể là 1 hoặc 2 bits.
XÂY DỰNG TÀI LIỆU THỰC HÀNH KỸ NĂNG NGHỀ
THIẾT KẾ BÀI GIẢNG TÍCH HỢP THỰC HÀNH CHO PIC 16F877A TRÊN KIT MULTIPURPOSE TRAINING
Bài giảng tích hợp thực hành được thiết kế thành 14 bài cho 13 module trên Kit thực hành, nhằm kết nối giữa lý thuyết và thực hành Mỗi bài học đi kèm đề cương chi tiết và giáo án đầy đủ, giúp người học nắm rõ mục tiêu và tiến trình học tập Tổng thời lượng của chương trình là 74 tiết, bao gồm cả lý thuyết và thực hành, đảm bảo thời lượng cho việc tiếp thu kiến thức và rèn luyện kỹ năng Chương trình mang tính hệ thống, linh hoạt cho giáo viên và người học khi triển khai trên Kit thực hành.
Bài 2: GIAO TIẾP VỚI MODULE LED ĐƠN
Bài 3: GIAO TIẾP VỚI MODULE BUTTON VÀ SWITCH
Bài 4: GIAO TIẾP VỚI MODULE LED 7 ĐOẠN
Bài 5: GIAO TIẾP VỚI MODULE LCD 16X2
Bài 6: GIAO TIẾP VỚI MODULE ADC0809
Bài7: GIAO TIẾP VỚI MODULE REALTIME DS1307
Bài 8: GIAO TIẾP VỚI MODULE MA TRẬN LED
Bài 9: GIAO TIẾP VỚI MODULE MA TRẬN PHÍM
Bài 10: GIAO TIẾP VỚI MODULE ĐỘNG CƠ DC
Bài 11:GIAO TIẾP VỚI MODULE ĐỘNG CƠ BƯỚC
Bài 12:GIAO TIẾP VỚI MODULE RELAY
Bài 13: GIAO TIẾP VỚI MÁY TÍNH THÔNG QUA MODULE RS232
Bài 14:GIAO TIẾP VỚI MODULE GLCD
Trong mỗi bài sẽ có sẽ thời gian dạy lí thuyết, thời gian thực hành và làm bài tập, bao gồm các nội dung cụ thể:
- Nhiệm vụ học tập của học sinh
Tìm hiểu kiến thức của bài thực hành
Thực hành theo quy trình
- Phương tiện dạy học tối thiểu
Kiến thức liên quan đến bài thực hành
Báo cáo kết quả thực hành
Những hư hỏng thường gặp và biện pháp khắc phục
Kiểm tra kiến thức lý thuyết của bài thực hành
Kiểm tra thực hiện quy trình và sản phẩm thực hành
4.1.2 ĐỀ CƯƠNG CHI TIẾT BÀI DẠY TÍCH HỢP VÀ GIÁO ÁN ĐỀ CƯƠNG CHI TIẾT BÀI DẠY TÍCH HỢP
CHƯƠNG TRÌNH ỨNG DỤNG VI ĐIỀU KHIỂN PIC16F887 VỚI KIT
VI ĐIỀU KHIỂN MULTIPURPOSE TRAINING
Thời gian mô đun: 74 tiết (Lý thuyết: 24 tiết; Thực hành: 36Tiết)
- Vị trí: Ứng dụng này cần phải học sau khi đã biết một số kiến thức cơ bản về chip vi điều khiển PIC16F877
- Tính chất: Là ứng dụng chuyên môn nghề thuộc đào tạo kỹ năng nghề bắt buộc
- Đọc, vẽ và phân tích đƣợc các sơ đồ nguyên lý mạch điều khiển với các module
- Phân tích đƣợc nguyên lý làm việc của từng module
- Kết nối đƣợc các ứng dụng giữa vi điều khiển với từng module
- Sử dụng được chương trình CCS để lập trình cho chip vi điều khiển PIC16F877
- Thiết kế đƣợc một số ứng dụng với các module theo yêu cầu
- Lắp ráp và thực hiện đƣợc một số mạch ứng dụng hoàn chỉnh
- Rèn luyện đức tính cẩn thận, tỉ mỉ, chính xác, tƣ duy sáng tạo và khoa học
1 Nội dung tổng quát và phân bố thời gian
STT Tên các module Thời gian
Bài mở đầu: Tổng quan về Kit Vi điều khiển MULTIPURPOSE
TRAINING và Chương trình CCS
2 Giao tiếp với module LED đơn 4 1 3 1
3 Giao tiếp với module Button &
4 Giao tiếp với module LED 7 đoan 6 1 3 1
5 Giao tiếp với module LCD 16x2 5 2 3 1
6 Giao tiếp với module ADC0809 6 2 2 1
7 Giao tiếp với module Real_time
8 Giao tiếp với module Ma trận LED
9 Giao tiếp với module Ma trận Phím
10 Giao tiếp với module Động cơ DC 6 2 3 1
11 Giao tiếp với module Động cơ bước 5 2 2 1
12 Giao tiếp với module ReLay 4 1 2 1
13 Giao tiếp với máy tính thông qua
14 Giao tiếp với module GLCD 6 2 3 1
Một bài giảng tích hợp thực hành cho PIC 16F877A trên kit MULTIPURPOSE TRAINING, gồm đề cương chi tiết và giáo án trong tài liệu thực hành kỹ năng nghề đã biên soạn:
Tên bài 14 GIAO TIẾP VỚI MODULE GLCD
(Số tiết LT/TH/KT: 2/3/1)
Sau khi học xong bài này người học có khả năng:
Mô tả đƣợc chức năng và cấu trúc sơ đồ chân của module GLCD
Mô tả đƣợc tổ chức bộ nhớ và các tập lệnh của module GLCD
- Kỹ năng: Lập trình được chương trình điều khiển cho hiển thị thông tin lên module
GLCD trên kit vi điều khiển MULTIPURPOSE TRAINING
- Thái độ: Hình thành thói quen làm việc nhóm, gọn gàng, an toàn
II NHIỆM VỤ HỌC TẬP CỦA HỌC SINH
1 Tìm hiểu và tiếp thu kiến thức lý thuyết liên quan đến bài thực hành
- Sơ đồ chân và chức năng từng chân của module GLCD
- Tìm hiểu cấu trúc bộ nhớ bên trong và các tập lệnh điều khiển của module
2 Thực hành theo quy trình
- Thiết kế và thi công mạch ứng dụng theo đúng yêu cầu bài toán
- Kiểm tra, vận hành đƣợc mạch điện
- Xác định nguyên nhân và biện pháp khắc phục hƣ hỏng
III PHƯƠNG TIỆN DẠY HỌC TỐI THIỂU
TT NỘI DUNG Đ VỊ S LƯƠNG GHI CHÚ
1 Máy tính Bộ 01 Giáo viên
2 Máy chiếu Projector Cái 01 Giáo viên
MULTIPURPOSE TRAINING Bộ 01 Giáo viên
4 Bus đơn 30cm Dây 10 Giáo viên
6 Bus đơn 30cm Dây 100 Học sinh
IV NỘI DUNG THỰC HÀNH
1 Nội dung kiến thực liên quan đến bài thực hành
1.1 Giới thiệu chung về GLCD
Graphic LCD (gọi tắt là GLCD) loại chấm không màu là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ, số hoặc hình ảnh Khác với Text LCD, GLCD không đƣợc chia thành các ô để hiển thị các mã ASCII vì GLCD không có bộ nhớ CGRAM (Character Generation RAM) GLCD 128x64 có 128 cột và 64 hàng tương ứng có 128x6492 chấm (dot) Mỗi chấm tương ứng với 1 bit dữ liệu, và như thế cần
8192 bits hay 1024 bytes RAM để chứa dữ liệu hiển thị đầy mỗi 128x64 GLCD Tùy theo loại chip điều khiển, nguyên lý hoạt động của GLCD có thể khác nhau, trong bài này sẽ giới thiệu loại GLCD đƣợc điều khiển bởi chip KS0108 của Samsung, có thể nói GLCD với KS0108 là phổ biến nhất trong các loại GLCD loại này (chấm, không màu)
Chip KS0108 chỉ có 512 bytes RAM (4096 bits = 64x64) và vì thế chỉ điều khiển hiển thị đƣợc 64 dòng x 64 cột Để điều khiển GLCD 168x64 cần 2 chip KS0108, và thực thế trong các loại GLCD có 2 chip KS0108, GLCD 128x64 do đó tương tự 2 GLCD 64x64 ghép lại
Các GLCD 128x64 dùng KS0108 thường có 20 chân trong đó chỉ có 18 chân là thực sự điều khiển trực tiếp GLCD, 2 chân (thường là 2 chân cuối 19 và 20) là 2 chân Anode và Cathode của LED nền Trong 18 chân còn lại, có 4 chân cung cấp nguồn và 14 chân điều khiển+dữ liệu Khác với các Text LCD HD44780U, GLCD KS0108 không hỗ trợ chế độ giao tiếp 4 bit, do đó bạn cần dành ra 14 chân để điều khiển 1 GLCD 128x64
Sơ đồ chân phổ biến của GLCD 128x64 đƣợc mô tả trong bảng 14.1
Bảng 14.1 : Sơ dồ chân GLCD
Chức năng Số thứ tự chân Tên Trạng thái
Tương phản 3 Vo - Điện áp input cho GLCD Điều khiển
Ghi( từ AVR vào GLCD) Đọc( từ GLCD vào AVR)
Vô hiệu hóa GLCD GLCD hoạt động Bắt đầu ghi/đọc GLCD
15 CS1 0/1 CS2=0, CS1=1: nữa trái
Nguồn âm 18 Vee(-Vout) -9V Điện áp âm của GLCD
Chú ý là trên một số GLCD, thứ tự các chân có thể khác (nhƣ GLCD WG12864A2…) nhƣng số lƣợng và chức năng chân thì không đổi Hình 2 mô tả cách kết nối GLCD với nguồn và mạch điều khiển
Hình 14-2 : Giao tiếp GLCD với vi điều khiển
Chip KS0108 có một loại bộ nhớ duy nhất đó là RAM, không có bộ nhớ chứa bộ font hay chứa mã font tự tạo nhƣ chip HD44780U của Text LCD Vì vậy, dữ liệu ghi vào RAM sẽ đƣợc hiển thị trực tiếp trên GLCD Mỗi chip KS0108 có 512 bytes RAM tương ứng với 4096 chấm trên một nửa (64x64) LCD RAM của KS0108 không cho phép truy cập từng bit mà theo từng byte, điều này có nghĩa là mỗi lần chúng ta viết một giá trị vào một byte nào đó trên RAM của GLCD, sẽ có 8 chấm bị tác động, 8 chấm này nằm trên cùng 1 cột Vì lý do này, 64 dòng GLCD thường được chia thành 8 pages, mỗi page có độ cao 8 bit và rộng 128 cột (cả 2 chip gộp lại)
Hình 14-3 : Tổ chức của RAM
Tổ chức RAM của 2 chip KS0108 trái và phải hoàn toàn tương tự, việc đọc hay ghi vào RAM của 2 chip cũng đƣợc thực hiện nhƣ nhau
64 dòng từ trên xuống dưới được chia thành 8 “dãy” mà ta gọi là 8 pages, page trên cùng là page 0 và page dưới cùng là page 7, như hình 14-3
Trong GLCD, mỗi trang (page) được gọi là địa chỉ X (X address), với X = 0 là trang trên cùng và X = 7 là trang ở dưới cùng Mỗi trang chứa 64 cột, mỗi cột là một byte RAM 8 bit; mỗi bit đại diện cho một chấm trên LCD, với bit D0 (LBS) có trọng số thấp tương ứng với chấm ở trên cùng của trang và bit D7 (MBS) có trọng số cao nhất tương ứng với chấm ở dưới cùng trong một trang Thứ tự các cột trong một trang được gọi là địa chỉ Y, từ cột đầu tiên có Y = 0 đến cột cuối cùng có Y = 63 Bằng cách ghép nối địa chỉ X và Y, ta xác định được vị trí của byte cần đọc hay ghi Chips KS0108 hỗ trợ các lệnh di chuyển tới địa chỉ X và Y để ghi hay đọc RAM, và hình 4 minh họa cách chữ cái “a” được hiển thị trên GLCD.
Hình 14-4 Hiển thị chữ cái „a‟ trên GLCD
Trong cách hiển thị ở hình 4, chữ „a‟ chỉ nằm trong page 0, tức X=0 Muốn hiển thị chữ cái „a‟ chúng ta cần ghi vào các cột (địa chỉ Y) của page 0 lần lƣợt các giá trị như sau: 0, 228, 146, 74, 252 và 128…., xem bảng 2 bên dưới
Bảng 14.2 : Địa chỉ để hiển thị đƣợc chữ a
1.1.3 Tập lệnh cho chip KS0108
Bảng 14.3 : bảng tóm tắt tập lệnh của chip KS0108
Display ON/OFF – Hiển thị GLCD:
Khi D=0: tắt hiển thị GLCD, các dữ liệu vẫn được lưu trên RAM nhưng không hiển thị ra màn hình khi bit này bằng 0
Set Y Address – chọn địa chỉ: Đây là lệnh chọn địa chỉ Y hay chọn cột Địa chỉ Y AAAAAA(binary) tương ứng cột (0-63)
Mã lệnh: 0x40+(địa chỉ cột)
Hai chân RS và RW đƣợc giữ ở mức thấp khi thực hiện lệnh này
Lệnh cho phép chọn page (hay địa chỉ X) cần di chuyển đến
Do GLCD chỉ có 8 pages nên chỉ cần 3 bit để chứa địa chỉ page
Mã lệnh: 0xB8+X ,X là địa chỉ page cần di chuyển đến
Hai chân RS và RW đƣợc giữ ở mức thấp khi thực hiện lệnh này
Display Start Line – chọn line đầu tiên:
Lệnh này còn gọi là lệnh “cuộn”, cho phép di chuyển toàn bộ hình ảnh trên GLCD (hay RAM) lên phía trên một số dòng nhất định, được gọi là LOffset Giá trị của LOffset có thể từ 0 đến 63, tương ứng với việc cần 6 bit để lưu trữ Khi di chuyển GLCD lên phía trên, phần dữ liệu phía trên bị che khuất sẽ “cuộn” xuống phía dưới.
Hai chân RS và RW đƣợc giữ ở mức thấp khi thực hiện lệnh này
Status Read – đọc trạng thái GLCD:
Lệnh đọc trạng thái GLCD-status read thông báo các trạng thái của GLCD nhƣ Busy ở bit 7, On/Off bit 5, Reset bit 4
Write Display Data – ghi dữ liệu cần hiển thị vào GLCD hay RAM:
Ghi 8 bit dữ liệu DDDDDDDD( binary ) vào RAM hiển thị Hai chân điều khiển sẽ là R/W=1 và D/I=0
Đọc dữ liệu hiển thị từ GLCD (cũng là dữ liệu từ RAM của KS0108) Quá trình này trả về 8 bit dữ liệu DDDDDDDD (dạng nhị phân) từ RAM hiển thị Hai chân điều khiển liên quan được thiết lập R/W = 1 và D/I = 1 để cho phép đọc dữ liệu từ RAM của màn hình.
1.2 Chương trình điều khiển GLCD
Bài mẫu 14-1: Chương trình giao tiếp với module GLCD hiển thị các đoạn Text:
Dòng 1: DH SU PHAM KY THUAT
Dòng 2: DIEN TU CONG NGHIEP
Dòng 4: MICROCONTROLLERS a Mạch điện kết nối
Hình 14-5: sơ đồ giao tiếp PIC16F877A với module GLCD b Chương trình
#fuses HS,NOWDT,NOPROTECT,NOLVP
CHAR TEXT0[]="DH SU PHAM KY THUAT";
CHAR TEXT1[]="DIEN TU CONG NGHIEP";
CHAR TEXT2[]="MULTIPURPOSE TRAINING"; CHAR TEXT3[]="MICROCONTROLLER"; void main()
{ glcd_init(ON); // Must initialize the LCD
Đoạn mã hiển thị trên GLCD bắt đầu từ TEXT0 ở tọa độ (0,0) TEXT1 được vẽ tại (0,16) làm vị trí bắt đầu hiển thị, sau đó tọa độ được thay đổi lên (0,32) để TEXT2 xuất hiện và cuối cùng TEXT3 được hiển thị tại (0,48) để quan sát kết quả Đây là cách điều chỉnh tọa độ hiển thị trên màn hình GLCD và kiểm tra kết quả bằng lệnh glcd_text57.
} c Tiến hành biên dịch và nạp chương trình d Quan sát kết quả: Màn hình GLCD hiện thị các đoạn text nhƣ yêu cầu
Hình 14-6: GLCD hiển thị Text
Thử thay đổi các thông số trong hàm glcd_text57 và quan sát kết quả
Nếu màn hình GLCD không hiển thị kết quả như yêu cầu thì xem lại chương trình
Bài mẫu 14-2: Chương trình dùng vi điều khiển PIC 16F877A giao tiếp với module
GLCD hiển thị hình ảnh quả bóng ở bên trái và chuột Mickey ở bên phải màn hình Sơ đồ mạch điện được mô tả như hình 14-5 (phần a) Phần b trình bày cách tạo bản mã cho hình ảnh, nhằm đưa dữ liệu ảnh vào bảng mã bitmap của GLCD Để tạo hình ảnh cho bảng mã bitmap, bài viết đề xuất sử dụng hai phần mềm chính là Paint và một phần mềm đồ họa bổ sung như Photoshop hoặc GIMP để chỉnh sửa và chuyển đổi ảnh sang định dạng bitmap phù hợp với GLCD và tối ưu hóa kích thước, màu sắc cho hiển thị rõ nét.
Bước 1: Mở hình ảnh bằng phần mềm Paint
Hình 14-7: Mở ảnh bằng phần mềm Paint có sẵn trên máy tính
Bước 2: Cắt và Resize kích thước hình ảnh là 64x64 pixel
Hình 14-8: Chỉnh sửa tỷ lệ hình ảnh trong Resize and Skew
Bước 3: Lưu hình ảnh dưới dạng Monochrome Bitmap(*.bmp;*.dib)
Hình 14-9: Lưu hình ảnh dưới dạng Monochrome Bitmap
Bước 4: Mở hình ảnh vừa lưu bằng phần mềm LCDAsisstant sau đó thiết lập các thông số để tạo mã cho ảnh
Hình 14-10: Mở ảnh bằng phần mềm LCDAsisstant
Bước 5: tiến hành Save tạo file thư viện chứa mã ảnh
Chọn save output và đặt tên có dạng là xxx.c ví dụ trọng bài này đặt tên file là ball.c để làm thƣ viện chứa mã ảnh
Hình 14-11: lưu ảnh dưới dạng “tên file”.c c Chương trình
#fuses HS,NOWDT,NOPROTECT,NOLVP
#include void ex_picture(int width,int height,int x,int y,int8 picture)
{ unsigned int i=0, j=0, k=0; unsigned int16 count=0; for(j=0;j