Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
1,66 MB
Nội dung
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