69
ĐI HC KHOA HC , ĐI HC HU KHOA VT L LP ĐIN T VIN THÔNG K32 ĐỒ ÁN ĐO LƯỜNG VÀ ĐIỀU KHIỂN TỰ ĐỘNG Đ Ti : MODUL MCH CHỐNG TRỘM BA TẦNG Gio Viên : PHAN HẢI PHONG Sinh Viên Thc Hin : Nguyn Tâm Tun Lê Ngọc Tân Hoàng Trọng Vit

Modul Mach Bao Dong

Embed Size (px)

Citation preview

Page 1: Modul Mach Bao Dong

ĐAI HOC KHOA HOC , ĐAI HOC HUÊKHOA VÂT LY

LƠP ĐIÊN TƯ VIÊN THÔNG K32

ĐỒ ÁNĐO LƯỜNG VÀ ĐIỀU KHIỂN TỰ ĐỘNG

Đê Tai : MODUL MACH CHỐNG TRỘM BA TẦNG

Giao Viên : PHAN HẢI PHONG Sinh Viên Thưc Hiên :

Nguyên Tâm Tuân Lê Ngọc Tân Hoàng Trọng Viêt

Huế , 09-05-2012

Page 2: Modul Mach Bao Dong

LỜI NÓI ĐẦU

Hiện nay có rất nhiều các loại vi điều khiển của các hãng khác nhau.Ví dụ như họ 8051,AVR của hãng Atmel,PIC của hãng Microchip,…vv.Trong các loại vi điều khiển thì phổ biến nhất ở Việt Nam hiện nay là chip vi điều khiển thuộc họ 8051. Do 8051(Intel) là 1 trong những chip vi điều khiển xuất hiện sớm nhất nên nó là nền tảng cho sự phát triển của các họ vi điều khiển thế hệ sau.Vì thế nên nếu hiểu về 8051 thì sẽ dễ dàng hơn cho việc tìm hiểu các chip vi điều khiển khác thuộc thế hệ sau. Hơn nữa nó được sử dụng trong hầu hết các loại đồ điện tử dân dụng ở nước ta hiện nay cho nên lập trình cho vi điều khiển đã được đưa vào chương trình học cho sinh viên. Qua quá trình tìm hiểu về họ 8051 ở trên lớp thì chúng em đã tích lũy được một số kiến thức có thể cho ra đời 1 sản phẩm của riêng mình.Đó là một hệ thống báo động ba tầng mà chi tiết chúng em sẽ trình bày ở phần sau trong cuốn báo cáo này. Chúng em xin được cảm ơn thầy giáo Phan Hải Phong ,người đã hướng dẫn nhiệt tình chúng em trong quá trình từ ý tưởng trở thành sản phẩm như hiện nay.Trong lần đầu tiên làm mạch điện thì chúng em đã hết sức cố gắng,hiểu được nhiều vấn đề .Tuy nhiên không tránh khỏi sai sót.Mong được sự đóng góp nhiệt tình của thầy và các bạn.

Chúng em xin chân thành cảm ơn!

ĐỂ TÀI “HỆ THỐNG CHỐNG TRỘM BA TẦNG “1.Ý tưởngDo hiện tượng trộm cắp diễn ra phổ biến như hiện nay và để trang bị một hệ thống giám sát như camera hay hệ thống báo động nào đó đòi hỏi chi phí đầu tư cao và dễ dàng bị đối tượng phát hiện ( camera ) và dễ bị qua mặt do đó là các hệ thống đã phổ biến trên thị trường ( cấu trúc và chức năng hoặt động đã được kẻ xấu nắm rõ nên việc bẻ khóa trở nên dễ dàng ) . Từ đó ý tưởng thiết kế một hệ thống chống trộm của chúng em đã được hình thành ,hệ thống chống trộm ba tầng là sự kết hợp của hệ thống laser , modul cảm biến chuyển động và các khóa từ tạo thành lá chắn báo động ba lớp mà khó đối tượng nào có thể xuyên qua 2.Hướng dẫn sử dụngBạn có thể khởi động hệ thống bằng cách bật nguồn cho hệ thống.Khi có người mở cửa ra vào khi bạn vắng nhà thì khóa từ được gắng trên của sẽ bị tác động lập tức loa sẽ báo động trong 20s và sẽ được hiển thị trên 2 led 7 đoạn ,đồng thời trên màn hình LCD 1602 sẽ hiển thị cho ta biết được vị trí của kẻ lạ là ở của chính , nếu tên trộm may mắn vượt qua được của chính mà ko bị phát hiện thì sau khi đi qua cùng kiểm soát bởi laser hay cảm biến chuyển động thì hệ thống cũng sẽ phát hiện được và sẽ hiển thị tương ứng với vị trí kẻ lạ đi qua , trên hệ thống có 1 công tắt để tắt loa để dừng hệ thống báo đọng ở bất cứ giây nào trong 20s báo động đó

1

Page 3: Modul Mach Bao Dong

I . MÔ TẢ MACH CỦA HÊ THỐNG1. Sơ đồ mạch nguyên lý ( Proteus va Orcad )

2

Page 4: Modul Mach Bao Dong

2. Sơ đồ chạy mô phỏng

3

Page 5: Modul Mach Bao Dong

3. Sơ đồ mạch in

4. Sản phẩm hoan chỉnh

4

Page 6: Modul Mach Bao Dong

5

Page 7: Modul Mach Bao Dong

2. Cac linh kiện sử dụng trong mạchĐể tiến hành lắp ráp mạch hoàn tất công việc lựa chọn linh kiện là cực kì quan trọng , và sau dây là các linh kiện được đưa vào sử dụng trong mạch+ Khối điều khiển trung tâm : 1 vi điều khiển AT89S52 , 1 đế cắm 40 chân , 1 trở băng 4,7k , 1 thạch anh 12Mhz, 2 tụ gốm 33mp , 1 nút nhấn reset

+ Khối hiển thị : 1 LCD16x2 , 1 trở 330 , 1 biến trỏ 10k, 2 led 7 đoạn , 2 trỏ 10k , 2 transistor C828

6

Page 8: Modul Mach Bao Dong

+ Khối nguồn : 1 Lm7805 , 1 Jum 2 chân , 2 tụ 1000mf

+ Khối laser : 1 đèn lazer , 1 diode zenner ,1 LM324 ,1 đế cắm 14 chân, 1 quang trở

7

Page 9: Modul Mach Bao Dong

+ Khối khóa từ va modul cảm biến chuyển động

+ Khối loa : 1 loa , điện trở , transistor D468

II . PHẦN CỨNG

A. Modul Vi Xử Lý AT89S52

1. Sơ lược vê vi xử lý :  

Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ thuật điện tử đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được tích hợp với mật độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện tử nhỏ hơn và nhiều chức năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá thành ngày càng rẻ hơn, chính vì vậy điện tử có mặt khắp mọi nơi.

        Bước đột phá mới trong công nghệ điện tử, công ty trẻ tuổi Intel cho ra đời bộ vi xử lý đầu tiên. Đột phá ở chỗ: "Đó là một kết cấu logic mà có thể thay đổi chức năng của nó bằng chương trình ngoài chứ không phát triển theo hướng tạo một cấu trúc phần cứng chỉ thực hiện theo một số chức năng nhất định như trước đây".  Tức là phần cứng chỉ đóng vai trò thứ yếu, phần mềm (chương trình) đóng vai trò chủ đạo đối với các chức năng cần thực hiện. Nhờ vậy vi xử lý có sự mềm dẻo hóa trong các chức năng của mình. Ngày nay vi xử lý có tốc độ tính toán rất cao và khả năng xử lý rất lớn.

         Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý. Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v..... Vi xử lý không có khả năng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi.       Để vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu. Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã.

8

Page 10: Modul Mach Bao Dong

      Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự trên màn hình .... đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi. Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn. Vi xử lý kết hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có tốc độ nhanh. Chẳng hạn như các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v...

2. Từ Vi xử lý đến Vi điêu khiển

        Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc. Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế. Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ.

         Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller-Vi điều khiển. Vi điều khiển có khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành cho người dùng đơn giản hơn nhiều. Vi điều khiển ra đời mang lại sự tiện lợi đối với người dùng, họ không cần nắm vững một khối lượng kiến thức quá lớn như người dùng vi xử lý, kết cấu mạch điện dành cho người dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bên ngoài. Vi điều khiển tuy được xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, nhưng thay vào lợi điểm này là khả năng xử lý bị giới hạn (tốc độ xử lý chậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị giới hạn). Thay vào đó, Vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, việc sử dụng đơn giản, do đó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏi tính toán phức tạp.

        Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v.v...

9

Page 11: Modul Mach Bao Dong

       Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48. Độ phức tạp, kích thước và khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này. Sau đó rất nhiều họ Vi điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường với tính năng được cải tiến ngày càng mạnh.

3. Ho MSC-51

         Hiện nay có rất nhiều họ Vi điều khiển trên thị trường với nhiều ứng dụng khác nhau, trong đó họ Vi điều khiển họ MCS-51 được sử dụng rất rộng rãi trên thế giới và ở Việt nam.

            Vào năm 1980 Intel công bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51. Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16 bit. Tiếp theo sau đó là sự ra đời của chip 8052,8053,8055 với nhiều tính năng được cải tiến

           Hiện nay Intel không còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens, Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của họ MSC-51. Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam hiện nay là Vi điều khiển của hãng Atmel với nhiều chủng loại vi điều khiển khác nhau.

             Hãng Atmel có các chip Vi điều khiển có tính năng tương tự như chip Vi điều khiển MCS-51 của Intel, các mã số chip được thay đổi chút ít khi được Atmel sản xuất. Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình tương tự như nhau. Tương tự 8051,8053,8055 có mã số tương đương ở Atmel là 89C51,89C53,89C55. Vi điều khiển Atmel sau này ngày càng

được cảitiến và được bổ sung thêm nhiều chức năng tiện lợi hơn cho người dùng.

10

Page 12: Modul Mach Bao Dong

Sau khoảng thời gian cải tiến và phát triển, hãng Atmel tung ra thị trường dòng Vi điều khiển mang số hiệu 89Sxx với nhiều cải tiến và đặc biệt là có thêm khả năng nạp chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi cho người sử dụng.

Tất cả các Vi điều khiển trên đều có đặc tính cơ

bản giống nhau về phần mềm (các tập lệnh lập trình như nhau), còn phần cứng được bổ sung với chip có mã số ở hai số cuối cao hơn, các Vi điều khiển sau này có nhiều tính năng vượt trội hơn Vi điều khiển thế hệ trước. Các Vi điều khiển 89Cxx như trong bảng 1 có cấu tạoROM và RAM như 98Sxx trong bảng 2, tuy nhiên 98Sxx được bổ sung một số tính năng và có thêm chế độ nạp nối tiếp.

4. SƠ LƯƠT PHẦN CỨNG VÀ GIAO TIÊP BÊN NGOÀI CỦA VI ĐIỀU KHIỂN 8051

4.1 Khảo Sat Sơ Đồ Chân.

  Mặc dù các thành viên của họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) và đều có 40 chân cho các chức năng khác nhau như vào ra I/0, đọc , ghi , địa chỉ, dữ liệu và ngắt. Tuy nhiên, vì hầu hết các nhà phát triển chính dụng chíp đóng vỏ 40 chân với hai hàng chân DIP, nên chúng ta cùng khảo sát Vi điều khiển với 40 chân dạng DIP

4.2Đăc Trưng Cua Chip 8051

- 4 KB EPROM bên trong - 128 Byte RAM nội - 4 Port xuất / nhập I/O 8 bit. - Mạch giao tiếp nối tiếp - 64 KB không gian nhớ mã ngoài - 64 KB không gian nhớ dữ liệu bên trong . - Xử lý Boolean ( hoạt động trên bit đơn ) - 210 vị trí nhớ có thể định vị bit - 4μs cho hoat động nhân chia

11

Page 13: Modul Mach Bao Dong

Sơ Đồ

Chân

Chân VCC

Chân số 40 là VCC cấp điện áp nguồn cho Vi điều khiển , Nguồn điện cấp là +5V±0.5.

Chân GND

Chân số 20 nối GND(hay nối Mass). Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản là sử dụng IC ổn áp 7805.

Port 0 (P0)  Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:        - Chức năng xuất/nhập :các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt.       -Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có kết nối với bộ nhớ ngoài), đồng thời Port 0 còn được dùng để định địa chỉ của bộ nhớ ngoài.

Port 1 (P1) Port P1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường xuất/nhập, không có chức năng khác.

12

Page 14: Modul Mach Bao Dong

Port 2 (P2) Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:      - Chức năng xuất/nhập      - Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2 này đảm nhận.

  Port 3 (P3)   Port 3 gồm 8 chân (từ chân 10 đến 17):       - Chức năng xuất/nhập

      -Với mỗi chân có một chức năng riêng thứ hai như trong

bảng sau

. Chân RESET (RST)        Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kì máy.

Chân XTAL1 va XTAL2          Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để tạo nguồn xung clock ổn định.

Chân cho phép bộ nhớ chương trình PSEN      - PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ chương trình ngoài. Chân này thường được nối với chân OE (output enable) của ROM ngoài.      - Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy      - Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức logic không tích

13

Page 15: Modul Mach Bao Dong

cực (logic 1)       (Không cần kết nối chân này khi không sử dụng đến)

Chân ALE (chân cho phép chốt địa chỉ-chân 30)      - Khi Vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng là bus địa chỉ, vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt.      - Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống.      Ghi chú: khi không sử dụng có thể bỏ trống chân này

Chân EA         Chân EA dùng để xác định chương trình thực hiện được lấy từ ROM nội hay ROM ngoại.        Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ nội        Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ ngoại

4.3 Câu Truc Bên Truc Bên Trong Cua Vi Điêu Khiển

a. Bộ Nhớ Chương Trình – Bộ Nhớ ROM

Bộ nhớ ROM dùng để lưu chương trình do người viết chương trình viết ra. Chương trình là tập hợp các câu lệnh thể hiện các thuật toán để giải quyết các công việc cụ thể, chương trình do người thiết kế viết trên máy vi tính, sau đó được đưa vào lưu trong ROM của vi điều khiển, khi hoạt động, vi điều khiển truy xuất từng câu lệnh trong ROM để thực hiện chương trình. ROM còn dùng để chứa số liệu các bảng, các tham số hệ thống, các số liệu cố định của hệ thống. Trong quá trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình (do các mạch điện riêng biệt thực hiện).

    Bộ nhớ ROM được tích hợp trong chip Vi điều khiển với dung lượng tùy vào chủng loại cần dùng, chẳng hạn đối với 8051 là 4 KByte , 8052 là 8KByte ,89S52 là 8KByte, với 89S53 là 12KByte.

    Bộ nhớ bên trong Vi điều khiển 8051 là bộ nhớ Flash ROM cho phép xóa bộ nhớ ROM bằng điện và nạp vào chương trình mới cũng bằng điện và có thể nạp xóa nhiều lần

     Bộ nhớ ROM được định địa chỉ theo từng Byte, các byte được đánh địa chỉ theo số hex-số thập lục phân, bắt đầu từ địa chỉ 0000H, khi viết chương trình cần chú ý đến địa chỉ lớn nhất trên ROM,   chương trình được lưu sẽ bị mất khi địa chỉ lưu vượt qua vùng này.    Ngoài ra Vi điều

14

Page 16: Modul Mach Bao Dong

khiển còn có khả năng mở rộng bộ nhớ ROM với việc giao tiếp với bộ nhớ ROM bên ngoài lên đến 64KByte(địa chỉ từ 0000H đến FFFFH).

b. Bộ Nhớ Dư Liệu – Bộ Nhớ RAM

Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu. RAM nội trong Vi điều khiển được tổ chức như sau:          - Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập lục phân (số Hex)          - Các bank thanh ghi có địa chỉ 00H đến 1FH          - 210 vị trí được định địa chỉ bit          - Các vị trí RAM bình thường          - Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH.

Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ô nhớ có chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là "bit nhớ".

15

Page 17: Modul Mach Bao Dong

Cac bank thanh ghi

       Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong mỗi bank, các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc định trong bank 1. Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank thanh ghi được truy xuất với các thanh ghi từ R0 đến R7, để thay đổi việc truy xuất các thanh ghi trên các bank thanh ghi, người dùng phải thay đổi giá trị các bit chọn bank trong thanh ghi trạng thái PSW bằng các câu lệnh trong chương trình.         Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng không gian lưu trữ ít hơn và thời gian thực hiện nhanh hơn so với các lệnh dùng các ô nhớ RAM khác, ngoài ra các thanh ghi này còn có thêm một số chức năng đặc biệt khác, vì lí do này các dữ liệu sử dụng thường thường được người viết chương trình đưa vào lưu trong các thanh ghi này.        Ngoài ra, có thể truy xuất thanh ghi trên các bank thanh ghi như với các ô nhớ bình thường khác. Ví dụ: nguời dùng có thể truy xuất đến thanh ghi R7 bằng ô nhớ 07H.

Vùng RAM truy xuât từng bit

      Trên RAM nội có 210 ô nhớ bit được định địa chỉ và có thể truy xuất đến từng bit, các bit nhớ này cũng được định địa chỉ bằng các số thập lục phân- số Hex. Trong đó có 128 bit nằm trong các ô nhớ có địa chỉ byte từ 20H đến 2FH, các bit nhớ còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt.       Mặc dù các bit nhớ và ô nhớ (byte) cùng được định bằng số Hex, tuy nhiên chúng sẽ được nhận dạng là địa chỉ bit hay địa chỉ byte thông qua các câu lệnh tương ứng dành cho các bit nhớ hoặc các ô nhớ này.            Ví dụ:            mov     05H,#10111111B     ;>>> lệnh này thiết lập giá trị cho ô nhớ có địa chỉ là 05H           JB        05H,nhan01              ;>>> lệnh này liên quan đến trạng thái của bit nhớ có địa chỉ 05H

Vùng RAM bình thường

     Vùng RAM này có địa chỉ byte từ 30H đến 7FH, dùng để lưu trữ dữ liệu, được truy xuất theo từng byte.

Cac thanh ghi có chức năng đăc biệt

      Các thanh ghi này được định địa chỉ byte, một số được định thêm địa chỉ bit, có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH. Các thanh ghi đặc biệt này này được dùng để xác lập trạng thái hoạt động cần thiết cho Vi điều khiển.

MỘT SỐ Ô NHƠ CÓ CHỨC NĂNG ĐẶC BIÊT

16

Page 18: Modul Mach Bao Dong

Cac thanh ghi có địa chỉ 80H, 90H, A0H, B0H:

      Đây là các thanh ghi kiểm tra và điều khiển mức logic của các Port, có thể truy xuất và xác lập các thanh ghi này với địa chỉ byte hoặc tên riêng lần lượt là P0, P1, P2, P3 tương ứng với các Port xuất. Chẳng hạn để tất cả các chân của Port 0 lên mức logic 1, cần làm cho các bit của  thanh ghi có địa chỉ 80H lên mức 1.

Thanh ghi A

      Thanh ghi A là thanh ghi quan trọng, dùng để lưu trữ các toán hạng và kết quả của phép tính.

      Thanh ghi A có độ dài 8 bits, có địa chỉ là E0H.

Thanh ghi B

      Thanh ghi B ở địa chỉ F0H, được dùng với thanh ghi A để thực hiện các phép toán số học. Khi thực hiện lệnh chia với thanh ghi A, số dư được lưu trữ ở thanh ghi B. Ngoài ra thanh ghi B còn được dùng như một thanh ghi đệm có nhiều chức năng.

Con trỏ ngăn xếp SP: địa chỉ 81H

         Con trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được tăng,giảm tự động  khi thực hiện các lệnh PUSH, CALL,POP con trỏ SP dùng quản lí và xử lí các nhóm dữ liệu liên tục.Giá trị mặc định của SP là 07H. 

Con trỏ dư liệu DPTR.

      Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo thành từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa chỉ byte 83H). Hai thanh ghi DPL và DPT có thể truy xuất độc lập bởi người sử dụng. Con trỏ dữ liệu DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ ROM hoặc bộ nhớ từ bên ngoài.

Thanh ghi trạng thai chương trình PSW (địa chỉ byte D0H)

17

Page 19: Modul Mach Bao Dong

Chức năng từng bit trong thanh trạng thái PSW

 Cờ nhớ C:Cờ được sử dụng trong các lệnh toán học:      C=1 nếu phép toán cộng xảy ra tràn hoặc phép trừ có mượn      C=0 nếu phép toán cộng không tràn hoặc phép trừ không có mượn.

 Cờ nhớ phụ AC:     Cờ AC được dùng trong các phép toán cộng hai số BCD. Khi cộng số BCD:      Nếu kết quả 4 bit lớn hơn 09H thì AC=1      Nếu kết quả 4 bit dưới 09H thì AC=0.

 Cờ 0 hay cờ nhớ Z:      Cờ Z = 0 khi thanh ghi A có giá trị khác 0      Cờ Z =1 khi A thanh ghi A có giá trị là 0

Các bit chọn bank thanh ghi:      Hai bit RS1 và RS2 dùng để xác lập bank thanh ghi được sử dụng, mặc định RS1=0 và RS2=0

 

 Cờ tràn OV Được sử dụng trong các phép toán cộng có dấu, với các phép toán cộng không dấu cờ tràn OV được bỏ qua, không cần quan tâm đến OV. Nếu:      Phép cộng hai số có dấu lớn hơn +127 thì OV=1      Hoặc phép trừ hai số có dấu nhỏ hơn -127 thì OV=1      Các trường hợp còn lại OV=0

18

Page 20: Modul Mach Bao Dong

  Cờ chẵn lẻ       Cờ chẵn lẻ P tự động được đặt bằng 1 hoặc 0 sao cho tổng số bit mang giá trị 1 trên thanh ghi A với cờ P luôn là một số chẵn. Cờ chẵn lẻ được dùng để xử lí dữ liệu trước khi truyền đi theo kiểu nối tiếp hoặc xử lí dữ liệu trước khi nhận vào theo kiểu nối tiếp (hạn chế lỗi phát

sinh trong quá trình truyền).

5. Kết Nối Phân Cứng Cơ Bản Cho 8051

a. Kết nối trên hai

chân XTAL1 va XTAL2Mạch dao động được đưa vào hai chân này thông thường được kết nối với dao động thạch anh như sau:

Chân 19.20 nối với Thạch Anh tạo mạch giao động cho Vi Điều KhiểnTần số Thạc Anh thường dung trong các ứng dụng là : 11.0592Mhz (giao tiếp với cổng COM máy tính) và 12Mhz ,tần số tối đa là 24 Mhz , tần số càng lớn vi điều khiển xử lý càng mạnh

Chu kì máy

     Gọi fzat là tần số dao động của thạch anh. Đối với 89Sxx có thể sử dụng thạch anh có tần số fzat

từ 2MHz đến 33MHz.

      Chu kì máy là khoảng thời gian cần thiết được qui định để Vi điều khiển thực hiện hoàn thành một lệnh cơ bản. Một chu kì máy bằng 12 lần chu kì dao động của nguồn xung dao động cấp cho nó.

             Tck = 12.Toc

  Với:  Tck là chu kì máy               Toc là chu kì của nguồn xung dao động cấp cho Vi điều khiển

Như vậy:

   

19

Page 21: Modul Mach Bao Dong

Với: Tck là chu kì máy             foc là tần số dao động cấp cho Vi điều khiển.

 Ví dụ: Ta kết nối Vi điều khiển với thạch anh có tần số fzat là  12MHz, thì chu kì máy

     Tck=12/(12.106)=10-6s =1µs

      Chính vì lí do thạch anh có tần số fzat là  12MHz tạo ra chu kì máy là 1µs, thuận lợi cho việc tính toán thời gian khi lập trình do đó thạch anh có tần số fzat là  12MHz thường được sử dụng trong thực tế.

Hoặc có thể cấp tín hiệu xung clock lấy từ một mạch tạo dao động nào đó và đưa vào Vi điều khiển theo cách sau

b. Kết nối chân RESET-chân 9

      Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt động ban đầu. Vì vậy chân RESET được kết nối như

Với Vi điều khiển sử dụng thạch anh có tần số

fzat = 12MHz sử dụng C=10µF và R=10KΩ.

c. Kết nối cac Port với led

           Các Port khi xuất tín hiệu ở mức logic 1 thường không đạt đến 5V mà dao động trong khoảng từ 3.5V đến 4.9V và dòng

xuất ra rất nhỏ dưới 5mA(P0,P2 dòng xuất khoảng 1mA;           P1,P3 dòng xuất ra khoảng 1mA đến 5mA) vì vậy dòng xuất này không đủ để có thể làm led sáng  ,tuy nhiên khi các Port xuất tín hiệu ở mức logic 0 dòng điện cho phép đi qua lớn hơn rất nhiều:

20

Page 22: Modul Mach Bao Dong

       Chân Vi điều khiển khi ở mức 0:    Dòng lớn nhất qua P0 : -25mA                         Dòng lớn nhất qua P1,P2,P3 : -15mA         Do đó khi kết nối với led hoặc các thiết bị khác Vi điều khiển sẽ gặp trở ngại là nếu tác động làm led sáng khi Vi điều khiển xuất ở mức 1, lúc này dòng và áp ra không đủ để led có thể sáng rõ (led đỏ sáng ở điện áp 1.6V-2.2V và dòng trong khoảng 10mA). Khắc phục bằng cách sau:

Cho led sang khi Vi điêu khiển ở mức 0

Cho led sang khi Vi điêu khiển xuât ở mức 1

       Như đã trình bày vì ngõ ra Vi điều khiển khi xuất ở mức 1 không đủ để cho led sáng, để led sáng được cần đặt thêm một điện trở kéo lên nguồn VCC(gọi là điện trở treo).

Tuỳ từng trường hợp mà chọn R2 để dòng và áp phù hợp với thiết bị nhận.   Khi Px.x ở mức 0, có sự chênh lệch áp giữa nguồn VCC và chân Px.x -dòng điện đi từ VCC qua R2 và Px.x về Mass, do đó hiệu điện thế giữa hai chân led gần như bằng 0, led không sáng.

Khi Px.x ở mức 1 (+5V),dòng điện không chạy qua chân Vi điều khiển để về mass được, có sự lệch áp giữa hai chân led, dòng điện trong trường hợp này qua led về Mass do đó led sáng.

21

Page 23: Modul Mach Bao Dong

     R2 thường được sử dụng với giá trị từ 4.7KΩ đến 10KΩ. Nếu tất cả các chân trong 1 Port đều kết nối để tác động ở mức cao thì điện trở R2 có thể thay bằng điện trở thanh 9 chân vì nó có hình dáng và sử dụng dễ hơn khi làm mạch điện.

Sử dụng công đệm

Ngoài cách sử dụng điện trở treo, việc sử dụng cổng đệm cũng có tác dụng thay đổi cường độ dòng điện xuất ra khi ngõ ra ở mức 1, cổng đệm xuất ra tín hiệu ở mức 1 với áp và dòng lớn  khi có tín hiệu mức 1 đặt ở ngõ vào. Tùy theo yêu cầu của người thiết kế về dòng và áp cần thiết mà chọn IC đệm cho phù hợp. Chẳng hạn từ một ngõ ra P0.0 làm nhiều led sáng cùng lúc thì việc sử dụng IC đệm được ưu tiên hơn.

      Có thể sử dụng 74HC244 hoặc 74HC245, tuy nhiên 74HC245 được cải tiến từ 74HC244 nên việc sử dụng 74HC245 dễ dàng hơn trong thiết kế mạch.

B. Modul Hiển Thị Trong Hệ Thống

Phân hiển thị trong hệ thống bao gồm LCD 16x2 để hiển thị cảnh bao va 2 led 7 đoạn để hiển thị thời gian bao động

1. Led 7 đoạn

1.1 Cac khai niệm cơ bản

        Trong các thiết bị, để báo trạng thái hoạt động của thiết bị đó cho người sử dụng với thông số chỉ là các dãy số đơn thuần, thường người ta sử dụng "led 7 đoạn". Led 7 đoạn được sử dụng khi các dãy số không đòi hỏi quá phức tạp, chỉ cần hiện thị số là đủ, chẳng hạn led 7 đoạn được dùng để hiển thị nhiệt độ phòng, trong các đồng hồ treo tường bằng điện tử, hiển thị số lượng sản phẩm được kiểm tra sau một công đoạn nào đó...

       Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.

22

Page 24: Modul Mach Bao Dong

      8 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực -) được nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện. 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch điện. Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode(cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1.

           Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua mỗi led đơn

trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.

         Sơ đồ vị trí các led được trình bày như hình dưới:

   

Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led nếu led 7 đoạn được nối với nguồn 5V.

    Chân nhận tín hiệu a điều khiển led a sáng tắt, ngõ vào b để điều khiển led b. Tương tự với các chân và các led còn lại.       

        1.2 Kết nối với Vi điêu khiển

23

Page 25: Modul Mach Bao Dong

         Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng 1 Port nào đó của Vi điều khiển để điều khiển led 7 đoạn. Như vậy led 7 đoạn nhận một dữ liệu 8 bit từ Vi điều khiển để điều khiển hoạt động sáng tắt của từng led led đơn trong nó, dữ liệu được xuất ra điều khiển led 7 đoạn thường được gọi là "mã hiển thị led 7 đoạn". Có hai kiểu mã hiển thị led 7 đoạn: mã dành cho led 7 đoạn có Anode(cực +) chung và mã dành cho led 7 đoạn có Cathode(cực -) chung. Chẳng hạn, để hiện thị số 1 cần làm cho các led ở vị trí b và c sáng, nếu sử dụng led 7 đoạn có Anode chung thì phải đặt vào hai chân b và c điện áp là 0V(mức 0) các chân còn lại được đặt điện áp là 5V(mức 1), nếu sử dụng led 7 đoạn có Cathode chung thì điện áp(hay mức logic) hoàn  toàn ngược lại, tức là phải đặt vào chân b và  c điện áp là 5V(mức 1).

        Bảng mã hiển thị led 7 đoạn:      Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để thuận tiện cho việc xử lí về sau phần cứng nên được kết nối như sau: Px.0 nối với chân a, Px.1 nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h.

← Dữ liệu xuất có dạng nhị phân như sau : hgfedcba

       Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Anode chung (các led đơn sáng ở mức 0):  

Số hiển thị trên led 7 đoạn

Mã hiển thị led 7 đoạn dạng nhị phân

Mã hiển thị led 7 đoạn dạng thập lục phân

  h g f e d c b a  

0 1 1 0 0 0 0 0 0 C0

1 1 1 1 1 1 0 0 1 F9

2 1 0 1 0 0 1 0 0 A4

3 1 0 1 1 0 0 0 0 B0

4 1 0 0 1 1 0 0 1 99

5 1 0 0 1 0 0 1 0 92

6 1 1 0 0 0 0 1 0 82

7 1 1 1 1 1 0 0 0 F8

8 1 0 0 0 0 0 0 0 80

9 1 0 0 1 0 0 0 0 90

A 1 0 0 0 1 0 0 0 88

B 1 0 0 0 0 0 1 1 83

C 1 1 0 0 0 1 1 0 C6

D 1 0 1 0 0 0 0 1 A1

E 1 0 0 0 0 1 1 0 86

24

Page 26: Modul Mach Bao Dong

F  1 0 0 0 1 1 1 0 8E

- 1 0 1 1 1 1 1 1 BF

 

      Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Cathode chung (các led đơn sáng ở mức 1):  

Số hiển thị trên led 7 đoạn

Mã hiển thị led 7 đoạn dạng nhị phân

Mã hiển thị led 7 đoạn dạng thập lục phân

0 0 0 1 1 1 1 1 1 3F

1 0 0 0 0 0 1 1 0 06

2 0 1 0 1 1 0 1 1 5B

3 0 1 0 0 1 1 1 1 4F

4 0 1 1 0 0 1 1 0 66

5 0 1 1 0 1 1 0 1 6D

6 0 1 1 1 1 1 0 1 7D

7 0 0 0 0 0 1 1 1 07

8 0 1 1 1 1 1 1 1 7F

9 0 1 1 0 1 1 1 1 6F

A 0 1 1 1 0 1 1 1 77

B 0 1 1 1 1 1 0 0 7C

C 0 0 1 1 1 0 0 1 39

D 0 1 0 1 1 1 1 0 5E

E 0 1 1 1 1 0 0 1 79

F 0 1 1 1 0 0 0 1 71

- 1 0 0 0 0 0 0 0 40

1.3 Cac phương phap hiển thị dư liệu

a. Phương phap quét

Khi kết nối chung các đường dữ liệu của Led 7 đoạn, các Led không thể sáng đồng thời (do ảnh hưởng lẫn nhau giữa các Led) mà phải thực hiện quét Led, nghĩa là tại mỗi thời điểm chỉ sáng một Led và tắt các Led còn lại. Do hiện tượng lưu ảnh của mắt, ta sẽ thấy các Led sáng đồng thời.

25

Page 27: Modul Mach Bao Dong

Trong hệ thống chống trộm sử dụng phương pháp quét led để để hiển thị thời gian báo động 20s

Ngoài phương pháp quét led để hiển thị thì còn phương pháp chốt led để hiển thị 2 led đồng thời

b. Phương Pháp Chốt Led

Khi thực hiện tách riêng các đường dữ liệu của Led, ta có thể cho phép các Ledsáng đồng thời mà sẽ không có hiện tượng ảnh hưởng giữa các Led. IC chốt cho phéplưu trữ dữ liệu cho các Led có thể sử dụng là 74LS373, 74LS374. Khi thực hiện bằng

phương pháp chốt, khi nào cần xuất dữ liệu ra Led thì gởi dữ liệu và tạo xung để chốt.

26

Page 28: Modul Mach Bao Dong

2. LCD 16x2 ((Liquid Crystal Display)

Text LCD là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng chữ hoặc số trong bảng mã ASCII. Không giống các loại LCD lớn, Text LCD được chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII. Cũng vì lý do chỉ hiện thị được ký tự ASCII nên loại LCD này được gọi là Text LCD (để phân biệt với Graphic LCD có thể hiển thị hình ảnh). Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, việc kết hợp ẩn và hiện các chấm này sẽ tạo thành một ký tự cần hiển thị. Trong các Text LCD, các mẫu ký tự được định nghĩa sẵn. Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có. Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự. Một số kích thước Text LCD thông thường gồm 16x1, 16x2, 16x4, 20x2, 20x4 . Hình 1 mô tả text LCD 16x2

27

Page 29: Modul Mach Bao Dong

Text LCD có 2 cách giao tiếp cơ bản là nối tiếp như I2C) và song song. Trong phạm vi bài học này tôi chỉ giới thiệu loại giao tiếp song song, cụ thể là LCD 16x2 điều hiển bởi chip HD44780U của hãng Hitachi. Đối với các LCD khác bạn cần tham khảo datasheet riêng của từng loại. Tuy nhiên, HD44780U cũng được coi là chuẩn chung cho các loại Text LCD, vì thế bạn có thể dùng chương trình ví dụ trong bài này để test trên các LCD khác với rất ít hoặc không cần chỉnh sửa LCD dạng ma trận điểm (dot-matrix), chip này có thể được dùng cho các LCD có 1 hoặc 2 dòng hiển thị. HD44780U có 2 mode giao tiếp là 4 bit và 8 bit. Nó chứa sẵn 208 ký tự mẫu kích thước font 5x8 và 32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khác nhau)

