MỤC LỤC
Lời mở đầu . .Trang 1
Chương 1: CƠ SỞ LÝ THUYẾT . Trang 2
1.1 Giới thiệu sơ lược về vi điều khiển AVR . Trang 2
1.1.1 Giới thiệu . .Trang 2
1.1.2 ATmega32 . .Trang 3
1.1.3 Đặc tính của ATmega32 . .Trang 4
1.1.3.1 Cổng vào ra . .Trang 7
1.1.3.2 Cấu trúc bộ nhớ . .Trang 10
1.2 Ngôn ngữ lập trình cho AVR . Trang 13
1.3 Giới thiệu BasCom AVR . .Trang 14
1.4 Giới thiệu sơ lược về Visual Basic . Trang 15
1.2.1 Giới thiệu . .Trang 15
1.2.2 Các bước xây dựng một chương trình . .Trang 23
1.5 Cảm biến áp lực . Trang 24
1.6 Giới thiệu GPRS Modem G2403R . Trang 26
Chương 2: THỰC TRẠNG TẠI CÔNG TY . .Trang 29
Chương 3: GIẢI PHÁP VÀ HOÀN THIỆN . .Trang 30
3.1 Bộ phận phát . .Trang 31
3.1.1 Nguyên lý hoạt động . Tang 31
3.1.2 Thiết kế phần cứng . .Trang 31
3.1.2.1 Mạch nguồn ổn áp . Trang 31
3.1.2.2 Mạch RCV420 chuyển đổi dòng sang áp . .Trang 36
3.1.2.3 Mạch nạp AVR . .Trang 37
3.1.2.4 Mạch ứng dụng AVR ATmega32 . Trang 38
3.1.3 Thiết kế phần mềm . .Trang 42
3.2 Bộ phận thu . .Trang 59
3.2.1 Nguyên lý hoạt động . .Trang 59
3.2.2 Giao diện với máy tính . .Trang 60
PHẦN KẾT LUẬN VÀ KIẾN NGHỊ VỀ NỘI DUNG NGHIÊN CỨU TIẾP
THEO . .Trang 75
Ý NGHĨA KHOA HỌC . .Trang 76
ỨNG DỤNG THỰC TIỄN . Trang 77
DANH MỤC TÀI LIỆU THAM KHẢO . .Trang 78
PHỤ LỤC . .Trang 79
DANH MỤC HÌNH ẢNH, BẢNG GIÁ TRỊ .
Trang
Hình 1.1 Các dòng AVR: tiny, AVR và ATmega . 3
Hình 1.2 Cấu trúc bên trong AVR . .4
Hình 1. 3 Cấu trúc chân của AVR . 8
Hình 1. 4 Sơ đồ một cổng vào ra . .9
Hình 1. 5 Bộ nhớ chương trình có và không có sử dụng boot loader . .11
Hình 1. 6 Giao diện chương trình Bascom AVR. .14
Hình 1.7 Giao diện Visual Basic . 16
Hình 1.8 Menu Bar . 16
Hình 1.9 Add -ins manager . .17
Hình 1.10 Toolbars . .17
Hình 1.11 Toolbox . .18
Hình 1.12 Properties . .19
Hình 1.13 Form layout . .20
Hình 1.14 Designer . .20
Hình 1.15 Giao diện viết code . .21
Hình 1.16 Properties Window và Form Layout . .22
Hình1.17 Cảm biến áp lực . 24
Hình 1.18 Sơ đồ Kết nối điện . 25
Hình1.19 GPRS Modem G2403R . 26
Hình 3.1: Sơ đồ khối hệ thống . .30
Hình 3.2 Mạch nguồn 5V . .31
Hình 3.3 Mạch nguồn ± 15V . 32
Hình 3.4 Sơ đồ chỉnh lưu . 34
Hình 3.5 Dạng điện áp sau khi qua bộ lọc . .35
Hình 3.6 LM78xx . .35
Hình 3.7 Sơ đồ nguyên lý mạch RCV420 . .36
Hình 3.8 Mạch RCV420 . .36
Hình 3.9 Sơ đồ nguyên lý mạch nạp AVR . .37
Hình 3.10 Mạch nạp AVR . 38
Hình 3.11 Sơ đồ nguyên lý mạch ứng dụng AVR . 38
Hình 3.12 Mạch AVR . .39
Hình 3.12 Giao diện với máy tính 1 . .60
Hình 3.13 Giao diện với máy tính 2 . .74
Bảng 1.1 Bảng so sánh những đặc tính giữa ATmega32 với họ AT89C51 .6
Bảng1.2 Cấu hình cho các chân cổng . .8
Bảng 1.3 Địa chỉ của tất cả các port . .12
LỜI MỞ ĐẦU
Ngày nay công nghệ không dây phát triển rất mạnh. Vì các thiết bị không
dây ngày càng hiện đại cho phép người sử dụng thõa mản trong giải trí cũng như
trong điều khiển sản xuất mà không cần dây nối. Nó thật sự tiện ít và tạo cảm giác
thoải mái cho người sử dụng. Truyền tín hiệu không dây là một đề tài có nhiều
ứng dụng thực tế, nhất là trong lĩnh vực điều khiển từ xa và truyền số liệu.
Bên cạnh đó những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh
hoạt và sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân
dụng đều có sự góp mặt của vi điều khiển và vi xử lí. Trên thị trường có rất nhiều
họ vi điều khiển: họ 8051 của Intel, 68HC11 của Motorola, PIC của hãng
Microchip, H8 của Hitachi, AVR của hãng Atmel . Ứng dụng vi điều khiển trong
thiết kế hệ thống làm giảm chi phí thiết kế và giá thành sản phẩm, đồng thời nâng
cao tính ổn định của thiết bị và hệ thống.
Chương 1: CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu sơ lược về vi điều khiển AVR .
1.1.1. Giới thiệu:
AVR là họ Vi điều khiển khá mới trên thị trường cũng như đối với người sử
dụng. Đây là họ vi điều khiển được chế tạo theo kiến trúc RISC (Reduced
Instruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các
họ vi điều khiển khác, nó còn tích hợp nhiều tính năng mới rất tiện lợi cho người
thiết kế và lập trình.
Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình
cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL (Hight
Level Language) để lập trình ngay cả với loại chip xử lí 8 bit. Tuy nhiên khi biên
dịch thì kích thước đọan mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Hãng
Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt để giãm thiểu sự
chênh lệch kích thước mã đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời
với việc làm giãm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện
lệnh đúng chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi
điều khiển khác từ 4 đến 12 lần. Vì thế nghiên cứu AVR là một đề tài khá lý thú
và giúp cho sinh viên biết thêm một họ vi điều khiển vào loại mạnh nhất hiện nay.
Vi điều khiển AVR do hãng Atmel ( Hoa Kì ) sản xuất được gới thiệu lần đầu
năm 1996.
Họ vi điều khiển AVR là một họ vi điều khiển có cấu trúc hiện đại (so với
8051).
90 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2534 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Truyền dữ liệu lưu lượng và áp lực nước qua tin nhắn sms, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
gần đây nhất là phiên bản 6.0 ra đời năm 1998 với các
tính năng ngày càng được nâng cao đã khiến mọi người công nhận VB hiện là một
trong những công cụ chính để phát triển các ứng dụng trên Windows.
Visual Basic 6.0 cho phép người dùng tiếp cận nhanh cách thức lập trình
trên môi trường Windows.
Hình 1.7 Giao diện Visual Basic.
• Menu Bar
Chứa đầy đủ các commands mà bạn sử dụng để làm việc với VB6, kể cả các
menu để truy cập các chức năng đặc biệt dành cho việc lập trình chẳng hạn như
Project, Format, hoặc Debug. Trong Menu Add-Ins có Add-Ins Manager cho phép
bạn thêm những menu con nhiệm ý để chạy các chương trình lợi ích cho việc lập
trình.
Hình 1.8 Menu Bar
Trong Add-Ins Manager dialog bạn chọn một Add-In rồi check một hay
nhiều hộp trong khung Load behavior:
Hình 1.9 Add –ins manager
• Toolbars (Debug, Edit, form Editor, Standard)
Các toolbars có hình các icons cho phép bạn click chọn để thực hiện công
việc tương đương với dùng một menu command, nhưng nhanh và tiện hơn. Bạn
dùng menu command View | Toolbars (click lên menu command View cho
popupmenu hiện ra rồi click command con Toolbars) để làm cho các toolbars hiện
ra hay biến mất đi. Bạn có thể thay đổi vị trí một toolbar bằng cách giữ hai gạch
vertical nằm bên trái toolbar rồi dời toolbar đi chỗ khác (giữ ở đây nghĩa là để
pointer của mouse lên chỗ chấm trong hình phía dưới rồi bấm xuống và giữ nút
bên trái của mouse, trong khi kéo pointer đi nơi khác).
Hình 1.10 Toolbars
Ngoài ra bạn cũng có thể sửa đổi các toolbars theo ý thích bằng cách dùng
Menu command View | Toolbars | Customize...
• Toolbox
Đây là hộp đồ nghề với các công cụ, gọi là controls, mà bạn có thể đặt lên
các form trong lúc thiết kế (design). Nếu Toolbox biến mất, bạn có thể display nó
trở lại bằng cách dùng menu command View | Toolbox. Bạn có thể khiến toolbox
display nhiều controls hơn bằng cách chọn Components... Từ context menu (chọn
Toolbox rồi bấm nút phải của mouse để display context menu) hay dùng menu
command Project | Components. Ngoài việc trình bày Toolbox mặc định, bạn có thể
tạo cách trình bày khác bằng cách chọn Add Tab... từ context menu và bổ sung các
control cho tab từ kết quả.
Hình 1.11 Toolbox
• Project Explorer
Sẽ liệt kê các forms và các modules trong project hiện hành của bạn. Một
project là sự tập hợp các files mà bạn sử dụng để tạo một trình ứng dụng. Tức là,
trong VB6, khi nói viết một program có nghĩa là triển khai một project.
• Properties window
Liệt kê các đặc tính của các forms hoặc controls được chọn. Một property là
một đặc tính của một object chẳng hạn như size, caption, hoặc color. Khi bạn sửa
đổi một property bạn sẽ thấy hiệu quả ngay lập tức, thí dụ thay đổi property Font
của một Label sẽ thấy Label ấy được display bằng Font chữ mới. Khi bạn chọn
một Property của control hay form trong Properties window, phía bên phải ở chỗ
value của property có thể display ba chấm (. . .) hay một tam giác chỉa xuống.
Bấm vào đó để display một dialog cho bạn chọn value. Thí dụ dưới đây là dialog
để chọn màu cho property ForeColor của control Label1.
Hình 1.12 Properties
• Form Layout
Bạn dùng form Layout để chỉnh vị trí của các forms khi form hiện ra lần đầu
lúc chương trình chạy. Dùng context command Resolution Guides để thấy nếu
dùng một màn ảnh với độ mịn (resolution) tệ hơn, thí dụ như 640 X 480, thì nó sẽ
nhỏ như thế nào.
Hình 1.13 Form layout
• Form Designer
Dùng để thiết kế giao diện lập trình. Bạn bổ sung các controls, các đồ họa
(graphics), các hình ảnh và một form để tạo sự ma sát mà bạn muốn. Mỗi form
trong trình ứng dụng của bạn có designer form riêng của nó. Khi bạn maximise
một form designer, nó chiếm cả khu làm việc. Muốn làm cho nó trở lại cở bình
thường và đồng thời để thấy các form designers khác, click nút Restore Window ở
góc bên phải, phía trên.
Hình 1.14 Designer
• Immediate Window
Dùng để gở rối (debug) trình ứng dụng của bạn. Bạn có thể display dữ kiện
trong khi chạy chương trình ứng dụng. Khi chương trình đang tạm ngừng ở một
break point, bạn có thể thay đổi giá trị các variables hay chạy một dòng chương
trình.
• View Code button
Click đôi vào form để xem code của một form mà bạn đã chọn. Window của
code giống như dưới đây:
Hình 1.15 Giao diện viết code
Trong Code window bạn có thể chọn display tất cả Sub của code cùng một
lúc như trong hình hay display mỗi lần chỉ một Sub bằng cách click button nằm ở
góc bên trái phía dưới.
• View form button
Click đôi vào form muốn xem để xem form mà bạn đã chọn.
Trong hình dưới đây, Properties Window và Form Layout đã được kéo ra
ngoài cho floating.
Hình 1.16 Properties Window và Form Layout.
Ưu điểm:
- Tiết kiệm được thời gian và công sức so với một số ngôn ngữ lập trình có
cấu trúc khác vì bạn có thể thiết lập các hoạt động trên từng đối tượng được VB
cung cấp.
- Khi thiết kế chương trình có thể thấy ngay kết quả qua từng thao tác và giao
diện khi thi hành chương trình.
- Cho phép chỉnh sửa dễ dàng, đơn giản.
- Làm việc với các điều khiển mới (ngày tháng với điều khiển MonthView và
DataTimePicker, các thanh công cụ có thể di chuyển được CoolBar, sử dụng đồ
họa với ImageCombo, thanh cuộn FlatScrollBar,…).
- Làm việc với cơ sở dữ liệu.
- Các bổ sung về lập trình hướng đối tượng.
- Khả năng kết hợp với các thư viện liên kết động DLL.
• Nhược điểm:
- Yêu cầu cấu hình máy khá cao.
- Chỉ chạy được trên môi trường Win95 trở lên.
1.4.2. Các bước xây dựng một chương trình:
Để xây dựng một chương trình ứng dụng cần thực hiện theo các bước sau
đây:
• Bước 1: Phân tích bài toán
Là quá trình tìm hiểu bài toán, xác định các dữ kiện nhập, dữ kiện xuất và
đi tìm một giải thuật thích hợp nhất. Bước này cần thực hiện trên giấy cho rõ ràng
để tạo thói quen lập trình tốt.
• Bước 2: Thiết kế giao diện
Người lập trình phải thiết kế giao diện thích hợp cho việc nhập, xuất dữ liệu,
cần chú ý đến cách trang trí, cách bố trí, thứ tự, màu sắc, …
• Bước 3: Thiết kế chương trình
Là bước viết chương trình dựa trên giải thuật đã xây dựng ở bước 1, chạy
thử chương trình để kiểm tra, phát hiện các lỗi đặc biệt và sửa chữa.
• Bước 4: Cải tiến
Đây là bước hoàn thiện chương trình ở mức độ cao hơn.
1.5. Cảm biến áp lực
.
Hình1.17 Cảm biến áp lực
Thiết kế để sử dụng trong công nghiệp nặng.
• Áp lực trong phạm vi đo (tương đối) hay tuyệt đối từ 0 đến 600 bar
• Tất cả các tín hiệu đầu ra tiêu chuẩn: 4-20 mA, 0-5 V,1-5 V, 1-6 V, 0-10
V, 1-10 V.
Mô tả Áp lực nhỏ gọn truyền MBS 3000 được thiết kế để sử dụng trong hầu
hết tất cả công nghiệp ứng dụng, và là một áp lực đáng tin cậy đo lường, ngay cả
trong môi trường khắc nghiệt điều kiện.
Áp lực có các dạng tín hiệu đầu ra khác nhau, tuyệt đối và gauge (tương
đối) phiên bản, đo khoảng từ 0-1 tới 000-600 bar và nhiều áp lực và kết nối điện.
Độ rung động ổn định, mạnh mẽ xây dựng,và một mức độ cao của EMC /
EMI trang bị bảo hộ các bộ truyền áp lực để đáp ứng nhất nghiêm ngặt các yêu
cầu công nghiệp.
Ngõ ra tín hiệu: 4-20 mA
Độ chính xác (bao gồm cả phi linearity, hysteresis và lặp)
± 0.5% FS (typ.)
± 1% FS (tối đa)
Non-linearity BFSL (phù hợp) ≤ ± 0.5% FS
Từ trễ và lặp ≤ ± 0.1% FS
Nhiệt điểm số không thay đổi
≤ ± 0,1% FS/10K (typ.)
≤ ± 0,2% FS/10K (tối đa)
Nhiệt độ nhạy (span) chuyển dịch
≤ ± 0,1% FS/10K (typ.)
≤ ± 0,2% FS/10K (tối đa)
Thời gian đáp ứng <4 ms
Áp lực quá tải (tĩnh) 6 × FS (tối đa 1500 bar)
Burst áp lực> 6 × FS (tối đa 2000 bar).
Hình 1.18 Sơ đồ kết nối điện
1.6. Giới thiệu GPRS Modem G2403R
Hình1.19 GPRS Modem G2403R
Giao tiếp với máy tính: Kết nối thông qua cổng RS232 (COM)
Để test ta có thể dùng các chương trình cổng COM như HyperTerminal,
Terminal… Hoặc dùng các chương trình lập trình Visual Basic, Visuall C để lập
trình.
Giao tiếp với vi điều khiển: Dùng các chân TX (truyền) và RX (nhận). Sử
dụng chức năng uart của vi điều khiển để giao tiếp với module.
Quá trình trao đổi dữ liệu giữa máy tính và Modem được thực hiện theo cơ
chế bắt tay phần cứng hay phần mềm.
Quy tắc truyền lệnh trên Modem:
- Mỗi dòng lệnh của modem bắt đầu bằng ký tự AT.
- Dòng lệnh có thể chứa nhiều lệnh.
- Kết thúc lệnh bằng ký tự Enter (mã ASCII là 13).
- Dòng lệnh cuối cùng được lưu trong modem. Có thể dùng lệnh A/ để thực
hiện lại lệnh này.
- Thông báo kết quả thực hiện lệnh của modem có thể ở dạng từ chữ hay số
(giá trị mặc định là chữ). Có thể sử dụng lệnh V để lựa chọn dạng thông báo là chữ
hay số.
- Để hoạt động đúng, modem cần có các thông số xác định. Nếu không có
sự thay đổi cần thiết, modem hoạt động theo giá trị mặc định(default). Nếu thông
số trong lệnh bị bỏ qua, giá trị thông số mặc định là 0.
Các lệnh AT dùng để gởi và nhận tin nhắn:
Một dòng lệnh cho phép bạn phát hành một số các lệnh tại một thời gian
chứ không phải là ban hành và phải chờ đợi cho modem để phản ứng với mỗi lệnh
riêng rẽ. Dưới đây là một số nguyên tắc mà bạn phải tuân theo khi phát hành một
dòng lệnh vào modem.
• Mỗi dòng lệnh phải bắt đầu bằng các chữ AT.
• Bởi vì tất cả các không gian được bỏ qua trong các dòng lệnh, bạn
có thể để lại dấu cách giữa mỗi lệnh, và giữa mỗi ký tự của tất cả các lệnh. Bạn
cũng có thể bao gồm các dấu chấm câu trong số điện thoại, và gõ lệnh, hoặc trong
UPPER-hay chữ thườngVí dụ, lệnh sau đây là giống nhau:
ATDT8005551234 hay atdt (800) 876-5555
• Để hủy bỏ một lệnh thọai trong tiến trình, bấm phím bất kỳ trên bàn
phím.
• Nếu bạn thực hiện một lỗi, Backspace để xoá nó, và Nhập lại các ký
Để thực hiện các dòng lệnh, bấm hoặc trên bàn phím
của bạn.
• AT + CMGR: Đọc Tin nhắn
• AT + CMGS: Gửi tin nhắn
• AT + CMGD: Xóa tin nhắn.
• AT + CMGW: Viết tin nhắn vào bộ nhớ
• AT + CMSS: Gửi tin nhắn từ bộ nhớ
• AT + CMGF = 1 : kiểm tra modem hỗ trợ chế độ văn bản
• AT + CPIN = "0000" : Nếu modem chứa một thẻ SIM có
được bảo đảm bằng một mã PIN, chúng ta nhập vào mã pin bằng lệnh này.
Chương 2: THỰC TRẠNG TẠI CÔNG TY
Nước từ trạm bơm nước thô được bơm lên bể trộn Æ bể lắng Æ bể lọc Æ
bể chứa Æ bơm ra mạng.
Hiện nay, hầu hết các thiết bị đều được bán tự động và xu hướng trong
tương lai sẽ là tự động hóa, các quá trình được điều khiển và xử lý bởi hệ thống vi
tính. Điều này giúp cho việc quản lý chất lượng nước xử lý và phát hiện các sự cố
được chính xác hơn.
Tất cả các tín hiệu dừng máy, chạy máy, thông báo sự cố của thiết bị , tín
hiệu của thiết bị đo… đều được hiển thị trên màn hình SCADA. SCADA
(Supervisory Control and Data Acquisition) là hệ thống điều khiển, kiểm soát thu
thập dữ liệu.
Khi nhân viên ở các bộ phận khác cần xác định giá trị của dữ liệu lưu
lượng, áp… lực thì phải liên hệ đến phòng SCADA.
Nhưng nếu khi cần biết thì phải gọi điện đến phòng SCADA thì sẽ mất thời
gian, và khi gọi điện đến phòng SCADA mà không có nhân viên trực tại phòng thì
sao?
Hiện tại bộ truyền dữ liệu lưu lượng và áp lực của công ty được nhập từ
Đan Mạch với gía thành cao.
Chương 3: GIẢI PHÁP VÀ HOÀN THIỆN
Để giải quyết vấn để trên em xin đưa ra giải pháp của mình là ta có thể
dùng một hệ thống truyền dữ liệu qua tin nhắn SMS, sẽ khắc phục được những
khó khăn gặp phải khi cần dữ liệu.
Với ưu điểm :
Nhận được tín hiệu và các dữ liệu của lưu lượng, áp lực tại phòng SCADA.
Lấy giá trị tức thời, theo giờ, theo ngày.
Gía thành hợp lý.
Hình 3.1: Sơ đồ
khối hệ thống
3.1. Bộ phận phát:
3.1.1. Nguyên lý hoạt động:
Tín hiệu được lấy từ đồng hồ lưu lượng và cảm biến áp lực vào dưới
dạng dòng từ 4 – 20 mA sẽ được chuyển thành tín hiệu áp từ 0 – 5V thông qua
mạch chuyển đổi RCV420. Sau đó tín hiệu áp sẽ được đưa vào mạch vi điều khiển
AVR xử lí và chuyển tới modem phát để truyền tín hiệu về bộ thu.
3.1.2. Thiết kế phần cứng:
3.1.2.1. Mạch nguồn ổn áp:
Mạch điều khiển AVR
Modem thu
Modem phát
Giao tiếp với máy tính Giao tiếp với ĐTDĐ
Cảm biến áp lực Đồng hồ lưu lượng
Nguồn điện là thành phần không thể thiếu được trong các mạch điện tử và
nó đóng thành phần quan trọng ảnh hưởng tới hoạt động của mạch. Việc cung cấp
nguồn điện 1 chiều có điện áp 5V, 6V, 9V, 12V, 15V,18V, 24V để cung cấp cho
các thiết bị điện tử thông dụng chạy điện 1 chiều. Do ngoài thực tế nguồn điện
chúng ta không ổn định so với giá trị yêu cầu ở lý thuyết nên ổn áp lại 1 giá trị
điện áp đầu ra không thay đổi để cho mạch điện chúng ta hoạt động ổn định và
chính xác.
Thông thường có 2 phương pháp ổn áp :Ổn áp dùng IC số và ổn áp dùng
transitor kết hợn với zenner ổn áp. Ở đây chúng ta làm mạch ổn áp đơn giản dùng
họ 78xx với dòng điện >=1A.
• Sơ đồ mạch điện đơn giản
C1
J1
CON2
1
2
C2
T3
TRANSFORMER
1 5
4 8 D2
R1
+-
~
~
D1
VCC
LM 7805
1 2
3
in outgn
d
+ C4+ C3
Hình 3.2 Mạch nguồn 5V
• Các linh kiện:
LM 7805: IC ổn áp ra 5V.
J1: 220VAC
T3: biến thế
D1: diode cầu
D2: led
C1: 2200uF 16V
C2: tụ 104
C3:1000uF 10V
C4: tụ 104
R1: 303Ω
+15V
+
-
~ ~
D1
R1
7915
2
1
3IN G
N
D
OUT
1
2
3in
gn
d out
R2 -15V
C4
0V
15V
C3
15V C5
OV
J1
CON3
1
2
3
C6
C2
J2
CON3
1
2
3
7815
C1
Hình 3.3 Mạch nguồn ± 15V
• Các linh kiện:
J1: con 3: input
J2: con 3: output
D1: diode cầu.
C1:1000μF
C2: 1000μF
C3: 1000μFb
C4: 1000μF
C5: tụ 104
C6: tụ 104
R1: 6 Ω 5W
R2: 6 Ω 5W
7815: IC ổn áp 15V
7915: IC ổn áp 15V
• Phân tích mạch điện
Mạch điện gồm những phần sau : Hạ áp, chỉnh lưu, lọc, biến đổi (78xx).
Nguồn điện xoạy chiều 220VAC-50Hz qua biến áp là hạ áp xuống còn 24VAC -
1A và được qua bộ chỉnh lưu nhằm biến đổi điện xoay chiều thành điện 1 chiều.
Thành phần 1 chiều này có độ gợn nên phải qua bộ lọc C để san phảng điện áp
gợn đó cho ra điện áp 1 chiều. Sau đó điện áp 1 chiều này qua bộ ổn áp 78xx cho
ra điện áp ổn áp mà mình cần.
Hạ áp : Ở đây chúng ta biến đổi điện áp lưới 220VAC-50Hz xuống còn
24VAC - 1A. Mục đích là cấp đầy vào cho bộ biến đổi và bộ lọc để có điện áp một
chiều mong muốn.
Chỉnh lưu: Thành phần chỉnh lưu là biến đổi tín hiệu xoay chiều thành tín
hiệu 1 chiều thông qua 4 con diode chỉnh lưu. Đây là sơ đồ chỉnh lưu cả chu kì với
dạng sóng đầu vào và đầu ra sau chỉnh lưu như sau:
Hình 3.4 Sơ đồ chỉnh lưu
+ Điện áp đầu vào của bộ chỉnh lưu: Uv = 24sqrt2 = 34VDC.
+ Điện áp sụt áp trên cầu là : 34VDC - 1.5VDC = 32.5VDC (Do đi qua 2
diode nên mỗi diode bị sụt áp mất 0.7V).
+ Điện áp sau chỉnh lưu là : Ucl = 32.5 * 0.9 = 29VDC ( 0.9 là hệ số chỉnh
lưu của chỉnh luu cầu).
Dạng điện áp sau chỉnh lưu vẫn còn các sóng nhấp nhô như ngọn núi và dạng
điện áp này vẫn được coi là điện áp 1 chiều nhưng chưa ổn định.
Thành phần lọc :
Mạch này dùng lọc C cho đơn giản. Chúng ta có thể dùng mạch lọc RC,
CRC. Và ần phải quấn thêm cuộn cảm.
+ Tụ C1 và C3 lọc các thành phần điện áp nhấp nhô sau chỉnh lưu cho nó
bằng phẳng.
+ Tụ C2 và C4 lọc các thành phần cao tần.
Hình 3.5 Dạng điện áp sau khi qua bộ lọc.
Dựa vào nguyên tắc phóng nạp của tụ điện mà nó cho ra dòng điện 1 chiều
thằng như trên hình vẽ. Tụ càng lớn thì độ gợn điện áp càng giảm.
Những sóng có tần số cao tần phải được lọc đi nhờ 2 tụ kẹo C2 và C4 vì
trong mạch dùng IC nếu tồn tại những thành phần này thì sẽ gây ra những sai sót
khó phát hiện làm cho mạch hoạt động không bình thường.
Qua bộ lọc là ta đã tạo được điện áp 1 chiều cấp vào cho bộ biến đổi đổi
hay là bộ ổn áp.
Bộ ổn áp :
Hình 3.6 LM78xx
+ Dòng họ 78xx cho ra nhiều loại ổn áp điện khác nhau : như 7805 nó ổn
áp 5V, 7806 cho ổn áp 6V...
+ Điện áp đầu vào của họ 78xx là điện áp 1 chiều và max <=40V. Dòng
điện không vượt quá 1A
+ Đảm bảo thông số là : Vi - V0 = 2V đến 3V ( lúc đó mạch mới hoạt động
ổn áp được)
+ Tản nhiệt tốt cho 78xx. Khi hoạt động với tải thì 78xx rất nóng. Đối với
cấp điện áp là 29V thì 78xx nóng khi có tải và chúng ta chú ý tản nhiệt tốt cho nó.
3.1.2.2. Mạch RCV420 chuyển đổi dòng sang áp:
J1
1
2
3
C2-15V
J3
CON2
1
2
+15V
C4
OV
C3
J2
CON2
1
2
RCV 420
1
2
3
6
7
8 9
10
11
12
13
14
15
16
5
4
-IN
Ct
+IN
NC
RNR
Ref Trim NC
Ref Fb
Ref Out
Ref In
Rcv Com
Rcv Out
Rcv Fb
V+
Ref Com
V-
C1
Hình 3.7 Sơ đồ nguyên lý mạch RCV420.
Hình 3.8 Mạch RCV420.
• Các linh kiện:
J1: Con 3 :cấp nguồn ± 15V
J2: Con 2: đưa vào tín hiệu 4-20 mA
J3: Con 2: đưa ra tín hiệu 0-5V
C1: tụ 104
C2: tụ 10μF
C3: tụ 104
C4: tụ 10μF
RCV420: IC chuyên dụng chuyển dòng sang áp.
• Phân tích mạch điện
RCV420 là IC chuyên dụng, mạch RCV420 nhận tín hiệu ngõ vào từ 4 đến
20 mA sau đó chuyển đổi thành nguồn áp từ 0-5V. Các tụ C1, C2, C3 và C4 trong
mạch có nhiệm vụ lọc nguồn và chống nhiễu tín hiệu vào và ra cho mạch.
3.1.2.3. Mạch nạp AVR:
Hình 3.9 Sơ đồ nguyên lý mạch nạp AVR
Hình 3.10 Mạch nạp AVR.
3.1.2.4. Mạch ứng dụng AVR ATmega32:
VCC
J3
LC
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VCC
A
Tm
eg
a3
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
PB0[T0]
PB1[T1 ]
PB2[AIN0]
PB3[AIN1]
PB4[SS]
PB5[MOSI]
PB6[MISO]
PB7[SCK]
/RST
VCC
GND
XTAL2
XTAL1
PD0[RXD]
PD1[TXD]
PD2[INT0]
PD3[INT1]
PD4[OC1B]
PD5[OC1A]
PD6[ICP] PD7
PC0
PC1
PC2
PC3
PC4
PC5
PC6[TOSC1]
PC7[TOSC2]
AVCC
AGND
AREF
PA7[ADC7]
PA6[ADC6]
PA5[ADC5]
PA4[ADC4]
PA3[ADC2]
PA2[ADC2]
PA1[ADC1]
PA0[ADC0]
+
C2
VCC
C8
VR
J1
1
2
3
4
5
Y2
DU
ON
G
NA
P
pin
R4
MAX232
16
1
3
14
13
7
8 9
10
11
12
5
4
26
15
V
C
C
C1+
C1-
/T1OUT
R1IN
/T2OUT
R2IN /R2OUT
T2IN
T1IN
/R1OUT
C2-
C2+
V+V-
G
N
D
R3
R5
J2
0-5V
1
2
R6
VCC
R2
DS1307
8
7
6
54
3
2
1
VCC
SQW/OUT
SCL
SDAGND
Vbat
X2
X1
VCC
C6
VCC
C7
+ C1
VCC
R7
D1
LED
+
C4
+C3
R8
Y1
+ C5
VCC
U1
C
O
N
G
C
O
M 2
3
5
RXD
TXD
GND
R1
Hình 3.11 Sơ đồ nguyên lý mạch ứng dụng AVR.
Hình 3.12 Mạch AVR.
• Các linh kiện:
J1: con 5 đường nạp chương trình cho AVR.
J2: con 2 đưa vào tín hiệu 0-5V.
J3: con 16 kết nối hiện thị ra LCD.
Y1: thạch anh 11MHz.
Y2: thạch anh
D1: led
R1: điện trở 10K
R2: điện trở 10K
R3: điện trở 10K
R4: điện trở 10K
R5: điện trở 10K
R6: điện trở 100Ω
R7: điện trở 10K
R8: điện trở 330Ω
VR: biến trở
C1: 10 uF
C2: 10uF
C3: 10uF
C4: 10uF
C5: 10uF
C6: tụ 104
C7: tụ 22
C8: tụ 22
U1: cổng com
DS1307: dalad
MAX232: IC
ATmega32: IC vi điều khiển.
• Phân tích mạch điện
Các chân nguồn cho chip: bạn cần cấp nguồn và mass cho chip, bạn phải
nối chân VCC (chân 10 của chip ATmega32), và AVCC (chân 30) với nguồn
VCC, nối các chân GND và AGND với mass.
- Các đường nạp chip: chúng ta dành sẵn các đường này để có thể kết nói với
các mạch nạp mà không cần tháo chip khỏi mạch ứng dụng. Bạn nên bố trí các
đường này theo thứ tự mà mạch nạp của bạn được bố trí (ví dụ GND, VCC,
RESET, SCK, MISO, MOSI).
- Bộ tạo dao động - Thạch anh (Crystal): đây là nguồn xung giữ nhịp "nuôi"
chip, không có xung giữ nhịp chip sẽ không hoạt động. Tuy nhiên, đa số các chip
AVR đều hỗ trợ nguồn xung giữ nhịp bên trong với tần số tối ta 8MHz. Nếu bạn
thấy không cần thiết đến tần số hoạt động cao bạn có thể dùng nguồn xung giữ
nhịp trong chip, khi đó bạn có thể bỏ qua bộ tạo xung (gồm thạch anh và 2 tụ điện
như trong hình). Việc chọn nguồn xung "nuôi" chip được xác lập bởi các Fuse
bits. Một chú ý khác là trên dòng chip ATmega, fuse bits được set mặc định để sử
dụng nguồn xung nội 1MHz, vì thế với các chip này, khi mới mua về bạn có thể
không cần dùng thạch anh ngoài. Nhưng một khi bạn đã set fuse bits để chọn
nguồn xung ngoài thì không được bỏ qua mạch thạch anh này. (Các chip
AT90S..mặc định lấy nguồn xung ngoài).
- Chân AREF là chân điện áp tham chiếu cho các bộ ADC.
Đối với các chip AVR khác, bạn có thể tạo mạch ứng dụng theo cách tương tự
như mạch điện này.
• UART viết tắt của Universal Asynchronous Receiver – Transmitter
– thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ
liệu nối tiếp giữa máy tính và thiết bị ngoại vi thông qua cổng nối tiếp.
Rất nhiều vi điều khiển hiện nay đã tích hợp UART. Để bắt đầu việc
truyền dữ liệu bằng UART, một start bit được gửi đi, sau đó là 5-8 bit
dữ liệu, sau đó là stop bit. Start bit có trạng thái ngược với trạng thái
bình thường của đường truyền dữ liệu. Stop bit có cùng trạng thái với
trạng thái bình thường của đường truyền dữ liệu. Tốc độ của UART
được quy định bởi tốc độ baud. Một số interface chuẩn của UART là
EIA, RS 232, RS 422 và RS 485.
• Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry
Associations). Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -
3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V
(space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra,
tất cả các ngõ ra đều có đặc tính chống chập mạch. Chuẩn RS-232 cho
phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ
ngắn có thể lên đến 115.200 bps.
• Truyền nhận nối tiếp theo chuẩn UART, các đường truyền TXD và
RXD luôn ở bit 1 (5V theo chuẩn TTL). Đến khi có tín hiệu được truyền
thì đường truyền được hạ xuống bit 0 ( 0V theo chuẩn TTL) để bắt đầu
bit START. Chuẩn RS-232 qui định bit 1 là mức áp thấp từ -3V đến -
12V, bit 0 là mức áp cao từ +3V đến +12V. Chuẩn TTL lại qui định
ngược lại, bit 1 là mức áp cao ( tối đa +5V), bit 0 là mức áp thấp (thấp
nhất là 0V). Do đó ở đây ta qui ước mức cao là áp dương +5V hay
+12V, mức thấp là áp âm -12V hay 0V.
3.1.3. Thiết kế phần mềm:
$regfile = "m32def.dat"
$crystal = 11059200
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
'some subroutines
Declare Sub Getline(s As String)
Declare Sub Getline1(s As String)
Declare Sub Flushbuf()
Declare Sub Showsms(s As String )
$lib "ds1307clock.lib" ' modified lib
'used variables
Dim Bit_tang_ngay As Bit
Dim I As Byte , B As Byte , Weekday As Byte , Addr As Byte , Value As
Byte , K As Byte , Num_sms As Word
Dim W0 As Word , W1 As Word
Dim Kenh0(24) As Word , Kenh1(24) As Word
Dim Sret As String * 6 , Stemp As String * 16
Dim S_data As String * 16 , S_number As String * 5
Dim Number_phone As String * 30 , Number_tong_dai As String * 15
‘we use a serial input buffer
'Config Serialin = Buffered , Size = 12 ' buffer is small a
bigger chip would allow a bigger buffer
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7
= Portc.3 , E = Portc.4 , Rs = Portc.5
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Sda = Portc.7
Config Scl = Portc.6
Config Clock = User ' this will dim the bytes
automatic
Config Int0 = Falling
'define a constant to enable LCD feedback
Const Pincode = "AT+CPIN=1234" ' pincode change it
into yours!
Const So_Thoa = "AT+CMGS=+84907039071"
Const Khau_lenh = "SENDDATA"
Const Khau_lenh1 = "SENDALLDATA"
Const Ma_gui_sms = "AT+CMGS="
Const Baudrate_115200 = 51
Const Baudrate_19200 = 350
Const Baudrate_9600 = 22
Const Ds1307w = &HEF ' Addresses of Ds1307
clock
Const Ds1307r = &HD4
On Int0 Isr_int0
'enable the interrupts because the serial input buffer works interrupts driven
Ddrd.3 = 0
Ddra.0 = 0
Ddra.1 = 0 ' input adc
Cls
Start Adc
'wait until the mode is ready after power up
'Wait 15
Ubrrl = Baudrate_115200
Do
Wait 1
Print Chr(27) ' ma thoat ra khoi bi treo
Waitms 200
Print "ATE0"
Getline Stemp
Loop Until Stemp = "OK"
Lcd "SMS READY"
'Gosub Khoi_tao_ds1307
For I = 1 To 24
K = I * 2
Readeeprom Kenh0(i) , K
If Kenh0(i) > 999 Then
Kenh0(i) = 0
End If
K = K + 48
Readeeprom Kenh1(i) , K
If Kenh1(i) > 999 Then
Kenh1(i) = 0
End If
Next I
Gosub Getdatetime
Enable Interrupts
Enable Int0
Main:
Do
Main1:
Getline Sret ' wait for a modem response
Cls
Lcd "Msg from modem"
Home Lower : Lcd Sret
Waitms 500
If Sret = "RING" Then
Goto Main1
End If
I = Instr(sret , ":") ' look for :
If I > 0 Then 'found it
Stemp = Left(sret , I)
Select Case Stemp
Case "+CMTI:" : Showsms Sret ' we received an SMS
' hanle other cases here
End Select
End If
Loop ' for ever
End
'end program
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ht_time
Ht_time:
Bit_tang_ngay = 0
Locate 2 , 1
Lcd " "
Locate 2 , 3
Lcd _hour ; ":" ; _min ; ":" ; _sec
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXX CHUONG TRINH
TEST SO PHONE GUI TOI
Lay_num_phone:
I = Instr(s_number , ",")
I = I + 2
Number_phone = Mid(s_number , I)
I = Instr(number_phone , ",")
I = I - 2
Number_phone = Left(number_phone , I)
S_data = Ucase(s_data) ' chuyen thanh chu hoa het
If S_data = Khau_lenh Then
W0 = Getadc(0) : W1 = Getadc(1)
Print "AT+CMGS=" ; Number_phone
Cls
Wait 2
S_data = "MODEM GUI VE: LUU LUONG: "
Sret = Str(w0)
S_data = S_data + Sret
S_data = S_data + " AP LUC: "
Sret = Str(w1)
S_data = S_data + Sret
S_data = S_data + " TIME: "
S_data = S_data + Time$
S_data = S_data + " DATE: "
S_data = S_data + Date$
Print S_data
Elseif S_data = Khau_lenh1 Then
Bit_tang_ngay = 1
Locate 2 , 1
Lcd "yeu cau alldata"
Gosub Thu_data
Else
I = Instr(s_data , " ")
Decr I
Number_phone = Left(s_data , I)
If Number_phone = "DOISO" Then
I = I + 2
Number_tong_dai = Mid(s_data , I)
Writeeeprom Number_tong_dai , 300
Cls
Lcd "DOI SO MOI"
Locate 2 , 1
Lcd Number_tong_dai
End If
End If
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Doi_baudrate:
Print "AT+IPR?"
Getline Stemp
Locate 2 , 1
Lcd " "
Locate 2 , 1
Lcd Stemp
'Do
'Loop Until Stemp = "OK"
Print "ATE0"
Waitms 100
Print "AT+IPR=9600"
Waitms 500
Ubrr = Baudrate_9600
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Delete_sms:
Cls
Lcd "DANG XOA SMS"
For I = 1 To 100
Print "AT+CMGD=" ; I
Getline Sret
Locate 2 , 1
Lcd " "
Locate 2 , 1
Lcd Sret ; " " ; I
Next I
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Getdatetime
Getdatetime:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' start address in 1307
I2cstart ' Generate start code
I2cwbyte Ds1307r ' send address
I2crbyte _sec , Ack
I2crbyte _min , Ack ' MINUTES
I2crbyte _hour , Ack ' Hours
I2crbyte Weekday , Ack ' Day of Week
I2crbyte _day , Ack ' Day of Month
I2crbyte _month , Ack ' Month of Year
I2crbyte _year , Nack ' Year
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour =
Makedec(_hour)
Weekday = Makedec(weekday) : _day = Makedec(_day) : _month =
Makedec(_month) : _year = Makedec(_year)
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX SET DATE
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year =
Makebcd(_year)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 4
' starting address in 1307
I2cwbyte _day ' Send Data to SECONDS
I2cwbyte _month ' MINUTES
I2cwbyte _year ' Hours
I2cstop
_day = Makedec(_day) : _month = Makedec(_month) : _year =
Makedec(_year)
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour =
Makebcd(_hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' starting address in 1307
I2cwbyte _sec ' Send Data to SECONDS
I2cwbyte _min ' MINUTES
I2cwbyte _hour ' Hours
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour =
Makedec(_hour)
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX GHI TIME
Ghi_time:
Gosub Setdate
Gosub Settime
Return
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Khoi_tao_ds1307:
_hour = 18 : _min = 30 : _sec = 50
_day = 29 : _month = 10 : _year = 9
Waitms 10
'Time$ = "22:40:50" ' to watch the day changing
value
'Date$ = "28-10-09"
Gosub Setdate
Gosub Settime
Addr = 7
Value = &B10010000
Gosub Ghi_ram
Weekday = Dayofweek()
Addr = 3
Value = Weekday
Gosub Ghi_ram
Return
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ghi_ram:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte Addr ' starting address in 1307
I2cwbyte Value ' Send Data to SECONDS
I2cstop
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXX
Doc_ram:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte Addr ' start address in 1307
I2cstart ' Generate start code
I2cwbyte Ds1307r ' send address
I2crbyte Value , 9
I2cstop
Return
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'subroutine that is called when a sms is received
's hold the received string
'+CMTI: "SM",5
Sub Showsms(s As String )
Cls
I = Instr(s , ",") ' find comma
I = I + 1
Stemp = Mid(s , I) ' s now holds the index number
Num_sms = Val(stemp)
Lcd "get " ; Stemp
Waitms 1000 'time to read the lcd
Print "AT+CMGR=" ; Num_sms ' get the message
Getline S_number ' header +CMGR: "REC
READ","+316xxxxxxxx",,"02/04/05,01:42:49+00"
Getline S_data ' get data from buffer
If Num_sms > 1 Then
For I = 1 To Num_sms
Print "AT+CMGD=" ; I 'XOA TIN NHAN VUA
GUI TOI
Getline Sret
Waitms 500
Next I
Else
Print "AT+CMGD=1" 'XOA TIN NHAN VUA
GUI TOI
Getline Sret
Waitms 500
End If
Gosub Lay_num_phone
End Sub
'xxxxxxxxxxxxxxxxxxxxxxxxxxxx
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'get line of data from buffer
Sub Getline(s As String)
S = ""
Do
B = Inkey()
Select Case B
Case 13 : If S "" Then Exit Do ' if we have received
something
Case 10 ' we do not need this one
Case 0 : Gosub Thu_data
Case Else
S = S + Chr(b) ' build string
End Select
Loop
End Sub
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Getline1(s As String)
S = ""
Do
B = Inkey()
Select Case B
Case 13 : If S "" Then Exit Do ' if we have received
something
Case 10 ' we do not need this one
Case 0
Case Else
S = S + Chr(b) ' build string
End Select
Loop
End Sub
'flush input buffer
Sub Flushbuf()
Waitms 100 'give some time to get data if it
is there
Do
B = Inkey() ' flush buffer
Loop Until B = 0
End Sub
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Thu_data:
If Bit_tang_ngay = 1 Then
Bit_tang_ngay = 0
S_data = ""
For K = 1 To 23
S_data = S_data + Str(kenh0(k)) + "-"
Next K
S_data = S_data + Str(kenh0(24)) + "&"
For K = 1 To 23
S_data = S_data + Str(kenh1(k)) + "-"
Next K
S_data = S_data + Str(kenh1(24))
Readeeprom Number_tong_dai , 300
Print "AT+CMGS=" ; Number_tong_dai
Wait 1
Locate 2 , 1
Print S_data
End If
Return
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Isr_int0:
Isr_int0:
Incr _sec
If _sec > 59 Then
_sec = 0
Incr _min
If _min > 59 Then
_min = 0
Incr _hour
Kenh0(_hour) = Getadc(0) : Kenh1(_hour) = Getadc(1)
K = _hour * 2
Writeeeprom Kenh0(_hour) , K
K = K + 90
Writeeeprom Kenh1(_hour) , K
If _hour > 23 Then
_hour = 0
Bit_tang_ngay = 1
End If
End If
End If
Return
3.2. Bộ phận thu:
3.2.1. Nguyên lý hoạt động:
Tín hiệu được truyền về từ bộ phát đến modem thu. Modem được kết nối
với máy tính qua cổng com. Và các dữ liệu lưu lượng và áp lực nước sẽ được hiển
thị ra màng hình máy tính bằng chương trình Visual Basic.
Đồng thời khi cần giá trị lưu lượng và áp lực ta nhắn tin theo cú pháp gởi
đến bộ phát, giá trị sẽ được gởi về điện thoại.
- Cú pháp nhắn tin đổi số điện thoại nhận dữ liệu ở bộ thu :doiso “so dien
thoai” Æ gởi đến số điện thoại tại bộ phát..
- Cú pháp nhắn tin nhận dữ liệu trong ngày: sendalldata Æ gởi tới số
điện thoại tại bộ phát.
- Cú pháp nhắn tin nhận dữ liệu tức thời trong ngày: senddata Æ gởi tới
số điện thoại tại bộ phát.
3.2.2. Giao diện với máy tính:
Hình 3.12 Giao diện với máy tính
Đoạn code nhận dữ liệu qua cổng com
Dim s As String
Dim Y As Integer
Dim i As Integer
Private Sub Command1_Click()
ngay = Trim(Left(s, InStr(s, " ")))
Text2(0) = ngay
Text2(1) = ngay
Text2(2) = ngay
Text2(3) = ngay
Text2(4) = ngay
Text2(5) = ngay
Text2(6) = ngay
Text2(7) = ngay
Text2(8) = ngay
Text2(9) = ngay
Text2(10) = ngay
Text2(11) = ngay
Text2(12) = ngay
Text2(13) = ngay
Text2(14) = ngay
Text2(15) = ngay
Text2(16) = ngay
Text2(17) = ngay
Text2(18) = ngay
Text2(19) = ngay
Text2(20) = ngay
Text2(21) = ngay
Text2(22) = ngay
Text2(23) = ngay
m = LTrim(Mid(s, InStr(s, " ")))
t1 = LTrim(Mid(m, InStr(m, "
a1 = Left(t1, InStr(t1, "-") - 1) * 1000 \ 1023
t2 = Mid(t1, InStr(t1, "-") + 1)
a2 = Left(t2, InStr(t2, "-") - 1) * 1000 \ 1023
t3 = Mid(t2, InStr(t2, "-") + 1)
a3 = Left(t3, InStr(t3, "-") - 1) * 1000 \ 1023
t4 = Mid(t3, InStr(t3, "-") + 1)
a4 = Left(t4, InStr(t4, "-") - 1) * 1000 \ 1023
t5 = Mid(t4, InStr(t4, "-") + 1)
a5 = Left(t5, InStr(t5, "-") - 1) * 1000 \ 1023
t6 = Mid(t5, InStr(t5, "-") + 1)
a6 = Left(t6, InStr(t6, "-") - 1) * 1000 \ 1023
t7 = Mid(t6, InStr(t6, "-") + 1)
a7 = Left(t7, InStr(t7, "-") - 1) * 1000 \ 1023
t8 = Mid(t7, InStr(t7, "-") + 1)
a8 = Left(t8, InStr(t8, "-") - 1) * 1000 \ 1023
t9 = Mid(t8, InStr(t8, "-") + 1)
a9 = Left(t9, InStr(t9, "-") - 1) * 1000 \ 1023
t10 = Mid(t9, InStr(t9, "-") + 1)
a10 = Left(t10, InStr(t10, "-") - 1) * 1000 \ 1023
t11 = Mid(t10, InStr(t10, "-") + 1)
a11 = Left(t11, InStr(t11, "-") - 1) * 1000 \ 1023
t12 = Mid(t11, InStr(t11, "-") + 1)
a12 = Left(t12, InStr(t12, "-") - 1) * 1000 \ 1023
t13 = Mid(t12, InStr(t12, "-") + 1)
a13 = Left(t13, InStr(t13, "-") - 1) * 1000 \ 1023
t14 = Mid(t13, InStr(t13, "-") + 1)
a14 = Left(t14, InStr(t14, "-") - 1) * 1000 \ 1023
t15 = Mid(t14, InStr(t14, "-") + 1)
a15 = Left(t15, InStr(t15, "-") - 1) * 1000 \ 1023
t16 = Mid(t15, InStr(t15, "-") + 1)
a16 = Left(t16, InStr(t16, "-") - 1) * 1000 \ 1023
t17 = Mid(t16, InStr(t16, "-") + 1)
a17 = Left(t17, InStr(t17, "-") - 1) * 1000 \ 1023
t18 = Mid(t17, InStr(t17, "-") + 1)
a18 = Left(t18, InStr(t18, "-") - 1) * 1000 \ 1023
t19 = Mid(t18, InStr(t18, "-") + 1)
a19 = Left(t19, InStr(t19, "-") - 1) * 1000 \ 1023
t20 = Mid(t19, InStr(t19, "-") + 1)
a20 = Left(t20, InStr(t20, "-") - 1) * 1000 \ 1023
t21 = Mid(t20, InStr(t20, "-") + 1)
a21 = Left(t21, InStr(t21, "-") - 1) * 1000 \ 1023
t22 = Mid(t21, InStr(t21, "-") + 1)
a22 = Left(t22, InStr(t22, "-") - 1) * 1000 \ 1023
t23 = Mid(t22, InStr(t22, "-") + 1)
a23 = Left(t23, InStr(t23, "-") - 1) * 1000 \ 1023
t24 = Mid(t23, InStr(t23, "-") + 1)
a24 = Left(t24, InStr(t24, "&") - 1) * 1000 \ 1023
t25 = Mid(t24, InStr(t24, "&") + 1)
b1 = Left(t25, InStr(t25, "-") - 1) * 10 \ 1023
t26 = Mid(t25, InStr(t25, "-") + 1)
b2 = Left(t26, InStr(t26, "-") - 1) * 10 \ 1023
t27 = Mid(t26, InStr(t26, "-") + 1)
b3 = Left(t27, InStr(t27, "-") - 1) * 10 \ 1023
t28 = Mid(t27, InStr(t27, "-") + 1)
b4 = Left(t28, InStr(t28, "-") - 1) * 10 \ 1023
t29 = Mid(t28, InStr(t28, "-") + 1)
b5 = Left(t29, InStr(t29, "-") - 1) * 10 \ 1023
t30 = Mid(t29, InStr(t29, "-") + 1)
b6 = Left(t30, InStr(t30, "-") - 1) * 10 \ 1023
t31 = Mid(t30, InStr(t30, "-") + 1)
b7 = Left(t31, InStr(t31, "-") - 1) * 10 \ 1023
t32 = Mid(t31, InStr(t31, "-") + 1)
b8 = Left(t32, InStr(t32, "-") - 1) * 10 \ 1023
t33 = Mid(t32, InStr(t32, "-") + 1)
b9 = Left(t33, InStr(t33, "-") - 1) * 10 \ 1023
t34 = Mid(t33, InStr(t33, "-") + 1)
b10 = Left(t34, InStr(t34, "-") - 1) * 10 \ 1023
t35 = Mid(t34, InStr(t34, "-") + 1)
b11 = Left(t35, InStr(t35, "-") - 1) * 10 \ 1023
t36 = Mid(t35, InStr(t35, "-") + 1)
b12 = Left(t36, InStr(t36, "-") - 1) * 10 \ 1023
t37 = Mid(t36, InStr(t36, "-") + 1)
b13 = Left(t37, InStr(t37, "-") - 1) * 10 \ 1023
t38 = Mid(t37, InStr(t37, "-") + 1)
b14 = Left(t38, InStr(t38, "-") - 1) * 10 \ 1023
t39 = Mid(t38, InStr(t38, "-") + 1)
b15 = Left(t39, InStr(t39, "-") - 1) * 10 \ 1023
t40 = Mid(t39, InStr(t39, "-") + 1)
b16 = Left(t40, InStr(t40, "-") - 1) * 10 \ 1023
t41 = Mid(t40, InStr(t40, "-") + 1)
b17 = Left(t41, InStr(t41, "-") - 1) * 10 \ 1023
t42 = Mid(t41, InStr(t41, "-") + 1)
b18 = Left(t42, InStr(t42, "-") - 1) * 10 \ 1023
t43 = Mid(t42, InStr(t42, "-") + 1)
b19 = Left(t43, InStr(t43, "-") - 1) * 10 \ 1023
t44 = Mid(t43, InStr(t43, "-") + 1)
b20 = Left(t44, InStr(t44, "-") - 1) * 10 \ 1023
t45 = Mid(t44, InStr(t44, "-") + 1)
b21 = Left(t45, InStr(t45, "-") - 1) * 10 \ 1023
t46 = Mid(t45, InStr(t45, "-") + 1)
b22 = Left(t46, InStr(t46, "-") - 1) * 10 \ 1023
t47 = Mid(t46, InStr(t46, "-") + 1)
b23 = Left(t47, InStr(t47, "-") - 1) * 10 \ 1023
b24 = Mid(t47, InStr(t47, "-") + 1) * 10 \ 1023
h1 = "00:00:00"
h2 = "01:00:00"
h3 = "02:00:00"
h4 = "03:00:00"
h5 = "04:00:00"
h6 = "05:00:00"
h7 = "06:00:00"
h8 = "07:00:00"
h9 = "08:00:00"
h10 = "9:00:00"
h11 = "10:00:00"
h12 = "11:00:00"
h13 = "12:00:00"
h14 = "13:00:00"
h15 = "14:00:00"
h16 = "15:00:00"
h17 = "16:00:00"
h18 = "17:00:00"
h19 = "18:00:00"
h20 = "19:00:00"
h21 = "20:00:00"
h22 = "21:00:00"
h23 = "22:00:00"
h24 = "23:00:00"
Text3(0) = h1
Text3(1) = h2
Text3(2) = h3
Text3(3) = h4
Text3(4) = h5
Text3(5) = h6
Text3(6) = h7
Text3(7) = h8
Text3(8) = h9
Text3(9) = h10
Text3(10) = h11
Text3(11) = h12
Text3(12) = h13
Text3(13) = h14
Text3(14) = h15
Text3(15) = h16
Text3(16) = h17
Text3(17) = h18
Text3(18) = h19
Text3(19) = h20
Text3(20) = h21
Text3(21) = h22
Text3(22) = h23
Text3(23) = h24
Text4(0) = a1
Text4(1) = a2
Text4(2) = a3
Text4(3) = a4
Text4(4) = a5
Text4(5) = a6
Text4(6) = a7
Text4(7) = a8
Text4(8) = a9
Text4(9) = a10
Text4(10) = a11
Text4(11) = a12
Text4(12) = a13
Text4(13) = a14
Text4(14) = a15
Text4(15) = a16
Text4(16) = a17
Text4(17) = a18
Text4(18) = a19
Text4(19) = a20
Text4(20) = a21
Text4(21) = a22
Text4(22) = a23
Text4(23) = a24
Text5(0) = b1
Text5(1) = b2
Text5(2) = b3
Text5(3) = b4
Text5(4) = b5
Text5(5) = b6
Text5(6) = b7
Text5(7) = b8
Text5(8) = b9
Text5(9) = b10
Text5(10) = b11
Text5(11) = b12
Text5(12) = b13
Text5(13) = b14
Text5(14) = b15
Text5(15) = b16
Text5(16) = b17
Text5(17) = b18
Text5(18) = b19
Text5(19) = b20
Text5(20) = b21
Text5(21) = b22
Text5(22) = b23
Text5(23) = b24
' VE DO THI
With NTGraph1
.PlotAreaColor = vbCyan ' chon mau nen la mau den
.FrameStyle = Flat ' chon khung la dang Bitmap
' khung co 3 dang Bitmap, Flat, Scope
.Caption = " Bieu do luu luong " 'Dat tieu de cho do thi
.XLabel = "Thoi gian(gio)" 'Dat tieu de cho truc X
.YLabel = "Luu luong(m3/h)" 'Dat tieu de cho truc Y
.ClearGraph ' Xoa tat ca cac do thi va cai dat do thi
moi
.ElementLineColor = RGB(255, 0, 0) ' chon mau cho duong do thi
thu nhat
.SetRange 0, 23, 0, 1000 'xac lap gia tri hien thi tren cac
truc
End With
With NTGraph2
.PlotAreaColor = vbCyan ' chon mau nen la mau den
.FrameStyle = Flat ' chon khung la dang Bitmap
' khung co 3 dang Bitmap, Flat, Scope
.Caption = " Bieu do ap luc " 'Dat tieu de cho do thi
.XLabel = "Thoi gian(gio)" 'Dat tieu de cho truc X
.YLabel = " Ap luc(bar)" 'Dat tieu de cho truc Y
.ClearGraph ' Xoa tat ca cac do thi va cai dat do thi
moi
.ElementLineColor = RGB(255, 0, 0) ' chon mau cho duong do thi
thu nhat
.SetRange 0, 23, 0, 10 'xac lap gia tri hien thi tren cac truc
End With
' LUU FILE
Dim fileNo, myLocalFolder, myFileName
myLocalFolder = App.Path
If Right(myLocalFolder, 1) "\" Then
myLocalFolder = myLocalFolder & "\"
End If
fileNo = FreeFile
myFileName = myLocalFolder & "Luuluong&Apluc.txt"
If Dir(myFileName) "" Then
Open myFileName For Append As #fileNo
Else
Open myFileName For Output As #fileNo
End If
Print #fileNo, "Ngay Thang" & " " & "Gio" & " " & "Luu
Luong (m3/h)" & " " & "AP Luc (bar)"
Print #fileNo, ngay & " " & h1 & " " & a1 & " " & b1
Print #fileNo, ngay & " " & h2 & " " & a2 & " " & b2
Print #fileNo, ngay & " " & h3 & " " & a3 & " " & b3
Print #fileNo, ngay & " " & h4 & " " & a4 & " " & b4
Print #fileNo, ngay & " " & h5 & " " & a5 & " " & b5
Print #fileNo, ngay & " " & h6 & " " & a6 & " " & b6
Print #fileNo, ngay & " " & h7 & " " & a7 & " " & b7
Print #fileNo, ngay & " " & h8 & " " & a8 & " " & b8
Print #fileNo, ngay & " " & h9 & " " & a9 & " " & b9
Print #fileNo, ngay & " " & h10 & " " & a10 & " " & b10
Print #fileNo, ngay & " " & h11 & " " & a11 & " " & b11
Print #fileNo, ngay & " " & h12 & " " & a12 & " " & b12
Print #fileNo, ngay & " " & h13 & " " & a13 & " " & b13
Print #fileNo, ngay & " " & h14 & " " & a14 & " " & b14
Print #fileNo, ngay & " " & h15 & " " & a15 & " " & b15
Print #fileNo, ngay & " " & h16 & " " & a16 & " " & b16
Print #fileNo, ngay & " " & h17 & " " & a17 & " " & b17
Print #fileNo, ngay & " " & h18 & " " & a18 & " " & b18
Print #fileNo, ngay & " " & h19 & " " & a19 & " " & b19
Print #fileNo, ngay & " " & h20 & " " & a20 & " " & b20
Print #fileNo, ngay & " " & h21 & " " & a21 & " " & b21
Print #fileNo, ngay & " " & h22 & " " & a22 & " " & b22
Print #fileNo, ngay & " " & h23 & " " & a23 & " " & b23
Print #fileNo, ngay & " " & h24 & " " & a24 & " " & b24
Close #fileNo
Timer1.Enabled = True
Timer2.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
i = 0
End Sub
Private Sub Timer1_Timer()
Y = Val(Text4(i))
NTGraph1.PlotY Y, 0
i = i + 1
If i = 24 Then
i = 0
Timer1.Enabled = False
End If
End Sub
Private Sub Timer2_Timer()
Y = Val(Text5(i))
NTGraph2.PlotY Y, 0
i = i + 1
If i = 24 Then
i = 0
Timer2.Enabled = False
End If
End Sub
Hình 3.13 Giao diện với máy tính 1
PHẦN KẾT LUẬN VÀ KIẾN NGHỊ
VỀ NỘI DUNG NGHIÊN CỨU TIẾP THEO
• Kết luận về toàn bộ công trình nghiên cứu.
Công nghệ truyền thông di động đem lại nhiều tiện ích cho hệ thống tự
động hoá ngành cấp nước. Với hệ thống lưu trữ, truyền thông trên, tất cả các thông
tin về hoạt động của các thiết bị đo lưu lượng và áp lực nước trên mạng cấp nước
sẽ được cập nhật liên tục qua mạng GSM với công nghệ tin nhắn SMS.
• Kiến nghị những nội dung nghiên cứu tiếp theo.
Do không đủ thời gian và đề tài chỉ có tính chất nghiên cứu nên chưa được
hoàn thiện. Đề tài chỉ dừng ở mức độ nghiên cứu nên chỉ thực hiện ở việc lấy mẫu
tín hiệu lưu lượng và áp lực. Nếu có thêm thời gian ta có thể phát triển thêm việc
thu nhận tất cả các dữ liệu của các thiết bị đo. Nhằm mục đích giảm chi phí cho
công ty và giảm thời gian cho nhân viên khi cần biết dữ liệu.
Ý NGHĨA KHOA HỌC
AVR là một họ Vi Điều Khiển tuy đã xuất hiện khá lâu ở nước ngoài,
nhưng đối với Việt Nam thì việc tìm hiểu và ứng dụng họ AVR vẫn còn hạn chế.
Mặc dù hiện nay họ vi điều khiển 8051 được sử dụng khá rộng rãi và rất quen
thuộc, tuy nhiên nếu ai đã từng làm quen với AVR sẽ thấy rằng chip AVR có rất
nhiều đặc tính mới nổi trội hơn so với họ 8051. Lý do để chọn chip AVR cụ thể là
AVR ATmega32 để thực hiện đề tài là :
Thứ nhất, AVR là họ Vi điều khiển mới có nhiều tính năng, khả năng xử lí
nhanh so với các họ vi điều khiển khác. Chip ATmega32 (sử dụng thạch anh
16Mhz) có tốc độ nhanh gấp 16 lần so với Chip 89C51 (sử dụng thạch anh
12Mhz), đồng thời điện năng tiêu thụ thấp .
Hai là ATmega32 được tích hợp bộ ADC 10 bit 8 kênh , có khả năng
chống nhiễu cao và đặc biệt có thể lập trình để chọn xung nhịp cấp cho ADC. Việc
tích hợp bộ ADC sẽ giảm bớt đáng kể thiết kế chi tiết phần cứng đồng thời dễ
dàng kiểm soát chế độ hoạt động của ADC thông qua thanh ghi trạng thái. Tốc độ
lấy mẫu có thể lập trình được và có thể đạt đến 200 kSps ( 200 mẫu một giây )
điều mà các bộ ADC rời ít đạt đến hoặc giá thành rất mắc.
Ứng dụng chip AVR ATmega32 trong việc chuyển đổi tín hiệu tương tự
sang tín hiệu số. Tín hiệu tương tự ở đây là tín hiệu điện áp được lấy từ các bộ cảm
biến hay tín hiệu đồng hồ lưu lượng vv…
Sau khi đã chuyển đổi các tín hiệu từ tương tự sang tín hiệu số, sẽ tiến hành
việc truyền tín hiệu số từ bên phát sang bên thu thông qua sóng vô tuyến ở cự ly
tương đối. Phía bên bộ thu có nhiệm vụ phục hồi tín hiệu đã phát và xử lý hoặc
truyền về máy tính xử lý.
ỨNG DỤNG THỰC TIỄN
Việc nghiên cứu họ chip AVR sẽ chỉ ra một hướng mới trong việc sử dụng
vi điều khiển, với những tính năng mới người thiết kế có thể giảm thời gian cho
việc thiết kế phần cứng và dễ dàng hơn trong việc thiết kế phần mềm. Và vì thế đề
tài không chỉ dừng lại trong việc sử dụng chip AVR mà còn giới thiệu đến sinh
viên về một trong các họ Vi điều khiển mạnh nhất hiện nay.
Một trong những ứng dụng thực tế là trong ngành khí tượng thuỷ văn .
Thông thường các trạm khí tượng thuỷ văn thường đặt tại vùng núi cao, hiểm trở.
Mỗi trạm có những thiết bị đặt rải rác xung quanh và cách xa nhau. Do điều kiện
địa hình đồi núi nên gây rất khó khăn cho nhân viên trạm trong việc thu thập các
thông tin số liệu như nhiệt độ, tốc độ gió … Vì thế nếu xây dựng một hệ thống
truyền dữ liệu không dây sẽ giúp nhân viên trạm không cần di chuyển cực nhọc
mà vẫn thu thập dữ liệu một cách đầy đủ, thường xuyên và do đó chính xác hơn.
Với hệ thống trên giúp chúng ta có thể thu thập dữ liệu ở nhiều nơi khác
nhau, thậm chí tại những nơi độc hại, nguy hiểm hay những nơi mà việc dùng dây
dẫn khó thực hiện được. Với sóng vô tuyến ta có thể truyền dữ liệu đi xa và khắc
phục hạn chế về vật cản.
DANH MỤC TÀI LIỆU THAM KHẢO
[1] Datasheet ATmega 32 của Atmel
[2] Datasheet RCV420 của BURR-BROWN.
[3] Datasheet LM78xx của National Semiconductor.
[4] Datasheet DS1307 của Dallas Semiconductor.
[5] Datasheet MBS3000 của Danfoss
[6] Đặng Xuân hường, Nguyễn Tiến, Phạm Kỳ,“Giáo trình Visual Basic
6.0”, Nhà xuất Bản Thống Kê.
[7] www.dientuvienthong.net
[8] www.diendandientu.com
[9] www.google.com.vn
PHỤ LỤC
1. Bảng mã ASCII Character Map
Kí tự điều khiển ASCII
Nhị Thập Thập Viết Biểu Truy nhập Tên/Ý nghĩa Tên/Ý
phân phân lục tắt diễn
in
được
bàn phím tiếng Anh nghĩa
tiếng Việt
000 0000 0 00 NUL ␀ ^@ Null character Kí tự rỗng
000 0001 1 01 SOH ␁ ^A Start of Header
Bắt đầu
Header
000 0010 2 02 STX ␂ ^B Start of Text
Bắt đầu
văn bản
000 0011 3 03 ETX ␃ ^C End of Text
Kết thúc
văn bản
000 0100 4 04 EOT ␄ ^D End of Transmission
Kết thúc
truyền
000 0101 5 05 ENQ ␅ ^E Enquiry Truy vấn
000 0110 6 06 ACK ␆ ^F Acknowledgement
000 0111 7 07 BEL ␇ ^G Bell Chuông
000 1000 8 08 BS ␈ ^H Backspace
Xoá
ngược
000 1001 9 09 HT ␉ ^I Horizontal Tab Tab ngang
000 1010 10 0A LF ␊ ^J Line feed
000 1011 11 0B VT ␋ ^K Vertical Tab Tab dọc
000 1100 12 0C FF ␌ ^L Form feed
000 1101 13 0D CR ↵ ^M Carriage return
000 1110 14 0E SO ␎ ^N Shift Out
000 1111 15 0F SI ␏ ^O Shift In
001 0000 16 10 DLE ␐ ^P Data Link Escape
001 0001 17 11 DC1 ␑ ^Q
Device Control 1 —
oft. XON
001 0010 18 12 DC2 ␒ ^R Device Control 2
001 0011 19 13 DC3 ␓ ^S
Device Control 3 —
oft. XOFF
001 0100 20 14 DC4 ␔ ^T Device Control 4
001 0101 21 15 NAK ␕ ^U
Negative
Acknowledgement
001 0110 22 16 SYN ␖ ^V Synchronous Idle
001 0111 23 17 ETB ␗ ^W End of Trans. Block
001 1000 24 18 CAN ␘ ^X Cancel
001 1001 25 19 EM ␙ ^Y End of Medium
001 1010 26 1A SUB ␚ ^Z Substitute
001 1011 27 1B ESC ␛ ^[ hay ESC Escape
001 1100 28 1C FS ␜ ^\ File Separator
001 1101 29 1D GS ␝ ^] Group Separator
001 1110 30 1E RS ␞ ^^ Record Separator
001 1111 31 1F US ␟ ^_ Unit Separator
111 1111 127 7F DEL ␡
DEL hay
Backspace
Delete
Kí tự ASCII in được:
Nhị
phân
Thập
phân
Thập
lục Đồ hoạ
010 0000 32 20
Khoảng
trống
(␠)
010 0001 33 21 !
010 0010 34 22 "
010 0011 35 23 #
010 0100 36 24 $
010 0101 37 25 %
010 0110 38 26 &
010 0111 39 27 '
010 1000 40 28 (
010 1001 41 29 )
010 1010 42 2A *
010 1011 43 2B +
Nhị
phân
Thập
phân
Thập
lục
Đồ
hoạ
100 0000 64 40 @
100 0001 65 41 A
100 0010 66 42 B
100 0011 67 43 C
100 0100 68 44 D
100 0101 69 45 E
100 0110 70 46 F
100 0111 71 47 G
100 1000 72 48 H
100 1001 73 49 I
100 1010 74 4A J
100 1011 75 4B K
100 1100 76 4C L
Nhị
phân
Thập
phân
Thập
lục
Đồ
hoạ
110 0000 96 60 `
110 0001 97 61 a
110 0010 98 62 b
110 0011 99 63 c
110 0100 100 64 d
110 0101 101 65 e
110 0110 102 66 f
110 0111 103 67 g
110 1000 104 68 h
110 1001 105 69 i
110 1010 106 6A j
110 1011 107 6B k
110 1100 108 6C l
010 1100 44 2C ,
010 1101 45 2D -
010 1110 46 2E .
010 1111 47 2F /
011 0000 48 30 0
011 0001 49 31 1
011 0010 50 32 2
011 0011 51 33 3
011 0100 52 34 4
011 0101 53 35 5
011 0110 54 36 6
011 0111 55 37 7
011 1000 56 38 8
011 1001 57 39 9
011 1010 58 3A :
011 1011 59 3B ;
011 1100 60 3C <
011 1101 61 3D =
011 1110 62 3E >
011 1111 63 3F ?
100 1101 77 4D M
100 1110 78 4E N
100 1111 79 4F O
101 0000 80 50 P
101 0001 81 51 Q
101 0010 82 52 R
101 0011 83 53 S
101 0100 84 54 T
101 0101 85 55 U
101 0110 86 56 V
101 0111 87 57 W
101 1000 88 58 X
101 1001 89 59 Y
101 1010 90 5A Z
101 1011 91 5B [
101 1100 92 5C \
101 1101 93 5D ]
101 1110 94 5E ^
101 1111 95 5F _
110 1101 109 6D m
110 1110 110 6E n
110 1111 111 6F o
111 0000 112 70 p
111 0001 113 71 q
111 0010 114 72 r
111 0011 115 73 s
111 0100 116 74 t
111 0101 117 75 u
111 0110 118 76 v
111 0111 119 77 w
111 1000 120 78 x
111 1001 121 79 y
111 1010 122 7A z
111 1011 123 7B {
111 1100 124 7C |
111 1101 125 7D }
111 1110 126 7E ~
Các file đính kèm theo tài liệu này:
- bao_cao_NCKH.pdf
- bai_bao.pdf