Tải bản đầy đủ (.docx) (56 trang)

Nghiên cứu thiết kế bộ đếm sản phẩm sử dụng vi điều khiển họ 8051

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (933.7 KB, 56 trang )

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM
KHOA CƠ – ĐIỆN

BÁO CÁO ĐỒ ÁN MÔN HỌC
Đề tài:
“Nghiên cứu thiết kế bộ đếm sản phẩm sử dụng Vi điều
khiển họ 8051”

Cán bộ hướng dẫn

:Lại Văn Song

Bộ môn

:Tự Động Hóa

Nhóm SV thực hiện

:Nguyễn Thị Phượng

576127 – K57TDHA

:Thân Văn Quyết

576214 – K57TDHB


NGHIÊN CỨU THIẾT KẾ BỘ ĐẾM
SẢN PHẨM SỬ DỤNG VI ĐIỀU
KHIỂN HỌ 8051
Phần 1 : Đặt vấn đề


1. ĐẶT VẤN ĐỀ

Ngày nay, khái niệm kỹ thuật đã trở thành quen thuộc vì nhiều người, bởi vì sự
phát triển của ngành kỹ thuật này đã có ảnh hưởng rất lớn đến ngành kinh tế
toàn cầu. Có người đã nêu lên ý tưởng gọi nền kinh tế của chúng ta là “ nền kinh
tế kỹ thuật số “, “số hóa” đã gần như vượt khỏi ranh giới của một thuật ngữ kỹ
thuật .Nhờ có ưu điểm của xử lý số như độ tin cậy trong truyền dẫn, tính đa
thích nghi và kinh tế của nhiều phần mềm khác nhau, tính tiện lợi trong điều khiển
và khai thác mạng.
Số hóa đang là xu hướng phát triển tất yếu của nhiều lĩnh vực kỹ thuật và
kinh tế khác nhau. Không chỉ trong lĩnh vực thông tin liên lạc và tin học. Ngày
nay, kỹ thuật số đã và đang thâm nhập mạnh mẽ vào Kỹ thuật điện tử , Điều khiển
tự động, phát thanh truyền hình, y tế , nông nghiệp...và ngay cả trong các dụng cụ
sinh họat gia đình.
Ngay từ những ngày đầu khai sinh, kỹ thuật số nói riêng và ngành điện tử
nói chung đã tạo ra nhiều bước đột phá mới mẻ cho các ngành kinh tế khác và còn
đảm bảo được yêu cầu của người dùng cả về chất lượng và dịch vụ . Đồng thời
kiến thức về kỹ thuật số là không thể thiếu đối với mọi sinh viên, nhất là sinh viên
điện tử
Nhằm góp phần vào sự phát triển nền khoa học kĩ thuật thế giới nói chung và
trong sự phát triển kĩ thuật điện tử nói riêng ,là mỗi sinh viên kĩ thuật cần phải nắm
bắt và vận dụng nó một cách hiệu quả . Xuất phát từ nhu cầu thực tế tại các nhà
máy,doanh nghiệp sản xuất hiện nay ,chúng em có thể thấy ngày càng có nhiều
khâu được tự động hóa trong quá trình sản xuất. Một trong những khâu đơn giản
trong dây chuyền sản xuất tự động hóa đó là số lượng sản phẩm làm ra được đếm
một cách tự động.


Đối với một số doanh nghiệp có quy mô sản xuất vừa và nhỏ thì việc tự động
hóa hoàn toàn chưa được áp dụng trong những khâu đếm sản phẩm mà vẫn cần

phải sử dụng công nhân lao động . Từ đó , chúng em muốn làm một điều gì nhỏ
trong phạm vi khả năng của bản thân góp phần giúp người lao động bớt mệt mỏi
chân tay ,không những cho phép tăng hiệu suất lao động lên nhiều lần mà còn đảm
bảo được độ tin cậy.
Và đề tài mà chúng em nghiên cứu đó là :”Nghiên cứu thiết kế bộ đếm sản
phẩm sử dụng Vi điều khiển họ 8051”. Mạch đếm sản phẩm sử dụng AT89C52
có thể thay đổi số đếm một cách linh hoạt bằng việc thay đổi chương trình mà phần
cứng không hề thay đổi.Đặc biệt với mạch này cũng khá đơn giản, ít linh kiện sử
dụng trong mạch mà có thể kết nối giao tiếp được với máy tính thích hợp nhằm
giúp người quản lí kĩ thuật nắm bắt được tình hình sản xuất qua màn hình của máy
vi tính.
Em xin chân thành cảm ơn..!
1. Mục tiêu của đề tài:

-Mạch có khả năng đếm sản phẩm hoạt động chính xác, thực hiện được đúng

yêu cầu.
2. Thời gian và địa điểm thực hiện:
-Thời gian: trong khoảng 2 tháng
-Địa điểm: tại nhà
3. Ý nghĩa khoa học của đề tài:

-Giúp sinh viên có thể gần gũi hơn với việc lập trình từ đó có thể tiếp cận
gần hơn với bộ môn tự động hóa trong quá trình sản xuất .

PHẦN 2 GIỚI THIỆU LINH KIỆN
2.1 Khối nguồn
Ổn áp L7805 : Là IC ổn áp 5V, tương ứng với dòng là 1A.
Với những mạch điện không đòi hỏi độ ổn định của điện áp quá cao, sử dụng IC ổn
áp thường được người thiết kế sử dụng vì mạch điện khá đơn giản. Và 7805 cho ổn

định điện áp đầu ra là dương với điều kiện đầu vào luôn luôn lớn hơn đầu ra
3V.IC7805 gồm có 3 chân:


Vin : Chân nguồn đầu vào
GND : Chân nối đất
Vo : Chân nguồn đầu ra

2.2 Điện trở treo
Điện trở kéo (điện trở treo là một trường hợp của điện trở kéo) là thành phần
rất phổ biến trong các mạch số hoặc có sử dụng vi điều khiển.


Chúng ta có một MCU (vi điều khiển) với một chân được cấu hình là một
đầu vào (Input). Nếu không kết nối chân này với thành phần nào khác, tiến hành
đọc trạng thái của chân này. Lúc này kết quả chương trình trả về là mức cao hay
mức thấp? Rất khó để có thể trả lời do hiện tượng trôi nổi dẫn đến trạng thái là
không xác định. Người ta sẽ sử dụng một điện trở kéo lên hoặc kéo xuống để xác
lập 1 trong 2 trạng thái là HIGH (mức tích cực cao) hoặc LOW (mức tích cực
thấp). Và đảm bảo dòng điện chạy qua nó là đủ nhỏ để không làm hỏng MCU.
Trong bài viết này chúng ta sẽ chỉ đề cập đến điện trở kéo lên, mọi thứ sẽ tương tự
với điện trở kéo xuống. Điều khác nhau ở đây là điện trở kéo lên thường được nối
đến Vcc của mạch, thông thường là 3.3V hoặc 5V. Điện trở kéo xuống được nối
đến GND (đất).
Điện trở kéo thường sử dụng đi kèm với linh kiện đóng ngắt như nút bấm, công
tắc, trong mạch chuyển đổi tương tự/số, giao tiếp I2C…


Với điện trở kéo lên, đầu vào của MCU sẽ đọc trạng thái là HIGH nếu nút nhấn
không được bấm. Nói cách khác, một lượng nhỏ dòng điện sẽ chạy qua giữa Vcc

và đầu vào của MCU (không phải GND). Do đó, mức điện áp tại đầu vào của
MCU sẽ đọc là mức điện áp Vcc (HIGH). Khi nút nhấn được bấm, nó sẽ kết nối
trực tiếp đầu vào MCU với GND. Dòng điện sẽ chạy thẳng qua điện trở kéo xuống
GND, vì thế mức điện áp đọc tại đầu vào MCU là 0V (LOW). Nếu không có điện
trở kéo lên, khi bạn nhấn nút sẽ xảy ra hiện tượng đoản mạch.
Chọn giá trị điện trở kéo
Chọn giá trị điện trở kéo cỡ trên dưới 10KΩ là ổn.
Giá trị điện trở thấp cho dòng lớn đi qua, gọi là kéo mạnh. Ngược lại, giá trị điện
trở cao gọi là kéo yếu.