2.1 Sơ đồ chân Các text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân kết nối với bộ điều khiển và 2 chân nguồn cho “ đèn nền led “ thứ tự các chân thường được sắp xếp như sau Bảng 1 : Sơ đồ chân

28

Page 30: Modul Mach Bao Dong

Trong một số LCD 2 chân LED nền được đánh số 15 và 16 nhưng trong một số trường hợp 2 chân này được ghi là A (Anode) và K (Cathode). Hình 2 mô tả cách kết nối LCD với nguồn và mạch điều khiển.

29

Page 31: Modul Mach Bao Dong

Chân 1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V. Chân 3 là chân chỉnh độ tương phản (contrast), chân này cần được nối với 1 biến trở chia áp như trong hình 2.Trong khi hoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương phản cần thiết, sau đó giữ mức biến trở này. Các chân điều khiển RS, R/W, EN và các đường dữ liệu được nối trực tiếp với vi điều khiển. Tùy theo chế độ hoạt động 4 bit hay 8 bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển, chúng ta sẽ khảo sát kỹ càng hơn trong các phần sau.

2.2 Thanh ghi va tô chức bộ nhớ

Thanh ghi IR chứa mã lệnh điều khiển LCD và là thanh ghi chỉ ghi (chỉ có thể ghi vào thanh ghi này mà không đọc được nó). Thanh ghi DR chứa các các loại dữ liệu như ký tự cần hiển thị hoặc dữ liệu đọc ra từ bộ nhớ LCD;Cả 2 thanh ghi đều được nối với các đường dữ liệu D0:7 của Text LCD và được lựa chọn tùy theo các chân điều khiển RS, RW. Thực tế để điều khiển Text LCD chúng ta không cần quan tâm đến cách thức hoạt động của 2 thanh ghi này, vì thế cũng không cần khảo sát chi tiết chúng.

