khoa dien tu.docx

82
ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CN ĐIỆN TỬ - THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHIỆM VỤ THIẾT KẾ TỐT NGHIỆP Họ và tên giáo viên hớng dẫn: ......................................................... .......... ………................... Họ và tên sinh viên: ........................................................ ........... Ngày sinh:............................. Lớp:..................................... Khóa: ...................................Ngành học:...................................... 1. Tên đề tài tốt nghiệp: .............................................................. .............................................................. ........................... .............................................................. .............................................................. ........................... 2. Các số liệu ban đầu: .............................................................. .............................................................. ........................... 1 Mẫu số 10

Upload: bui-duc-manh

Post on 05-Feb-2016

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: khoa dien tu.docx

ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA CN ĐIỆN TỬ - THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

NHIỆM VỤ THIẾT KẾ TỐT NGHIỆP

Họ và tên giáo viên hớng dẫn: ................................................................... ………...................

Họ và tên sinh viên: ................................................................... Ngày sinh:.............................

Lớp:..................................... Khóa: ...................................Ngành học:......................................

1. Tên đề tài tốt nghiệp:

.......................................................................................................................................................

.......................................................................................................................................................

2. Các số liệu ban đầu:

.......................................................................................................................................................

.......................................................................................................................................................

.......................................................................................................................................................

3. Nội dung các phần lý thuyết và tính toán:

.......................................................................................................................................................

.......................................................................................................................................................

.......................................................................................................................................................

.......................................................................................................................................................

4. Các bản vẽ và đồ thị:

.......................................................................................................................................................

5. Ngày giao nhiệm vụ thiết kế :

...............................................................................................................................................

6. Ngày hoàn thành nhiệm vụ thiết kế:

.............................................................................................................................................

CHỦ NHIỆM KHOA GIÁO VIÊN HỚNG DẪN

SINH VIÊN ĐÃ HOÀN THÀNH ĐỒ ÁN

1

Mẫu số 10

Page 2: khoa dien tu.docx

LỜI NÓI ĐẦU

Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người ngày càng

trở nên tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải pháp tốt hơn, đa

dạng hơn trong việc xử lý những vấn đề tưởng chừng phức tạp trong cuộc sống. Việc ứng

dụng các thành tựu khoa học kỹ thuật hiện đại trong tất cả các lĩnh vực đã và đang phổ biến

trên toàn thế giới, thay thế dần các phương pháp thủ công, lạc hậu, và ngày càng được cải tiến

hiện đai hơn, hoàn mỹ hơn.

Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công nghiệp hóa và

hiện đại hóa đất nước để theo kịp sự phát triển của các nước trong khu vực và trên thế giới.

Trong đó lĩnh vực điện tử ngày càng đóng vai trò quan trọng trong việc phát triển kinh tế và

đời sống con người. Sự phổ biến của nó đóng góp không nhỏ tới sự phát triển của các nghành

sản xuất, đặc biệt là trong lĩnh vực tự động hóa, nó đã phát triển mạnh mẽ với nhiều hình

thức, phương pháp tiếp cận, chia sẻ thông tin hiện đại và toàn diện hơn. Cùng với đó, vi xử lý

và vi điều khiển ngày càng phát triển như vũ bão, vai trò của chúng trong công nghiệp và

cuộc sống thường ngày cũng càng trở nên quan trọng.

Với sự phát triển đó cùng với niềm đam mê trong lĩnh vực này, chúng em quyết định

chọn đề tài XÂY DỰNG HỆ THỐNG BÁO CHÁY VÀ KHÓA ĐIỆN TỬ làm đề tài tốt

nghiệp.

Trong thời gian thực hiện đề tài chúng em đã rất nỗ lực nhưng chắc chắn sẽ không

tránh khỏi những thiếu sót, chúng em rất mong được sự đóng góp phê bình từ phía thầy cô.

Nhóm sinh viên thực hiện đề tài

2

Page 3: khoa dien tu.docx

LỜI CẢM ƠN

Trong thời gian thực hiện đề tài, dù gặp nhiều khó khăn nhưng chúng em đã

hoàn thành đề tài, đó không chỉ là sự nỗ lực của chính chúng em là những người thực

hiện đề tài này mà còn kể đến sự giúp đỡ tận tình của thầy cô, bạn bè. Nhóm thực hiện

đề tài xin chân thành gửi lời cảm ơn đến các quý thầy cô trong khoa công nghệ điện

tử- thông tin đã nhiệt tình giảng dạy những kiến thức chuyên môn làm cơ sở để chúng

em thực hiện tốt đồ án tốt nghiệp.

Đặc biệt chúng em xin gửi lời cảm ơn sâu sắc nhất đến thầy Nguyễn Hoàng

Dũng- giảng viên hướng dẫn đề tài đã nhiệt tình giúp đỡ và chỉ dậy cho chúng em

những lời chỉ dạy quý báu, đã giúp chúng em có những định hướng tốt nhất cho việc

thực hiện đề tài.

Nhóm sinh viên thực hiện đề tài

3

Page 4: khoa dien tu.docx

MỤC LỤCTÓM TẮT ĐỒ ÁN.........................................................................................................................5

CHƯƠNG 1:..................................................................................................................................6

GIỚI THIỆU ĐÊ TÀI....................................................................................................................6

I. Chọn đề tài:........................................................................................................................6

II. Chức năng của mạch:.....................................................................................................6

III. Yêu cầu:..........................................................................................................................6

CHƯƠNG 2:..................................................................................................................................7

SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG...........................................................................7

I. Nguyên tắc thiết kế:............................................................................................................7

1. Hệ thống báo cháy:.........................................................................................................7

2. Khóa điện tử:..................................................................................................................7

II. Sơ đồ khối:......................................................................................................................8

III. Khối trung tâm:..............................................................................................................9

3.1 Chức năng:..................................................................................................................9

3.2 Linh kiện sử dụng:......................................................................................................9

IV. Khối cảm biến:..............................................................................................................13

1. Chức năng:....................................................................................................................13

2. IC cảm biến nhiệt Lm35:..............................................................................................14

V. Khối giao tiếp người dùng:...............................................................................................16

1. Chức năng:....................................................................................................................16

2. Linh kiện sử dụng:........................................................................................................16

VI. Khối hiển thị nhiệt độ:..................................................................................................21

6.1 Khối giải mã:.............................................................................................................21

6.2 Khối hiển thị:.............................................................................................................23

VII. Khối thực thi:................................................................................................................25

VIII. Khối nguồn:...............................................................................................................25

8.1 Hoạt động:.................................................................................................................25

8.2 Linh kiện ổn áp Lm7805:..........................................................................................26

CHƯƠNG 3:................................................................................................................................27

LẬP TRÌNH ĐIỀU KHIỂN.........................................................................................................27

I. Giải thuật chương trình:...................................................................................................27

1. Hiển thị Led:.................................................................................................................27

4

Page 5: khoa dien tu.docx

2. Hiển thị LCD:...............................................................................................................30

3. Ma trận phím:...............................................................................................................31

4. Chuyển đổi tương tự số( ADC):....................................................................................32

CHƯƠNG 4:................................................................................................................................35

THI CÔNG MẠCH......................................................................................................................35

I. Thiết kế mạch in trên phần mềm ORCAD:......................................................................35

1. Giới thiệu về Orcad:......................................................................................................35

2. Vẽ mạch nguyên lý bằng Capture:................................................................................35

3. Vẽ mạch in bằng Layout:..............................................................................................41

4. Hoàn thiện mạch:..........................................................................................................49

CHƯƠNG 5:................................................................................................................................50

CODE Chương Trình..................................................................................................................50

1.Code chương trình cảm biến nhiệt độ và hiển thị lên led 7 đoạn :.........................................50

2.Code khóa phím điện tử :......................................................................................................52

CHƯƠNG 6:................................................................................................................................60

KẾT QUẢ THỰC HIỆN..............................................................................................................60

TÀI LIỆU THAM KHẢO:...........................................................................................................61

5

Page 6: khoa dien tu.docx

TÓM TẮT ĐỒ ÁN

Kỹ thuật vi xử lý hiện nay đang rất phát triển, so với kĩ thuật số thì kỹ thuật vi xử lý nhỏ gọn hơn rất nhiều , do nó được tích hợp lại và được lập trình để điều khiển.

Với tính ưu việt của vi xử lý thì trong phạm vi đồ án nhỏ này , nó được ứng dụng trong việc điều khiển chuyển đổi tín hiệu tương tự sang tín hiệu số , giao tiếp với bàn phim 4x4 ,hiển thị trên LCD và LED 7 đoạn

Thiết kế mạch đo cảm biến nhiệt độ dải từ 00 đến 990 hiển thị số.

giao tiếp với bàn phím 4x4 cho phép nhập mật khẩu và kiểm tra mật khẩu được lưu trong bộ nhớ eeprom hiển thị trên màn hình LCD 16x2

Viết chương trình và thiết lập phần cứng để đáp ứng các yêu cầu trên

6

Page 7: khoa dien tu.docx

CHƯƠNG 1:

GIỚI THIỆU ĐÊ TÀI

I. Chọn đề tài:

Trong đời sống thường ngày cũng như trong sản xuất, việc đo nhiệt độ ngày

càng được đề cập nhiều, sự ra đời của các mạch điện tử đo nhiệt độ là cần thiết.

Vi điều khiển ra đời giúp con người có thể đo nhiệt độ một cách chính xác, tin

cậy hơn.

Cùng với đó, việc đảm bảo an ninh cũng là một vấn đề đáng để chúng ta quan

tâm, khóa điện tử khai thác chức năng lập trình từ vi điều khiển góp phần hiện

đại hóa khả năng thiết lập an ninh cũng như nâng tầm quan trọng của tự động

hóa trong sản xuất cũng như cuộc sống đời thường.

Với sự phát triển cùng niểm đam mê trong lĩnh vực này, chúng em chọn đề tài

tốt nghiệp là : “XÂY DỰNG HỆ THỐNG BÁO CHÁY VÀ KHÓA ĐIỆN TỬ”

II. Chức năng của mạch:

Khóa điện tử: yêu cầu nhập mật khẩu từ keypad, nếu mật khẩu đúng thì đèn led

sáng( mở cửa), nếu mật khẩu sai thì đèn led không sáng( cửa vẫn đóng).

Hệ thống báo cháy: nhiệt độ vượt quá 70oC thì đèn led sáng( cảnh báo cháy).

III. Yêu cầu:

1. Yêu cầu về chức năng:

Mạch hoạt động đầy đủ chức năng đặt ra.

Hoạt động ổn định.

2. Yêu cầu phi chức năng: chi phí vừa phải, tính thẩm mỹ cao.

7

Page 8: khoa dien tu.docx

CHƯƠNG 2:

SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG

I. Nguyên tắc thiết kế:

1. Hệ thống báo cháy:

Đo nhiệt độ môi trường và hiển thị lên led 7 thanh.

Lập trình: dùng cảm biến nhiệt độ độ lên Led 7 thanh và báo động nếu nhiệt độ

vượt mức cho phép thì sẽ có tín hiệu thông báo trong đồ án là led sáng

2. Khóa điện tử:

Khi sử dụng ( mở khóa ) thì người sử dụng được yêu cầu nhập mật khẩu, giao

tiếp giữa người dùng với hệ thống thông qua bàn phím điều khiển và hiển thị

trên màn hình LCD.

Lập trình:

Khi người dùng nhập mật khẩu:

Hệ thống so sánh mật khẩu vừa nhập với mã ( mã này đã được thiết lập trước).

o Nếu mật khẩu đúng( khớp với mã) thì cửa sẽ mở. Trong đề tài này việc mở cửa

mô phỏng bằng việc Led sáng.

o Nếu mật khẩu sai thì không có gì xảy ra tức của vẫn đóng, tương ứng Led không

sáng và yêu cầu nhập lại mật khẩu.

8

Page 9: khoa dien tu.docx

Khối trung tâm

Khối nguồn

Khối hiển thị nhiệt độ

Khối cảm biến

Khối thực thi

Khối giao tiếp người dùng

II. Sơ đồ khối:

Khối cảm biến nhận nhiệt độ từ môi trường bên ngoài chuyển thành mức điện áp

DC tương ứng và đưa tín hiệu tương tự này tới khối trung tâm( cụ thể là tới bộ

ADC -chuyển đổi tương tự/ số được tích hợp trong chip Atmega32). Atmega32

nhận tín hiệu tương tự và chuyển đổi nó sang tín hiệu số, tín hiệu số được đưa ra

khối hiển thị nhiệt độ và khối thực thi.

Khối giao tiếp người dùng: giao tiếp với người dùng bằng keypad và màn hình

LCD, thông qua việc cho phép nhập mật khẩu để mở cửa qua keypad và hiển thị

trên màn hình LCD.

Khối thực thi: mô phỏng bằng 2 đèn Led.

o Nhận tín hiệu điều khiển từ khối trung tâm để điều khiển sáng hoặc tắt Led,

trong thực tế việc sáng, tắt led có thể hiểu là việc đóng mở cửa. Mật khẩu nhập

đúng thì đèn led sáng( mở cửa), mật khẩu nhập sai thì đèn led không sáng( cửa

vẫn đóng).

o Nếu nhiệt độ vượt mức cho phép thì đèn Led sẽ sáng( báo động)

9

Page 10: khoa dien tu.docx

Khối hiển thị nhiệt độ:

o Khối hiển thị nhiệt độ gồm 2 khối con: khối giải mã và khối hiển thị.

o Khối nhận tín hiệu từ khối trung tâm, giải mã và hiển thị nhiệt độ lên led 7 thanh

đôi.

III. Khối trung tâm :

III.1 Chức năng :

Khối trung tâm sử dụng chip vi điều khiển Atmega32, khối được kết nối với các

khối khác và làm nhiệm vụ trung tâm xử lý tín hiệu.

III.2 Linh kiện sử dụng :

AVR là một họ vi điều khiển do hãng Atmel sản xuất ( Atmel cũng là nhà sản

xuất dòng vi điều khiển 89C51 ).AVR là chip vi điều khiển 8 bít với cấu trúc tập

lệnh đơn giản hóa - RISC (Reduced Instruction Set Computer), một kiểu cấu trúc

đang thể hiện ưu thế trong các bộ vi xử lý

Tại sao AVR : so với các chip vi điều khiển 8 bits khác , AVR có nhiều đặc tính

hơn hẳn , hơn cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng :

Gần như chúng ra không cần mắc thêm bất kì linh kiện phụ

nào khí sử dụng avr , thâm chí không cần nguồn tạo xung

clock cho chip (thường là các khối thạch anh)

Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản , có loại

mạch nạp chỉ cần vài điện trở là có thể làm được , một số

AVR còn hỗ trợ lập trình on_chip bằng bootloader không cần

mạch nạp

bên cạnh lập trình bằng ASM , cấu trúc AVR được thiết kế

tương thích C

Nguồn tài nguyên về source code , tài liệu , application note..

rất lớn trên internet

Khối trung tâm sử dụng vi điều khiển Atmega32:10

Page 11: khoa dien tu.docx

Atmega32 là vi điều khiển thuộc họ AVR của hãng Atmel, có 40 chân trong đó

có 32 chân I/O, sử dụng thạch anh ngoài 8Mhz.

Nhân AVR kết hợp tập lệnh đầy đủ với 32 thanh ghi đa năng. Tất cả thanh ghi

liên kết trực tiếp với khối xử lý số học và logic ALU, cho phép hai thanh ghi độc

lập được truy cập trong một lệnh đơn trong một chu kỳ đồng hồ , kết quả là tốc

độ của nó nhanh gấp 10 lần tốc độ của các vi điều khiển CISC thường.

Sơ đồ kiến trúc bên trong của Atmega32:

Các tính năng của Atmega32:

Atmega32 là loại vi điều khiển 8 bit công suất thấp, hiệu suất cao.

Cấu trúc tập lệnh RISC, là cấu trúc tập lệnh đơn giản hóa:

o 131 lệnh thực thi trong vòng 1 chu kỳ chip.

o 32x8 thanh ghi công dụng chung.

11

Page 12: khoa dien tu.docx

o Đầy đủ các xử lý tĩnh.

o Hỗ trợ 16MIPs khi hoạt động ở tần số 16MHz.

o Tích hợp bộ nhân 2 thực hiện trong 2 chu kỳ chip.

Bộ nhớ chương trình và dữ liệu không bay hơi:

o 32 Kbytes trong hệ thống Flash khả trình có thể nạp và xóa 1000 lần.

o Tùy chọn khởi động phần mã với các bit nhìn độc lập trong hệ thống bằng cách

vào chương trình khởi động chip.

o 1024 bytes bộ nhớ EEPROM có thể ghi và xóa 100000 lần.

o 2 Kbytes bộ nhớ SRAM.

o Lập trình khóa cho phần mềm bảo mật.

Giao tiếp JTAG

Tính năng ngoại vi:

o 2 bộ định thời/ bộ đếm 8 bit.

o 1 bộ định thời/ bộ đếm 16 bit.