Trở kháng tại đầu vào của MCU nằm trong khoảng 100KΩ – 1MΩ.
Giá trị điện trở kéo cần đáp ứng 2 điều kiện sau:
Khi nút bấm được bấm: dòng điện chạy trực tiếp từ Vcc xuống GND thông qua
R1, vì thế giá trị của R1 không được thấp quá để tránh lãng phí dòng điện cũng
như ko làm ảnh hưởng đến toàn mạch.
Khi nút bấm không được bấm: R1 kết hợp với trở kháng (R2) của đầu vào MCU
tạo ra mạch phân áp, điện áp tại đầu vào sẽ phụ thuộc vào R1. Nếu R1 quá cao dẫn
đến sụt áp quá nhiều, MCU không phân biệt được chính xác trạng thái tại đầu vào.
Thông thường người ta chọn giá trị điện trở kéo (R1) bằng 1/10 trở kháng (R2) của
MCU.
Hiện nay, hầu hết các dòng vi điều khiển đã được nhà sản xuất tích hợp điện trở
kéo bên trong, có thể điều khiển chức năng này một cách nhanh chóng thông qua
các đoạn mã lệnh.
Ý kiến khác chỉ ra rằng khi sử dụng điện trở kéo có trị số lớn, tốc độ phản hồi của
hệ thống sẽ chậm đi. Đó là do hệ thống có sử dụng mạch lọc RC, mạch RC cần


một khoảng thời gian đủ để xả hoặc nạp đầy tụ điện trước khi hệ thống đáp ứng tín
hiệu. Trên một đường truyền có tốc độ cao (USB chẳng hạn) thì điện trở kéo có giá

trị lớn sẽ làm giới hạn tốc độ truyền dữ liệu. Đó là lý do tại sao bạn lại hay thấy
người ta dùng điện trở kéo có giá trị tương đối thấp vào khoảng 1KΩ – 4.7KΩ trên
các mạch truyền nhận dữ liệu.
2.3 Tụ hóa ( tụ điện phân cực)
Tụ hóa là một loại tụ có phân cực. Chính vì thế khi sử dụng tụ hóa yêu cầu
người sử dụng phải cắm đúng chân của tụ điện với điện áp cung cấp. Tụ hoá là tụ
có phân cực âm dương , tụ hoá có trị số lớn hơn và giá trị từ 0,47µF đến khoảng
4.700 µF , tụ hoá thường được sử dụng trong các mạch có tần số thấp hoặc dùng để
lọc nguồn, tụ hoá luôn luôn có hình trụ..
Có hai dạng tụ hóa thông thường đó là tụ hóa có chân tại hai đầu trụ tròn của
tụ và loại tụ hóa có 2 chân nối ra cùng 1 đầu trụ tròn . Đồng thời trên các tụ hóa,
người ta thường ghi kèm giá trị điện áp cực đại mà tụ có thể chịu được. Nếu trường
hợp điện áp lớn hơn so với giá trị điện áp trên tụ thì tụ sẽ bị phồng hoặc nổ tụ tùy
thuộc vào giá trị điện áp cung cấp. Thông thường, khi chọn các loại tụ hóa này
người ta thường chọn các loại tụ có giá trị điện áp lớn hơn các giá trị điện áp đi qua
tụ để đảm bảo tụ hoạt động tốt và đảm bảo tuổi thọ của tụ hóa.

Tụ hoá - Là tụ có phân cực âm dương
2.4. Vi điều khiển AT89C52:


AT89C52 là IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩ
m AT89C52 thích hợp cho những ứng dụng điều khiển. Việc xử
lý trên byte và cáctoán số học ở cấu trúc dữ liệu nhỏ được
thực hiện bằng nhiều chế độ truy xuấtdữ liệu nhanh trên
RAM nội. Tập lệnh cung cấp một bảng tiện dụng của
nhữnglệnh số học 8 bit gồm cả lệnh nhân và lệnh chia. Nó
cung cấp những hổ trợ mởr ộ n g t rê n c h i p d ù n g c h o n h ữ n g
b i ế n m ộ t b i t n h ư l à k i ểu d ữ l i ệ u r i ê n g b i ệ t c h o phép quản
lý và kiểm tra bit trực tiếp trong hệ thống điều

khiển. AT89C52 cung cấp những đặc tính chuẩn như:
+8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000
chu kỳ ghi/xoá
+Tần số hoạt động từ: 0Hz đến 24 MHz
+3 mức khóa bộ nhớ lập trình
+3 bộ Timer/counter 16 Bit
+128 Byte RAM nội. (256x8 bit RAM)
+4 Port xuất /nhập I/O 8 bit.
+Giao tiếp nối tiếp.
+64 KB vùng nhớ mã ngoài
+64 KB vùng nhớ dữ liệu ngoại4µs cho hoạt động nhân hoặc chia.


Sơ đồ khối của IC AT89C52
*Các chân của vi điều khiển :


*Một số lưu ý về ngắt trong 8051:
Ø Phân biệt cơ chế ngắt với hỏi vòng
Ø Nắm rõ các loại ngắt trong 8051
· Ngắt timer/counter
· Ngắt ngoài
· Ngắt truyền thông nối tiếp
Ø Lập trình các ngắt
· Trình phục vụ ngắt là gì?
· Cho phép ngắt và cấm ngắt
· Thiết lập mức ưu tiên của các ngắt
Giới thiệu
Ngắt (Interrupt) - như tên của nó, là một số sự kiện khẩn cấp bên trong
hoặc bên ngoài bộ vi điều khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện

chương trình hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu – nhiệm
vụ này gọi là trình phục vụ ngắt (ISR: Interrupt Service Routine).
Trong bài này ta tìm hiểu khái niệm ngắt và lập trình các ngắt trong bộ vi
điều khiển 8051.
1. Các ngắt của 8051


1.1 Phân biệt cơ chế ngắt với hỏi vòng
Lấy ví dụ: Bộ vi điều khiển đóng vai trò như một vị bác sĩ, các thiết bị kiểm
soát bởi vi điều khiển được coi như các bệnh nhân cần được bác sĩ phục vụ.
Bình thường, vị bác sĩ sẽ hỏi thăm lần lượt từng bệnh nhân, đến lượt bệnh
nhân nào được hỏi thăm nếu có bệnh thì sẽ được bác sĩ phục vụ, xong lại đến
lượt bệnh nhân khác, và tiếp tục đến hết. Điều này tương đương với phương
pháp thăm dò - hỏi vòng(Polling) trong vi điều khiển.
Cứ như thế, nếu chúng ta có 10 bệnh nhân, thì bệnh nhân thứ 10 dù muốn
hay không cũng phải xếp hàng chờ đợi 09 bệnh nhân trước đó. Giả sử trường
hợp bệnh nhân thứ 10 cần cấp cứu thì sao? Anh ta sẽ gặp nguy cấp trước khi
đến lượt hỏi thăm của bác sĩ mất! L Nhưng, nếu anh ta sử dụng phương pháp
“ngắt” thì mọi chuyện sẽ ổn ngay. Lúc đó vị bác sĩ sẽ ngừng mọi công việc hiện
tại của mình, và tiến hành phục vụ trường hợp khẩn cấp này ngay lập tức, xong
việc bác sĩ lại trở về tiếp tục công việc đang dở. Điều này tương đương với
phương pháp ngắt (Interrupts) trong vi điều khiển.
Trở lại với bộ vi điều khiển của chúng ta: 1 bộ vi điều khiển có thể phục
vụ cho nhiều thiết bị, có 2 cách để thực hiện điều này đó là sử dụng
các ngắt (Interrupts) vàthăm dò (polling):
Ø Trong phương pháp sử dụng ngắt: mỗi khi có một thiết bị bất kỳ cần được
phục vụ thì nó báo cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi
nhận được tín hiệu ngắt thì bộ vi điều khiển ngừng tất cả những gì nó đang thực
hiện để chuyển sang phục vụ thiết bị gọi ngắt. Chương trình ngắt được gọi là
trình phục vụ ngắt ISR(Interrupt Service Routine) hay còn gọi là trình quản lý