HD44780U có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM (Didplay Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ RAM chứa bộ font tạo ra các symbol tùy chọn CGRAM (Character Generator RAM). Để điều khiển hiển thị Text LCD chúng ta cần hiểu tổ chức và cách thức hoạt động của các bộ nhớ này

2.2.1 DDRAM

30

Page 32: Modul Mach Bao Dong

DDRAM là bộ nhớ tạm chứa các ký tự cần hiển thị lên LCD, bộ nhớ này gồm có 80 ô được chia thành 2 hàng, mỗi ô có độ rộng 8 bit và được đánh số từ 0 đến 39 cho dòng 1; từ 64 đến 103 cho dòng 2. Mỗi ô nhớ tương ứng với 1 ô trên màn hình LCD. Như chúng ta biết LCD loại 16x2 có thể hiển thị tối đa 32 ký tự (có 32 ô hiển thị), vì thế có một số ô nhớ của DDRAM không được sử dụng làm các ô hiển thị. Để hiểu rõ hơn chúng ta tham khảo hình 3 bên dưới

Hình 3 : Tổ chức củ DDRAM

Chỉ có 16 ô nhớ có địa chỉ từ 0 đến 15 và 16 ô địa chỉ từ 64 đến 79 là được hiển thị trên LCD. Vì thế muốn hiển thị một ký tự nào đó trên LCD chúng ta cần viết ký tự đó vào DDRAM ở 1 trong 32 địa chỉ trên. Các ký tự nằm ngoài 32 ô nhớ trên sẽ không được hiển thị, tuy nhiên vẫn không bị mất đi, chúng có thể được dùng cho các mục đích khác nếu cần thiết.

2.2.2 CGROM

CGROM là vùng nhớ cố định chứa định nghĩa font cho các ký tự. Chúng ta không trực tiếp truy xuất vùng nhớ này mà chip HD44780U sẽ tự thực hiện khi có yêu cầu đọc font để hiện thị. Một điều đáng lưu ý là địa chỉ font của mỗi ký tự vùng nhớ CGROM chính là mã ASCII của ký tự đó. Ví dụ ký tự a có mã ASCII là 97, tham khảo tổ chức của vùng nhớ CGROM trong hình 4 bạn sẽ nhận thấy địa chỉ font của ‘a’ có 4 bit thấp là 0001 và 4 bit cao là 0110, địa chỉ tổng hợp là 01100001 = 97.

CGROM và DDRAM được tự động phối hợp trong quá trình hiển thị của LCD. Giả sử chúng ta muốn hiển thị ký tự atại vị trí đầu tiên, dòng thứ 2 của LCD thì các bước thực hiện sẽ như sau: trước hết chúng ta biết rằng vị trí đầu tiên của dòng 2 có địa chỉ là 64 trong bộ nhớ DDRAM (xem hình 3), vì thế chúng ta sẽ ghi vào ô nhớ có địa chỉ 64 một giá trị là 97 (mã ASCII của ký tự a tiếp theo, chip HD44780U đọc giá trị 97 này và coi như là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ 97 và đọc bảng font đã được định nghĩa sẵn ở đây, sau đó xuất bản font này ra các chấm trên màn hình LCD tại vị trí đầu tiên của dòng 2 trên LCD. Đây chính là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các ký tự. Như mô tả, công việc của người lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vào bộ nhớ DDRAM tại đúng vị trí được yêu cầu, bước tiếp theo sẽ do HD44780U đảm nhiệm.

31

Page 33: Modul Mach Bao Dong

Hình 4 : Vùng nhớ CGROM

2.3 CGRAM

CGRAM là vùng nhớ chứa các symbol do người dùng tự định nghĩa, mỗi symbol được có kích thước 5x8 và được dành cho 8 ô nhớ 8 bit. Các symbol thường được định nghĩa trước và được gọi hiển thị khi cần thiết. Vùng này có tất cả 64 ô nhớ nên có tối đa 8 symbol có thể

32

Page 34: Modul Mach Bao Dong

được định nghĩa. Tài liệu này không đề cập đến sử dụng bộ nhớ CGRAM nên tôi sẽ không đi chi tiết phần này, bạn có thể tham khảo datasheet của HD44780U để biết thêm.

3. Điều khiển hiển thị Text LCD

3.1 Các chân điều khiển LCD

Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN.

RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này cho phép lựa chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc. Vì cả 2 thanh ghi này đều được kết nối với các chân Data của LCD nên cần 1 bit để lựa chọn giữa chúng. Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn. Chúng ta đều biết thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gởi 1 mã lệnh đến LCD thì chân RS phải được reset về 0. Ngược lại, khi muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì chúng ta sẽ set RS=1 để chọn thanh ghi DR. Hoạt động của chân RS được mô tả trong hình 5.

Hình 5 : Hoạt động của chân RS

R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi. Nếu R/W=0 thì dữ liệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD. Nếu R/W=1 thì dữ liệu sẽ được đọc từ LCD ra ngoài. Tuy nhiên, chỉ có duy nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay không (cờ Busy Flag - BF). Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điều khiển), vì thế một cờ BF được dùng để báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD. Vì thế, khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình con tạm gọi là wait_LCD để chờ cho đến khi LCD rảnh. Có 2 cách để viết chương trình wait_LCD. Cách 1 là đọc bit BF về kiểm tra và chờ BF=0, cách này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộ điều khiển ngoài. Cách 2 là viết một hàm delay một khoảng thời gian cố định nào đó (tốt nhất là trên 1ms). Ưu điểm của cách 2 là sự đơn

33

Page 35: Modul Mach Bao Dong

giản vì không cần đọc LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND. Tuy nhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị. Trong bài này tôi hướng dẫn bạn cách tổng quát là cách 1, để sử dụng cách 2 bạn chỉ cần một thay đổi nhỏ trong chương trình wait_LCD (sẽ trình bày chi tiết sau) và kết nối chân R/W của LCD xuống GND.

EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cần được kết nối với bộ điều khiển để cho phép thao tác LCD. Để đọc và ghi data từ LCD chúng ta cần tạo một xung cạnh xuống trên chân EN, nói theo cách khác, muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất dữ liệu đến các chân D0:7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về 0 để tạo 1 xung cạnh xuống.

3.2 Tập lệnh của LCD

Bảng 2 : Tóm tắt các lệnh có thể ghi vào LCD

34

Page 36: Modul Mach Bao Dong

Danh sách lệnh trên được tôi tô 2 màu khác nhau, các lệnh màu đỏ sẽ được dùng thường xuyên trong lúc hiển thị LCD và các lệnh màu xanh thường chỉ được dùng 1 lần trong lúc khởi động LCD, riêng lệnh Read BF có thể được dùng hoặc không tùy theo cách viết chương trình wait_LCD. Phần tiếp theo tôi giải thích ý nghĩ của các lệnh và tham số kèm theo chúng.

* trước hết là nhóm lệnh đỏ

Clear display - xóa LCD: lệnh này xóa toàn bộ nội dung DDRAM và vì thế xóa toàn bộ hiển thị trên LCD. Vì đây là 1 lệnh ghi Instruction nên chân RS phải được reset về 0 trước khi ghi lệnh này lên LCD. Mã lệnh xóa LCD là 0x01(ghi vào D0:D7).

Cursor home - đưa con trỏ về vị trí đầu, dòng 1 của LCD: lệnh này thực hiện việc đưa con trỏ về vị trí đầu tiên của bộ nhớ DDRAM, vì thế nếu sau lệnh này một biến được ghi vào

35

Page 37: Modul Mach Bao Dong

DDRAM thì biến này sẽ nằm ở vị trí đầu tiên (1;1). RS cũng phải bằng 0 trước khi ghi lệnh. Mã lệnh là 0x02 hoặc 0x03(chọn 1 trong 2 mã lệnh, tùy ý).

Set DDRAM address - định vị trí con trỏ cho DDRAM: di chuyển con trỏ đến một vị trí tùy ý trong DDRAM và vì thế có thể được dùng để chọn vị trí cần hiển thị trên LCD. Để thực hiện lệnh này cần reset RS=0. Bit MSB của mã lệnh (D7) phải bằng 1, 7 bit còn lại của mã lệnh chính là địa chỉ DDRAM muốn di chuyển đến. Ví dụ chúng ta muốn di chuyển con trỏ đến vị trí thứ 3 trên dòng 2 của LCD (địa chỉ 42) chúng ta cần ghi mã lệnh 0xAA vì 0xAA=10101010 (binary) trong đó bit MSB bằng 1, bảy bit còn lại là 0101010=42, địa chỉ của ô nhớ muốn đến.

Write to CGRAM or DDRAM - ghi dữ liệu vào CGRAM hoặc DDRAM: vì đây không phải là lệnh ghi instruction mà là 1 lệnh ghi dữ liệu nên chân RS cần được set lên 1 trước khi ghi lệnh vào LCD. Lệnh này cho phép ghi mã ASCII của một ký tự cần hiển thị vào thanh ghi DDRAM. Trường hợp ghi vào CGRAM không được khảo sát.

Kế đến là nhóm lệnh màu xanh : nhóm lệnh này thường chỉ thực hiện 1 lần (ít nhất là trong bài học này) và thường được viết chung trong 1 chương trình con khởi động LCD ( chúng ta gọi là init_LCD trong bài học này).

Entry mode set : xác lập các hiện thị liên tiếp cho LCD: nói một cách dễ hiểu, lệnh này chỉ ra cách mà bạn muốn hiển thị một ký tự tiếp theo 1 ký tự trước đó. Ví dụ nếu bạn muốn hiện thị 2 ký tự liên tiếp AB, trước hết bạn viết A tại vị trí 5, dòng 1. Sau đó bạn ghi B vào LCD, lúc này có 4 cách mà LCD có thể hiển thị B như sau: hiển thị B bên phải A tại vị trí số 6 (cách 1) B cũng có thể được hiển thị bên trái A, tại vị trí số 4(cach 2) hoặc LCD có thể tự dịch chuyển A về bên trái đến vị trí 4 sau đó hiển thị B bên phải A, tại vị trí 5 (cách 3) và khả năng cuối cùng là LCD dịch chuyển A về bên phải đến vị trí 6 sau đó hiển thị B bên trái A, tại vị trí 5 (cách 4). Chúng ta có thể chọn 1 trong 4 cách hiển thị trên thông qua lệnh Entry mode set. Đây là lệnh ghi Instruction nên RS=0, 5 bit cao D7:3=00000, bit D2=1, hai bit còn lại D1:0 chứa mã lệnh để lựa chọn 1 trong 4 cách hiển thị. Xem lại bảng 2, bit D1 chứa giá trị I/D và D0 chứa S. Trong đó I/D nghĩa là tăng hoặc giảm (Increment or Decrement). I/D= 1 là hiển thị tăng tức ký tự sau sẽ hiển thị bên phải ký tự trước, nếu I/D=0 thì hiển thị giảm, tức ký tự sau hiển thị bên trái; ký tự trước. S là giá trị Shift, nếu S=1 thì các ký tự trước đó sẽ được đẩy đi, ký tự sau chiếm chỗ ký tự trước, ngược lại nếu S=0 thì vị trí hiển thị của các ký tự trước đó không thay đổi. Có thể tóm tắt 4 mode hiển thị ứng với 4 mã lệnh như sau:

+ D7:0 = 0x04 (00000100: hiển thị giảm và không shift (như cách 2trong ví dụ).

+ D7:0 = 0x05 (00000101) : hiển thị giảm và shift (như cách 4trong ví dụ).

36

Page 38: Modul Mach Bao Dong

+ D7:0 0x06 (00000110) : hiển thị tăng và không shift (như cách 1 khuyến khích )

+ D7:0 = 0x07 (00000111) : hiển thị tăng và shift (như cách 3trong ví dụ).

- Display on/off control : xác lập cách hiện thị cho LCD: lệnh này bao gồm các thông số cho phép LCD hiển thị, cho phép hiển thị cursor và mở/tắt blinking. Đây cũng là một lệnh ghi Instrcution nên RS phải bằng 0. Mã lệnh cho lệnh này có dạng  00001DCB trong đó D (Display) cho phép hiển thị LCD nếu mang giá trị 1, C (Cursor) bằng 1 thì cursor sẽ được hiển thị và B là blinking cho cursor tại vị trí hiển thị (blinking là dạng 1 ô đen nhấp nháy tại vị trí ký tự đang hiển thị). Mã lệnh được dùng phổ biến cho lệnh này là 0x0E (00001110 - hiển thị cursor nhưng không hiển thị blinking)

- Function set: xác lập chức năng cho LCD: đây là lệnh thiết lập phương thức giao tiếp với LCD, kích thước font chữ và số lượng line của LCD. RS cũng phải bằng 0 khi sử dụng lệnh này. Mã lệnh function set có dạng 001DLNFxx. Trong đó nếu DL=1 (DL: Data Length) thì mode giao tiếp 8 bit sẽ được dùng, lúc này tất cả các chân từ D0 đến D7 phải được kết nối với bộ điều khiển ngoài. Nếu DL=0 thì mode 4 bit được dùng, trong trường hợp này chỉ có 4 chân D4:7 được dùng để truyền nhận dữ liệu và kết nối với bộ điều khiển ngoài, các chân D0:3 được để trống. N quy định số dòng của LCD, vì chúng ta đang khảo sát LCD loại hiển thị 2 dòng nên N=1 (N=0 cho trường hợp LCD 1 dòng). F là kích thước font chữ hiển thị, do LCD có 2 bộ font chữ có sẵn trong CGROM nên chúng ta cần lựa chọn thông qua bit F, nếu F=1 bộ font 5x10 được sử dụng và nếu F=0 thì font 5x8 được hiển thị. 2 bit thấp trong mã lệnh này có thể được gán giá trị tùy ý. Mã lệnh được dùng phổ biến cho lệnh function set là 0x38 (00111000 – giao tiếp 8 bit, 2 dòng với font 5x8 ) hoặc 0x28 (00101000 – giao tiếp 4 bit, 2 dòng với font 5x8 ). Ví dụ trong bài này sử dụng cả 2 mã lệnh trên.

3.3 Giao tiếp 8 bit và 4 bit

Như trình bày trong lệnh function set, có 2 mode để ghi và đọc dữ liệu vào LCD đó là mode 8 bit và mode 4 bit:

Mode 8 bit : Nếu bit DL trong lệnh function set bằng 1 thì mode 8 bit được dùng. Để sử dụng mode 8 bit, tất cả các lines dữ liệu của LCD từ D0 đến D7 (từ chân 7 đến chân 14) phải được nối với 1 PORT của chip điều khiển bên ngoài (ví dụ PORTC của ATmega32 trong ví dụ của bài này) như trong hình 3. Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi và đọc rất nhanh và đơn giản vì chip điều khiển chỉ cần xuất hoặc nhận dữ liệu trên 1 PORT. Tuy nhiên, phương pháp này có nhược điểm là tổng số chân dành cho giao tiếp LCD quá nhiều, nếu tính luôn cả 3 chân điều khiển thì cần đến 11 đường cho giao tiếp LCD.

37

Page 39: Modul Mach Bao Dong

Mode 4 bit : LCD cho phép giao tiếp với bộ điều khiển ngoài theo chế độ 4 bit. Trong chế độ này, các chân D0, D1, D2 và D3 của LCD không được sử dụng (để trống), chỉ có 4 chân từ D4 đến D7 được kết  nối với chip bộ điều khiển ngoài. Các instruction và data 8 bit sẽ được ghi và đọc bằng cách chia thành 2 phần, gọi là các Nibbles, mỗi nibble gồm 4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được xử lí trước và nibble thấp sau. Ưu điểm lớn nhất của phương pháp này tối thiểu số lines dùng cho giao tiếp LCD. Tuy nhiên, việc đọc và ghi từng nibble tương đối khó khăn hơn đọc và ghi dữ liệu 8 bit. Trong bài học này, tôi sẽ trình bày 2 chương trình con được viết riêng để ghi và đọc các nibbles gọi là Read2Nib và Write2Nib.

C. Modul nguồn

Trong một hệ thống nguồn đóng vai trò cực kì quan trọng , sự ổn định của nguồn đảm bảo cho các linh kiện luôn luôn được an toàn , trong hệ thống báo động này LM7805 được sử dung để dảm bào nguồn oonr định ở mức 5v cho hệ thống

Mạch trên lấy nguồn một chiều từ một máy biến áp với điện áp từ 7V đến 9V để đưa vào ngõ IN. Khi kết nối mạch điện, do nhiều nguyên nhân, người dùng dễ nhầm lẫn cực tính của nguồn cung cấp khi đấu nối vào mạch, trong trường hợp này rất dễ ảnh hưởng đến các linh kiện trên board mạch. Vì lí do đó một diode cầu được lắp thêm vào mạch, diode cầu đảm bảo cực tính của nguồn cấp cho mạch theo một chiều duy nhất, và nguời dùng cũng không cần quan tâm đến cực tính của nguồn khi nối vào ngõ IN nữa.      IC 7805 là IC ổn áp, IC này giữ ngõ ra ổn định trong khoảng 5V. Ngõ ra này chính là nguồn Vcc để cung cấp cho mạch vi điều khiển hoạt động, đồng thời ngõ ra sau khi ổn áp còn được nối với hai đầu xuất OUT cấp nguồn này cho một mạch khác khi cần.

D. Modul laser cảm biến quang

38

Page 40: Modul Mach Bao Dong

Chức năng của nó là cảm nhận sự thay đổi của ánh sáng và xuất ra mức 0 hoặc mức 1 cho đầu vào của 89C51.Khối cảm biến gồm 1 khuếch đại thuật toán LM324, 2 điện trở ,1 quang trở.

Nguyên tắc hoạt động: Đầu 2 của khuếch đại thuật toán sẽ nhận điện áp là 2,5 V do ta phân áp bằng 2 điện trở có trị số bằng nhau.Còn đầu 3 của khuếch đại thuật toán sẽ có điện áp thay đổi tùy thuộc vào điện trở của qung trở.Quang trở có thể thay đổi điện trở của nó từ 3k Ohm đến 150k Ohm.

Khi có ánh sáng thì điện áp sụt trên quang trở nhỏ,do đó điện áp trên cực 3 của Opamp nhỏ hơn điện áp trên cực 2 của Opamp,và đầu ra 1 của nó sẽ ở mức 0 (0V).

Khi ánh sáng bị ngắt thì điện áp sụt trên quang trở lớn,do đó thì diện áp trên P sẽ lớn hơn điện áp trên N,đầu ra của Opamp sẽ ở mức 1 (5V).

Để đảm bảo cấp dòng liên tục và ổn định cho laser thì ta ko dùng pin có sẵn mà dùng ngồn ổn định của mạch như trên

E. Khóa từ và cảm biến chuyển động

1. Cảm biến chuyển động

Thông tin chung

Modul Cảm biến chuyển động  là một một mudule cảm biến chuyển động pyroelectricity (pyroelectric sensor module), được phát triển để phát hiện cơ thể người, Một cảm biến PIR kết hợp với một ống kính Fresnel được gắn trên một PCB kích thước nhỏ gọn cùng với một IC Analog và các linh kiện khác để tạo thành một Module hoàn chỉnh. đầu ra mức cao và độ rộng xung có thể thay đổi được.

39

Page 41: Modul Mach Bao Dong

Cac tính năng va thông số kỹ thuật

Kích thước nhỏ gọn:  27 x 40 mm

Đầu ra socket 3-pin, dây dài 20cm

Nguồn cung cấp: 5V-20V DC (Có thể thiết kế từ 3V-24V)

Điện áp đầu ra: mức tín hiệu High/Low 3.3V

Ngõ ra tương thích TTL

Độ nhạy cao

Thời gian trễ: 0.5s đến 18 phút, có thể điều chỉnh được bằng biến trở có sẵn hoặc thay thế linh kiện R, C

Thời gian ức chế: 0.5s đến 50s (chấp nhận 0s)

Nhiệt độ làm việc: 15 đến 70 độ C

Cảm biến hồng ngoại: 2 yếu tố, độ nhiễu thấp, độ nhạy cao

Cảm biến ánh sáng: CdS photocell (Có sẵn chỗ, có thể gắn thêm theo yêu cầu của khách hàng)

Lưu ý khi sử dụng: Do tính nhạy cảm cao của cảm biến PIR, không mên sử dụng PIR module trong các điều kiện (hoặc tương tự) sau:

Môi trường thay đổi đột ngột

Bị sốc hoặc rung động

Tại nơi có vật liệu cản trở (ví dụ như thủy tinh) mà nơi đó hồng ngoại không thể vượt qua trong khu vực phát hiện

Tiếp xúc trực tiếp với gió từ máy sưởi hoặc máy điều hòa không khí

2. Khóa từ

40

Page 42: Modul Mach Bao Dong

Khóa từ chỉ là một khóa bình thường đóng mở dưới tác dụng của từ trường

II. PHẦN MỀM

Chương trình viết cho chíp được lập trình bằng ngôn ngữ c sử dụng chương trình keil để biên dịch chương trình

Sau đây là toàn bộ code sử dụng cho mạch /*====================================================================================

ĐỒ ÁN : ĐO LƯỜNG VÀ ĐIỀU KHIỂN TỰ ĐỘNG

TÊN ĐỀ TÀI : HỆ THỐNG CHỐNG TRỘM BA TẦNG

GIÁO VIÊN HƯỚNG DẪN : PHAN HẢI PHONG

SINH VIÊN THỰC HIỆN : NGUYỄN TÂM TUẤN

LÊ NGỌC TÂN

HOÀNG TRỌNG VIỆT

LỚP ĐIỆN TỬ VIỄN THÔNG K32

ĐẠI HỌC KHOA HỌC , ĐẠI HỌC HUẾ

HUẾ NGÀY 28-04-2012

======================================================================================*/

#include<reg52.h>

#include <stdio.h>

sbit d1 = P3^0 ;

sbit d2 = P3^1 ;

sbit loa = P3^3es;

41

Page 43: Modul Mach Bao Dong

sbit cambien = P1^7;

sbit pir = P1^5 ;

sbit khoatu = P1^6 ;

sbit tat =P3^2;

sbit RS_LCD = P1^4;

sbit RW_LCD = P1^3;

sbit E_LCD = P1^2;

unsigned int temp_res,a=0,b,e=0,l,o,i,j, temp_fraction,w1,w2,w3,w4,q ;

unsigned int u=0;

//---------------SAU DAY LA CAC CHUONG TRINH CON------------//

void hienthi(unsigned int i)

{

if(i==0) P2=192;

if(i==1) P2=207;

if(i==2) P2=164;

if(i==3) P2=134;

if(i==4) P2=139;

if(i==5) P2=146;

if(i==6) P2=144;

if(i==7) P2=199;

if(i==8) P2=128;

if(i==9) P2=130;

}

42

Page 44: Modul Mach Bao Dong

void delayms(unsigned int t)

{

unsigned int j;

for(j=0;j<t;j++);

}

void xuat()

{ for(i=0;i<=240;i++)

{

d1=0;

hienthi(b);d2=1;delayms(200);d2=0;

hienthi(l);d1=1;delayms(200);

}

}

void caidat()

{

TMOD = 0x02; // timer 0 auto reload

TH0 = -250; // 250 uS each segment

TR0 = 1; // start timer 0

ET1=1;

EA = 1; // enable interrupt system

}

//---------------CHUONG TRINH CON HIEN THI LCD------------//

43

Page 45: Modul Mach Bao Dong

//--------------Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban---------------//

void delay_short()

{

unsigned int i;

for(i=0;i<3;i++);

}//--------------****------------------//

//------------Ham tre 2---------------//

void delay(unsigned int time) // Thoi gian time ms

{

TMOD = 0x01; // Timer 0 che do 1

while (time--)

{

TH0 = -1000/256;

TL0 = -1000%256;

TR0 = 1;

while (!TF0);

TR0 = 0;

TF0 = 0;

}

}

//-----------------******----------------//

44

Page 46: Modul Mach Bao Dong

//--------------Ham kiem tra co ban (busy_flag)--------------??

void kt_ban()

{

unsigned char x;

P0 = 0xff;

RS_LCD = 0;

RW_LCD = 1;

do

{

E_LCD = 1;

delay(50);

E_LCD = 0;

x=P0;

x=x&0x80;

}

while(x!=0x80);

}//-----------*******--------------------//

//---------------Ham ghi lenh giao tiep voi LCD---------------//

void ghi_lenh(unsigned char lenh)

{

kt_ban();

delay(50);

P0 = lenh;

45

Page 47: Modul Mach Bao Dong

RS_LCD = 0; // Chon thanh ghi lenh

RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCD

E_LCD = 1;

delay_short();

E_LCD = 0;

}//------------*******-----------------//

//-----------Ham ghi ky tu ra LCD------------//

void ghi_kytu(unsigned char kytu)

{

kt_ban();

delay(50);

P0 = kytu;

RS_LCD = 1; // Chon che do doc du lieu tu 8051

RW_LCD = 0;

E_LCD =1;

delay_short();

E_LCD = 0;

}//------------*******-----------------//

//-----------Ham ghi nhanh ky tu ra LCD------------//

void ghi_nhanh ( unsigned char kytu)

{

delay_short();

46

Page 48: Modul Mach Bao Dong

P0 = kytu;

RS_LCD = 1;

RW_LCD = 0;

E_LCD = 1;

delay_short();

E_LCD = 0;

}//--------------***********-------------//

//-----------Ham ghi chuoi ky tu ra LCD------------//

void ghi_chuoi(char *str)

{

while(*str)

{

delay(50);

ghi_kytu(*str);

str++;

}

}//-----------********------------//

//-----------Ham ghi nhanh chuoi ky tu ra LCD------------//

void ghi_nhanh_chuoi(char *str)

{

while(*str){

47

Page 49: Modul Mach Bao Dong

ghi_nhanh(*str);

str++;

}

}

//-----------************------------//

//-----------Ham ghi so nguyen ra LCD------------//

void ghi_so_nguyen(unsigned char so)

{

unsigned char a,b,c;

a=so/100; // Lay phan tram

b=(so-100*a)/10; // Lay phan chuc

c=(so-100*a-10*b); // Lay phan don vi

ghi_nhanh(a+48); // Doi ra hang tram, ma ascii

ghi_nhanh(b+48); // Doi ra hang chuc, ma ascii

ghi_nhanh(c+48); // Doi ra hang don vi, ma ascii

}

//-----------***********------------//

//-----------Ham khoi tao LCD------------//

void setting_LCD()

{

ghi_lenh(0x38);

ghi_lenh(0x01); // Xoa man hinh

48

Page 50: Modul Mach Bao Dong

ghi_lenh(0x0f); // Co dich hien thi

}

//-----------**********------------//

//----------- KET THUC CHUONG TRINH CON------------//

//----------- CHUONG TRINH CHINH ------------//

void main() {

loa=1;

cambien=0;

pir=0;

khoatu=0;

caidat();

setting_LCD();

while((khoatu|pir|cambien)==0)

{

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi("DO AN : DO LUONG");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi(" D.KHIEN TU DONG");

delay(200);

49

Page 51: Modul Mach Bao Dong

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" GVHD :");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi(" PHAN HAI PHONG");

delay(200);

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" SVTH : T.TUAN ");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi(" N.TAN, T.VIET ");

delay(200);

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" LOP : DTVT K32");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi("DAI HOC KHOA HOC");

delay(200);

}