o Bộ đếm thời gian thực với máy dao động riêng rẽ.

o 4 kênh băm xung PWM.

o 8 kênh ADC 10 bit.

o Giao tiếp định hướng byte 2 đường nối tiếp.

o Giao tiếp nối tiếp khả trình USAT.

o Giao tiếp SPI nối tiếp chủ/tớ ( master/ slaver).

o Bộ định thời khả trình giám sát xung nhịp của chip một cách riêng rẽ.

o Tích hợp bộ so sánh tín hiệu tương tự.

Các tính năng đặc biệt:

o Chế độ bật nguồn Reset và phát hiện Brown-out khả trình.

12

Page 13: khoa dien tu.docx

o Tích hợp mạch dao động nội RC.

o Ngắt trong và ngắt ngoài.

o 6 chế độ nghỉ: Idle, ADC noise reduction, Power-save, Power-down, Standby

and Extended Standby.

Vào/ ra và đóng gói linh kiện:

o 32 chân vào/ra khả trình.

o 40-pin PDIP, 44-lead TQFP, 44-pad MLF.

Điện áp sử dụng:

o 2.7 - 5.5v với Atmega32L.

o 4.5 – 5.5 với Atmega32.

Tốc độ xung nhịp:

o 0 – 8 Mhz với Atmega32L.

o 0 -16 Mhz với Atmega32.

Sơ đồ chân của Atmega32:

Atmega32 gồm 40 chân:

13

Page 14: khoa dien tu.docx

Port A: gồm 8 chân từ PA0 đến PA7 là cổng vào tương tự cho chuyển đổi từ

tương tự sang số, nó cũng là cổng vào/ra hai hướng 8 bit trong trường hợp không

dùng làm cổng chuyển đổi tương tự, có điện trở nối lên nguồn dương bên trong.

Port A cung cấp đường địa chỉ dữ liệu vào ra theo kiểu hợp kênh khi dùng bộ

nhớ bên ngoài.

Port B: gồm 8 chân từ PB0 đến PB7, nó là cổng vào/ra hai hướng 8 bit, có điện

trở nối lên nguồn dương bên trong. Ngoài ra thay vì nhập xuất dữ liệu, Port B

còn cung cấp các chức năng đặc biệt của Atmega32.

Port C: gồm 8 chân từ PC0 đến PC7, là cổng vào/ra hai hướng 8 bit, có điện trở

nối lên nguồn dương bên trong, Port C cung cấp các địa chỉ lối ra khi sử dụng bộ

nhớ bên ngoài, đồng thời cung cấp ứng với các tính năng đặc biệt của Atmega32.

Port D: gồm 8 các chân từ PD0 đến PD7, là cổng vào/ra hai hướng 8 bit, có điện

trở nối lên nguồn dương bên trong. Ngoài chức năng nhập xuất dữ liệu, PortD

còn cung cấp các chức năng đặc biệt của Atmega32.

Chân 10( VCC): cung cấp nguồn nuôi cho vi điều khiển.

Chân 30(AVCC): cấp điện áp so sánh cho bộ ADC.

Chân 32( AREF): cấp điện áp tham chiếu cho bộ ADC.

Chân số 9( Reset): nó có chức năng đặt lại giá trị đầu vào về trạng thái ban đầu.

Chân 11,31( GND): là chân nối đất.

Chân 12, 13( XTAL1, XTAL2): là hai chân nối thạch anh ngoài.

14

Page 15: khoa dien tu.docx

IV. Khối cảm biến:

1. Chức năng:

Khối cảm biến nhận nhiệt độ từ môi trường bên ngoài chuyển thành mức

điện áp DC tương ứng và đưa tín hiệu tương tự này tới khối trung

tâm( cụ thể là tới bộ chuyển đổi tương tự/ số ADC được tích hợp trong

chip Atmega32).

Linh kiện trong khối: sử dụng Lm35

2. IC cảm biến nhiệt Lm35:

IC Lm35 là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tín hiệu điện

dưới dạng dòng điện hay điện áp, dựa vào đặc tính rất nhạy của các bán dẫn với

nhiệt độ, tạo ra điện áp hoặc dòng điện tỉ lệ thuận với nhiệt độ tuyệt đối.

Sơ đồ cấu tạo:

15

Page 16: khoa dien tu.docx

Sơ đồ chân:

o Chân 1 : VCC

o Chân 2: Vout

o Chân 3: GND

Các thông số của Lm35:

o Dải nhiệt độ đo được: từ -55oC đến +150oC. Giới hạn trong đề tài là đo nhiệt độ

từ 0oC đến 150oC.

o Chịu dòng lớn nhất là 60uA.

16

Page 17: khoa dien tu.docx

o Điện áp đầu vào từ 4V đến 30V.Bước thay đổi là 10mV/oC. Điện áp đầu ra là từ

0mV đến +10mV / oC. Ở 0oC thì giá trị đầu ra của Lm35 là 0mV, ở nhiệt độ

150oC thì giá trị đầu ra là 1500mV. Điện áp tỉ lệ với dải nhiệt độ mà lm35 đo

được.

Ưu điểm: giá thành rẻ, chống nhiễu tốt.

Nhược điểm: không chịu được nhiệt độ cao.

V. Khối giao tiếp người dùng :

1. Chức năng:

Khối này chính là keypad 4x4 và màn hình LCd với chức năng giao tiếp với người

thông qua việc cho phép nhập mật khẩu bằng phím bấm.

2. Linh kiện sử dụng:

2.1.Keypad 4x4:

17

Page 18: khoa dien tu.docx

Keypad là một thiết bị nhập chứa các nút cho phép người dùng nhập các chữ số,

chữ cái hoặc các ký hiệu vào bộ điều khiển. Keypad không chứa tất cả bảng mã

ASCII như keyboard và vì thế keypad thường được tìm thấy trong các thiết bị

chuyên dụng. Các nút nhấn trên điện tử cầm tay là một ví dụ về keypad. Số

lượng nút nhấn của một keypad thay đổi phụ thuộc vào yêu cầu ứng dụng.

Keypad 4x4 gồm 16 nút nhấn bố trị dạng ma trận 4 hàng 4 cột. Cách bố trí ma

trận hàng và cột là cách chung mà các keypad sử dụng. Cũng giống như ma trận

LED, các nút nhấn cùng hàng cùng cột được nối với nhau, vì thế keypad 4x4 sẽ

có tổng cộng 8 ngõ ra. 4 hàng được đánh dấu là A,B,C,D và 4 cột được đánh dấu

1,2,3,4.

2.2.Màn hình LCD 16x2 :

Giống như LED 7 thanh, LCD là một thiết bị ngoại vi dùng để giao tiếp với

người dùng, so với LED 7 thanh thì LCD có ưu điểm là hiển thị được tất cả các

kí tự trong bảng mã ASCII, trong khi đó LED 7 thanh chỉ hiển thị được một số

kí tự, nhưng LCD lại có nhược điểm là giá thành cao và khoảng cách nhìn gần.

Sơ đồ nguyên lý của LCD 16x2 (16 cột và 2 hàng):

18

Page 19: khoa dien tu.docx

Chân Kí hiệu Mức

Logic

I/O Chức năng

1 Vss - - Đất

2 Vcc - - Nguồn (+5V)

3 Vo - - Điều chỉnh độ tương phản

4 RS 0/1 I RS=0 chọn thanh ghi lệnh

RS=1 chọn thanh dữ liệu

5 R/W 0/1 I R/W=1 đọc dữ liệu

R/W=0 ghi dữ liệu

6 E 1,1->0 I Tín hiệu cho phép

7 DB0 0/1 I/O Bus dữ liệu 0

8 DB1 0/1 I/O Bus dữ liệu 1

9 DB2 0/1 I/O Bus dữ liệu 2

10 DB3 0/1 I/O Bus dữ liệu 3

11 DB4 0/1 I/O Bus dữ liệu 4

12 DB5 0/1 I/O Bus dữ liệu 5

13 DB6 0/1 I/O Bus dữ liệu 6

14 DB7 0/1 I/O Bus dữ liệu 7

15 Lamp- - - Đèn LCD

16 Lamp+ - - Đèn LCD

19

Page 20: khoa dien tu.docx

Chức năng:

o Các chân Vcc, Vss và Vee: Chân Vcc cấp dương nguồn 5V, chân Vss nối đất,

chân Vee được dùng để điều khiển độ tương phản của màn hình LCD.

o RS (Register Select): Khi ở mức thấp, chỉ thị được truyền đến LCD như xóa màn

hình, vị trí con trỏ… Khi ở mức cao, kí tự được chuyển đến LCD.