ngắt (Interrupt handler). Sau khi phục vụ ngắt xong, bộ vi xử lý lại quay trở lại
điểm bị ngắt trước đó và tiếp tục thực hiện công việc.
Ø Trong phương pháp thăm dò: bộ vi điều khiển kiểm tra liên tục tình trạng
của tất cả các thiết bị, nếu thiết bị nào có yêu cầu thì nó dừng lại phục vụ thiết bị
đó. Sau đó nó tiếp tục kiểm tra tình trạng của thiết bị kế tiếp cho đến hết.
Phương pháp thăm dò rất đơn giản, nhưng nó lại rất lãng phí thời gian để kiểm
tra các thiết bị kể cả khi thiết bị đó không cần phục vụ. Trong trường hợp có
quá nhiều thiết bị thì phương án thăm dò tỏ ra không hiệu quả, gây ra chậm trễ
cho các thiết bị cần phục vụ.
Điểm mạnh của phương pháp ngắt là:
Ø Bộ vi điều khiển có thể phục vụ được rất nhiều thiết bị (tất nhiên là không tại
cùng một thời điểm). Mỗi thiết bị có thể nhận được sự chú ý của bộ vi điều khiển
dựa trênmức ưu tiên được gán cho nó. Đối với phương pháp thăm dò thì không
thể gán mức ưu tiên cho các thiết bị vì nó kiểm tra tất cả mọi thiết bị theo kiểu
hỏi vòng.


Ø Quan trọng hơn, trong phương pháp ngắt thì bộ vi điều khiển còn có
thể che (làm lơ) một yêu cầu phục vụ của thiết bị. Điều này lại một lần nữa
không thể thực hiện được trong phương pháp thăm dò.
Ø Lý do quan trọng nhất mà phương pháp ngắt được ưu chuộng là vì nó không
lãng phí thời gian cho các thiết bị không cần phục vụ. Còn phương pháp thăm dò
làm lãng phí thời gian của bộ vi điều khiển bằng cách hỏi dò từng thiết bị kể cả
khi chúng không cần phục vụ.
Ví dụ trong các bộ định thời được bàn đến ở các bài trước ta đã dùng một
vòng lặp kiểm tra và đợi cho đến khi bộ định thời quay trở về 0. Trong ví dụ đó,
nếu sử dụng ngắt thì ta không cần bận tâm đến việc kiểm tra cờ bộ định thời, do
vậy không lãng phí thời gian để chờ đợi, trong khi đó ta có thể làm việc khác có
ích hơn.
1.2 Sáu ngắt trong 8051

Thực tế chỉ có 5 ngắt dành cho người dùng trong 8051 nhưng các nhà
sản xuất nói rằng có 6 ngắt vì họ tính cả lệnh RESET. Sáu ngắt của 8051 được
phân bố như sau:
1. RESET: Khi chân RESET được kích hoạt từ 8051, bộ đếm chương trình
nhảy về địa chỉ 0000H. Đây là địa chỉ bật lại nguồn.
2. 2 ngắt dành cho các bộ định thời: 1 cho Timer0 và 1 cho Timer1. Địa chỉ
tương ứng của các ngắt này là 000BH và 001BH.
3. 2 ngắt dành cho các ngắt phần cứng bên ngoài: chân 12 (P3.2) và 13
(P3.3) của cổng P3 là các ngắt phần cứng bên ngoài INT0 và INT1 tương ứng.
Địa chỉ tương ứng của các ngắt ngoài này là 0003H và 0013H.
4. Truyền thông nối tiếp: có 1 ngắt chung cho cả nhận và truyền dữ liệu nối
tiếp. Địa chỉ của ngắt này trong bảng vector ngắt là 0023H.
1.3 Trình phục vụ ngắt
Đối với mỗi ngắt thì phải có một trình phục vụ ngắt (ISR) hay trình quản
lý ngắt để đưa ra nhiệm vụ cho bộ vi điều khiển khi được gọi ngắt. Khi một ngắt
được gọi thì bộ vi điều khiển sẽ chạy trình phục vụ ngắt. Đối với mỗi ngắt thì có
một vị trí cố định trong bộ nhớ để giữ địa chỉ ISR của nó. Nhóm vị trí bộ nhớ
được dành riêng để lưu giữ địa chỉ của các ISR


Bảng vecto ngắt của 8051