while(1)

50

Page 52: Modul Mach Bao Dong

{

if(cambien==1||pir==1||khoatu==1)

{

if(cambien==1)

{

loa=0;

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" CO KE XAM NHAP");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi(" TRONG VUNG LAZE");

}

if(pir==1)

{

loa=0;

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" CO KE XAM NHAP");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

51

Page 53: Modul Mach Bao Dong

ghi_chuoi(" TRONG VUNG PIR");

}

if(khoatu==1)

{

loa=0;

ghi_lenh(0x01);

ghi_lenh(0x0c);

ghi_chuoi(" CO KE XAM NHAP ");

ghi_lenh(0xc0);

ghi_lenh(0x0c);

ghi_chuoi(" QUA CUA CHINH ");

}

do {

ET0=1;

l=a/10;

b=a%10;

xuat();

delayms(1000);

a++;

if(a==21)

{

a=0;

P2=192;

52

Page 54: Modul Mach Bao Dong

d1=d2=1;

loa=1;

ET0=0;

break;

}

if(tat==0)

{ a=0;

P2=192;

d1=d2=1;

loa=1;

ET0=0;

break;

}

}

while(1);

}

}

}

III. NGUYÊN TẮC HOAT ĐỘNG

Để hệ thống hoạt động ổn định cần cấp nguồn ,và nguồn dùng cho mạch là pin 9v sau khi qua hệ thống ổn áp nguồn của mạch thì mức áp tồn tại trong mạch sẽ ổn định ở mức 5 v, hệ thống sẽ kích hoạt báo động trong các trường hợp sau

