Thiết kế máy tính cầm tay đơn giản

35 859 3
Thiết kế máy tính cầm tay đơn giản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KỸ THUẬT ĐIỆN - ĐIỆN TỬ I BÁO CÁO ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG Đề tài: Máy tính cầm tay đơn giản Giáo viên hướng dẫn : TS. Nguyễn Ngọc Minh Lớp : D11XLTH Sinh viên thực hiện : Nguyễn Trung Kiên : Ngô Tuấn Linh : Lã Hùng Anh HÀ NỘI - 2015 Page 1 LỜI MỞ ĐẦU Ngày nay, hệ thống Nhúng được ứng dụng và lắp đặt trên hầu hết các thiết bị điện tử, nhất là những thiết bị điện tử thông minh, các thiết bị điện tử ngày càng đa dạng và dần thay thế các công việc hàng ngày của con người. Những sản phẩm điện tử này được thiết kế giúp năng suất làm việc hiểu quả hơn và tiết kiệm thời gian và sức lực cho chon người hơn. Ý tưởng đề tài xuất phát từ bài toàn thực tế. Một sản phẩm điện tử sử dụng trong cuộc sống, có thể cho phép tính toán các số liệu với các phép tính cơ bản. Trong phạm vi môn học, với mục tiêu thiết kế một sản phẩm nhúng đơn giản, hiệu quả và có giao diện, lập trình nhóm chúng em đã chọn sản phẩm này làm đề tài. Một sản phẩm nhúng đơn giản, thực tế và tiết kiệm chi phí thiết kế. Mục đích chính là hiểu sâu hơn về cấu trúc cơ bản của một hệ thống Nhúng và qua đó giúp chúng em lắm vững hơn những kiến thức về lập trình và vi điều khiển… Nội dung của đề tài bao gồm 3 chương: Chương 1: Khảo sát và phân tích bài toán Chương 2: Thiết kế hệ thống Chương 3: Viết code và mô phỏng Do hạn chế về mặt thời gian cũng như kiến thức nên không thể tránh khỏi những thiếu sót trong lần biên soạn đầu tiên này, chúng em xin chân thành cảm ơn và mong đợi ý kiến đóng góp của thầy cô và các bạn. Page 2 MỤC LỤC Danh Mục Hình Danh Mục Bảng Page 3 CHƯƠNG 1: KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN 1.1 VAI TRÒ CỦA MÁY TÍNH SỐ Trước đây, để tính toán trên những con số, người ta thường tính nhẩm, viết trên giấy hay tính trên bảng tính cơ học. Chúng ta sẽ mất rất nhiều thời gian để tính toán mà vẫn mắc rất nhiều sai lầm. Các em học sinh vẫn thường sử dụng những máy tính cầm tay đơn giản để thực hiện nhứng phép tính cơ bản trong môn học. Nếu không có chiếc máy tính cầm thì việc tính toán sẽ lâu và khó khăn. Hình 1. Một chiếc máy tính số thực tế Từ xưa con người đã biết chế tạo ra: bàn phím số ở TRUNG QUỐC phục vụ cho việc tính toán Đặc biệt trong nền sản xuất hiện đại, máy tính được coi là thiết bị quan trọng trong nhiều lĩnh vực như: trong các đơn vị hành chính, các nhà máy, phân xưởng sản xuất, các khu công nghiệp... Khả năng của máy tính ngày càng đa dạng, thông minh và tích hợp nên máy tính dần thay thế con người và trong tương lai sự phụ thuộc của máy tính điện tử là không thể thay thế. Một cách tổng quát, máy tính giúp con người tính toán đơn giản đồng thời cho năng suất cao,độchính xác cao,tiết kiệm thời gian và chi phí. 1.2 Ý TƯỞNG THIẾT KẾ Xuất phát từ vai trò cần thiết của một chiếc máy tính số, nhóm em đã ứng dụng hệ thống nhúng để thiết kế một sản phẩm điện tử có chức năng tính toán các phép tính cơ bản như một chiệc máy tính cầm tay. Sản phẩm tạo ra sẽ đơn giản, thân thiện, hiệu quả và tiết kiệm chi phí. Page 4 Mục đích:Ứng dụng kiến thức đã học về hệ thống Nhúng vào thực tế để hiểu sâu hơn về hệ thống Nhúng, cũng như các kiến thức về lập trình, về các VĐK, ARM,… qua đó phát triển lên những sản phẩm thông minh hơn, tích hợp hơn và nếu có thể sẽ tạo ra sản phẩm điện tử hoàn thiện. Mục tiêu: - Sản phẩm tạo ra phải đơn giản, tiết kiệm chi phí. - Có giao diện (LCD), có lập trình và có ARM… - Sản phẩm hoàn thiện, ổn định và chính xác. 1.3 XÁC ĐỊNH BÀI TOÁN 1.3.1 Xác định chức năng sản phẩm 1. Tính toán các phép tính đơn giản: +, - ,*, / 2. Nhân hai chữ số giá trị nhỏ hơn 45.000 3. Cộng, trừ, chia hai số trong phạm vi 1 tỉ 4. Báo lỗi khi nhập sai phép tính hoặc lỗi chia 0 5. Báo lỗi tràn khi vượt quá khá năng thực hiện 6. Tự reset kết quả mỗi lần thực hiện. 7. Chia hai số làm tròn đến giá trị nguyên. 1.3.2 Xác định các vấn đề gặp phải. a. Lỗi chia 0 Khi thực hiện phép chia, nếu cố chia là 0 thì phép tính sẽ bị lỗi. Thay vì bằng “vô cùng” ta sẽ thông báo là phép tính bị lỗi, hoặc không tính được. b. Lỗi nhập do nhập nhiều phép tính cùng 1 lúc. Máy tính sẽ chỉ thwujc hiện đc các phép tính đơn như + hoặc – hoặc * hoặc / Còn nếu phép tính nhập và la ++ hoặc +- thì máy tính sẽ không hiểu đây là phpes tính gì và sẽ thông báo lỗi. c. Lỗi tràn dữ liệu tính toán do vượt quá khá năng lưu trữ và tính toán. Lỗi này gặp phải khi nhân chia một số quá lớn với khả năng lưu trữ của bộ nhớ.Cách khắc phục là, báo lỗi ngay khi nhập số lớn quá, hoặc so sánh kết quả tính được với khả năng tính toán của thiết bị và từ đó đưa ra thông báo lỗi tràn. Page 5 1.4 Sơ đồ giải thuật Hình 2. Nhập phép tính Hình 3. Thực hiện phép tính Page 6 Hình 4. Phép nhân CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 2.1 SƠ ĐỒ KHỐI TỔNG THỂ Hình 5. Sơ đồ khối Chức năng của từng khối: + Khối nguồn: cung cấp điện áp 2.5-5.5 cho ARM hoạt động. + Khối nhập dữ liệu: nhập số và các phép tính. +Khối điều khiển: Xử lý các thông tin nhập vào từ khối nhập dữ liệu mã hóa và đưa ra khối hiển thị. +Khối hiển thị: hiển thị các kết quả đưa ra từ khối điều khiển. Nguyên lý hoạt động của sơ đồ: Khi các khối tạo xung và khối nguồn được đảm bảo lúc đó hệ thống được cấp nguồn và xung dao động và bắt đầu hoạt động. Khối nhập dữ liệu là bàn phím gồm các nút bấm nên khi các nút này được bấm thì ngay khi đó các thông tin về phím bấm thông qua dạng tín hiệu điện được truyền đến khối điều khiển, tại đây các thông tin này được xử lý theo thuật toán được lập trình sẵn và đưa ra các kết quả xử lý ra khối hiển thị để hiển thị dạng số ra màn hình giúp người sử dụng có thể nhìn thấy được các kết quả này. Page 7 2.3. LỰA CHỌN THIẾT BỊ Trong hệ thống ta có thể thiết kế với nhiều loại linh kiện khác nhau, và trong từng khối ta cũng có nhiều lựa chọn khác nhau: 2.3.1. Khối điều khiển trung tâm: Hình 6. Khối điều khiển ARM CORTEX-M0 Khối điều khiển sử dụng ARM COTEXT-M0, nó đóng vai trò hết sức quan trọng trong hệ thống để điều khiển hệ thống khóa số. Page 8 2.3.2. Khối hiển thị: Khối hiển thị chính là màn hình hiển thị LCD 16x2 Hình 7. Khối hiển thị Khối hiển thị được dùng là LCD, có 2 chế độ truyền dùng cho LCD là chế độ truyền LCD 8 bit và chế độ truyền 4 bit. 2.3.3 Khối bàn phím Hình 8. Ma trận 16 phím Nguyên lý hoạt động của việc quét phím chính là cho các cột bằng 0 và lần lượt các chân nối với hàng mức 1. Rồi kiểm tra xem có cột nào bằng 0 hay không, nếu cột nào bằng 0 trong thời điểm một hàng bằng 0 thì phát hiện ra phím đó được bấm. Page 9 2.4. LỰA CHỌN LINH KIỆN 2.4.1. ARM CORTEX-M0 2.4.1.1. Giới thiệu dòng chíp Hãng Nuvoton là công ty con được tách ra từ Tập đoàn Điện tử Winbond – một hãng điện tử bán dẫn đứng hàng đầu Đài Loan. Hãng này có 3 dòng chip vi điều khiển (MCU) 4-bit, 8-bit và 32-bit (ARM Cortex). Nội dung trình bày chủ yếu sau đây là dòng chip vi điều khiển 32-bit lõi ARM Cortex-M0 của hãng Nuvoton. 2.4.1.2. Phân loại và cấu trúc Đặc trưng của dòng chip MCU 32-bit lõi ARM Cortex-M0: khá đa dạng về chủng loại, cấu hình và đáp ứng nhu cầu thị trường về dòng chip 32-bit này. Vi điều khiển lõi ARM Cortex-M0 có nhiều giao diện ngoại vi đáp ứng tính năng mạnh mẽ và khả năng kết nối. Nó được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng nhu cầu thực thi của MCU với việc giảm số lượng bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ điện năng thấp và giảm giá thành vi xử lý, đồng thời cung cấp hiệu năng tính toán cao. Dòng vi điều khiển ARM Cortex-M0 được thiết kế nhúng tối ưu hóa cho các ứng dụng vi xử lý MCU. Dòng ARM Cortex-M0 là dòng vi điều khiển lõi ARM có kích thước nhỏ nhất, tiêu thụ điện năng thấp nhất và có kiến trúc được sắp xếp hợp lý tương thích với việc sử dụng tools nạp của các hãng khác để phát triển các ứng dụng. Hãng Nuvoton sản xuất chip MCU 32-bit lõi ARM Cortex-M0 với kích thước rất nhỏ, tiêu thụ điện năng thấp và tích hợp các đặc tính kỹ thuật hiện đại như: - CPU Cortex-M0 cung cấp khả năng điều khiển ngắt ngoại lệ gọi là vector điều khiển ngắt lồng nhau (NVIC), được liên kết chặt chẽ với nhân vi xử lý để cung cấp các tính năng: hỗ trợ vector ngắt gián đoạn lồng nhau; tiết kiệm bộ vi xử lý và có khả năng phục hồi,giảm và xác định độ trễ ngắt; thay đổi mức ưu tiên năng động. - Dung lượng bộ nhớ Flash ROM lớn (tối đa 128KB Flash). - Dải điện áp rộng từ 2.5V~5.5V. - Tích hợp sẵn nhiều ngoại vi như: UART, USB, ISP, I2C, I2S, PWM, LCD… - Tích hợp thạch anh nội lên đến 22MHz, có thể điều chỉnh độ chính xác nhờ phần tử thạch anh bên ngoài 32,768Khz. - Khả năng hỗ trợ nạp đa năng (ISP, ICP và song song), nạp bằng tools nạp của chính hãng như NuGang, Nu-Link hoặc các tools nạp phổ biến của hãng khác như J-Link, U-Link và các máy nạp rom đa năng của Elnec, Xeltek, Hilo,... Page 10 - Có khả năng chống nhiễu tốt, thích hợp cho các ứng dụng dân dụng cũng như trong công nghiệp. - Dải nhiệt độ hoạt động từ -40ºC ~ +85ºC. - Cung cấp các ứng dụng mạnh mẽ và khả năng kết nối với nhiều giao diện ngoại vi. Quan sát sơ đồ tương quan giá thành và khả năng của các dòng chip Nuvoton, ta thấy ARM Cortex-M0 là sự phát triển cao giữa dòng chip MCU 8051 và dòng ARM7/9 với khả năng kết nối và các tính năng vi điều khiển mạnh nhưng vẫn có mức giá phù hợp. Hình 9. sơ đồ tương quan giá thành và khả năng của các dòng chip Nuvoton Page 11 Phân loại dòng sản phẩm MCU lõi ARM Cortex-M0: Hình 10. Biểu đồ phân loại dòng chíp 32-bit lõi ARM Cortex-M0 Trong đồ án chúng em sử dụng Dòng NuMicro NUC140: Hình 11. Hình ảnh cho NUC140 Page 12 Sơ đồ khối : Hình 12. Sơ đồ khối NUC140 Tính năng kỹ thuật của dòng NUC140: - NUC140 là vi điều khiển 32-bit lõi ARM Cortex-M0, trình đơn phần cứng 32 bit, chạy lên tới 50MHz. - Có 4 mức ưu tiên ngắt đầu vào, có 128 KB flash ROM cho bộ nhớ chương trình. - 16KB SRAM, 4KB bộ nhớ flash cho nạp chương trình trong hệ thống. Page 13 - Giao tiếp thiết bị ngoại vi: 8 kênh 12bit ADC, UART nối tiếp tốc độ cao, SPI lên đến 32MHz, I2C lên đến 1MHz; kết nối thiết bị ngoại vi USB 2.0, CAN, LIN… - Thiết bị ngoại vi có tính năng phong phú: PWM, RTC, bộ ngắt nhận dạng Brown-out, GPIO, PDMA và 4 bộ Timer 32 bit. - Dải điện áp hoạt động rộng từ 2,5V~5,5V, chống nhiễu tiếng ồn tốt, tích hợp dữ liệu flash, dao động thạch anh nội chính xác ±1% với nhiệt độ phòng, có khả năng bảo mật trên chip, điện áp reset lại mạch thấp. 2.4.1.3. ỨNG DỤNG NUC140EC Hình 13. Một số ứng dụng của NUC140 Ngày nay ARM được sử dụng rộng rãi, trong các thiết bị như điện thoại đi động các hệ thống nhúng, và trong nghiên cứu. Giá thành tùy thuộc vào dòngARM. Sự phát triển hiện nay thì ARM đang có sự phát triển mạnh hơn so với các ngành khác cả về ứng dụng của nó. Một số ứng dụng trong làm bằng ARM như:  Làm các xe động cơ , các cánh tay robot, máy bay loại nhỏ.  Giao tiếp với module cảm biến.  Giao tiếp với máy tính… 2.4.2. KHỐI HIỂN THỊ Tổng quan về LCD Giới thiệu chung: Được sản xuất từ năm 1970, LCD là một loại vật chất phản xạ ánh sáng khi điện thế thay đổi. Nó hoạt động dựa trên nguyên tắc ánh sáng nền (Back Light). Nó bao gồm một lớp chất lỏng nằm giữa 2 lớp kiếng phân cực ánh sáng. Bình thường, khi không có điện áp, các tinh thể này được xếp thẳng hàng giữa hai lớp cho phép ánh sáng truyền qua theo hình xoắn ốc. Hai bộ lọc phân cực, 2 bộ lọc màu và 2 bộ cân chỉnh sẽ xác định cường độ ánh sáng đi qua và màu nào được tạo ra trên một pixel. Khi có điện áp cấp vào, lớp canh chỉnh sẽ tạo một vùng điện tích, canh chỉnh lại các tinh thể lỏng đó. Nó không cho phép ánh sáng đi qua để hiện thị lên hình ảnh tại vị trí điểm ảnh đó. Các điểm ảnh trong màn hình LCD là một transistor cực nhỏ ở 1 trong 2 chế độ: cho phép ánh sáng đi qua hoặc không. Điểm ảnh bao gồm 3 yếu tố màu: đỏ, xanh lá, xanh dương. Các màn hình LCD trước đây thường tiêu thụ điện năng nhiều, độ tương phản thấp cho đến khi các nhà khoa học người Anh tìm ra "Biphenyl" - vật liệu chính của tinh thể lỏng, thì LCD mới thực sự phổ biến. LCD xuất hiện đầu tiên trong các máy tính cầm tay, trò chơi điện tử cầm tay, Page 14 đồng hồ điện tử, … LCD ngày nay được thiết kế nhỏ gọn, nhẹ, chiếm ít không gian, chất lượng hình ảnh tốt, tiêu thụ ít năng lượng và đang thay thế dần màn hình CRT truyền thống. Có hai kiểu cấu tạo màn hình tinh thể lỏng chính, khác nhau ở thiết kế nguồn sáng.Trong kiểu thứ nhất (hình 4.1), ánh sáng được phát ra từ một đèn nền, có vô số phương phân cực như các ánh sáng tự nhiên. Ánh sáng này được cho lọt qua lớp kính lọc phân cực thứ nhất, trở thành ánh sáng phân cực phẳng chỉ có phương thẳng đứng. Ánh sáng phân cực phẳng này được tiếp tục cho truyền qua tấm thủy tinh và lớp điện cực trong suốt để đến lớp tinh thể lỏng. Sau đó, chúng tiếp tục đi tới kính lọc phân cực thứ hai; có phương phân cực vuông góc với kính lọc thứ nhất, rồi đi tới mắt ngườiquan sát. Kiểu màn hình này thường áp dụng cho màn hình màu ở máy tính hay ti vi. Để tạo ra màu sắt, lớp ngoài cùng, trước khi ánh sáng đi ra đến mắt người, có kính lọc màu. Ở loại màn hình tinh thể lỏng thứ hai (hình 4.2), chúng sử dụng ánh sáng tự nhiên đi vào từ mặt trên và có gương phản xạ nằm sau, dội ánh sáng này lại cho người xem.Đây là cấu tạo thường gặp ở các loại màn hình tinh thể lỏng đen trắng trong các thiết bị bỏ túi. Do không cần nguồn sáng nên chúng tiết kiệm năng lượng.  Hoạt động bật tắt cơ bản: Nếu điện cực của một điểm ảnh con không được áp một điện thế, thì phần tinh thể lỏng ở nơi ấy không bị tác động gì cả, ánh sáng sau khi truyền qua chỗ ấy vẫn giữ nguyên phương phân cực, và cuối cùng bị chặn lại hoàn toàn bởi kính lọc phân cực thứ hai. Điểm ảnh con này lúc đó bị tắt và đối với mắt đây là một điểm tối. Để bật một điểm ảnh con, cần đặt một điện thế vào điện cực của nó, làm thay đổi sự định hướng của các phân tử tinh thể lỏng ở nơi ấy; kết quả là ánh sáng sau khi truyền qua phần tinh thể lỏng ở chỗ điểm ảnh con này sẽ bị xoay phương phân cực đi, có thể lọt qua lớp kính lọc phân cực thứ hai, tạo ra một điểm màu trên tấm kính trước.  LCD 1602A  Cấu trúc LCD 1602A LCD 1602A (Hình 4.3 và Hình 4.4) là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng chữ hoặc số trong bảng mã ASCII. Không giống các loại LCD lớn, LCD 1602A được chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII. Cũng vì lý do chỉ hiện thị được ký tự ASCII nên loại LCD này được gọi là Text LCD (để phân biệt với Graphic LCD có thể hiển thị hình ảnh). Mỗi ô của Text LCD bao gồm các “chấm” tinh thể lỏng, việc kết hợp “ẩn” và “hiện” các chấm này sẽ tạo thành một ký tự cần hiển thị. Trong các Text LCD, các mẫu ký tự được định nghĩa sẵn vì thế việc điều khiển Text LCD sẽ tương đối dễ dàng hơn các graphic LCD. Kích thước của LCD 1602A được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có. LCD 1602A là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự. Page 15 Hình 14. Hình dạng LCD 1602A LCD 1602A có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và song song. Ở đây tôi chỉ giới thiệu loại giao tiếp song song, cụ thể là LCD 1602A điều khiển bởi chip HD44780U(Hình 4.4) của hãng Hitachi. Đối với các LCD khác chúng ta cần tham khảo datasheet riêng của từng loại. Tuy nhiên, HD44780U cũng được coi là chuẩn chung cho các loại Text LCD. HD44780U là bộ điều khiển cho các Text LCD dạng ma trận điểm (dot-matrix), chip này có thể được dùng cho các LCD có 1 hoặc 2 dòng hiển thị. HD44780U có 2 mode giao tiếp là 4 bit và 8 bit. Nó chứa sẵn 208 ký tự mẫu kích thước font 5x8 và 32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khác nhau). Bảng 1. Chức năng các chân Chân số 1 Tên Vss Chức năng Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển Page 16 2 Vdd 3 4 Vee Rs 5 R/w 6 E 7-14 DB0DB7 Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển Chân này dùng để điều chỉnh độ tương phản của LCD. Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi. + Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD. Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc. Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E. + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-tolow transition) của tín hiệu chân E. + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp. Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này: + Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7. + Chế độ 4 bit: Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7 Bảng 2. Tập lệnh của LCD Page 17 Mã (Hex) 1 Lệnh đến thanh ghi của LCD Xóa màn hình hiển thị 2 Trở về đầu dòng 4 Giả con trỏ (dịch con trỏ sang trái) 5 Tăng con trỏ (dịch con trỏ sang phải) 6 Dịch hiển thị sang trái 7 Dịch hiển thị sang phải 8 Tắt con trỏ, tắt hiển thị A Tắt hiển thị, bật con trỏ C Bật hiển thị, tắt con trỏ E Bật hiển thị, nhấp nháy con trỏ F Tắt con trỏ, nhấp nháy con trỏ 10 Dịch vị trí con trỏ sang trái 14 Dịch vị trí con trỏ sang phải 18 Dịch toàn bộ vị trí hiển thị sang trái 1C Dịch toàn bộ vị trí hiển thị sang phải 80 Ép con trỏ về đầu dòng thứ nhất C0 Ép con trỏ về đầu dòng thứ hai 38 Hai dòng và ma trận 5x7 Để đọc thanh ghi lệnh,ta phải đặt RS=0 và R/W =1 và xung cao xuống thấp cho bít E. Sau khi đọc thanh ghi lệnh,nếu bit D7(cờ bận ) ở mức cao thì LCD bận, không có thông tin hay lệnh nào được xuất đến nó. Khi D7=0 mới có thể gửi lệnh hay dữ liệu đến LCD. Chúng ta nên kiểm tra bit cờ bận trước khi ghi thông tin lên LCD. Page 18 2.4.3. Bàn Phím Hình 15. Ma Trận 16 Phím Thực hiện chức năng giao tiếp với vi điều khiển ARM-CortexM0, dùng để hiển thị nhập password, thay đổi password, mở khóa cửa. Sử dụng bàn phím ma trận 16 phím. Với các phím số từ 0 =>9 và các phím chức năng mở cửa, khóa cửa, và đổi mật khẩu.Dùng các phím bấm có 2 chân giống như hình vẽ: Hình 16. Nút bấm sử dụng trong mạch Page 19 CHƯƠNG 3. VIẾT CODE 3.1. Code chương trình trên Nuc140vc3cn #include #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSYS.h" #include "Driver\DrvADC.h" #include "Driver\DrvTIMER.h" #include "keypad.h" * Copyright (c) Nuvoton Technology Corp. All rights reserved. */ /* Keypad 4x4 R0 - PA7 R1 - PA6 R2 - PA4 R3 - PA5 C0 - PE3 C1 - PE2 C2 - PE1 C3 - PE0 *--------------------------------------------------------------------------------------------------------*/ #include Page 20 #include "Driver\DrvGPIO.h" #include "keypad.h" uint8_t kCod[4][4] = {{'1', '2', '3', '+'}, //Ma tran phím {'4', '5', '6', '-'}, {'7', '8', '9', '*'}, {'C', '0', '=', '/'} } ; void delay(void) { int j; for(j=0;j>1)&0x01) == 0x01) DATA_PIN_1_SET; else DATA_PIN_1_CLR; if(((wdata>>2)&0x01) == 0x01) DATA_PIN_2_SET; else DATA_PIN_2_CLR; if(((wdata>>3)&0x01) == 0x01) DATA_PIN_3_SET; else DATA_PIN_3_CLR; if(((wdata>>4)&0x01) == 0x01) DATA_PIN_4_SET; else DATA_PIN_4_CLR; if(((wdata>>5)&0x01) == 0x01) DATA_PIN_5_SET; else DATA_PIN_5_CLR; if(((wdata>>6)&0x01) == 0x01) DATA_PIN_6_SET; else DATA_PIN_6_CLR; if(((wdata>>7)&0x01) == 0x01) DATA_PIN_7_SET; else DATA_PIN_7_CLR; LCD_RS_SET; LCD_RW_CLR; LCD_E_CLR; DrvSYS_Delay(100); LCD_E_SET; } Page 26 void LCD_cmd(unsigned char wdata) { // LCD_DATA=wdata; if(((wdata>>0)&0x01) == 0x01) DATA_PIN_0_SET; else DATA_PIN_0_CLR; if(((wdata>>1)&0x01) == 0x01) DATA_PIN_1_SET; else DATA_PIN_1_CLR; if(((wdata>>2)&0x01) == 0x01) DATA_PIN_2_SET; else DATA_PIN_2_CLR; if(((wdata>>3)&0x01) == 0x01) DATA_PIN_3_SET; else DATA_PIN_3_CLR; if(((wdata>>4)&0x01) == 0x01) DATA_PIN_4_SET; else DATA_PIN_4_CLR; if(((wdata>>5)&0x01) == 0x01) DATA_PIN_5_SET; else DATA_PIN_5_CLR; if(((wdata>>6)&0x01) == 0x01) DATA_PIN_6_SET; else DATA_PIN_6_CLR; if(((wdata>>7)&0x01) == 0x01) DATA_PIN_7_SET; else DATA_PIN_7_CLR; LCD_RS_CLR; LCD_RW_CLR; LCD_E_CLR; DrvSYS_Delay(100); LCD_E_SET; Page 27 } void Init_LCM16x2(void) { // LCD_DATA=0; DATA_PIN_0_CLR; DATA_PIN_1_CLR; DATA_PIN_2_CLR; DATA_PIN_3_CLR; DATA_PIN_4_CLR; DATA_PIN_5_CLR; DATA_PIN_6_CLR; DATA_PIN_7_CLR; DrvSYS_Delay(40000);// wait time >40ms after Vcc>4.5V LCD_cmd(0x38); DrvSYS_Delay(1000); LCD_cmd(0x38); DrvSYS_Delay(37); LCD_cmd(0x06); // Cursor Move to right, no shift DrvSYS_Delay(37); LCD_cmd(0x0C); // Display ON, Cursor Off, Blinking off DrvSYS_Delay(37); LCD_cmd(0x01); // Display Clear DrvSYS_Delay(1520); } Page 28 void display_xy(uint8_t x,uint8_t y) { if(y==1) x+=0x40; x+=0x80; LCD_cmd(x); } void display_char(uint8_t x, uint8_t y, unsigned char dat) { display_xy(x,y); LCD_data(dat); } void display_string(uint8_t x,uint8_t y, char *s) { uint8_t i; display_xy(x,y); i=0; while((x+i)1000000000||so1>1000000000) // Số nhập không quá 1 tỉ { display_string(2,1,"KO TINH DC "); so1=0; break; // Phá vỡ vòng lặp } else { so1 = so1 + so; break; // Thực hiện phép cộng } case '*': if (so>45000||so1>45000) // Số nhân không quá 45.000 { Page 33 display_string(2,1,"KO TINH DC "); so1=0; break; } else { so1 = so1 * so; break; // Thực hiện phép Nhân } case '/': if(so == 0) // Nếu số chia bằng không { display_string(2,1,"KO TINH DC"); so1=0;// Gán cho nó giá trị } else so1 = so1 / so; // Thực hiện phép chia break; // Phá vỡ vòng lặp } display_char(0,1,'='); LCDPutInt(so1); } else { so = 0; so1 = 0; // Xóa giá tri các so đã tính toán // Xóa giá trị các so đã tính toán Page 34 Signed = 0; LCD_cmd(0x01); // Display Clear } } 3.2. Kết Luận Sản phẩm máy tính cầm tay đơn giản đã được hoàn thiện tính toán được các phép tính cộng ,trừ, nhân, chia đơn giản.Nhưng vẫn còn một vài nhược điểm hạn chế về ứng dụng tính toán phức tạp hơn.Mong thầy và các bạn đóng góp ý kiến để hoàn thiện hơn sản phẩm, chúng em xin chân thành cảm ơn. Page 35 [...]... LCDPutInt(so1); } else { so = 0; so1 = 0; // Xóa giá tri các so đã tính toán // Xóa giá trị các so đã tính toán Page 34 Signed = 0; LCD_cmd(0x01); // Display Clear } } 3.2 Kết Luận Sản phẩm máy tính cầm tay đơn giản đã được hoàn thiện tính toán được các phép tính cộng ,trừ, nhân, chia đơn giản. Nhưng vẫn còn một vài nhược điểm hạn chế về ứng dụng tính toán phức tạp hơn.Mong thầy và các bạn đóng góp ý kiến... mới thực sự phổ biến LCD xuất hiện đầu tiên trong các máy tính cầm tay, trò chơi điện tử cầm tay, Page 14 đồng hồ điện tử, … LCD ngày nay được thiết kế nhỏ gọn, nhẹ, chiếm ít không gian, chất lượng hình ảnh tốt, tiêu thụ ít năng lượng và đang thay thế dần màn hình CRT truyền thống Có hai kiểu cấu tạo màn hình tinh thể lỏng chính, khác nhau ở thiết kế nguồn sáng.Trong kiểu thứ nhất (hình 4.1), ánh sáng... rộng rãi, trong các thiết bị như điện thoại đi động các hệ thống nhúng, và trong nghiên cứu Giá thành tùy thuộc vào dòngARM Sự phát triển hiện nay thì ARM đang có sự phát triển mạnh hơn so với các ngành khác cả về ứng dụng của nó Một số ứng dụng trong làm bằng ARM như:  Làm các xe động cơ , các cánh tay robot, máy bay loại nhỏ  Giao tiếp với module cảm biến  Giao tiếp với máy tính 2.4.2 KHỐI HIỂN... mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khác nhau) Bảng 1 Chức năng các chân Chân số 1 Tên Vss Chức năng Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển Page 16 2 Vdd 3 4 Vee Rs 5 R/w 6 E 7-14 DB0DB7 Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển Chân này dùng để điều chỉnh độ tương phản của LCD Chân chọn thanh ghi (Register... NUC140 Tính năng kỹ thuật của dòng NUC140: - NUC140 là vi điều khiển 32-bit lõi ARM Cortex-M0, trình đơn phần cứng 32 bit, chạy lên tới 50MHz - Có 4 mức ưu tiên ngắt đầu vào, có 128 KB flash ROM cho bộ nhớ chương trình - 16KB SRAM, 4KB bộ nhớ flash cho nạp chương trình trong hệ thống Page 13 - Giao tiếp thiết bị ngoại vi: 8 kênh 12bit ADC, UART nối tiếp tốc độ cao, SPI lên đến 32MHz, I2C lên đến 1MHz; kết... dụng cho màn hình màu ở máy tính hay ti vi Để tạo ra màu sắt, lớp ngoài cùng, trước khi ánh sáng đi ra đến mắt người, có kính lọc màu Ở loại màn hình tinh thể lỏng thứ hai (hình 4.2), chúng sử dụng ánh sáng tự nhiên đi vào từ mặt trên và có gương phản xạ nằm sau, dội ánh sáng này lại cho người xem.Đây là cấu tạo thường gặp ở các loại màn hình tinh thể lỏng đen trắng trong các thiết bị bỏ túi Do không... nghiệp - Dải nhiệt độ hoạt động từ -40ºC ~ +85ºC - Cung cấp các ứng dụng mạnh mẽ và khả năng kết nối với nhiều giao diện ngoại vi Quan sát sơ đồ tương quan giá thành và khả năng của các dòng chip Nuvoton, ta thấy ARM Cortex-M0 là sự phát triển cao giữa dòng chip MCU 8051 và dòng ARM7/9 với khả năng kết nối và các tính năng vi điều khiển mạnh nhưng vẫn có mức giá phù hợp Hình 9 sơ đồ tương quan giá thành... flash cho nạp chương trình trong hệ thống Page 13 - Giao tiếp thiết bị ngoại vi: 8 kênh 12bit ADC, UART nối tiếp tốc độ cao, SPI lên đến 32MHz, I2C lên đến 1MHz; kết nối thiết bị ngoại vi USB 2.0, CAN, LIN… - Thiết bị ngoại vi có tính năng phong phú: PWM, RTC, bộ ngắt nhận dạng Brown-out, GPIO, PDMA và 4 bộ Timer 32 bit - Dải điện áp hoạt động rộng từ 2,5V~5,5V, chống nhiễu tiếng ồn tốt, tích hợp dữ... Điểm ảnh con này lúc đó bị tắt và đối với mắt đây là một điểm tối Để bật một điểm ảnh con, cần đặt một điện thế vào điện cực của nó, làm thay đổi sự định hướng của các phân tử tinh thể lỏng ở nơi ấy; kết quả là ánh sáng sau khi truyền qua phần tinh thể lỏng ở chỗ điểm ảnh con này sẽ bị xoay phương phân cực đi, có thể lọt qua lớp kính lọc phân cực thứ hai, tạo ra một điểm màu trên tấm kính trước  LCD... #define LCD_RW_CLR DrvGPIO_ClrBit(E_GPA,1) #define LCD_E_SET DrvGPIO_SetBit(E_GPA,2) // E pin = GPA2 #define LCD_E_CLR DrvGPIO_ClrBit(E_GPA,2) char LcdBuf1[16]; void calAndDisplay(unsigned char key); // Hàm tính toán và hi?n th? void Delay(uint32_t h) { while(h ); } void Init_GPIO(void) { int i; for(i=0; i ... liu chớnh ca tinh th lng, thỡ LCD mi thc s ph bin LCD xut hin u tiờn cỏc mỏy tớnh cm tay, trũ chi in t cm tay, Page 14 ng h in t, LCD ngy c thit k nh gn, nh, chim ớt khụng gian, cht lng hỡnh... thng nhỳng thit k mt sn phm in t cú chc nng tớnh toỏn cỏc phộp tớnh c bn nh mt chic mỏy tớnh cm tay Sn phm to s n gin, thõn thin, hiu qu v tit kim chi phớ Page Mc ớch:ng dng kin thc ó hc v h thng... mnh hn so vi cỏc ngnh khỏc c v ng dng ca nú Mt s ng dng lm bng ARM nh: Lm cỏc xe ng c , cỏc cỏnh tay robot, mỏy bay loi nh Giao tip vi module cm bin Giao tip vi mỏy tớnh 2.4.2 KHI HIN TH Tng

Ngày đăng: 12/10/2015, 10:33

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1: KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN

    • 1.1 VAI TRÒ CỦA MÁY TÍNH SỐ

    • 1.2 Ý TƯỞNG THIẾT KẾ

    • 1.3 XÁC ĐỊNH BÀI TOÁN

      • 1.3.1 Xác định chức năng sản phẩm

      • 1.3.2 Xác định các vấn đề gặp phải.

      • 1.4 Sơ đồ giải thuật

      • CHƯƠNG 2: THIẾT KẾ HỆ THỐNG

        • 2.1 SƠ ĐỒ KHỐI TỔNG THỂ

        • 2.3. LỰA CHỌN THIẾT BỊ

          • 2.3.1. Khối điều khiển trung tâm:

          • 2.3.2. Khối hiển thị:

          • 2.3.3 Khối bàn phím

          • 2.4. LỰA CHỌN LINH KIỆN

            • 2.4.1. ARM CORTEX-M0

            • Đặc trưng của dòng chip MCU 32-bit lõi ARM Cortex-M0: khá đa dạng về chủng loại, cấu hình và đáp ứng nhu cầu thị trường về dòng chip 32-bit này. Vi điều khiển lõi ARM Cortex-M0 có nhiều giao diện ngoại vi đáp ứng tính năng mạnh mẽ và khả năng kết nối. Nó được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng nhu cầu thực thi của MCU với việc giảm số lượng bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ điện năng thấp và giảm giá thành vi xử lý, đồng thời cung cấp hiệu năng tính toán cao.

            • Phân loại dòng sản phẩm MCU lõi ARM Cortex-M0:

            • 2.4.2. KHỐI HIỂN THỊ

            • 2.4.3. Bàn Phím

            • CHƯƠNG 3. VIẾT CODE

              • 3.1. Code chương trình trên Nuc140vc3cn

              • 3.2. Kết Luận

Tài liệu cùng người dùng

Tài liệu liên quan