2.4 : cảm biến tiệm cận hồng ngoại NPN:
Cảm biến tiệm cận là vật được sử dụng để phát hiện những vật thể kim loại từ
tính và không từ tính. Người ra thường sử dụng hai kiểu cảm biến đó là cảm biến
điện cảm và cảm biến điện dung hay còn gọi là Inductivity/ capacitve
Proximity Sensor. Đây là sản phẩm đáp ứng được nhiều loại hình thời tiết và môi
trường khác nhau nhờ được lắp đặt model phù hợp.
Nguyên lý hoạt động của cảm biến tiệm cận sẽ được phân thành hai loại đó chính
là cảm biến tiệm cận kiểu điện cảm và cảm biến tiệm cận kiểu điện dung. Sau đây

chúng ta cùng đi tìm hiểu về nguyên lý làm việc của hai loại cảm biến này.
Nguyên lý làm việc của cảm biến tiệm cận điện cảm:


Inductivity Proximity Sensor phát hiện được sự suy giảm từ tính nhờ vào dòng
điện xoáy sinh ra phía trên bề mặt của vật dẫn do từ trường ngoài. Trường điện từ
được sinh ra nhờ xoay chiều sinh ra trên cuộn dây và thay đổi trở kháng phụ phụ
thuộc dòng điện xoáy ở trên bề mặt của những vật thể kim loại được chúng phát
hiện.
Một số phương pháp khác dùng để phát hiện vật thể bằng nhôm nhờ vào sự phát
hiện pha của tần số. Những dòng cảm biến kiểu điện cảm phát hiện kim loại đều
được sử dụng cuộn dây để làm phát hiện sự thay đổi của điện cảm. Mặt khác còn
có nhiều loại cảm biến đáp ứng xung, loại này sẽ phát ra dòng điện xoáy dưới dạng
xung và nó sẽ phát hiện số lần thay đổi dòng điện xoáy với điện áp được sinh ra ở
trêncuộndây.
Những vật thể cần được phát hiện và cảm biến khi tiến lại gần nhau thì tương tự
như hiện tượng của cảm ứng điện từ ở trong máy biến áp.
Nguyên lý làm việc của cảm biến điện dung:


Capacitve Proximity Sensor hay còn gọi là cảm biến điện dunglàm việc theo
nguyên lý phát hiện sự thay đổi điện dung giữa cảm biến với đối tượng cần được
phát hiện. Giá trị của điện dung phụ thuộc chính vào khoảng cách và kích thước
của đối tượng cần được phát hiện. Một dòng cảm biến tiệm cận kiểu điện dung
thông thường sẽ tương tự với tụ điện có 2 bản điện cực song song với nhau, và điện
dung sẽ thay đổi ở giữa 2 bản cực đó sẽ được phát hiện. Một tấm điện cực khác
chính là đối tượng cần được phát hiện và một tấm kia chính là bề mặt của cảm
biến. Đối tượng cũng có thể được phát hiện phụ thuộc vào những giá trị điện môi
của chúng.


2.5: Led 7 thanh
LED 7 đoạn hay LED 7 thanh (Seven Segment display) là 1 linh kiện rất phổ dụng ,
được dùng như là 1 công cụ hiển thị đơn giản nhất .
Trong LED 7 thanh bao gồm ít nhất là 7 con LED mắc lại với nhau , vì vậy mà có
tên là LED 7 đoạn là vậy ,7 LED đơn được mắc sao cho nó có thể hiển thị đượ các
số từ 0 - 9 , và 1 vài chữ cái thông dụng, để phân cách thì người ta còn dùng thêm 1
led đơn để hiển thị dấu chấm (dot) .
Các led đơn lần lượt được gọi tên theo chữ cái A- B -C-D-E-F-G, và dấu chấm
dot.
Như vậy nếu như muốn hiển thị ký tự nào thì ta chỉ cần cấp nguồn vào chân đó là


led sẽ sáng như mong muốn .

Thông số :
LED 7 thanh dù có nhiều biến thể nhưng tựu chung thì cũng chỉ vẫn có 2 loại đó
là :
+ Chân Anode chung (chân + các led mắc chung lại với nhau .)
+ Chân Catode chung (Chân - các led được mắc chung với nhau .)
* Đối với loại Anode chung :
+ Chân 3 và 8 là 2 chân Vcc(nối ngắn mạch lại với nhau , sau đó nối chung với
chân anode của 8 led đơn .), vậy muốn led nào đó sáng thì chỉ việc nối chân catot
xuống mass .
Điện áp giữa Vcc và mass phải lớn hơn 1.3 V mới cung cấp đủ led sáng, tuy nhiên
không được cao quá 3V .

