1. Trang chủ
  2. » Tất cả

MACH ĐẾM SẢN PHẨM

22 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 454,36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI MỞ ĐẦU Song hành với sự phát triển của nghành khoa học máy tính trong hơn 60 năm qua.công nghệ điện tử đã có những bước tiến vượt bậc với khả năng tích hợp ngày càng cao của vi mạch

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - TRUYỀN THÔNG

 BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ

ĐỀ TÀI : THIẾT KẾ MẠCH ĐẾM SẢN PHẨM

Giáo viên hướng dẫn:

Sinh viên thực hiện : Nguyễn Tất Nam

Chu Quang Đại

Hà Nội ngày : 19 tháng: 12 năm: 2014

Trang 2

LỜI MỞ ĐẦU

Song hành với sự phát triển của nghành khoa học máy tính trong hơn 60 năm qua.công nghệ điện tử đã có những bước tiến vượt bậc với khả năng tích hợp ngày càng cao của vi mạch từ đó giúp tang tốc độ xử lý , nâng cao độ tin cậy và giảm giá thành sản phẩm Từ những ứng dụng ban đầu chủ yếu trong lĩnh vực quân sự

và máy tính của các bộ vi xử lý ,ngày nay, sự ra đời của các họ vi điều khiển với việc tích hợp các khối chức năng trên một IC ,các vi

xử lý chuyên dụng ,cùng với thế mạnh vốn có của các bộ xử lý đa năng đã giúp cho việc ứng dụng kỹ thuật vi xử lý vào trong một hệ thống phi máy tính đã trở lên đơn giản hơn ,mở rộng đối tượng ứng dụng các thành quả của nghành công nghiệp hiên đại ngày nay.Ta

có thể thấy ứng dụng của chúng trong các hệ thống máy tính lớn ,các hệ thống viễn thông cho đến các sản phẩm quen thuộc như máy giặt,điều hòa ,đèn giao thông

Trong khuôn khổ bài tập lớn này ,với mục đích tìm hiểu ứng dụng thực tế của vi xử lý ,nhóm chúng em lựa chọn đề tài thiết kế mạch đếm sản phẩm ứng dụng kỹ thuật vi xử lý

Trang 3

MỤC LỤC Lời nói đầu

Trang 4

I.Tổng quan

Giới thiệu sản phẩm:

Mạch đến sản phẩm nhóm thực hiện là mạch ứng dụng vi điều khiển mcs_51 dùng thu phát hồng ngoại ,tăng số lượng sản phẩm lên bằng kỹ thuật đếm xung, sử dụng phương pháp quét led để hiện thị số đếm và có khả năng dừng bang truyền

Trang 6

-Khóa bộ nhớ chương trình 3 mức

-128 x 8 bit RAM nội

-32 đường xuất/nhập lập trình được

-2 bộ định thời /đếm 16 bit

-6 nguồn ngắt

-Kênh nối tiếp lập trình được

-Chế độ tiêu thụ ít năng lượng

a.Các chân của IC 89C51

Trang 7

kháng cao Ngoài ra, khi truy cập tới chương trình và dữ liệu bên ngoài, port 0 có thể được sử dụng làm bus địa chỉ thấp/ dữ liệu đa hợp.Port này có thể dùng để nhận chương trình nạp vào Flash hoặc kiểm tra

- Port 1: c ổng xuất/nhập 8 bit, các bộ đệm ra có thể ghép nối với 4 đầu

vào TTL Các chân này có thể làm đầu vào khi tất cả được thiết lập ở

mức 1 Port 1 nhận các byte địa chỉ thấp trong quá trình ghi chương trình và kiểm tra

- Port 2: c ổng xuât/nhập 8 bit, các bộ đệm ra có thể

ghép nối với 4 đầu

vào TTL Các chân này có thể làm đầu vào khi tất cả

được thiết lập ở mức 1 Port 2 truyền byte địa chỉ cao của bus địa chỉ v ới các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài Port 2 cũng nhận các bit địa chỉ cao và một vài tín hiệu điều khiển trong quá trình nạp chương trình và kiểm tra

- Port 3: c ổng xuất/nhập 8 bit, các bộ đệm ra có thể ghép nối với 4 đầu

vào TTL Khi tất cả các chân ở m ức 1, Port 3 thực hiện nhận dữ liệu

Trang 8

Ngoài ta, Port còn phục vụ một số chức năng đặc biệt của AT89C51

Port 3 cũng nhận một số tín hiệu điều khiển trong quá trình nạp chương

trình và kiểm tra

- RST: đầu vào reset Khi chân này ở m ức cao trong 2 chu kỳ máy khi

osccilator đang hoạt động thì IC sẽ được reset

- ALE/PROG: chân cho phép chốt địa chiđưa ra xung để chốt byte địa

chỉ thấp trong quá trình truy cập bộ nhớ ngoài Chân này cũng đóng vài

trò đầu vào xung chương trình PROG trong quá trình nạp chương trình Ở điều kiện bình thường, tín hiệu phát ra từ chân này có tấn số bằng 1/6 tần số của mạch dao động trong chip và có thể được sử dụng làm xung clock

- PSEN: chân cho phép bộ nhớ chương trình Khi AT89C51 thực thi các

lệnh từ b ộ nhớ chương trình ngoài, chân này được tích cực 2 lần trong

mỗi chu kỳ máy

Trang 9

-EA/Vpp: chân này phải nối đất để IC có thể tìm mã từ các ô nhớ chương

trình ngoài bắt đầu từ địa chỉ 0000H đến FFFFH

(64Kbyte) Để IC tìm và thực thi các lệnh của chương trình trong bộ nhớ nội, chân này cần nối với Vcc Chân này cũng nhận điện áp cho phép ghi chương trình 12V trong quá trình nạp chương trình

- XTAL1: đầu vào của bộ khuếch đại dao động đảo

- XTAL2: đầu ra của bộ khuếch đại dao động đảo

b.Tổ chức bộ nhớ

Bộ nhớ bên trong chip bao gồm ROM, RAM và EPROM RAM trên chip bao gồm vùng RAM đa chức năng ,vùng RAM với từng bit được định địa chỉ ,các dây thanh nghi (bank) và các thanh nghi chức năng đặc biệt

Có 2 đặc tính đáng lưu ý:

+ Các thanh nghi và các port I/O được định địa chỉ theo kiểu ánh xạ bộ nhớ và được truy xuất như một vị trí nhớ trong bộ nhớ.

+ Vùng track thường trú trong RAM trên chip này thay

vì ở trong RAM ngoài như đối với các bộ vi xử lý

Tóm tắt không gian nhớ của chip

• Vùng RAM đa mục đích : Có 80 byte ,địa chỉ từ 30H đến 7FH

Trang 10

• Vùng RAM định địa chỉ

Chip 89C51 chứa 210 vị trí định địa chỉ trong đó có

128 byte chứa

trong các byte ở địa chỉ 20H đến 2FH (16 byte x 8 =

128 bits), phần còn lại chứa rong các thanh nghi đặc biệt

• Các dãy thanh nghi:

Có địa chỉ từ 00H đến 1FH ,32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh nghi Các lệnh của 89C51 hỗ trợ 8 thanh nghi từ R0 đến R7

Trang 11

• Các thanh nghi đặc biệt (SFR)

Không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định địa nghĩa mà chỉ có 21 địa chỉ được định nghĩa

2 IC LM 555

1.Thông số

+Điện áp đầu vào: 2-18V

+ Dòng điện tiêu thụ :6mA-15mA

+Điện áp logic mức cao :0.5 -15 V

Trang 12

3.Led 7 đoạn

Là 7 con LED sắp xếp theo hình mẫu Một chân của các con led được nốichung với nhau ( A nod chung hoặc Knot chung), các chân còn lại đượcđưa ra ngoài để phân cực cho các con led

Trang 13

Đây là loại đèn dung để hiện thị các số từ 0 đến 9 đèn gồm 7 đoạna,b,s,d,e,f,g bên dưới mỗi đoạn là một led

Đối với led 7 đoạn ta phải tính toán sao cho mỗi đoạn của led 7 đoạn códòng điện từ 10 – 20mA.với điện áp 5V thì điện trở cần dung là 270 ôm.Công suất là 1.4 W

IV Nguyên lý và tác dụng của các linh kiện

Trang 14

ở đây dùng cách ghép darlington để khuếch đại tín hiệu đưa ra từchân p1.5 vì tín hiệu từ 89c51 rất bé nên chúng ta cần khuếch đại dòngcho nó để đủ sáng led, Q1,Q2 các bác dùng loại NPN nhé ở đây mìnhdùng con C1815 Nói sơ qua cho các bác hiểu nguyên lý hoạt động của nónhé: chúng ta phát dạng xung vuông có tần số là 38khz tức là chân p1.5của 89c51 sẻ liên tục đảo chiều cứ lên 1 rồi lại xuống 0, khi p1.5 lên 1 thìQ1 dẫn lúc đó có dòng Vcc chạy từ cực C xuống E của Q1, vì cực E củaQ1 nối với cực B của Q2 nên khi Q1 dẫn thì cực B của Q2 có dòng nên Q2cũng dẫn và có dòng chạy từ Vcc qua cực C và xuống E của Q2 rồi qualed phát hồng ngoại qua điện trở rồi xuống mass, lúc này led phát hồngngoại sáng còn khi chân p1.5 xuống mức 0 thì Q1 và Q2 không dẫn nênled phát hồng ngoại tắt

Trang 15

2.Khối thu hồng ngoại:

có chức năng là phát hiện sự mất xung ( có sản phẩm đi qua ) và đưa vềcon 89c51 để xử lý tăng số đếm lên 1 đơn vị

Sơ đồ mạch thu:

• Nguyên lý hoạt động:

khi có sản phẩm đi qua thì led thu hồng ngoại bị che khuất lúc này códòng đi từ Vcc qua led thu hồng ngoại ròi qua cực B của Q3 lúc nàyQ3 dẫn, cực C của Q3 xuống mức thấp lúc này tụ C4 xả điện quadiode qua Q3 và xuống mass lúc này chân số 2 của LM555 đượckích và tạo ra một xung ở chân số 3 đưa về cho ic89c51 xử lý (chân

số 3 của LM555 được nối vào chân P3.2 của 89c51 tức là chân 12 )Biến trở R18 dùng để điều chỉnh tốc độ nhận dạng sản phẩm đi qua,khi có sản phẩm đi qua thì led thu hồng ngoại bị che khuất ta có sơ

đồ mất xung như sau.

Trang 16

Khối hiện thị:

V.Chương trình

Chúng ta đang làm một mạch đếm sản phẩm và chúng ta quản lý số đếmtrong R7 nên chương trình chính chúng ta có nhiệm vụ là nạp các giá trịban đầu cho phép ngắt, tách số BCD và hiển thị ra LED Trong mạch nàychúng ta sử dụng 3 nguồn ngắt đó là ngắt timer0 dùng để phát xung chomạch phát, ngắt ngoài 0 dùng để tăng số lượng sản phẩm và ngắt timer1dùng để dừng băng truyền.Chương trình phát xung: sử dụng ngắt timer0chế độ 2 ( timer0 chế độ 2 có khả năng tự nạp lại giá trị ban đầu nên chúng

ta chỉ cần nạp một lần là đủ ) Chúng ta dùng thạch anh 12MHz nên ta có 1chu kỳ máy = 1µs, chúng ta phát ở tần số 38khz vậy ta có T=1/f = 1/38 =0.026ms = 26 µs → Ton =Toff = 26/2 = 13

Trang 17

như vậy cần nạp cho timer0 giá trị là -13.Trong chương trình ngắt timer0 tachỉ việc đảo trạng thái chân p1.5 là được và ta có đoạn chương trình ngắttimer0 là:

ra ngắt ngoài 0 Trong chương trình ngắt ngoài 0 chúng ta tăng số đếm lên

1 đơn vị và so sánh nó với giá trị là 100 khi nó đạt đến 100 thì reset nó về

0 ta có đoạn chương trình ngắt ngoài 0:

EX0_ISR:

INC R7 ; tang s? d?m lên 1 don v?

CJNE R7,#100,EXIT; so sánh R7 với 100 ,nếu chưa bằng 100 thì nhảy tiếpExit còn nếu bằng 100 thì xóa nó

MOV R7,#0

EXIT:RET

muốn dừng băng truyền thì trong chương trình ngắt ngoài 0 ta so sánh sốđếm với các giá trị định sẳn chẳng hạn như các giá trị 20,40,60,80,100, khi

số đếm bằng các giá trị này thì cho dừng bằng truyền trong 5s rồi cho băng

