Đề tài Truyền dữ liệu lưu lượng và áp lực nước qua tin nhắn sms

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).

pdf90 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2534 | Lượt tải: 0download
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:

  • pdfbao_cao_NCKH.pdf
  • pdfbai_bao.pdf
Luận văn liên quan