o R/W (Read/Write): Dùng để xác định hướng của dữ liệu được truyền giữa LCD

và vi điều khiển. Khi nó ở mức thấp dữ liệu được ghi đến LCD và khi ở mức

cao, dữ liệu được đọc từ LCD. Nếu chúng ta chỉ cần ghi dữ liệu lên LCD thì

chúng ta có thể nối chân này xuống GND để tiết kiệm chân.

o E ( Enable): Cho phép ta truy cập/xuất đến LCD thông qua chân RS và R/W.

Khi chân E ở mức cao (1) LCD sẽ kiểm tra trạng thái của 2 chân RS và R/W và

đáp ứng cho phù hợp. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức

cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ

liệu. Xung này phải rộng tối thiểu là 450ns. Còn khi chân E ở mức thấp (0),

LCD sẽ bị vô hiệu hóa hoặc bỏ qua tín hiệu của hai chân RS và R/W.

o Các chân D0-D7: Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin lên

LCD hoặc đọc nội dung của các thanh ghi lên LCD. Các kí tự được truyền theo

mã tương ứng trong bảng mã ASCII. Cũng có các mã lệnh mà có thể được gửi

đến LCD để xoa màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ.

LCD có hai chế độ giao tiếp, chế độ 4 bit (chỉ dùng 4 chân D4 đến D7 để truyền

dữ liệu) và chế độ 8 bit (dùng cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 8 bit,

khi truyền 1 byte, chúng ta sẽ truyền nửa cao của byte trước, sau đó mới truyền

nửa thấp của byte. Trước khi truyền các kí tư ra màn hình LCD ta cần thiết lập

cho LCD như chọn chế độ 4 bit hoặc 8 bit, 1 hay 2 dòng, bật/tắt con trỏ…Dưới

đây là bảng tập lệnh của LCD:

Mã hex Lệnh lệnh đến thanh ghi của LCD20

Page 21: khoa dien tu.docx

1 Xóa màn hình hiển thị

2 Trở về đầu dòng

4 Dịch con trỏ sang trái

6 Dịch con trỏ sang phải

5 Dịch hiển thị sang phải

7 Dịch hiển thị sang trái

8 Tắt con trỏ, tắt hiển thị

A Tắt hiển thị, bật con trỏ

C Bật hiển thị, tắt con trỏ

E Bật hiển thị, nhấp nháy con trỏ

F Tắt con trỏ, nhấp nháy con trỏ

10 Dịch vị trí con trỏ sang trái

14 Dịch vị trí con trỏ sang phải

18 Dịch toàn bộ hiển thị sang trái

1C Dịch toàn bộ hiển thị sang phải

80 Ép con trỏ về đầu dòng thứ nhất

C0 Ép con trỏ về đầu dòng thứ hai

38 Hai dòng và ma trận 5x7

o Để đọc thanh ghi lệnh.ta phải đặt RS=0 và R/W = 1 và xung cao xuống thấp cho

bit E. sau khi đọc thanh ghi lệnh, nếu bit D7 (cờ bận) ở mức cao thì LCD bận,

không có thông tin hay lệnh nào đươc xuất đến nó. Khi D7 = 0 mới có thể gửi

lệnh hay dữ liệu đến LCD. Chúng ta nên kiểm tra bit cờ bận trước khi ghi thông

tin lên LCD.

VI. Khối hiển thị nhiệt độ :

21

Page 22: khoa dien tu.docx

VI.1 Khối giải mã :

Khối sử dụng IC giải mã 74ls47:

Mạch giải là mạch có chức năng ngược lại với mạch mã hóa. Mục đích sử dụng

phổ biến nhất của mạch giải mã là làm sáng các đèn để hiển thị kết quả dưới

dạng chữ số. Do có nhiều loại đen hiển thị và có nhiều loại mã số khác nhau nên

có nhiều loại mạch giải mã khác nhau.

Ví dụ: giải mã 4 đường sang 10 đương , giải mã BCD sang thập phân...

IC74LS47 là loại IC giải mã BCD sang led 7 đoạn .Mạch giải mã BCD sang led 7

đoạn là mạch giải mã phức tạp vì mạch phải cho nhiều ngõ ra lên cao hoặc

xuống thấp (tùy vào loại đèn led là anode hay cathode chung) để làm các đèn cần

thiết sáng nên các số hoặc ký tự. IC74LS47 là loại IC tác động ở mức thấp có

ngõ ra cực thu để hở và khả năng nhận dòng đủ cao để thúc trực tiếp các đèn led

7 đoạn loại anode chung.

1.1. Hình dạng và sơ đồ chân :

1.2. Sơ đồ logic :

22

Page 23: khoa dien tu.docx

Bảng trạng thái:

Ở trạng thái mã BCD sang 7 vạch tác động ở mức thấp gồm các loại

IC74LS47,IC74LS46....được dùng cho loại có anode chung.

Ngõ n vào xóa BI được để không hay nối lên mức 1 cho hoạt động giải mã thường.

Nếu nối lên mức 0 thì các ngõ ra đều tắt bất chấp trạng thái ngõ ra.

Ngõ vào RBI được để không hay nối lên mức 1 dùng để xóa số 0( số 0 thừa phía

sau số thập phân hay số 0 trước số có nghĩa). Khi RBI và các ngõ vào D,C,B,A ở

mức 0 nhưng ngõ vào LT ở mức 1 thì các ngõ ra đều tắt và ngõ vào xóa dợn

sóng RB0 xuống mức thấp

Khi ngõ vào BI/RBO nối lên mức 1 và LT ở mức 0 thì ngõ ra đều sáng.

23

Page 24: khoa dien tu.docx

Kết quả là khi mã số nhị phân 4 bit vao có giá trị thập phân từ 0 đến 15 đèn led hiển

thị lên các số như hình trên.

VI.2 Khối hiển thị:

Mạch sử dụng led 7 thanh đôi.

a. Cấu trúc led 7 thanh :

Led 7 thanh được xây dựng từ các led đơn:

Có 2 loại led 7 thanh:

o Loại Anode chung : các anode của các led nối chung các cathode thì độc lập.Khi

sử dụng thì anode được nối lên mức cao thì đoạn led tương ứng sáng. Nếu

cathode ở mức cao thì đoạn led tương ứng ngắt.

o Loại Cathode chung thì các cathode của các led được nối chung, các anode thì

độc lập.Khi sử dụng thì cathode nối xuống mức thấp thì đoạn led tương ứng

sáng, nếu anode ở mức cao thì đoạn led tương ứng tắt.

Mạch sử dụng led 7 thanh đôi:

Ngoài các chân như led 7 đoạn đơn thì led 7 đoạn thanh đôi có thêm 2 chân điều

khiển led 1 hoặc led 2. Khi cấp tín hiện cho 1 chân. Ví dụ là chân 1 thì led 1 sẽ

sáng. Nếu là chân 2 thì led 2 sẽ sáng. Dựa vào hiện tượng lưu ảnh trên võng

mạc khi ta cấp tín hiệu liên tục cho 2 led thì mắt sẽ nhìn thấy cả 2 led sáng đồng

thời.

24

Page 25: khoa dien tu.docx

b. Giải mã led 7 thanh :

Chân anode nối lên mức cao

Đoạn nào sáng ứng với mức L

Đoạn nào tối tương ứng với mức H

DEC INPUT OUTPUT

D C B A a b c d e f

0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 1 1 0 0 1 1 1

2 0 0 1 0 0 0 1 0 0 1

3 0 0 1 1 0 0 0 0 1 1

4 0 1 0 0 1 0 0 1 1 0

5 0 1 0 1 0 1 0 0 1 0

6 0 1 1 0 0 1 0 0 0 0

7 0 1 1 1 0 0 0 1 1 1

8 1 0 0 0 0 0 0 0 0 0

9 1 0 0 1 0 0 0 0 1 0

Phương trình ngõ ra

25

Page 26: khoa dien tu.docx

a=A.B.C.D + A.B.C.D

b=A.B.C.D + A.B.C.D

c=A.B.C . D

d=A.B .C .D + A . B .C . D + A.B.C.D

e=A.B .C .D + A.B. C . D + A . B .C . D + A.B .C .D + A.B .C .D

f= A.B .C .D + A . B .C . D + A.B.C . D + A.B.C.D

VII. Khối thực thi:

Khối thực thi gồm 2 đèn led đơn: led mô phỏng việc đóng mở cửa và led mô

phỏng báo động khi nhiệt độ vượt ngưỡng cho phép.

Khối nhận tín hiệu điều khiển từ khối trung tâm để điều khiển sáng hoặc tắt Led:

o Trong thực tế việc sáng, tắt led có thể hiểu là việc đóng mở cửa. Mật khẩu nhập

đúng thì đèn led sáng( mở cửa), mật khẩu nhập sai thì đèn led không sáng( cửa

vẫn đóng).

o Nếu nhiệt độ vượt mức cho phép thì đèn Led sẽ sáng( báo động).

VIII. Khối nguồn:

VIII.1 Hoạt động:

Chức năng của khối nguồn là cung cấp nguồn 5V cho mạch hoạt động. Sơ đồ

nguyên lý xây dựng trên OrCAD:

Bảo vệ chống ngược dòng bằng diode cầu 1A.

26

Page 27: khoa dien tu.docx

Lm7805 có chức năng ổn áp.

Tụ điện có chức năng lọc nguồn, lọc nhiễu.

Led báo nguồn có trở hạn dòng.

VIII.2 Linh kiện ổn áp Lm7805:

Lm7805 có 3 chân:

o Chân 1: đưa điện áp đầu vào

o Chân 2: nối âm nguồn(GND)

o Chân 3: điện áp đầu ra

Lm7805 là một IC ổn áp thông dụng được ứng dụng nhiều trong thực tế với các

ưu điểm như điện áp ra ổn định cũng như cách điều chỉnh điện áp ra khá đơn

giản( chỉ cần thay đổi giá trị một phân áp).

Thông số kỹ thuật cơ bản của IC lm7805:

o Điện áp vào nằm trong khoảng từ 7V đến 20V.

o Điện áp ra nằm trong khoảng từ 4.75V đến 5.25V, dòng ra nằm trong khoảng từ

5mA đến 1A.

o Chịu được nhiệt độ lớn nhất là 125oC.

27

Page 28: khoa dien tu.docx

CHƯƠNG 3:

LẬP TRÌNH ĐIỀU KHIỂN

I. Giải thuật chương trình :

1. Hiển thị Led :

1.1.Led 7 thanh :

Led bảy đoạn là bảy con led đơn ghép lại với nhau tạo thành một con số  .

Bảy con led này nối chung với nhauAnode hoặc Catode. Mỗi thanh led có một

chân đưa ra để điều khiển.

Ví dụ led loại A chung có chân chung được nối lên mức cao khi hiển thị. Các

thanh led muốn sáng thì chân điều khiển phải có mức áp thấp. Nếu sáng số 3 thì

chân chung câu lên Vcc, các chân còn lại có mức áp tương ứng: abcdefg =

0000110 (mức 0 là thanh led sáng).

Led loại K chung tương tự nhưng khi chọn led thì chân chung nối xuống GND,

thanh led sáng tương ứng tín hiệu điều khiển có mức thấp.

1.2.Phương pháp quét :

Dựa trên độ lưu ảnh của mắt, một hình ảnh mắt ta thấy nhưng phải mất 40ms mới

xử lý xong (cỡ 24-25 hình trong 1 giây), do đó nếu các hình xuất hiện trước mắt

ta mà chớp tắt nhanh hơn 25 hình/ giây thì ta không thấy nó chớp nữa, có thể

hiểu như mắt ta bị thừa thông tin. 

Như vậy nếu bằng cách nào đó ta cho một con led đơn chớp tắt thật nhanh (trên

25 Hz, nhanh hơn nữa càng tốt, vài trăm Hz, thậm chí vài KHz càng tốt miễn là

con led có thể chớp tần số đó) ta sẽ thấy con led sáng luôn, mà thực chất là nó

đang sáng_ tắt_sáng_tắt…. rất nhanh.

Bây giờ ta điều khiển một led bảy đoạn (loại A chung), cho chân chung lên

nguồn, điều khiển sáng tắt nhanh cho hai thanh b,c của nó (5 thanh còn lại nhớ

tắt) ta thấy nó sáng lên số 1, thực chất là đang chớp số 1.

28

Page 29: khoa dien tu.docx

Bằng cách cho luân phiên nhiều led hiển thị thông tin khác nhau ta có cảm giác

nhiều led bảy đoạn đang sáng đồng thời, với cách này ta chỉ cần một bus dữ liệu

nối song song cho tất cả các led (gồm 7 dây a,b,c,d,e,f,g) mỗi led được điều

khiển bằng một tín hiệu khác sao cho tại một thời điểm chỉ có duy nhất một led

bảy đoạn được phép hiển thị và lúc này bus cũng đang truyền dữ liệu ứng với

Led này. Nếu có quá nhiều led bảy đoạn ta phải kết hợp thêm các IC giải mã

chọn kênh như 74138, 74154…

Đôi khi để đơn giản trong lập trình người ta không dùng vi xử lý điều khiển trực

tiếp cho led bảy đoạn mà dùng thêm IC giải mã từ BCD sang 7 đoạn (loại A

chung) là 74247 cũng rất tốt. (Lúc này chỉ cần dùng 4 chân của vi xử lý để đưa

mã BCD cho IC 74247 thay vì dùng 7 chân để cấp tín hiệu a,b,c,d,e,f,g cho led 7

đoạn )

Xem các hình dưới, nếu cho các led luân phiên sáng tắt, thời gian mỗi led khá

lâu (lâu hơn thời gian lưu ảnh của mắt) ta sẽ thấy từng led một sáng như sau: 

Nếu tăng tần số quét (giảm thời gian dành cho mỗi led) ta sẽ thấy kết quả 4 led

cùng sáng như sau:

29

Page 30: khoa dien tu.docx

Phương pháp này tiện dụng ở phần cứng lẫn phần mềm, tuy nhiên nếu số lượng

led quá nhiều thì thời gian sáng trung bình dành cho mỗi led là T lại giảm đi (T

=1/n với là số led bảy đoạn, số đối tượng được quét ), Điều này kéo theo các led

sẽ suy giảm độ sáng. Mặt khác phải tích hợp thêm IC giải mã, nhiều việc phát

sinh cho thiết kế mạch lẫn lập trình. Tóm lại, phương pháp này ứng dụng cho các

hiển thị thông tin ít ít, cỡ 20 led bảy đoạn trở xuống thì tuyệt vời nhưng thông tin

nhiều như bảng tỉ giá ngoại tệ cần vài trăm led thì không ổn.

1.3. Chương trình :

void LED7_out(uint16_t val) // Khai báo hàm con hiển thị led 7 đoạn

{

uint16_t dvi, chuc , temp_val;

temp_val=val;

chuc=temp_val/10;

dvi=temp_val-(10*chuc);

PORTD=0x02; xuất tín hiệu ra chân PD2 cho đèn led1 sáng

PORTA=tram; hiển thị chữ số hàng trăm lên led7 đoạn

_delay_ms(10); tạo thời gian trễ là 10ms

PORTD=00x04; xuất tín hiệu ra chân PD3 cho đèn led2 sáng

PORTA=dvi; hiện thị chữ số hàng đơn vị lên led 7 đoạn

_delay_ms(10)

30

Page 31: khoa dien tu.docx

}

Trong chương trình chính :

vin=((float)ADC_val*5000)/1023; biến nhiệt độ vin

LED7_out(vin); Hàm gọi chương trình con hiển thị ra led 7 đoạn

_delay_ms(100); tạo hàm trễ 100ms

2. Hiển thị LCD :

2.1.Nguyên lý:

Mọi chương trình hiển thị kí tự hay số lên trên lcd đều đi theo 4 bước sau:

Xóa toàn bộ màn hình.

Đặt chế độ hiển thị.

Đặt vị trí con trỏ (nơi bắt đầu của ký tự hiển thị)

Hiển thị ký tự

Các bước thứ 3,4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự.

Mỗi khi thự hiển lệnh ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD cần phải kiểm tra

cờ bận trước vì vậy cần phải chủ động phân phối thời gian khi ra lệnh cho LCD

(vú dụ sau khi xóa màn hình khoảng 2 ms mới ra lệnh khác thì thời gian để

LCD xóa màn hình là 1..64ms) chế độ hiệ thị mặc định sẽ là hiển thị dịch. vị trí

con trở mặc định là đầu dòng thứ nhất.

2.2.Chương trình :

#include "myLCD3.h" khai báo thư viện lcd

init_LCD(); khởi tạo lcd

move_LCD(uint8_t y,uint8_t x); di chuyển vị trí con trỏ tới vị trí y,x

clr_LCD(); xóa màn hình

putChar_LCD(); hiển thị 1 ký tự lên lcd

print_LCD(char* str); hiển thị 1 xâu kí tự lcd

31

Page 32: khoa dien tu.docx

3. Ma trận phím :

3.1.Nguyên lý quét ma trận phím :

Ma trận phím gồm N hàng, M cột

Số phím : NxM

Số chân điều khiển : N + M

Các chân cùng 1 cột nối với nhau. Các chân cùng 1 cột nối với nhau

Nguyên lý quét phím - quét hàng :

Tất cả các hàng , cột đặt ở mức cao - 5V

Đặt áp hàng 1 : 0V

Kiểm tra các cột , nếu có 1 cột ở mức 0V => có phím bấm => xác định phím đó

Đặt điện áp hàng 1 : 5v

Lặp lại bước đầu tiên => bước thứ 3 cho các hàng còn lại

3.2.Chương trình:

uint8_t scan_code[4]={0x0E,0x0D,0x0B,0x07}; Khai báo biến quét hàng

uint8_t ascii_code[4][4]={ 'D','C','B','A', Định nghĩa các phím bấm

'#','9','6','3',

'0','8','5','2',

'*','7','4','1'};

//---khai bao huong cho cac chan ket noi keypad

KEYPAD_PORT=0x0F; //*

KEYPAD_DDR=0xF0; //*

//*********************************************

Code kiểm tra xem có phím nào được bấm và định nghĩa phím

uint8_t checkpad(){

uint8_t i,j,keyin;

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

KEYPAD_PORT=0xFF-(1<<(i+4));

32

Page 33: khoa dien tu.docx

_delay_us(10);

keyin=KEYPAD_PIN & 0x0F;

if(keyin!=0x0F)

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

if(keyin==scan_code[j]) return ascii_code[j][i]; }

return 0; }