ta có lại đoạn chương trình ngắt ngoài 0 như sau:

E0_ISR:

INC R7 ; tăng R7 lên 1

Trang 18

CJNE R7,#20,TIEP ; so sánh R7 với 20, nếu chưa bằng thì nhảy tới nhản TIEP còn nếu bằng rồi thì gọi chương trình TIEPTUC

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP: CJNE R7,#40,TIEP1 ; so sánh R7 với 40

ACALL TIEPTUC ; gọi chương trình tiếp tục

TIEP1: CJNE R7,#60,TIEP2 ; so sánh R7 với 60

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP2: CJNE R7,#80,TIEP3 ; so sánh R7 với 80

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP3: CJNE R7,#100,EXIT ; so sánh R7 với 100

MOV R7,#0 ; xóa R7 về 0

ACALL TIEPTUC ; gọi chương trình TIEPTUC

EXIT: RETI ; quay về từ ngắt

Trong chương trình TIEPTUC chúng ta sẻ cho dừng băng truyền nhưng ở đây mình chỉ làm mô phỏng nên mình thay cái động cơ điều khiển băng truyền là một con led khi led sáng thì báo hiệu là đang dừng băng truyền.Trong main chúng ta nạp các giá trị ban đầu cho phép ngắt và tách số BCDrồi hiển thị lên LED dùng phương pháp quét led ( nói sơ qua về phương pháp quét led cho một số bác chưa biết hiểu: chúng ta nối các chân

a,b,c,d,e,f,g,dp của led chục và led đơn vị lại với nhau, và ta gửi tín hiệu ra led để hiển thị giá trị cần hiển thị và dĩ nhiên là nếu chúng ta cho phép cả hai led thì cả hai led đều hiển thị một số, cho nên trong một lúc chúng ta chỉ cho phép một led sáng

ví dụ khi muốn hiển thị số 15 thì ta cần led chục hiển thị số 1 còn led đơn vịhiển thị số 5 vậy thì đầu tiên ta gửi tín hiệu cho sáng số 1 rồi tắt led đơn vị

Trang 19

và cho phép led chục, delay một khoảng thời gian rồi gửi tiếp tín hiệu cho sáng số 5 rồi tắt led chục và cho phép led đơn vị)

quét led nghĩa là cho trong một trạng thái chỉ có một led được sáng cứ nhưthế led chục sáng số 1 và tắt led đơn vị, delay một khoảng thời gian rồi tắt led chục và cho led đơn vị sáng số 5 rồi delay một khoảng thời gian, tốc độsáng led là khoảng 24hình/s như thế thì mắt chúng ta có không thể nhận biết được sự thay đổi đó và có cảm giác là nó đang hiển thị số 15 Giải thuật tách số đếm trong R7 như thế này: chúng ta nạp cho B một giá trị là

10 và lấy R7 chuyển vào A rồi lấy A chia cho B như thế phần nguyên sẻ nằm trong A ( tức là số chục lưu trong A ) còn phần dư nằm trong B ( tức là

số đơn vị nằm trong B), như vậy là ta đã tách được số chục và số đơn vị

ra, chúng ta chuyển số hàng chục ra port0 rồi cho led chục tích cực và tắt led đơn vị, rồi chuyển B và A rồi xuất nó ra port0 và cho phép led đơn vị sáng và tắt led chục

ORG 0000H ; điểm vào reset

LJMP MAIN ; gọi chương trình chính

ORG 000BH ; vecter timer 0

LJMP T0_ISR ; gọi chương trình ngắt timer 0

ORG 0003H ; vecter ngắt ngoài 0

LJMP E0_ISR ; gọi chương trình ngắt ngoài 0

ORG 001BH ; vecter timer 1

LJMP T1_ISR ; gọi chương trình ngắt timer 1

ORG 0030H ; điểm vào chương trình chính

MAIN: MOV TMOD, #12H ; timer 0 chế độ 2 và timer 1 chế độ 1

MOV TH0,#(-13) ; sau 13 Ms thì xảy ra ngắt timer 0 ( tần số 38Khz)

SETB TR0 ; cho phép timer 0 chạy

Trang 20

SETB EA ; cho phép ngắt toàn bộ

SETB ET0 ; cho phép ngắt timer 0

