Upload
bui-duc-manh
View
16
Download
0
Embed Size (px)
Citation preview
ĐẠ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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
}
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
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
_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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
#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
//---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
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
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
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
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
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
_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
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
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