4. Chuyển đổi tương tự số( ADC):

4.1.ADC của của vi điều khiển Atmega32 :

Chip AVR ATmega32 của Atmel có tích hợp sẵn các bộ chuyển đổi ADC với độ

phân giải 10 bit. Có tất cả 8 kênh đơn (các chân ADC0 đến ADC7), 16 tổ hợp

chuyển đổi dạng so sánh, trong đó có 2 kênh so sánh có thể khuyếch đại. Bộ

chuyển đổi ADC trên AVR không hoạt động theo nguyên lý flash ADC mà tôi

đề cập ở phần trên, ADC trong AVR là loại chuyển đổi xấp xỉ lần lượt

(successive approximation ADC).

ADC trên AVR cần được “nuôi” bằng nguồn điện áp riêng ở chân AVCC, giá trị

điện áp cấp cho AVCC không được khác nguồn nuôi chip (VCC) quá +/-0.3V.

Nhiễu (noise) là vấn đề rất quan trọng khi sử dụng các bộ ADC, để giảm thiểu

sai số chuyển đổi do nhiễu, nguồn cấp cho ADC cần phải được “lọc” (filter) kỹ

càng.

Điện áp tham chiếu cho ADC trên AVR có thể được tạo bởi 3 nguồn: dùng điện