2.6 : Màn hình GLCD 128 -64


*Ưu điểm của LCD này là đẹp, rẻ có thể đi nhặt đồng nát hoặc xin được, vì giá

những con GLCD trên thị trường cũng khá đắt khoảng từ 250-800K tùy loại, có
đèn nền mầu trắng hoặc màu vàng sẫm tùy đời máy Gphone, giao tiếp SPI 4line
tiết kiệm chân MCU, điện áp hoạt động theo mình dò được khoảng 2.2-3.3V
(2.5V), và các tính năng khác mình có nêu rõ trong ghi chú Code.
3.2 Sơ đồ nguyên lý tổng hợp


Nguyên lý hoạt động:
 Chế độ tự động

Khi cấp nguồn cho Vi xử lý, hệ thống được cấp điện áp lúc này chưa có sản
phẩm đi qua tức cảm biến chưa tác động, chưa có tín hiệu đến mạch điều khiển ta
thấy màn LCD hiển thị số sản phẩm = 0, 4 LED hiển thị giá trị 0000.
Khi có sản phẩm đi qua cảm biến thì Module cảm biến đưa ra tín hiệu mức 0
cho vào chân ngắt ngoài của vi điều khiển. VĐK nhận tín hiệu đã được lập trình
trước đồng thời xuất tín hiệu ra chân P0 và P1. P1 xuất ra LCD, P0 xuất ra 4 IC
quét 74HC595. Màn LCD hiển thị 1 và LED hiển thị 0001. Mỗi sản phẩm đi qua
cảm biến ghận tín hiệu đưa về vi điều khiển và đưa đến LCD cùng LED hiển thị
mức sản phẩm tăng lên 1 đơn vị. Ở LED khi giá trị tăng đến 9 là chuyển bộ đếm


giá trị sang LED kế bên. Sản phấm đếm được từ 0000 đến 9999 sau đó lại quay về
0000.
 Chế độ bằng tay

Khi ấn nút Up thì tín hiệu ở mức logic thấp đưa vào khối VXL rồi đưa đến
hiển thị trên màn LCD giá trị =1, trên 4 LED tương ứng là 0001. Mỗi lần ấn
nút Up trên màn hình LCD và LED tăng lên 1 giá trị tương ứng như ở chế độ
tự động.
Khi ấn nút Down thì tín hiệu được đưa vào VXL đưa đến LCD và LEDhiển

thị giá trị lùi 1 đơn vị. Mỗi lần ấn nút Down giá trị hiển thị giảm 1 đơn vị
cho đến khi đơn vị bằng 0 thì không thể lùi được.
Trường hợp đang hiển thị giá trị trên LED và LCD ấn nút Zero thì giá
trị hiển thị lập tức về 0 ( Chức năng: Xóa dữ liệu đã ghi thay nút Reset vì ấn
nút Reset nhiều dễ gây hỏng IC)


3.3 Lưu đồ giải thuật


Lưu đồ cho hàm chương trình chính (hàm main)


Lưu đồ cho trương trình con(hàm nutbam)

3.4 Chương trình điều khiển
 ĐẾM SẢN PHẨM HIỂN THỊ TRÊN 4 LED
#include <main.h>

unsigned int dem =0;
char str[10];


void nutbam ()
{
if(nutbam1 != 1)
{
delay_ms(200);
if(nutbam1 != 1)
{

if (dem == 0)
{
dem =0;
while (nutbam1 != 1);

}
else
{
dem--;
while (nutbam1 != 1);
}
}
}
if(nutbam2 != 1)
{
delay_ms(200);
if(nutbam2 != 1)
{
if (dem == 9999)
{


dem =0;
while (nutbam2 != 1);
}
else
{
dem++;
while (nutbam2 != 1);
}

}
}
if(nutbam3 != 1)
{
delay_ms(100);
if(nutbam3 != 1)
{
dem =0;
while (nutbam3 != 1);
}
}

}

void ngatngoai1 (void) interrupt 0 //Ham dem dung ngat INT0
{
if (dem>9998)
{
dem=0;
}


×