Tình trạng sử dụng rượu, bia tràn lan ở nhiều nơi đã khiến trật tự an toàn giao thông trở thành vấn đề báo động đây chính là nguyên nhân hàngđầu gây tai nạn giao thông, khi điều khiển ph
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQG HÀ NỘI
KHOA CƠ HỌC KỸ THUẬT VÀ TỰ ĐỘNG HÓA
Giảng viên hướng dẫn : Ths Phạm Đình Tuân
Nhóm sinh viên thực hiện : Nhóm 3
Trần Đình Chính : 17020246 Đặng Văn Duẩn : 17020252 Trương Văn Bình : 17020242 Bùi Thái Trung : 17020441 Nguyễn Thanh Tùng : 17020464
Trang 2CHƯƠNG 1 KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU BÀI TOÁN ĐO VÀ
CẢNH BÁO NỒNG ĐỘ CỒN 1.1 Tổng quan về đo và cảnh báo nồng độ cồn
Hiện nay, ở nước ta các tệ nạn xã hội ngày càng gia tăng mà một trongnhững nguyên nhân chủ yếu đó là do uống nhiều rượu bia Rượu là nguyênnhân chủ yếu làm giảm năng suất lao động, gây ra các tệ nạn xã hội như bạolực, gia đình tan vỡ, con cái hư hỏng và đặc biệt gây ra các vụ tai nạn giaothông nghiêm trọng và đặc biệt nghiêm trọng
Việt Nam là quốc gia thuộc tốp đầu các nước sử dụng rượu, bia khi tham giagiao thông Tình trạng sử dụng rượu, bia tràn lan ở nhiều nơi đã khiến trật tự
an toàn giao thông trở thành vấn đề báo động đây chính là nguyên nhân hàngđầu gây tai nạn giao thông, khi điều khiển phương tiện bởi người lái xethường phản ứng chậm, buồn ngủ, thiếu tập trung, việc nhìn thấy các biểnbáo, tín hiệu hoặc quan sát trên đường không còn rõ ràng nên có khi xử lýkhông đúng và có thể gây ra tai nạn Người say cũng "bốc đồng", không cònkhả năng kiểm soát tốc độ cho nên thường phóng nhanh, vượt ẩu, lấn đườngrất dễ gây tai nạn
Để hướng tới mục tiêu an toàn giao thông, giảm thiểu tối đa tai nạn, luật đãđưa ra rất nhiều quy định mới, một trong số đó là quy định về nồng độ cồncho phép khi điều khiển phương tiện giao thông Khẩu hiệu “Đã uống rượubia thì không lái xe” đã khá quen thuộc với người dân Việt Nam Vì thế, đểgiảm thiểu tối đa tai nạn giao thông, Bộ giao thông vận tải đã đưa ra cácmức xử phạt tương ứng với mức độ vi phạm của người tham gia giao thông.Bước đầu tuyên truyền cho quy định này của luật, bộ y tế, Ủy ban an toàngiao thông quốc gia, tổ chức y tế thế giới đã phối hợp tổ chức buổi hội thảo
“rượu bia và tai nạn giao thông” Các thông điệp buổi hội thảo đưa ra: “Điềukhiển xe trong tình trạng có men rượu là vi phạm pháp luật – Đã uống thìkhông lái”
Theo thống kê, hàng năm ở nước ta khoảng 9.000 người tử vong do tai nạngiao thông Một trong những nguyên nhân dẫn đến tình trạng tai nạn giaothông là do người điều khiển phương tiện sử dụng rượu bia khi tham giagiao thông Những hậu quả của người uống rượu bị tai nạn trong lúc thamgia giao thông và hiện nay đang là nỗi lo lắng, bức xúc của cá nhân, gia đình
và xã hội
Luật Giao thông đường bộ năm 2008 quy định cấm người điều khiển xe ô tô,máy kéo, xe máy chuyên dùng trên đường mà trong máu hoặc hơi thở cónồng độ cồn; cấm người điều khiển mô tô, xe gắn máy mà trong máu cónồng độ cồn vượt quá 50miligam/ 100 mililit máu hoặc 0,25 miligam/ 1lít
Trang 3khí thở Nhằm hạn chế tai nạn giao thông và tăng tính răn đe cho hành vi viphạm về nồng độ cồn điều khiển phương tiện tham gia giao thông, từ ngày01/08/2016 sẽ nâng mức phạt tiền và thời gian tạm giữ giấy phép lái xecủa người sử dụng rượu bia khi tham gia giao thông
1.2 Mục đích của đề tài
* Sự an toàn khi tham gia giao thông:
Tai nạn giao thông là hiểm họa thường trực đối với mỗi người tham gia giaothông hàng ngày Trong khi đó, ở Việt Nam số lượng người và phương tiệntham gia giao thông ngày càng đông và tỷ lệ người chết vì tai nạn giao thôngtrên 100 000 người dân cao hơn mức trung bình của thế giới (thế giới: 18người, Việt Nam 24 người - Báo cáo thống kê của Viện nghiên cứu giaothông Đại học Michigan UMTRI Mỹ)
Theo thống kê của Ủy ban an toàn giao thông quốc gia, năm 2013 cả nước
đã xảy ra 29.385 vụ tai nạn giao thông, làm chết 9.369 người, bị thương29.500 người, trung bình mỗi ngày có 26 người chết và 81 người bị thương
vì tai nạn giao thông trên toàn quốc Trong những tháng đầu năm 2014, toànquốc đã xảy ra 10.772 vụ tai nạn giao thông, làm chết 3.928 người, bịthương 10.556 người
Hậu quả của tai nạn giao thông vô cùng đau thương và nặng nề Đó là sựmất mát về tính mạng con người, là gánh nặng cho gia đình người bị nạn vànhững người liên quan về cả tinh cảm lẫn vấn đề kinh tế Đặc biệt, đó là hậuquả mà bản thân người bị tai nạn gánh chịu khi không thể trở lại là nhữnglành lặn bình thường mà trở thành phế nhân Những hậu quả trên cho thấytai nạn giao thông hiện nay là mối nguy hiểm khôn cùng, là kẻ thù vô cùngnguy hiểm đối với mỗi người tham gia giao thông
Vậy vấn đề đặt ra là tại sao tai nạn giao thông ở đất nước chúng ta lại xảy ranhiều với số người chết và bị thương cao đến vậy?
Lý do có thể kể ra rất nhiều: Hệ thống hạ tầng giao thông yếu kém, chấtlượng phương tiện giao thông không đáp ứng đúng các yêu cầu về kỹ thuật,
ý thức chấp hành luật giao thông và ý thức tham gia giao thông của ngườidân còn thấp Song chung quy lại, nguyên nhân cơ bản nhất vẫn là nguyênnhân từ phía con người
Khi tham gia giao thông, bản thân mỗi người chủ phương tiện phải có tráchnhiệm với an toàn của mình và của những người tham gia giao thông khác.Nhưng trên thực tế, tình trạng người uống rượu bia vẫn tham giao thông,người tham gia giao thông lạng lách, đánh võng, phóng nhanh vượt ẩu,
Trang 4không đội mũ bảo hiểm, không chấp hành luật giao thông đấy là sự kém ýthức của người tham gia giao thông Còn về phía những người có tráchnhiệm liên quan như cảnh sát giao thông, kiểm định chất lượng phương tiệnvẫn còn tồn tại hiện tượng tiêu cực Đấy là những nguyên nhân trực tiếp ảnhhưởng đến sự an toàn của người và phương tiện khi tham gia giao thông.Vậy để giảm thiệu được tình trạng mất an toàn khi tham gia giao thông cầnphải thực hiện nhiều biện pháp có tính hệ thống và lâu dài, trong đó quantrọng hơn hết vẫn là công tác tuyên truyền, giáo dục ý thức tham gia giaothông an toàn cho người dân Trên các phương tiện thông tin đại chúng đã
và đang có nhiều chương trình tuyên truyền nhằm nâng cao ý thức tham giagiao thông
* Mức độ nguy hiểm khi uống rượu bia mà tham gia giao thông:
Thời gian gần đây, những vi phạm về luật giao thông có biểu hiện diễn biếnphức tạp, trong đó nguyên nhân liên quan rượu, bia được các chuyên giađánh giá khá nghiêm trọng Đặc điểm của người điều khiển phương tiện saukhi uống rượu, bia thường là chạy tốc độ cao, lạng lách, không làm chủ đượctay lái, phán đoán và xử lý tình huống kém Do đó, say rượu bia thường cóliên quan mật thiết với việc vi phạm tốc độ, tránh, vượt sai quy định, đi saiphần đường So với các quốc gia trong khu vực, nước ta có mức tiêu thụrượu, bia vào loại lớn, chế tài và việc kiểm soát vi phạm quy định nồng độcồn thiếu chặt chẽ, nên tai họa cũng như nguy cơ dẫn đến tai nạn giao thôngđều cao
Theo thống kê của Uỷ ban an toàn giao thông quốc gia, khoảng 40% số vụtai nạn giao thông và 11% số người tử vong do tai nạn liên quan đến rượu,bia Nguyên nhân gây tai nạn giao thông vẫn không nằm ngoài vấn đề cơbản là ý thức của người tham gia giao thông Trong đó, ý thức chấp hànhluật giao thông của người dân còn rất yếu, thậm chí coi thường tính mạngcủa bản thân và gây tổn hại cho người khác
* Các qui định đối với người điều khiển phương tiện khi tham gia giaothông:
Có thể nói rằng, quy định pháp luật về nồng độ cồn trong máu đối với ngườiđiều khiển phương tiện cơ giới đường bộ nói riêng và các lĩnh vực giaothông khác tương đối đầy đủ và ngày càng chặt chẽ
Đối với giao thông đường bộ, uống ruợu, bia có ảnh hưởng rất lớn đối vớingười điều khiển phương tiện khi tham gia giao thông như dễ vi phạm quytắc giao thông, xử lý tình huống trên đường kém làm tăng nguy cơ gây tai
Trang 5nạn giao thông, đó là hành vi rất nguy hiểm, vì vậy pháp luật Việt Nam đãđưa quy định hành vi sử dụng rượu bia quá nồng độ vào điều nghiêm cấmđối với người điều khiển phương tiện cơ giới đường bộ Mức độ quy định vềnồng độ cồn trong máu ngày càng chặt chẽ, khắt khe hơn để bảo đảm antoàn cho người điều khiển phương tiện, hạn chế tai nạn giao thông.
Để tích cực ngăn chặn việc người điều khiển phương tiện giao thông trongtình trạng say rượu bia, theo nghị định 71/2012/NĐ - CP qui định người điềukhiển xe ô tô trên đường mà trong máu hoặc hơi thở có nồng độ cồn vượtquá 50 - 80 miligam/100 mililít máu hoặc vượt quá 0,25 - 0,4 miligam/1 lítkhí thở thì sẽ bị phạt
Chính vì thế có nhiều công trình nghiên cứu về vấn đề đo nồng độ cồn đối với những người tham gia giao thông Nhằm mục đích chủ động ngăn ngừa tai nạn giao thông Đề tài : “Nghiên cứu xây dựng mạch cảnh báo nồng độ cồn” mang tính cộng đồng và xã hội cao, nhằm mục đích chủ động ngăn ngừa kịp thời và cảnhbáo sớm hiểm họa về tai nạn giao thông xảy ra, tạo nên một thói quen và ý thức tốtcho người tham gia giao thông
1.3 Phân tích bài toán
1.3.1 Yêu cầu bài toán
- Đề xuất chọn phương pháp phát hiện nồng độ cồn trong hơi thở của người điều khiển phương tiện tham gia giao thông
- Thiết kế, thi công mạch đo cảnh báo nồng độ cồn
- Thử nghiệm hệ thống cảnh báo
Hiện nay có nhiều phương pháp phát hiện nồng độ cồn đó là :
Phương pháp đo nồng độ cồn trong máu: Đây là phương pháp được sử dụng để xácđịnh lượng các chất kích thích và hoạt chất gây ảnh hưởng tới cơ thể con người có trong máu Sử dụng các biện pháp hóa sinh trong phòng thí nghiệm để đo đạc với
độ chính xác cao Tuy nhiên phương pháp này có nhược điểm là phải lấy mẫu máu của người cần kiểm tra tại cơ sở y tế, thông qua quy trình thử nghiệm trong phòng thí nghiệm mới cho ra kết quả do đó gây tốn thời gian và không thể áp dụng trong các trường hợp cần kiểm tra nhanh, tại hiện trường
Phương pháp đo nồng độ cồn trong hơi thở : Hơi thở của người say rượu sẽ có nồng độ cồn cao Sử dụng các thiết bị đo nồng độ cồn từ hơi thở hoặc đo nồng độ trong không khí của không gian thở trước mặt người lái để đánh giá tình trạng say rượu bia
Trang 6Có nhiều phương pháp để phát hiện trạng thái say rượu của người lái xe Qua thamkhảo các kết quả nghiên cứu có nhận xét: các phương pháp xác định nồng độ cồn qua hơi thở hiện đang được sử dụng phổ biến Bởi vì, sử dụng cảm biến đo nồng
độ cồn trong hơi thở chỉ cần thời gian khoảng 8 đến 10 giây
Vì thế trong đề tài chúng em sẽ đi sâu vào thiết kế mạch đo và cảnh báo nồng độ cồn qua hơi thở
1.3.2 Giải pháp thiết kế
Hệ thống phát hiện nồng độ cồn có nhiệm vụ chính là kiểm tra trực tiếpnồng độ cồn trong hơi thở
Hệ thống cảnh báo có nhiệm vụ chính là phát các tín hiệu cảnh báo khi nồng
độ cồn trong vùng không gian thở trước mặt của người sử dụng cao quá mức quyđịnh
Chọn ngưỡng ngăn chặn và cảnh báo: căn cứ vào các qui định của luật giaothông, căn cứ vào độ nhạy và sai số điện áp đầu ra của cảm biến đo nồng độ cồnMQ-3, ta chọn ngưỡng ngăn chặn và cảnh báo cho hệ thống ứng với nồng độ cồn0,05 mg/lit khí thở
Trang 7CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG THIẾT BỊ ĐO VÀ CẢNH BÁO
NỒNG ĐỘ CỒN 2.1 Sơ đồ khối
Hình 2.1 Sơ đồ khối
2.1.1 Chức năng và nhiệm vụ của từng khối
- Khối nguồn: Có chức năng cung cấp năng lượng cho toàn bộ hệ thống
- Khối cảm biến đầu vào: có chức năng cảm biến qua hơi thở để xác định cónồng độ cồn hay không, sau đó nó sẽ gửi tín hiệu tới khối điều khiển
- Khối điều khiển: nó có chức năng điều khiển khối hiển thị và cảnh báo khinhận được tín hiệu từ cảm biến
- Khối hiển thị: sẽ hiển thị nồng độ cồn đo được lên màn hình LED 16x2 vàcảnh báo mức độ nồng độ cồn phụ thuộc vào mức độ cồn đo được
2.1.2 Nguyên lí hoạt động toàn mạch
Đầu tiên khối nguồn cấp nguồn cho hệ thống gồm khối điều khiển, khối cảm biến
và khối hiển thị Khối cảm biến thu tín hiệu từ môi trường truyền về khối điều khiển dạng tín hiệu tương tự, sau khi đi qua bộ chuyển đổi tín hiệu tương tự sang
số, ở đầu ra tín hiệu ở dạng tín hiệu số, sau đó tín hiệu này được vi điều khiển tiếp nhận và xử lý tính toán rồi đưa ra kết quả là nồng độ cồn có trong 1 lít khí thở căn
cứ vào đó đưa ra cảnh báo cho người sử dụng, tín hiệu cảnh báo và kết quả này được đưa đến khối hiển thị khối này tiếp nhận và hiển thị thông tin về nồng độ cồn
và lời cảnh báo
Khối nguồn
Khối cảm biến Khối điều khiển
Khối hiển thị và cảnh báo
Trang 82.2 Lựa chọn linh kiện
2.2.1 Module cảm biến MQ3
Cảm biến MQ-3 được sử dụng để đo nồng độ cồn Được làm từ vật liệuSnO2 Vật liệu này có tính dẫn điện kém trong môi trường không khí sạch nhưnglại rất nhạy cảm với hơi cồn Trong môi trường có nồng độ cồn càng cao, điện trởcủa cảm biến càng giảm Từ bảng số liệu, tỷ lệ điện trở của cảm biến giảm gần 5lần khi đo trong môi trường không khí sạch Tuy nhiên hiệu ứng phát hiện nồng độcồn của cảm biến này còn phụ thuộc điều kiện nhiệt độ Khi nhiệt độ bề mặt cảmbiến được sấy nóng tới 600C, thời gian cần thiết để phát hiện nồng độ cồn kéo dàikhoảng 8 giây Cũng trong môi trường đó, khi nhiệt độ bề mặt cảm biến là 200Cthời gian phát hiện nồng độ cồn kéo dài từ 3 đến 5 phút
Hình 2.5 Cảm biến MQ-3
Các thông số kĩ thuật của MQ-3:
Chất phản ứng Cồn (ethanol)
Tải đầu ra Điều chỉnh được Ω
Trang 9Điện trở sấy 31± 3 Ω
Điện trở cảm biến 2÷ 20 KΩ tại nồng độ cồn 0,4mg/l
Tỉ lệ điện trở cảm biếnkhi nồng độ cồn bằng 0
và 0,4mg/l
Sơ đồ mạch điện của cảm biến
Hình 2.6 Sơ đồ mạch điện của cảm biến.
Trong mạch điện của cảm biến MQ3, có 2 đầu dây áp đầu ra của cảm biến,
RL là điện trở mạch ra được nối nối tiếp với cảm biến, trị số được cấp điện áp: VH
là điện áp cấp cho mạch sấy và Vc điện áp cấp cho cảm biến, VRL là điện của RL cóthể điều chỉnh được Các điện áp VH và Vc thường được cấp cùng trị số Trongmạch đo, các điện áp này được cấp 5 Vol DC Các tín hiệu ra của cảm biến đượcgửi về bộ vi điều khiển để tính toán xử lý
Trang 10Module cảm biến MQ-3 Cảm biến thích hợp cho việc phát hiện nồng độ cồn
trong hơi thở Phát hiện khí phát ra từ Etanol, Alcohol Đặc điểm của module cảm
biến MQ-3: Có bốn chân, điện áp cung cấp là nguồn 5V, Dout đầu ra là tín hiệu số
(0 và 1), Aout đầu vào là tín hiệu tương tự, đèn LED sáng khi phát hiện có khí,
GND cấp điện cực âm, độ nhạy cao và chọn lọc tốt với ethanol, bền và ổn định
đáng tin cậy, độ nhạy cao và thời gian đáp ứng nhanh
Trang 11
2.2.2 KIT AVR ATmega 16
Kit Avr ATmega 16 có chức năng đơn giản là đưa các chân IO của vi điều khiển ra header bên ngoài để tiện nối với mạch ngoại vi Cách phân chia thành các module như thế giúp tiết kiệm chi phí khi cần học một loại vi điều khiển khác Khi
đó, ta sẽ dùng lại các khối ngoại vi đã có (như các mạch sensor, ADC, hiển thị led
7 thanh, LCD, ma trận phím …) cho vi điểu khiển mới thay vì vẽ lại cả mạch với đầy đủ các chức năng này
Vi điều khiển ATmega 16
ATmega 16 là vi điều khiển 8 bit dựa trên kiến trúc RISC Với khả năng thực hiện mỗi lệnh trong vòng một chu kỳ xung Clock, ATmega 16 có thể đạt được tốc độ 1MIPS trên mỗi MHz
Ngoài ra ATmega16 có các đặc điểm như sau: 16kB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32 đường vào/ ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao tiếp nối tiếp 2 dây, 8 kênh ADC 10 bit,…
ATmega16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro asemblers, chương trình mô phỏng và sửa lỗi,…
Trang 12Hình ảnh thực tế của vi điều khiển ATmega16
Sơ đồ chân của vi điều khiển ATmega 16
Trang 13 Cấu trúc nhân
CPU của ATmega 16 có chức năng bảo đảm sự hoạt động chính xác các chương trình Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều khiển các thiết bị ngoại vi và quản lý ngắt
Cấu trúc tổng quát:
AVR sử dụng cấu trúc Harvard tách riêng bộ nhớ và các bus cho chương trình
và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung Clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash
Cấu trúc tổng quát của ATmega 16
-ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán
được thực hiện trong một chu kỳ xung Clock Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit
Trang 14-Thanh ghi trạng thái là thanh ghi có 8 bit lưu trữ trạng thái của ALU sau các
phép tính số học và logic
Trong đó:
+ C: Carry Flag (Cờ nhớ: nếu phép toán có nhớ cờ sẽ được thiết lập).+ Z: Zero Flag (Cờ zero: nếu kết quả phép toán bằng 0)
+N: Negative Flag (Nếu kết quả của phép toán là âm)
+ V: Two’s complement overflow instructions (Cờ này được thiết lậpkhi tràn số bù 2)
+ H: Half Carry Flag+ T: Tranfer bit used by BLD and BST instructions (Được sử dụnglàm nơi trung gian trong các lệnh BLD,BST)
+ I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàncục ngắt.Nếu bit này ở trạng thái logic 0 thì không có mọt ngắt nàođược phục vụ.)
-Các thanh ghi chức năng chung
Trang 15-Con trỏ ngăn xếp(SP) là một thanh ghi 16 bit nhưng cũng có thể được xem như
hai thanh ghi chức năng đặc biệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (trong bộ nhớ RAM là $5E) và có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp
_
-Quản lý ngắt
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng
sẵn sàng cho đổi dữ liệu của mình Ví dụ: khi bộ truyền nhận UART nhận đượcmột byte nó sẽ báo cho CPU biết thông qua cờ RXC, hoặc khi nó đã truyền đượcmột byte thì cờ TX được thiết lập …Khi có tín hiệu báo ngắt CPU sẽ tạm dừng chocông việc đang thực hiện lại và lưu vị trí đang thực hiện chương trình (con trỏ PC)vào ngăn xếp sau đó trỏ tới vector phục vụ ngắt và thực hiện chương trình phục vụngắt đó cho tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy PC từngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngắt nó đang thựchiện
Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu lại các
cờ báo ngắt đó lại và thực hiện các lần lượt các ngắt theo mức ưu tiên Trong khiđang thực hiện ngắt mà mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp Trườnghợp ngắt nào có mức ưu tiên cao hơn thì nó sẽ được phục vụ, còn nó mà có mức ưutiên thấp hơn thì sẽ bị bỏ qua
Bộ nhớ ngăn xếp là vùng bất kỳ trong SRAM từ địa chỉ 0x60 trở lên Để truynhập vào SRAM thông thường thì ta dùng con trỏ X, Y, Z và để truy cập vàoSRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP Con trỏ này là một thanh ghi 16bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ: SPL:0x3D/0X5D(IO/SRAM) và SPH:0x3E/0x5E
Khi chương trình phục vụ ngắt hoặc chương trình con thì con trỏ PC được lưuvào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí và con trỏ ngăn xếp sẽ
Trang 16giảm một khi thực hiện lệnh PUSH Ngược lại khi thực hiện lệnh POP thì con trỏngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽtăng 2 lần Như vậy con trỏ ngăn xếp cần được cương trình đặt trước giá trị khởitạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được chophếp phục vụ.Và giá trị ngăn xế ít nhất cũng phải lớn hơn 60H(0x60) vì 5FH trở lại
là vùng các thanh ghi
Sơ đồ khối
Trang 18+ Port B (PB): gồm 8 chân (từ 1đến 8) ngoài chức năng làm các đường xuất/nhập thì còn có nhiều chức năng phụ khác.
+ Port C (PC): gồm 8 chân (từ 22 đến 29) nếu giao tiếp JTAG được kíchhoạt điện trở trên các PC5(TDI), PC3(TMS), PC2(TCK) sẽ được kích hoạtngay cả khi khởi đọng lại (reset)
+ Chân RESET (RST): ngõ vào RSt ở chân 9 là ngõ vào reset dùng để thiếtlập trạng thái ban đầu cho Vi điều khiển Hệ thống sẽ được thiết lập lại cácgiá trị ban đầu nếu ngõ này ở mức một tối thiểu 2 chu kỳ máy
+ Chân XTAL1 và XTAL2: hai chân này có vị trí chân là 12 và 13 được sửdụng để nhận nguồn xung Clock từ bên ngoài để hoạt động thường đượcghép nối với thạch anh và các tụ để tạo nguồn xung Clock cố định
+ Chân AVCC: nguồn cấp cho cổng A và bộ chuyển đổi ADC, chân này nênđược nối với nguồn cấp VCC bên ngoài, ngay cả khi bộ chuyển dổi ADCkhông được sử dụng Nếu bộ chuyển đổi ADC không được sử dụng, chânAVCC nên được nối với nguồn qua bộ lọc
+ Chân AREF: là chân analog cho bộ chuyển đổi ADC
Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm Kếtquả so sánh có thể sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tạichân OC0
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lậptrình được Cấu trúc của nó như hình dưới đây:
Trang 19Sơ đồ đơn vị đếm
- Count: tăng hay giảm TCNT0:1
- Direction: lựa chọn giữa đếm lên và đếm xuống
- Clear: xóa thanh ghi TCNT0
- TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
- BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất
Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị thanh ghi so sánh ngõ
ra (OCR0) Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung Clock tiếp theo Nếu được kích hoạt (OCF0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ
ra và sẽ tự động xóa khi ngắt được thực thi Cờ OCF0 cũng có thể được xóa bằng phần mềm
Trang 20Sơ đồ dơn vị so sánh ngõ ra
Mô tả các thanh ghi
Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0
- Bit 7 (FOC0): so sánh ngõ ra bắt buộc (bit này chỉ tích cựckhi bit WGM00 chỉ định chế độ làm việc không có PWM.Khi đặt bit này lên 1, một báo hiệu so sánh bắt buộc xuấthiện tại đơn vị tạo dạng sóng)
- Bit 6 (WGM00) – bit 3(WGM01): chế độ tạo dạng sóng cácbit này điều khiển hoạt động của chân OC0 Nếu 1 hoặc haibit COM01, COM00 được đặt lên 1, ngõ ra OC0 sẽ hoạtđộng
- Bit 2 (CS02)- bit 1 (CS01)- bit 0 (CS00): chọn xung đồng hồ( ba bit này dùng để lựa chọn nguồn xung cho bộ địnhthời/bộ đếm)
Trang 21Lựa chọn nguồn xung cho bộ định thời
Thanh ghi bộ định thời/bộ đếm: cho phép truy cập trực tiếp vào bộ đếm 8 bit
Thanh ghi so sánh ngõ ra- OCR0: chứa một giá trị 8 bit và liên tục được so
sánh với giá trị của bộ đếm
Thanh ghi mặt nạ ngắt
- Bit 1 (OCIE0): cho phép ngắt báo hiệu so sánh
- Bit 0 (TOIE0): cho phép ngắt tràn bộ đếm
Thanh ghi cờ ngắt bộ định thời
Trang 22- Bit 1 (OCF0): cờ so sánh ngõ ra 0
- Bit 0 (TOV0): cờ tràn bộ đếm2.2.3 Màn hình LCD 16x2 (LCD HD44480)
Trang 23 Chức năng các chân
* Ghi chú: Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua cácchân DBx Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển choLCD thông qua các chân DBx
Trang 24 Sơ đồ khối của HD44780
Để hiểu rõ hơn chức năng các chân và hoạt động của chúng, ta tìm hiểu sơ quachip HD44780 thông qua các khối cơ bản của nó
Trang 25 Các thanh ghi:
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : thanh ghi lệnh IR (InstructorRegister) và thanh ghi dữ liệu DR (Data Register)
-Thanh ghi IR: Để điều khiển LCD, người dùng phải “Ra lệnh” thông qua tám
đường bus DB0-DB7 Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng.Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR Nghĩa
là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chip HD44780 sẽ tra bảng mã lệnhtại địa chỉ mà IR cung cấp và thực hiện lệnh đó
Ví dụ: Lệnh “Hiển thị màn hình” có địa chỉ lệnh là 00001100(DB7…DB0) Lệnh “Hiển thị màn hình và con trỏ” có mã lệnh là 00001110
-Thanh ghi DR: Để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc
CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng ram này gửi ra choMPU (ở chế độ đọc) Nghĩa là, khi MPU ghi thông tin vào IR, dữ liệu ở địa chỉ nàytrong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU.-> Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2thanh ghi này khi giao tiếp với MPU Bảng sau đây tóm tắt lại các thiết lập đối vớihai chân RS và R/W theo mục đích giao tiếp
-Cờ báo bận BF: (Busy Flag)
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảngthời gian để hoàn tất Khi đang thực thi các hoạt động bên trong chip như thế, LCD
bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiếtlập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận” Dĩ nhiên, khi xongviệc, nó sẽ đặt cờ BF lại mức 0
Trang 26-Bộ đếm địa chỉ AC : (Address Counter)
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM(DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC Bộ đếm này lại nối với
2 vùng RAM theo kiểu rẽ nhánh Khi một địa chỉ lệnh được nạp vào thanh ghi IR,thông tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAMtương tác đã được bao hàm trong mã lệnh
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị vànội dung của AC được xuất ra cho MPU thông qua DB0-DB6 khi có thiết lậpRS=0 và R/W=1 (xem bảng tóm tắt RS - R/W)
Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh màđược cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiển thị,bạn phải delay một khoảng tADD khoảng 4uS5uS (ngay sau khi BF=1) trước khinạp dữ liệu mới Xem thêm hình bên dưới
Giản đồ xung cập nhật AC
-Vùng RAM hiển thị DDRAM : (Display Data RAM)
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM làmột ô kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit,LCD sẽ hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn
đã cung cấp Hình sau đây sẽ trình bày rõ hơn mối liên hệ này :
Trang 27Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD
Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit.Những vùng RAM còn lại không dùng cho hiển thị có thể dùng như vùng RAM
đa mục đích
Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo
mã HEX
-Vùng ROM chứa kí tự CGROM: Character Generator ROM
Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự,
và định địa chỉ bằng 8 bit Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí
tự kiểu 5x10 (tổng cộng là 240 thay vì 2562 8 = mẫu kí tự) Người dùng khôngthể thay đổi vùng ROM này
Trang 28Như vậy, để có thể ghi vào vị trí thứ x trên màn hình một kí tự y nào đó, ngườidùng phải ghi vào vùng DDRAM tại địa chỉ x (xem bảng mối liên hệ giữaDDRAM và vị trí hiển thị) một chuỗi mã kí tự 8 bit trên CGROM Chú ý làtrong bảng mã kí tự trong CGROM ở hình bên dưới có mã ROM A00
Ví dụ : Ghi vào DDRAM tại địa chỉ “01” một chuỗi 8 bit “01100010” thì trênLCD tại ô thứ 2 từ trái sang (dòng trên) sẽ hiển thị kí tự “b”
Bảng mã kí tự (ROM code A00)
Trang 29-Vùng RAM chứa kí tự đồ họa CGRAM : (Character Generator RAM)
Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để người dùng có thể tạo các mẫu kí tự đồ họa riêng Tuy nhiên dung lượng vùng này rất hạn chế: Ta chỉ có thể tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh
Để ghi vào CGRAM, hãy xem hình 6 bên dưới
Trang 30 Khởi tạo LCD:
Khởi tạo là việc thiết lập các thông số làm việc ban đầu Đối với LCD, khởi tạo giúp ta thiết lập các giao thức làm việc giữa LCD và MPU Việc khởi tạo chỉ được thực hiện 1 lần duy nhất ở đầu chương trình điều khiển LCD và bao gồm các thiết lập sau :
• Display clear : Xóa/không xóa toàn bộ nội dung hiển thị trước đó
• Function set : Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu kí tự 5x8/5x10
• Display on/off control: Hiển thị/tắt màn hình, hiển thị/tắt con trỏ, nhấp
nháy/không nhấp nháy
• Entry mode set : các thiết lập kiểu nhập kí tự như: Dịch/không dịch, tự tăng/giảm(Increment)
Mỗi khi được cấp nguồn, mạch khởi tạo bên trong LCD sẽ tự động khởi tạo cho
nó Và trong thời gian khởi tạo này cờ BF bật lên 1, đến khi việc khởi tạo hoàn tất
cờ BF còn giữ trong khoảng 10ms sau khi Vcc đạt đến 4.5V (vì 2.7V thì LCD đã hoạt động) Mạch khởi tạo nội sẽ thiết lập các thông số làm việc của LCD như sau:
• Display clear : Xóa toàn bộ nội dung hiển thị trước đó
• Function set: DL=1 : 8bit; N=0 : 1 hàng; F=0 : 5x8
• Display on/off control: D=0 : Display off; C=0 : Cursor off; B=0 : Blinking off
• Entry mode set: I/D =1 : Tăng; S=0 : Không dịch
Như vậy sau khi mở nguồn, bạn sẽ thấy màn hình LCD giống như chưa mở nguồn
do toàn bộ hiển thị tắt Do đó, ta phải khởi tạo LCD bằng lệnh
Trang 31 Khởi tạo bằng lệnh: (chuỗi lệnh)
Việc khởi tạo bằng lệnh phải tuân theo lưu đồ sau của nhà sản xuất :