áp tham chiếu nội 2.56V (cố định), dùng điện áp AVCC hoặc điện áp ngoài đặt

trên chân VREF. Một lần nữa, bạn cần chú ý đến noise khi đặt điện áp tham

chiếu, nếu dùng điện áp ngoài đặt trên chân VREF thì điện áp này phải được lọc

thật tốt, nếu dùng điện áp tham chiếu nội  2.56V hoặc AVCC thì chân VREF cần

được nối với một tụ điện. Việc chọn điện áp tham chiếu sẽ được đề cập chi tiết

trong phần sử dụng ADC. Các chân trên PORTA của chip ATmega32 được

dùng cho bộ ADC, chân PA0 tương ứng kênh ADC0 và chân PA7 tương ứng với

kênh ADC7.

4.2. Tính toán sai số :

33

Page 34: khoa dien tu.docx

Lm 35 ADC Nhiệt độ U(V) ADC_value

Từ hàm truyền trên ta có : U=t.K

Trong đó : t là nhiệt độ môi trường/

K là điện áp đầu ra LM35 : 10mV/đô

U=t*10mV/oC

Có ADC=10 bit : 1023

Dải đo 0-5 V;

Bước thay đổi 2560/1024=2.5

Giá trị ADC đo được từ điện áp đầu vào

ADC = U/n =(t*10mV)/2.5

Giá trị nhiệt độ đo được

t =(ADC*2.5)/10

Sai số :

tại 0 độ thì đầu ra LM35 là 10mV

tại 150 độ thì đẩu ra LM35 là 1500mV

dải điện áp biến đổi là 1.5-0.01= 1.49

ADC 10 bit nên bước biến đổi của ADC là n=2.5mV

Vậy sai số của hệ thông là 2.5mV / 1.49 = 1.67 %

34

Page 35: khoa dien tu.docx

4.3. Chương trình :

#define AREF_MODE 0 Điện áp tham chiếu ngoài chấn Vref

#define AVCC_MODE (1<<REFS0) Dùng điện áp chân AVcc làm điện áp tham

chiếu, chân Vref gắn với một tụ điện

#define INT_MODE (1<<REFS1)|(1<<REFS0) dùng điện áp tham chiếu nội

2.56 V

#define ADC_VREF_TYPE AREF_MODE Định nghĩa điện áp tham chiếu

uint16_t ADC_val; khai báo biến chưa giá trị chuyển đổi từ ADC

uint16_t read_adc(unsigned char adc_channel)