53

Page 55: Modul Mach Bao Dong

- Đối với khóa từ , 1 thanh có nhiểm từ sẽ được đặt ở mép cửa , còn phần khóa sẽ được gắn dối diện phía bên tường , một lúc của bị mở ra , tác dụng từ lên khóa ko còn luz này khóa sẽ đóng và mức điện áp 5v sẽ được đưa về chân vi điều khiển qua quá trình xử lý vi điều khiển sẽ xuất tín hiệu loa có tác dụng báo động , xuất ra LCD với nội dung “ Có kẻ lạ đi qua cổng chính “ , đồng thời xuất tín hiệu ra 2 led 7 đoạn để duy trì trạng thái báo động trong 20s

- Đối với modul laser , bình thường laser lun chiếu vào quang trở chức năng của nó là cảm nhận sự thay đổi của ánh sáng và xuất ra mức 0 hoặc mức 1 cho đầu vào của 89C51.Khối cảm biến gồm 1 khuếch đại thuật toán LM324, 2 điện trở ,1 quang trở.

Nguyên tắc hoạt động: Đầu 2 của khuếch đại thuật toán sẽ nhận điện áp là 2,5 V do ta phân áp bằng 2 điện trở có trị số bằng nhau.Còn đầu 3 của khuếch đại thuật toán sẽ có điện áp thay đổi tùy thuộc vào điện trở của qung trở.Quang trở có thể thay đổi điện trở của nó từ 3k Ohm đến 150k Ohm.

Khi có ánh sáng thì điện áp sụt trên quang trở nhỏ,do đó điện áp trên cực 3 của Opamp nhỏ hơn điện áp trên cực 2 của Opamp,và đầu ra 1 của nó sẽ ở mức 0 (0V). Khi ánh sáng bị ngắt thì điện áp sụt trên quang trở lớn,do đó thì diện áp trên P sẽ lớn hơn điện áp trên N,đầu ra của Opamp sẽ ở mức 1 (5V). lúc này hệ thống báo động sẽ được kích hoạt , nội dung hiển thị trên LCD sẽ là “ Có kẻ lạ đi qua vung laser “- Đối với cảm biến chuyển động : modul cảm biến chuyển đọng là 1 mạch tích hợp nó sẽ cho mức tin hiệu logic 1 nếu có bất kì chuyển động nào trong vùng nó kiểm soát , tín hiệu được đưa về vi xử lý để kích hoạt hệ thống báo động nội dung hiển thị trên LCD sẽ là “ có kẻ lạ đi qua vùng PIR

Trong khoảng thời gian bất kì nào trong 20 s khi hệ thống báo động kích hoạt ta có thể dừng hệ thống báo động lại bằng công tắt loa

IV. HƯƠNG PHÁT TRIỂN ĐỀ TÀI

Đề tài này sau khi hoàn thiện nhìn chung hoạt động ổn định nhưng vẫn còn tồn tại 1 số hạn chế như hệ thống này cảnh báo hiệu quả đối với những nhà luôn có người thường trực trong căn nhà chứ khi nhà ko có ai thì hệ thống này coi như ko tồn tại cho dù có phát hiện đi chăng nữa , qua những hạn chế đó nên hướng phát triển của đề tài sè là hệ thống chống trộm kết nối với hệ thống điện thoại , lúc phát hiện kẻ lạ ko những hệ thống chỉ báo động mà còn tự gọi cho chủ nhân của ngôi nhà , cho dù đi bất cứ đâu chủ nhân của ngôi nhà vẫn có thể kiểm soát được ngôi nhà của mình

TÀI LIỆU THAM KHẢO

54

Page 56: Modul Mach Bao Dong

[1].Tống Văn ơn , Hoàng Đức Hải. Họ vi điều khiển 8051. NXB Lao động- Xã hội, 2001

[2]. Lập trình C với 8051 ( DKS_GROUP )

[3]. Minhdt.com

[4]. Machdientu.net

[5]. Dientuvietnam.net

[6]. Tme.com.vn

.

.

.

.

55