SETB EX0 ; cho phép ngắt ngoài

SETB IT0 ; ngắt cạnh xuống

CLR P1.4 ; xóa p1.4 về 0 (tắt led báo hiệu dừng băng truyền)

MOV R7,#0 ; nạp cho R7 giá trị ban đầu (R7 chứa số đếm)

MOV R5,#50 ; nạp cho R5 giá trị 50 (mục đích tạo khoảng thời gian để ngừng băng truyền)

LOOP: MOV A,R7 ; chuyển số đếm trong R7 vào A

MOV B,#10 ; nạp cho B giá trị 10

DIV AB ; chia A cho B

MOV DPTR,#LUT ; chỉ con trỏ DPTR vào bảng LUT

MOVC A,@A+DPTR ;chuyển giá trị đã chọn trong bảng LUT vào thanh ghi tích lũyA

MOV P0,A ; xuất A ra port 0

CLR P1.7 ; cho phép led chục sáng

SETB P1.6 ; tắt led đơn vị

ACALL DELAY ; gọi chương trình delay

MOV A,B ; chuyển B vào A

MOV DPTR,#LUT ; chỉ con trỏ DPTR vào bảng LUT

MOVC A,@A+DPTR ;chuyển giá trị đã chọn trong bảng LUT vào thanh ghi tích lũyA

MOV P0,A ; xuất A ra port 0

CLR P1.6 ; cho phép led đơn vị sáng

SETB P1.7 ; tắt led chục

Trang 21

ACALL DELAY ; gọi chương trình delay

SJMP LOOP ; quay lại chương trình chính

RET

T0_ISR: CPL P1.5 ; đảo trạng thái p1.5 ( mục đích tạo xung vuông )

RETI ; quay lại từ ngắt

E0_ISR: INC R7 ; tăng R7 lên 1

CJNE R7,#20,TIEP ; so sánh R7 với 20, nếu chưa bằng thì nhảy tới nhản TIEP còn nếu bằng rồi thì gọi chương trình TIEPTUC

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP: CJNE R7,#40,TIEP1 ; so sánh R7 với 40

ACALL TIEPTUC ; gọi chương trình tiếp tục

TIEP1: CJNE R7,#60,TIEP2 ; so sánh R7 với 60

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP2: CJNE R7,#80,TIEP3 ; so sánh R7 với 80

ACALL TIEPTUC ; gọi chương trình TIEPTUC

TIEP3: CJNE R7,#100,EXIT ; so sánh R7 với 100

MOV R7,#0 ; xóa R7 về 0

ACALL TIEPTUC ; gọi chương trình TIEPTUC

EXIT: RETI ; quay về từ ngắt

DELAY: MOV R6,#200

DJNZ R6,$

RET ; 3 dòng lệnh này là delay 400Ms

TIEPTUC: SETB P1.4 ; cho đèn sáng ( báo hiệu dừng băng truyền )

SETB ET1 ; cho phép ngắt timer 1

Trang 22

MOV TH0,#HIGH(-50000)

MOV TL0,#LOW(-50000) ; hai dòng lệnh này là nạp giá trị cho timer 1 ( sau

50000 Ms thì xảy ra ngắt timer 1)

SETB TR1 ; cho timer 1 chạy

RET ; kết thúc chương trình tiếp tục

T1_ISR: DJNZ R5,THOAT ; giảm R5 đi 1 và so sánh nó với 0 nếu chưa bằng 0 thì thoát còn nếu bằng 0 thì lằm tiếp

CLR P1.4 ; tắt đèn ( báo hiệu cho băng truyền hoạt động trở lại )

Trong quá trình thực hiện dự án này, chúng em đã học tập được

thêm nhiều kiến thức thực tế, trao đổi thêm giữa các thành viên, làm quen với tác phong làm việc theo nhóm và cách thức xử lý các khó khăn khi gặp phải Kỹ thuật vi xử lý là một môn học hay nhưng khó, đây cũng là lần đầu tiên nhóm thực hiện một dự án như thế này, do đó bên cạnh việc

tự học thì sự hướng dẫn và các kinh nghiệm của thầy đã giúp đỡ chúng

em rất nhiều Chúng em cám ơn thầy rất nhiều về

những chỉ bảo tận tình trong thời gian qua

Ngày đăng: 04/10/2016, 00:22

w