{//Chương trình con đọc ADC theo từng kênh

ADMUX=adc_channel|ADC_VREF_TYPE;

ADCSRA|=(1<<ADSC); bắt đầu chuyển đổi

loop_until_bit_is_set(ADCSRA,ADIF); //cho đến khi nào bit ADIF==1

return ADCW;

ADC_val=read_adc(0); Đọc tín hiệu từ ADC (0) đọc giá trị ADC ở kênh 0 bằng

cách gọi chương trình con “read_adc(0)”

LED7_out(ADC_val);” sau đó hiển thị ra LED 7 đoạn ở dòng 40

_delay_ms(100); cuối cùng là delay 1 khoảng thời gian nhỏ (100ms) trước khi

lặp lại quá trình đọc và hiển thị.

35

Page 36: khoa dien tu.docx

CHƯƠNG 4:

THI CÔNG MẠCH

I. Thiết kế mạch in trên phần mềm ORCAD :

1. Giới thiệu về Orcad :

Trên thị trường hiện nay có rất nhiều công cụ phần mềm hỗ trợ việc thiết kế và

chế tạo mạch điện tử như OrCAD của Cadence, Proteus của Labcenter

Electronics, Multisim của National Instruments, Altium Designer của Altium

Ltd, Simplorer của Ansoft… Tuy nhiên chúng em chọn Orcad của Cadence để

vẽ mạch nguyên lý và Proteus ISIS của Labcenter Electronics để chạy mô phỏng

của vì tính phổ biến và sự hỗ trợ mạnh mẽ của chúng trong các ứng dụng trên.

OrCAD thực chất là một bộ phần mềm bao gồm:

o PSPICE: Phần mềm mô phỏng OrCAD. PSPICE có nhiều thư viện với các linh

kiện giả lập, giúp mô phỏng các mạch điện tử trước khi đi vào thiết kế và chế

tạo, nhằm giảm thiểu sai sót, tiết kiệm thời gian và tiền bạc. Tuy nhiên, PSPICE

không phải là phần mềm mô phỏng mạnh, tính trực quan cũng không cao.

o Capture: Phần mềm vẽ mạch nguyên lý của OrCAD. Capture cho phép người

dùng thay đổi, sửa chữa, thậm chí là tạo mới các linh kiện, phục vụ cho việc vẽ

mạch nguyên lý. Các linh kiện của Capture được xây dựng một cách rõ ràng,

sáng sủa, tính trực quan cao.

o Layout: Phần mềm vẽ mạch in của OrCAD. Layout cho phép người dùng thay

đổi, sửa chữa, thậm chí là tạo mới chân cho linh kiện. Các chức năng Auto Place

và Auto Route của Layout cũng được đánh giá cao về tính thông minh của

chúng.

2. Vẽ mạch nguyên lý bằng Capture :

2.1.Khởi tạo project:

Bước 1: Khởi động Capture bằng cách kích đúp chuột vào biểu tưởng của

Capture trên màn hình máy tính.

36

Page 37: khoa dien tu.docx

Bước 2: Tạo một project mới

o File – New – Project… hoặc File – New – Design.

o Và đây là kết quả:

o Chú ý: chúng ta nên tạo sẵn 1 thư mục, tên thư mục phải có tính chất gợi nhớ

đến project để dễ truy tìm sau này đồng thời thư mục này sẽ chứa tất cả các file

liên quan đến project.

37

Page 38: khoa dien tu.docx

2.2.Thao tác vẽ mạch nguyên lý :

Lấy linh kiện: Thêm thư viện.

Từ đó ta phát sinh vấn đề là có những linh kiện ngoài thực tế lại không có trong

thư viện của Capture, từ đó ta phải tạo ra sơ đồ của linh kiện đó trong Capture

=> Chúng ta cần tạo ra các linh kiện mới khi cần thiết.

Tạo linh kiện mới: Ví dụ ta tạo linh kiện mới là Atmega32.

o Trước hết ta phải có datasheet của Atmega32.

o Sau khi đã tìm hiểu về linh kiện( kiểu chân, thứ tự chân,…) ta bắt đầu tạo linh

kiện mới. Chúng ta sẽ sử dụng các công cụ như tạo đường bao, thêm chân, thêm

text, sao cho linh kiện mang tính trực quan cao nhất:

o Tương tự như vậy ta cũng sẽ tạo thêm một số linh kiện mới cần cho mạch.

Tiến hành đi dây:

o Làm việc với thanh công cụ vẽ mạch:

38

Page 39: khoa dien tu.docx

o Sơ nguyên lý sau khi hoàn thiện:

o Sau khi đã hoàn thiện mạch nguyên lý, ta tiến hành tạo file Netlist:

39

Page 40: khoa dien tu.docx

Trước khi chuyển sang layout ta kiểm tra lỗi của mạch nguyên lý bằng công cụ

DRC( Design Rule Check) và chọn Create DRC Markers For Warnings để hiển

thị lỗi lên trên mạch nguyên lý:

40

Page 41: khoa dien tu.docx

Mạch Nguyên lý sau khi hoàn thiện :

Sau khi mạch nguyên lý không có lỗi nào, ta bắt đầu tạo file netlist bằng cách bấm vào biểu tượng Create Netlist.

Click vào thẻ Layout (để tạo ra 1 file đuôi .MNL), tên file sẽ là tên project.

41

Page 42: khoa dien tu.docx

Click vào ô "Run ECO to Layout" để chúng ta có thể cập nhật từ file Schematic

sang file Layout. Khi ta sửa đổi các linh kiện hay các netlist thì file Layout sẽ

được cập nhật tương ứng mà không phải vẽ lại toàn bộ.

Vậy là đã có file Netlist sẵn sàng cho việc Layout.

3. Vẽ mạch in bằng Layout:

3.1.Giới thiệu thư viện và footprint trong layout:

Khởi động thư viện/ Tool/ Library Manager:

Màn hình Library Manager hiện ra:

42

Page 43: khoa dien tu.docx

Sau đó ta add các thư viện của Layout vào( thư viện có thể có sẵn hoặc sưu tầm)

bằng cách kích chuột vào nút add, ta nên thêm tất cả các thư viện chân.

3.2.Tùy chỉnh các lớp( layer):

TOP: Top, mặc định màu xanh dương – Phím 1 (màu xanh dương)

BOT: Bottom, mặc định có màu đỏ – Phím 2 (màu đỏ)

SSTOP :In chữ và kí hiệu linh kiện, mặc định màu trắng – Phím Shift + 1 (màu

trắng)

SMTOP: Solder–Mask Top, định khoảng cách phủ xanh mặt Top (màu xanh lá)

SSBOT : Solder–Mask Bottom, định khoảng cách phủ xanh mặt Bot (màu vàng)

DRL và DRLWG: quy định kích thước lỗ khoan (màu nâu)

* Chú ý:

Nếu đi mạch 1 lớp thì ta bỏ qua lớp Top có màu mặc định là xanh dương

Lớp SMTOP và SMBOT là 2 lớp quy định phủ xanh cho lớp TOP và BOTTOM

vậy nên khi đi đặt mạch ta phải đặt 2 lớp này chính xác nêu không mạch sẽ

không chạy được.

43

Page 44: khoa dien tu.docx

Kích thước lỗ khoan ta nên để đúng theo chân linh kiện vì nếu để nhỏ hơn chân

linh kiện thì sẽ phải khoan mạch, nếu to hơn thì linh kiện cắm sẽ không chắc và

mạch sẽ xấu

Trong thư viện của Layout thì các linh kiện có pad đồng khá nhỏ, vậy nên khi

làm mạch ủi và khoan tay sẽ dễ bay hết các pad đồng, không đảm bảo về mạch.

Để tránh việc này, ta sẽ đổi các thông số sao cho phù hợp với thực tế và công

nghệ làm mạch hiện tại.

3.3.Thay đổi thông số của linh kiện( cụ thể là kiểu chân)

Ta sẽ thay đổi kiểu lỗ khoan như sau:

Chọn linh kiện cần thay đổi( eg: DIP100/14/W300/L750)

Sau đó lưu linh kiện của riêng chúng ta bằng cách là bấm "Save as""Creat new

Library":

44

Page 45: khoa dien tu.docx

Chúng ta sẽ sửa các pad đồng ở tất cả các lớp sao cho phù hợp.

o Chọn công cụ pin tool→ chọn lỗ đồng của linh kiện→ bấm tổ hợp shift + T

o Trong bảng này có tất cả các lớp có trên mạch và ta chỉ quan tâm đến những lớp

quan trọng và làm việc chính trên nó. Ta sẽ chỉnh các lớp này thật chuẩn để sau

này khi đặt mạch in một lớp hoặc mạch in hai lớp hay tự ủi khoan ta không phải

chỉnh sửa từng linh kiện một.

o Chọn lớp TOP và BOTTOM:

Pad Shape: Round (tròn)

Pad Width: 70 Mils

Pad Heigh: 70 Mils

45

Page 46: khoa dien tu.docx

SMTOP: 78 Mils

SMBOT: 78 Mils

o Chú ý:

1 Mil = 1/100 ich

Các lớp chúng ta không quan tâm thì có thể tắt nó đi bằng cách chuyển dạng từ

“round” sang “undefined”

Theo quy định của các xưởng đặt mạch in thì lớp SMTOP và SMBOT phải lớn

hơn kích thước các lớp TOP và BOT ít nhất 8mil.

Kích thước lỗ khoan dành cho IC nhỏ thường là 34mil, còn lớn hơn là 39mil.

3.4.Giới thiệu công cụ test tool:

Là công cụ chỉnh sửa các chú thích của tên linh kiện, như đã giới thiệu lớp SSTOP

có màu trắng sẽ là lớp in hình linh kiện và chú thích linh kiện thì những thông

tin trên lớp SSTOP thì các chúng ta nên chỉnh sửa cho rõ ràng và đầy đủ những

thông tin cần thiết (chúng ta có thể chỉnh Line Width: 8 Mils; Text Height: 60

Mils). Còn những thông tin dư thừa thì chúng ta có thể xóa đi để công việc được

thuận tiện hơn khi sắp xếp linh kiện và đi dây.

3.5.Quy trình đi dây và hoàn thiện mạch in:

Sau khi đã tạo file.MNL và thêm đầy đủ thư viện footprint cần cho mạch, ta tiến

hành tạo file.MAX theo quy trình như sau:

46

Page 47: khoa dien tu.docx

o Mở Layout, chọn Tool/ New và chỉ đường dẫn đến file DEFAULT.TCH (C:\

Program Files\Orcad\Layout_Plus\Data\DEFAULT.TCH)

o Load file netlist .NML vừa tạo lúc nãy và đặt file Layout thu được với

đuôi .MAX.

Liên kết footprint cho từng linh kiện:

Đây là công đoạn đòi hỏi nhiều kinh nghiệm ở người thiết kế mạch in.

Bảng link Footprint to Component hiện ra, ta bắt đầu chọn footprint phù hợp cho

từng linh kiện theo hình vẽ, ví dụ với diode:

47

Page 48: khoa dien tu.docx

Kết quả thu được sau khi ta chọn hết từng footprint cho từng linh kiện:

Sắp xếp linh kiện:

Đây là phần quan trọng và đòi hỏi nhiều kinh nghiệm nhất trong layout. Khi sắp xếp

linh kiện cần lưu ý:

Linh kiện dùng để lấy nguồn( header, jack cắm…) nên để ngoài rìa.

Linh kiện tỏa nhiệt: xoay mặt tỏa nhiệt ra ngoài để tránh làm nóng các linh kiện

khác, nên để xa các linh kiện khác.

Nếu dùng đê IC để hàn vào board sau đó mới gắn IC, thì có thể đặt các linh kiện

nhỏ như tụ, trở, thạch anh… dưới bụng IC.

48

Page 49: khoa dien tu.docx

Các linh kiện gần giống nhau xếp thành dãy, gần nhau( như điện trở..).

Mạch cần có tính cân đối và hài hòa.

Nên tắt DRC trước khi tiến hành sắp xếp linh kiện :

Sau khi đi dây hoàn chỉnh và tiến hành đổ đồng cho kết quả như sau:

49

Page 50: khoa dien tu.docx

4. Hoàn thiện mạch :

Sau khi có file layout ta đi đặt mạch và hàn linh kiện.

Việc hàn linh kiện đòi hỏi phải nhiều kinh nghiệm để cho mối hàn được chắc

chắn và đạt tính thẩm mỹ.

50

Page 51: khoa dien tu.docx

CHƯƠNG 5:

CODE Chương Trình

1.Code chương trình cảm biến nhiệt độ và hiển thị lên led 7 đoạn :

while (1)

{

adc_value=read_adc(0); // doc gia tri adc

vin=((float)adc_value*5000)/1023;

a=(int)vin/100; // lay phan chuc cua nhiet do

b=((int)vin-a*100)/10; // lay phan don vi cua nhiet do

while(i<=50) // sau 0.5 s thi cap nhat nhiet do 1 lan

{

PORTD.0=1;

led(a);

delay_ms(5);

PORTC=0xFF;

PORTD.0=0;

PORTD.1=1;

led(b);

delay_ms(5);

PORTC=0xFF;

PORTD.1=0;

i=i+1; 51

Page 52: khoa dien tu.docx

if( a>=5) // neu nhiet do vuot qua 50 do C thi den bao sang, den bao tuong trung cho quat

{

j=1;

}

k=k+j;

if (k>=2000) // sau khi nhiet do giam 1 thoi gian thi den bao moi tat

{

k=0;

j=0;

}

if(k!=0)

{

PORTD.2=1;

}

else if (k==0)

{

PORTD.2=0;

}

}

i=0;

};

2.Code khóa phím điện tử :#include <avr/io.h>

52

Page 53: khoa dien tu.docx

#include <util/delay.h>

#include <avr/eeprom.h>

#include "myLCD3.h"

#define KEYPAD_DDR DDRB

#define KEYPAD_PORT PORTB

#define KEYPAD_PIN PINB

uint8_t scan_code[4]={0x0E,0x0D,0x0B,0x07};

uint8_t ascii_code[4][4]={ '7','8','9','A',

'4','5','6','B',

'1','2','3','C',

'N','0','#','D'};

uint8_t key; //PW

uint8_t k; //biến kiểm tra trong EPROM

uint8_t a=0; //biến kiểm tra PW có thuộc (0->9)

uint8_t b=0; //biến kiểm tra PW

uint8_t checkpad();

uint8_t pw[8];

int main()

{

//ght=eeprom_read_byte((uint8_t*)10); //Doc ght tu EEPROM o so 10

//ghd=eeprom_read_byte((uint8_t*)11); //Doc ghd tu EEPROM o so 11

//eeprom_write_byte((uint8_t*)11,ghd); //Ghi ght vao EEPROM o so 11

53

Page 54: khoa dien tu.docx

//---khai báo hướng cho chân kết nối keypad

KEYPAD_PORT=0x0F; //*

KEYPAD_DDR=0xF0; //*

//*********************************************

init_LCD();

clr_LCD();

//KIỂM TRA EEPROM

for(k=0;k<8;k++)

{

pw[k]=eeprom_read_byte((uint8_t*)k); // Đọc PW từ EEPROM ô số 0->7

if ((pw[k]<'0')|(pw[k]>'9')) a=1;

}

//NẾU EEPROM TRỐNG -> NHẬP PW

if(a==1)

{

move_LCD(1,1);

print_LCD("Chua co Password!");

_delay_ms(1000);

clr_LCD();

move_LCD(1,1);

print_LCD("Nhap Password:");

move_LCD(2,1);

k=0;

//CHECK KEYPAD - KEYPAD INPUT

//-------------------------------

54

Page 55: khoa dien tu.docx

while(k<8)

{

key=checkpad();

if (key)

{

putChar_LCD(key);

_delay_ms(200);

eeprom_write_byte((uint8_t*)k,key); //Ghi ght vao EEPROM o so k

k++;

}

}

//-------------------------------

clr_LCD();

move_LCD(1,1);

print_LCD("Da luu password");

}

//DA CO PW TRONG EPROM -> YEU CAU NHAP PW

else

{

/*move_LCD(1,1);

print_LCD("Da co password");

_delay_ms(500);

*/

55

Page 56: khoa dien tu.docx

clr_LCD();

move_LCD(1,1);

print_LCD("Nhap Password:");

move_LCD(2,1);

k=0;

//CHECK KEYPAD - PW WRONG!

//-------------------------------

while(k<8)

{

key=checkpad();

if (key)

{

putChar_LCD(key);

_delay_ms(200);

if(key!=eeprom_read_byte((uint8_t*)k))

b=1;

k++;

}

}

if (b==1)

{

while(b==1)

{

clr_LCD();

move_LCD(1,1);

56

Page 57: khoa dien tu.docx

print_LCD("Sai Password");

_delay_ms(800);

key=checkpad();

//uPa

if (key=='N')

{

clr_LCD();

move_LCD(1,1);

print_LCD("xxx");

for(k=0;k<8;k++)

eeprom_write_byte((uint8_t*)k,0);

_delay_ms(800);

}

//-------------------------------

//Yêu Cầu nhập PW

clr_LCD();

move_LCD(1,1);

print_LCD("Nhap Password:");

k=0;

b=0;

move_LCD(2,1);

//CHECK KEYPAD - KEYPAD INPUT

//-------------------------------

while(k<8)

{

57

Page 58: khoa dien tu.docx

key=checkpad();

if (key)

{

putChar_LCD(key);

_delay_ms(200);

if(key!=eeprom_read_byte((uint8_t*)k))

b=1;

k++;

}

}

//-------------------------------

}

}

//CHECK KEYPAD - PW TRUE!

//-------------------------------

else

{

clr_LCD();

move_LCD(1,1);

print_LCD("Nhap dung password");

}

//-------------------------------

}

clr_LCD();

58

Page 59: khoa dien tu.docx

move_LCD(1,1);

print_LCD("---welcom---");

_delay_ms(1000);

/*

move_LCD(2,1);

while(1)

{

key=checkpad(); //doc keypad

if (key) putChar_LCD(key);

if (key=='N')

{

print_LCD("Da xoa password");

for(k=0;k<8;k++)

eeprom_write_byte((uint8_t*)k,0); //Ghi 0 vào EEPROM ô số k

}

_delay_ms(200);

}

}

//đoạn chương trình con đọc keypad-----------------------------------------------------

uint8_t checkpad(){

uint8_t i,j,keyin;

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

KEYPAD_PORT=0xFF-(1<<(i+4));

59

Page 60: khoa dien tu.docx

_delay_us(10);

keyin=KEYPAD_PIN & 0x0F;

if(keyin!=0x0F)

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

if(keyin==scan_code[j]) return ascii_code[j][i];

}

return 0;

}

//-----------------------------------------------------------------------------------------------------

60

Page 61: khoa dien tu.docx

CHƯƠNG 6:

KẾT QUẢ THỰC HIỆN

Sau một thời gian dài tìm hiểu và thiết kế, chúng em đã hoàn thành đồ án thiết kế

của mình với yêu cầu thiết kế “ hệ thống báo cháy và khóa điện tử”. Kết quả

thiết kế đã cho ra sản phẩm thực tế và lập trình điều khiển chạy ổn định, đạt

được những yêu cầu của thiết kế.

Mạch chạy tốt, ổn định với đầy đủ các chức năng đặt ra:

o Giao tiếp mở khóa với người dùng qua keypad và màn hình LCD.

o Hiển thị nhiệt độ trên led 7 thanh đôi, báo động khi nhiệt độ vượt quá mức cho

phép.

Về phần cứng: mạch in và mối hàn tốt.

Hướng phát triển: lập trình hiển thị nhiệt độ trên LCD 16x4.

a. Tiếp tục triên khai phần mở rộng của mạch như hệ thống dập lửa

sau khi có tín hiệu báo cháy. Chuông hoặc có tín hiệu thông báo

cho con người khi khóa điện tử có số lần nhập mã sai quá số lần

quy định

b. Bàn phím keypad sử dụng có thể được thay thế bằng bàn phím

cảm ứng

61

Page 62: khoa dien tu.docx

TÀI LIỆU THAM KHẢO:

www.dientuvietnam.net

www.hocavr.com

www.avrfreaks.net

www.tailieu.vn

www.atmel.com

www.datasheetcatalog.org

62