Ngành cơ điện tử Việt Nam ngày nay đang phát triển rất nhanh và hòa cùng với xu thế phát triển của ngành cơ điện tử trên thế giới. Càng ngày các sản phẩm cơ điện tử xuất hiện càng nhiều trong cuộc sống của con người, trong sản xuất hay trên thị trường nhằm giúp cho con người cải thiện chất lượng cuộc sống, giúp các nhà máy hay xí nghiệp nâng cao năng suất lao động.Trong quá trình công nghiệp hóa hiện đại hóa đất nước ngày nay, vấn đề cần thiết là phải áp dụng một cách có chọn lọc các nguồn lực gồm nhân lực cũng như thiết bị sản xuất. Đặc biệt quan tâm đến vấn đề cơ giới hóa, tự động hóa sản xuất. Áp dụng các dây chuyền sản xuất hiện đại nhằm nâng cao hơn nữa năng suất làm việc của công nhân. Trên tinh thần đó nhóm chúng em chọn đề tài đồ án là THIẾT KẾ HỆ THỐNG BĂNG TẢI DẪN ĐỘNG VÀ ĐẾM SẢN PHẨM.
Với đề tài này, chúng em mong là sẽ kết hợp được những kiến thức mà thầy cô đã dạy từ các môn học liên quan đến các học phần cơ khí, điện, điện tử và điều khiển lập trình, mà trọng tâm ở đây là việc lập trình Vi điều khiển, để hiện thực hóa một mô hình để có thể áp dụng trong công nghiệp ở nước ta. Nhằm góp phần nâng cao năng suất ở các nhà máy trong nước, đồng thời sẽ giảm được nhiều chi phí tốn kém khi phải nhập khẩu các hệ thống tương tự.
36 trang |
Chia sẻ: tuandn | Lượt xem: 2516 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế mạch đếm sản phẩm trong một dây chuyển sản xuất, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐỒ ÁN KT VI ĐIỀU KHIỂN &
GHÉP NỐI NGOẠI VI
Đề tài: Thiết kế mạch đếm sản phẩm trong một dây chuyền sản xuất
Nhóm thực hiện gồm:
Nguyễn Quốc Vũ 06CDT2
Huỳnh Nhật Minh 06CDT2
Trần Phước Thọ 06CDT1
MỤC LỤC
LỜI MỞ ĐẦU Trang 3
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI ------- 4
1.1 Ứng dụng đề tài ------- 4
1.2 Mô tả hệ thống ------- 4
1.3 Mô hình hệ thống ------- 4
1.4 Phân công nhiệm vụ ------- 5
CHƯƠNG 2 GIỚI THIỆU TỔNG THỂ NGUYÊN LÝ VÀ
CHỨC NĂNG CÁC KHỐI TRONG MẠCH ------- 6
2.1 Sơ đồ khối và chức năng hoạt động của từng khối ------- 6
2.2 Sơ đồ nguyên lý và phương thức hoạt dộng từng khối ------- 7
2.3 Bản vẽ Layout các mạch ------- 15
CHƯƠNG 3 LẬP TRÌNH CHO HỆ THỐNG ------- 18
3.1 Lưu đồ thuật toán ------- 18
3.2 Chương trình Assembly ------- 25
TÀI LIỆU THAM KHẢO
LỜI MỞ ĐẦU
Ngành cơ điện tử Việt Nam ngày nay đang phát triển rất nhanh và hòa cùng với xu thế phát triển của ngành cơ điện tử trên thế giới. Càng ngày các sản phẩm cơ điện tử xuất hiện càng nhiều trong cuộc sống của con người, trong sản xuất hay trên thị trường nhằm giúp cho con người cải thiện chất lượng cuộc sống, giúp các nhà máy hay xí nghiệp nâng cao năng suất lao động.Trong quá trình công nghiệp hóa hiện đại hóa đất nước ngày nay, vấn đề cần thiết là phải áp dụng một cách có chọn lọc các nguồn lực gồm nhân lực cũng như thiết bị sản xuất. Đặc biệt quan tâm đến vấn đề cơ giới hóa, tự động hóa sản xuất. Áp dụng các dây chuyền sản xuất hiện đại nhằm nâng cao hơn nữa năng suất làm việc của công nhân. Trên tinh thần đó nhóm chúng em chọn đề tài đồ án là THIẾT KẾ HỆ THỐNG BĂNG TẢI DẪN ĐỘNG VÀ ĐẾM SẢN PHẨM.
Với đề tài này, chúng em mong là sẽ kết hợp được những kiến thức mà thầy cô đã dạy từ các môn học liên quan đến các học phần cơ khí, điện, điện tử và điều khiển lập trình, mà trọng tâm ở đây là việc lập trình Vi điều khiển, để hiện thực hóa một mô hình để có thể áp dụng trong công nghiệp ở nước ta. Nhằm góp phần nâng cao năng suất ở các nhà máy trong nước, đồng thời sẽ giảm được nhiều chi phí tốn kém khi phải nhập khẩu các hệ thống tương tự.
Trong quá trình thực hiện đề tài, nhóm chúng em đã thiết kế và tính toán sao cho quá trình làm việc của mô hình là tốt nhất, ổn định nhất, công năng nhiều nhất. Tuy nhiên, nhóm cũng đã gặp nhiều khó khăn do vấn đề thời gian và kinh nghiệm của nhóm cũng hạn chế nên mô hình vẫn gặp những vấn đề chưa thể khắc phục. Kính mong quý thầy cô cùng các bạn đóng góp những ý kiến để những đồ án sau này của nhóm sẽ hoàn thành tốt hơn nữa . Chân thành cảm ơn thầy Lê Xứng đã tận tình hướng dẫn cũng như các thầy cô ở khoa Điện tử viễn thông cũng như khoa Cơ khí đã giúp đỡ chúng em trong quá trình làm đồ án.
Đà Nẵng, ngày 15 tháng 06 năm 2010
Nhóm SV thực hiện : Nguyễn Quốc Vũ
Huỳnh Nhật Minh
Trần Phước Thọ
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1/ Ứng dụng của đề tài
Hệ thống này có thể được sử dụng trong các nhà máy sản xuất tự động hoặc bán tự động, nhằm giám sát được số sản phẩm sản xuất được, từ đó biết được năng suất làm việc trong một giai đoạn nào đó. Hệ thống cũng nhằm giảm bớt số lượng nhân công làm công việc xếp sản phẩm vào thùng, từ đó chi phí thuê nhân công cũng giảm bớt.
1.2/ Mô tả hệ thống
Hệ thống gồm một dây chuyền gồm có 2 băng tải, một băng tải phân phối sản phẩm và một băng tải phân phối thùng chứa. Sản phẩm chạy trên băng tải đến đoạn cuối của băng tải thì được chuyển vào thùng (sau đó đi đến nơi khác để đóng gói hay làm các nhiệm vụ khác tùy thuộc vào từng mô hình sản xuất ). Số sản phẩm và số thùng được đóng gói được đếm và hiển thị lên Led 7 đoạn. Người điều khiển sẽ điều khiển hệ thống thông qua tổ hợp các phím nhấn, qua đó có thể đóng, mở hệ thống ;điều chỉnh số sản phẩm trong mỗi thùng là 3, 5, hay 10… sản phẩm.
1.3/ Mô hình hệ thống
1.4/ Phân công nhiệm vụ
Nguyễn Quốc Vũ : Khối mạch công suất, khối bàn phím
Trần Phước Thọ : Khối cảm biến, khối điều khiển trung tâm
Huỳnh Nhật Minh : Khối hiển thị, khối điều khiển trung tâm
CHƯƠNG 2 GIỚI THIỆU TỔNG THỂ NGUYÊN LÝ VÀ CHỨC NĂNG CÁC KHỐI TRONG MẠCH
2.1/ Sơ đồ khối và chức năng hoạt động của từng khối
2.1.1/ Sơ đồ khối
2.1.2/ Chức năng của từng khối
2.1.2.1/ Khối xử lý trung tâm
Dùng trong xử lý các tín hiệu vào (Ở đây nhận tín hiệu từ cảm biến, ma trận bàn phím) để xuất tín hiệu ra phù hợp (hiển thị ra led, điều khiển động cơ băng chuyền sản phẩm và động cơ băng chuyền thùng).
Vai trò trung tâm do chip Atmel 89C51 đảm nhiệm, cấu tạo và sơ đồ được trình bày ở phần dưới.
2.1.2.2/ Khối hiển thị
Hiển thị : dùng 4 led 7 đoạn, trong đó 2 led để hiện số thùng và 2 led để hiện số sản phẩm. Khi người sử dụng cài đặt số sản phẩm trong 1 thùng và số thùng trong 1 ca thì khối hiển thị sẽ hiển thị các số liệu được nhập vào; hiển thị số sản phẩm và thùng mà cảm biến đếm được. Đồng thời trong quá trình hoạt động, khi số sản phẩm và số thùng tăng lên tương ứng thì cũng được hiển thị ra led để người công nhân có thể nhận biết mà dễ dàng điều chỉnh.
2.1.2.3/ Khối cảm biến
Để cảm nhận số lượng sản phẩm đi qua thì cảm biến phải có phần phát và phần thu. Ở đây ta dùng cảm biến hồng ngoại (2 led: một phát và một thu) ,với khoảng cách tối đa là 20cm. Sau mỗi lần có sản phẩm đi qua thì bộ đếm của chip vi điều khiển 8051 sẽ đếm lên 1, đồng thời vi điều khiển sẽ điều khiển hiển thị ra led.
2.1.2.4/ Khối bàn phím
Là một ma trận phím gồm 4 hàng và 4 cột (16 phím) . Gồm khối các phím số từ 0 đến 9 dùng để cài đặt số lượng thùng và số lượng sản phẩm và Khối các phím dùng trong điều khiển ( đánh số từ A đến F) như cài đặt sản phẩm, khởi động băng chuyền, dừng băng chuyền…
2.1.2.5/ Khối công suất
Hoạt động nhờ có 2 động cơ DC 12V được điều khiển bởi vi điều khiển. Khi bit nối với động cơ được tích cực (mức 0) thì động cơ sẽ được kích hoạt. Băng chuyền được động cơ dẫn động sẽ tự động chuyển sản phẩm hay thùng đến nơi cần thiết. Để cách ly phần điều khiển và phần công suất (chống nhiễu ) thì trong mạch có sử dụng các opto như ở phần nguyên lý được trình bày ở dưới đây.
2.2/ Sơ đồ nguyên lý và phương thức hoạt động của từng khối
2.2.1/ Khối trung tâm
Sử dụng bộ vi điều khiển AT89C51
Đây là nơi lưu giữ chương trình điều khiển chính và dữ liệu cho các mạch giãi mã hàng và cột.
AT89C51 là một hệ vi tính 8 bit đơn chip CMOS có hiệu suất cao, công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xóa được và lập trình được. Chip nà được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao.
AT89C51 có các đặc trưng chuẩn sau: 4Kbyte Flash, 128 byte RAM, 32 đường xuất nhập, hai bộ đình thời và đếm 16 bit, một cấu trúc ngắt hai mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch tạo dao động và tạo xung Clock trên Chip.
Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ đình thời và đếm, Port nối tiếp và hệ thống ngắt hoạt động.
- Mô tả các chân của IC89C51
Vcc: Chân cung cấp điện
GND: chân nối đất
Port 0: là port xuất nhập 8 but 2 chiều cực D hở. Port 0 còn được cấu hình làm bus địa chỉ (byte thấp) và làm bus dữ liệu đa hợp trong khi truy xuất bộ nhwos dữ liệu ngoài và bộ nhớ chương tình ngoài. Port 0 cũng nhận các byte mã trong khi lập trình cho Flash và xuất các byte mã trong khi kiểm tra chương trình.
Port 1: là port xuất nhập 8 but hai chiều có các điện trở kéo lên bên tỏng. Khi các logic 1 được ghi lên các chân của port 1, các chân này được kéo lên mức cao bởi các điện trở kéo lên bên tỏng và có thể được sử dụng như là các nghõ vào. Khi làm nhiệm vụ là các port nhập, các chân của port 1 đagn được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong
Port 2: là port xuất nhập 8 but hai chiều có các điện trở kéo lên bên trong. Khi các logic 1 được ghi lên các chân của port 2, các chân này được sử dụng như là các ngõ vào. Khi làm nhiệm vụ port nhập, các chân của port 2 đang được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện tở kéo lên bên tỏng. Port 2 tạo ra byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài, và tỏng thời gian truy xuất bộ nhở dữ liệu ngoài sử dụng các địa chỉ 16 but.
Port 3: là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong. Khi các logic 1 được ghi lên các chân của port 3, các chân này được kéo lên mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như là các ngõ vào. Khi làm nhiệm vụ port nhập, các chân của port 3 đang được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong. Port 3 còn được sử dụng làm các chức năng khác của AT89C51.
Chân
Chức năng
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
Ngõ vào Port nối tiếp
Ngõ ra Port nối tiếp
Ngõ vào ngắt ngoài 0
Ngõ vào ngắt ngoài 1
Ngõ và bên ngoài của bộ định thời 1
Ngõ vào bên ngoài của bộ định thời 0
Điều khiển ghi bộ nhớ dữ liệu ngoài
Điều khiển đọc bộ nhớ dữ liệu ngoài
RST: ngõ vào Reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao động đang hoạt động sẽ Reset AT89C51.
Mạch Reset tự động khi khởi động máy
(Với bài này thực hiện Reset bằng cách nối chân 9 của 8951 với nguồn 5V)
ALE: là một xung ngõ ra cho phép chốt địa chỉ ALE (Address Latch Enable) cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Hcaan này cũng được dùng làm ngõ vào xung lập trình () trong thời gian lập trình cho Flash.
Khi hoạt động bình thường, xung của ngõ ra ALE luôn có tần số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từ bên ngoài và tạo xugn Clock. Tuy nhiên cần luwu ý là một xung ALE sẽ bị bỏ qua trong mỗi chu kỳ truy xuất của bộ nhwos dữ liệu ngoài.
Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu hóa bằng cách set but 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8Eh. Khi bit này được set, ALE chỉ tích cực trong thời gian thực thi lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ được kéo lên mức cao. Việc set but không cho phép hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế đọ thực thi chương trình ngoài.
XTAL1: ngõ vào đến mạch khuếch đại đảo của mạch dao động và ngõ và đến mạch tạo xung Clock bên trong chip.
XTAL2: ngõ ra từ mạch khuếch đại đảo của mạch dao động.
Để tạo mạch dao động cho vi điều khiển 8951 hoạt động, chọn mạch tạo dao động như hình vẽ dưới, với các giá trị của linh kiện: C1 = C2 = 30pF
Thạch anh dao động có tần số 12MHz.
Sơ đồ chân của IC AT89C51:
2.2.2/ Khối hiển thị
Bộ phận hiển thị gồm 4 led 7 đoạn được nối Anot chung, ta dùng phương pháp quét led trong trường hợp này với việc sử dụng IC 74LS47 để giải mã. Các chân từ P2.0 đến P2.3 của VĐK gởi mã hiển thị đến IC74LS47, các chân từ P2.4 đến P2.7 dùng để quét led. BJT dùng để quét led là A1015.
Để led sáng bình thường thì dòng qua mỗi led Iđm = 5mA.
Mỗi led 7 đoạn có 7 led đơn nên dòng hiệu dụng đi qua cực C của BJT cấp cho led là: ICđm = 7.5 = 35mA.
Thời gian trễ 1 lần quét led là 0,2ms, thời gian quét toàn bộ 4 led led là 0,8ms. Dòng hiệu dụng qua chân C của BJT là:
.
Chọn ICs = 18mA, áp rơi trên mỗi led là 2V.
RE = (5-2-0,2)/18 =0,155KΩ. Chọn RE = 150Ω.
IB = IC/β = 18/50 = 0,36mA.
Chọn RB = 4,7KΩ.
2.2.3/ Khối cảm biến:
- Nguyên lý làm việc:
LM324 hoạt động như 1 con Op-am, dùng để so sánh mức điện áp.
Khi không có sản phầm đi qua, led thu nhận được ánh sáng nên dẫn, lúc đó điện áp trên chân 2 của LM324 thấp hơn ở chân 3 nên tín hiệu đưa ra chân 1 ở mức cao. Khi có sản phẩm đi qua, led thu không dẫn, điện áp ở chân 2 cao hơn chân 3, tín hiệu đưa ra ở chân 1 ở mức thấp. Tương tự cho mạch cảm biến còn lại.
- Tính chọn trở:
Chọn dòng qua R20, R21, R22 là 10mA, áp ghim trên led và led thu phát hồng ngoại là 2V.
R20 = R21 = R22 = ( Vcc - Vled)/I = (5 – 2 )/10 = 0,3kΩ.
Chọn R20 = R21 = R22 = 330Ω.
Chọn dòng đi qua R23, R24 là 0,3mA.
R23 + R24 = 5/0,3 = 16,7kΩ.
Chọn R23 = 6,8KΩ và biến trở tinh chỉnh R24 = 10KΩ.
Mạch cảm biến số thùng giống như mạch cảm biến sản phẩm nên ở đây ta chỉ tính 1 lần.
2.2.4/ Khối bàn phím
Để thực hiện ma trận bàn phím ta dùng phương pháp quét phím. Quét cột và đọc dữ liệu tại hàng hoặc ngược lại. Theo hình vẽ thì các cột cách nhau 1 đơn vị, các hàng cách nhau 4 đơn vị.
Khi mạch cần nhiều phím thì ta mới tổ chức ma trận phím để giảm số lượng cổng sử dụng cho bàn phím.
- Chức năng của phím:
Các phím số 0-9: là các phím số thông thường dùng để nhập lại giá trị cho số thúng và số sản phẩm.
Phím A: nhập số sản phẩm, khi vào cài đặt ta nhấn phím này để cài đặt số sản phẩm trong một thùng.
Phím B: nhập số thùng, khi vào cài đặt ta nhấn phím này để cài đặt số thùng.
Phím C: Phím nhập, ta nhấn phím này khi hoàn thành quá trình cài đặt.
Phím D: Phím cài đặt, ta nhấn phím này khi muốn cài đặt lại số thùng và số sản phẩm khác.
Phím E: phím start, ta nhấn phím này khi muốn khởi động chương trình, hay tiếp tục chương trình khi đang bị tạm dừng.
Phím Stop/Pause: ta nhấn phím này khi muốn kết thúc hoạc tạm dừng chương trình.
2.2.5/ Khối công suất
Chọn động cơ MG1 và MG2 có các thông số sau:
Vđm = 24V ,R = 5Ω
Như vậy , dòng cực đại qua MG1 và MG2 là :
Imax = Vđm / R
= 24 / 5 = 4.8 ( A )
Để động cơ hoạt động ổn định và không quá nóng ta cho dòng qua 2 động cơ I =1
( A)và nguồn cung cấp cho động cơ V =12 ( V )
Công suất tiêu tán trên 2 động cơ :
Ptt = I2 * R = 12 *5 = 5 ( W )
Vậy ta chọn Q2 và Q4 có các thông số kĩ thuật như sau:
IcQ1 ≥ 2 * I =2 ( A )
Ptt Q1 ≥ 2 Ptt = 2.5 =10 ( W )
VCEO ≥ 2 * VCC = 2 *12 = 24 ( V )
Vậy ta chọn Q1 và Q2 là : 2SD718 (NPN)
Ptt ( W )
VCEO ( V )
VCBO ( V )
IC ( A )
VCesat ( V )
80
120
120
8
0.2
Dựa vào đặc tuyến của 2SD718 ta có :
Tại Ic = 1 A , Vce = 0.2 V → Ib2 = 100 ( mA ) , Vbe2= 0.8 ( V )
Dòng Ib2 = Ic1 = 100 ( mA )
Ta chọn Q1 mắc darlington với Q2 với các thông số kĩ thuật sau :
IcQ1 ≥ Ib2 =100 ( mA )
VCEO ≥ VCC 5 ( V )
Vậy ta chọn Q3 và Q4 là : TIP42C (PNP)
Ptt ( W )
VCEO ( V )
VCBO ( V )
IC ( A )
VCesat ( V )
65
100
100
6
0.2
* Tính chọn R9 và R11 :
Ta có : VCC = VBE2 + VCE1sat + VR9
→ VR9 = VCC – ( VCE1sat + VBE2 )
= 5 - (0.2 + 0.8)
= 4 (V )
→ R9 = VR9 / IC2 = 4 / (100 * 10-3 ) = 40 (Ω)
Công suất tiêu tán trên hai điện trở R9 và R11 :
PttR9 = I2C1 * R9 = (100 * 10-3 ) * 47 = 0.47 ( W
Vậy ta chọn R9 và R11 là : 47 Ω / 2 W
* Tính chọn R8 và R10 :
Ta có VR8 = VB1 – VLOGIC 0 = VE1 - VEB1 - VLOGIC 0
= 0.9 – 0.7 – 0 = 0.2 ( V)
Ta chọn dòng qua 2 chân P3.0 và P3.1 là IPIN = 5 ( mA )
→ R9 = VR9 / IPIN = 0.2 / ( 5 * 10-3 ) = 40 (Ω )
Vậy ta chọn R8 và R10 là 47 Ω
2.3/ Bản vẽ Layout các mạch
2.3.1/ Mạch trung tâm
2.3.2/ Mạch hiển thị
2.3.3/ Mạch cảm biến
2.3.4/ Mạch bàn phím
2.3.5/ Mạch công suất
CHƯƠNG 3 LẬP TRÌNH CHO HỆ THỐNG
3.1/ Lưu đồ thuật toán
3.1.1/ Chương trình chính:
3.1.2/ CT CON CHAY_CT
3.1.3/ Chương trình cài đặt từ bàn phím:
3.1.4/ Chương trình con cài đặt số sản phẩm, số thùng:
3.1.5/ Chương trình con quét phím:
3.1.6/Chương trình con hiển thị:
3.1.7/ Chương trình con biến đổi số thùng, số sản phẩm ra phần chục và phần đơn vị:
Các chương trình con chạy và dừng động cơ:
3.2/ Chương trình Assembly
SP_DV DATA 21H
SP_CHUC DATA 22H
TH_DV DATA 23H
TH_CHUC DATA 24H
SO_TH DATA 25H
SO_SP DATA 26H
PHIM DATA 27H
CB_SP BIT P1.0
CB_TH BIT P1.1
DC_SP BIT P1.2
DC_TH BIT P1.3
B_PHIM BIT 01
ORG 00H
LJMP MAIN
ORG 000BH
LJMP NGAT_T0
ORG 0030H
MAIN:
MOV SO_TH,#10
MOV SO_SP,#5
LCALL BIENDOI_SP
LCALL BIENDOI_TH
MOV TMOD,#11H
MOV IE,#10000010B
SETB TF0
KT_PHIM:
LCALL QUET_PHIM
JNB B_PHIM, KT_PHIM
MOV A, PHIM
CLR B_PHIM
KT_START:
CJNE A,#14,KT_RESET
LCALL CHAY_CT
LJMP KT_PHIM
KT_RESET:
CJNE A,#13,KT_STOP
LCALL CAIDATLAI
LJMP KT_PHIM
KT_STOP:
CJNE A,#15,KT_PHIM
LCALL KETTHUC
;*************************CHUONG_TRINH_CON_CAI _DAT_LAI_SO_THUNG_VA_ SO_SAN_PHAM******************************
CAIDATLAI:
MOV SO_SP,#5
MOV SO_TH,#5
LCALL BIENDOI_SP
LCALL BIENDOI_TH
CAIDAT:
LCALL QUET_PHIM
JNB B_PHIM, CAIDAT
MOV A,PHIM
CLR B_PHIM
RESET_SP:
CJNE A,#10, RESET_THUNG
LCALL NHAP_SP
RESET_THUNG:
CJNE A,#11, THOAT_RESET
LCALL NHAP_TH
THOAT_RESET:
CJNE A,#12, CAIDAT
RET
;****************************NHAP_THUNG, SAN PHAM*******************************
NHAP_SP:
PUSH ACC
MOV A,#0H
NHAP_SP_CHUC:
LCALL QUET_PHIM
JNB B_PHIM, NHAP_SP_CHUC
MOV A,PHIM
MOV SP_CHUC,A
CLR B_PHIM
NHAP_SP_DV:
LCALL QUET_PHIM
JNB B_PHIM, NHAP_SP_DV
MOV A, PHIM
MOV SP_DV,A
CLR B_PHIM
MOV A, SP_CHUC
MOV B, #10
MUL AB
ADD A, SP_DV
MOV SO_SP, A
POP ACC
RET
NHAP_TH:
PUSH ACC
MOV A,#0H
NHAP_TH_CHUC:
LCALL QUET_PHIM
JNB B_PHIM, NHAP_TH_CHUC
MOV A,PHIM
MOV TH_CHUC,A
CLR B_PHIM
NHAP_TH_DV:
LCALL QUET_PHIM
JNB B_PHIM,NHAP_TH_DV
MOV A, R6
MOV TH_DV, A
CLR B_PHIM
MOV A, TH_CHUC
MOV B, #10
MUL AB
ADD A, TH_DV
MOV SO_TH, A
LCALL BIENDOI_TH
POP ACC
RET
;************************************************QUET_PHIM*******************************************************
QUET_PHIM:
MOV R3,#50
LOOP1:
LCALL GET_KEY
JNB 00, EX_QP
DJNZ R3, LOOP1
LOOP2:
MOV R3,#50
LOOP3:
LCALL GET_KEY
JB 00, LOOP2
DJNZ R3,LOOP3
MOV PHIM,R6
SETB B_PHIM
EX_QP:
RET
GET_KEY:
MOV A,#0FEH
MOV R2,#0H
SCAN_ROW:
MOV P0,A
MOV R4,A
JNB P0.4, ROW_0
JNB P0.5, ROW_1
JNB P0.6, ROW_2
JNB P0.7, ROW_3
MOV A,R4
RL A
INC R2
CJNE R2,#4, SCAN_ROW
SJMP NO_CODE
ROW_0:
MOV A,R2
ADD A,#0
SETB 00
MOV R6,A
SJMP EX_GK
ROW_1:
MOV A,R2
ADD A,#4
SETB 00
MOV R6,A
SJMP EX_GK
ROW_2:
MOV A,R2
ADD A,#8
SETB 00
MOV R6,A
SJMP EX_GK
ROW_3:
MOV A,R2
ADD A,#12
SETB 00
MOV R6,A
SJMP EX_GK
NO_CODE:
CLR 00
EX_GK:
RET
;*******************CHUONG TRINH CON DEM SAN PHAM VA DK DCO**************
CHAY_CT:
PUSH ACC
MOV R1,SO_SP
MOV R2,SO_TH
MOV SO_SP,#0
MOV SO_TH,#0
LCALL BIENDOI_SP
LCALL BIENDOI_TH
LOOPA:
LCALL START_DCTH
JB CB_TH,$
LOOPB:
LCALL STOP_DCTH
LCALL START_DCSP
JB CB_SP,$
INC SO_SP
LCALL BIENDOI_SP
MOV A,R1
CJNE A,SO_SP,LOOPB
LCALL STOP_DCSP
INC SO_TH
LCALL BIENDOI_TH
MOV SO_SP,#0H
LCALL BIENDOI_SP
MOV A,R2
CJNE A,SO_TH,LOOPA
LCALL START_DCTH
LCALL STOP_DCTH
MOV A,R1
MOV SO_SP,A
MOV A,R2
MOV SO_TH,A
LCALL BIENDOI_SP
LCALL BIENDOI_TH
POP ACC
RET
START_DCSP:
CLR DC_SP
JNB CB_SP,$ ; DOI CHO SP DANG CO DI QUA KHOI TAM CUA CB
RET
STOP_DCSP:
JNB CB_SP,$
SETB DC_SP
RET
START_DCTH:
CLR DC_TH
JNB CB_TH,$ ;
RET
STOP_DCTH:
JNB CB_TH,$
SETB DC_TH
RET
;*************** CHUONG TRINH BIEN DOI SO SP VA THUNG RA 2 PHAN CHUC VA DV******
BIENDOI_SP: