27
Thiết kế cân điện tử Yêu cầu: Sử dụng vi xử lý 8051 thiết kế cân điện tử : +có thể tuỳ chỉnh đơn giá(từ 0 lên 20.0$), +nhận giá trị từ cảm biến,hiển thị khối lượng ra lcd +hiển thị số tiền cần thanh toán ra lcd(khối lượng X đơn giá) +hiển thị đơn giá,giá tiền,khối lượng ra máy tính +tuỳ chỉnh lại đơn giá rồi tiếp tục cân hoặc tiếp tục cân lại mà không cần chỉnh lại đơn giá Phương pháp: +Dùng p1.0 và p1.1 đề điểu chỉnh đơn giá. +điều chỉnh xong thì dùng p1.2 để bắt đầu cân +Nhận tín từ adc (tương cảm biến khối lượng của cân điện tử). Điều chỉnh giá trị của adc bằng biến trở(tương đương việc thay đổi khối lượng của vật cần cân) +Hiển thị số tiền cần thanh toán =khối lượng X đơn(=r1 x giá trị lấy từ adc) giá ra lcd +Hiển thị ra màn hình máy tính qua cổng com(rs232) nối tiếp tốc độ baud 19200 +bấm nút p1.4 để điều chỉnh giá rồi tiếp tục thực hiện như bươc đầu hoặc p1.5 để cân tiếp vs giá cũ

Thiết kế cân điện tử

Embed Size (px)

DESCRIPTION

t

Citation preview

Page 1: Thiết kế cân điện tử

Thiết kế cân điện tử

Yêu cầu:

Sử dụng vi xử lý 8051 thiết kế cân điện tử :

+có thể tuỳ chỉnh đơn giá(từ 0 lên 20.0$),

+nhận giá trị từ cảm biến,hiển thị khối lượng ra lcd

+hiển thị số tiền cần thanh toán ra lcd(khối lượng X đơn giá)

+hiển thị đơn giá,giá tiền,khối lượng ra máy tính

+tuỳ chỉnh lại đơn giá rồi tiếp tục cân hoặc tiếp tục cân lại mà không cần chỉnh lại đơn giá

Phương pháp:

+Dùng p1.0 và p1.1 đề điểu chỉnh đơn giá.

+điều chỉnh xong thì dùng p1.2 để bắt đầu cân

+Nhận tín từ adc (tương cảm biến khối lượng của cân điện tử). Điều chỉnh giá trị của adc bằng biến trở(tương đương việc thay đổi khối lượng của vật cần cân)

+Hiển thị số tiền cần thanh toán =khối lượng X đơn(=r1 x giá trị lấy từ adc) giá ra lcd

+Hiển thị ra màn hình máy tính qua cổng com(rs232) nối tiếp tốc độ baud 19200

+bấm nút p1.4 để điều chỉnh giá rồi tiếp tục thực hiện như bươc đầu hoặc p1.5 để cân tiếp vs giá cũ

Page 2: Thiết kế cân điện tử

Sơ đồ giải thuật

Start

R1=0(đơn giá)

P1.0 =0 Inc r1

=1

P1.1 =0 dec r1 =1

=1 P1.2

=0

Adc

Hiển thị Lcd

nhân giá trị adc vs r1 (khối lượng X đơn giá)

Hiển thị Lcd

=1 P1.3

=0

Hiển thị cái giá trị ra máy tính

P1.4 =0

=1

=0 P1.5 =1

Page 3: Thiết kế cân điện tử

Thiết kế phần cứng

+LCD:

Page 4: Thiết kế cân điện tử

+ADC

+RS232:

Page 5: Thiết kế cân điện tử

Code:

ORG 2000H

MOV SCON,#52H ;chế độ uart 8bit chỉnh (chỉnh bằng timer),chế độ phát

MOV TMOD,#21H ,timer 0 chế độ 16bit,timer 1 chế độ 8bit tự nạp giá trị đầu

MOV DPTR,#8000H

ACALL CLEAR

MOV DPTR,#8000H

call hienthican

main: call DATgia

can: call nhap_adc

call hienmaytinh

laphet2: mov c,p1.4 ;có đặt lại giá không?

jc laphet1

jmp main

laphet1: mov c,p1.5 ;cân lại mà không đặt lại giá

jc laphet2

jmp can

sjmp $

hienmaytinh: ;chương trình con xuất các thông tin qua máy tính

MOV TH1,#-3

SETB TR1

Page 6: Thiết kế cân điện tử

MOV R7,#4

MOV A,#0

PUSH ACC

lapmay1:

mov dptr,#MESS3

MOVC A, @A+DPTR

CALL OUT_CHAR

POP ACC

INC ACC

PUSH ACC

DJNZ R7, Lapmay1

MOV A,R6

CALL OUT_CHAR

MOV A,R5

CALL OUT_CHAR

MOV A,R4

CALL OUT_CHAR

MOV A,R3

CALL OUT_CHAR

mov a,#2ch

CALL OUT_CHAR

MOV A,R2

CALL OUT_CHAR

Page 7: Thiết kế cân điện tử

mov a,#24h

CALL OUT_CHAR

MOV R7,#2

MOV A,#0

PUSH ACC

taotrong1:

MOV DPTR, #MESS4

MOVC A, @A+DPTR

CALL OUT_CHAR

POP ACC

INC ACC

PUSH ACC

DJNZ R7,taotrong1

MOV R7,#3

MOV A,#0

PUSH ACC

lapmay2:

mov dptr,#MESS1

push acc

MOVC A, @A+DPTR

CALL OUT_CHAR

Page 8: Thiết kế cân điện tử

POP ACC

INC ACC

PUSH ACC

DJNZ R7, Lapmay2

MOV DPTR,#4000H

MOV A,#0

MOVX @DPTR,A

CALL DELAY_2

MOVX A,@DPTR

push acc

CALL BINTOASCII

MOV A,R4

CALL OUT_CHAR

MOV A,R3

CALL OUT_CHAR

MOV A,R2

CALL OUT_CHAR

mov a,#47h

CALL OUT_CHAR

MOV R7,#2

MOV A,#0

Page 9: Thiết kế cân điện tử

PUSH ACC

taotrong2:

MOV DPTR, #MESS4

MOVC A, @A+DPTR

CALL OUT_CHAR

POP ACC

INC ACC

PUSH ACC

DJNZ R7,taotrong2

MOV R7,#3

MOV A,#0

PUSH ACC

lapmay4:

MOV DPTR, #MESS3

MOVC A, @A+DPTR

CALL OUT_CHAR

POP ACC

INC ACC

PUSH ACC

DJNZ R7, Lapmay4

mov a,r1

CALL BINTOASCII

Page 10: Thiết kế cân điện tử

MOV A,R4

CALL OUT_CHAR

MOV A,R3

CALL OUT_CHAR

mov a,#2ch

CALL OUT_CHAR

MOV A,R2

CALL OUT_CHAR

mov a,#24h

CALL OUT_CHAR

mov a,#2fh

CALL OUT_CHAR

mov a,#47h

CALL OUT_CHAR

jmp laphet2

hienthican: MOV DPTR,#8000H ;chương trình con hiện các chú thích lên lcd

ACALL LCD_INIT

ACALL CLEAR

MOV A,#80H

ACALL WRITE_COMMAND

mov r0,#3

Page 11: Thiết kế cân điện tử

MOV DPTR,#MESS3

ACALL XUAT_CHUOI_1

mov a,#086h

CALL WRITE_COMMAND

mov a,#24h

ACALL WRITE_CHAR

mov a,#2fh

ACALL WRITE_CHAR

mov a,#47h

ACALL WRITE_CHAR

MOV A,#8aH

ACALL WRITE_COMMAND

mov r0,#3

MOV DPTR,#MESS1

ACALL XUAT_CHUOI_1

mov a,#08fh

CALL WRITE_COMMAND

mov a,#47h

ACALL WRITE_CHAR

mov a,#0c0h

CALL WRITE_COMMAND

MOV DPTR,#MESS2

Page 12: Thiết kế cân điện tử

MOV R0,#4

CALL XUAT_CHUOI_1

mov a,#0c9h

CALL WRITE_COMMAND

mov a,#24h

ACALL WRITE_CHAR

ret

OUT_CHAR: ;chương trình con xuất 1 ký tự qua máy tính

JNB TI, $

CLR TI

MOV SBUF, A

RETi

DATgia: ;chương trình con cài đặt đơn giá

gia: mov c,p1.0

jc gia1

inc r1

gia1: mov c,p1.1

jc gia2

dec r1

gia2:

Page 13: Thiết kế cân điện tử

CALL LCD_INIT

MOV A,#82H

CALL WRITE_COMMAND

mov a,r1

CALL BINTOASCII

MOV A,R4

CALL WRITE_CHAR

MOV A,R3

CALL WRITE_CHAR

mov a,#2ch

CALL WRITE_CHAR

MOV A,R2

CALL WRITE_CHAR

mov c,p1.2

jc gia

ret

CLEAR: MOV A,#01H ;chương trình con xoá lcd

ACALL WRITE_COMMAND

RET

LCD_INIT: MOV DPTR,#8000H ; ;chương trình con khởi động lcd

MOV A,#38H

CALL WRITE_COMMAND

MOV A,#0EH

Page 14: Thiết kế cân điện tử

CALL WRITE_COMMAND

MOV A,#06H

CALL WRITE_COMMAND

mov a,#0ch

CALL WRITE_COMMAND

RET

nhap_adc: ;chương trình thực hiện nhận giá trị adc và tính toán giá tiền

CALL LCD_INIT

MOV A,#8cH

CALL WRITE_COMMAND

MOV DPTR,#4000H

MOV A,#0

MOVX @DPTR,A

CALL DELAY_2

MOVX A,@DPTR

push acc

CALL BINTOASCII

MOV A,R4

CALL WRITE_CHAR

MOV A,R3

CALL WRITE_CHAR

MOV A,R2

CALL WRITE_CHAR

Page 15: Thiết kế cân điện tử

pop acc

mov b,r1

call thanhtien

CALL LCD_INIT

MOV A,#0c3H

CALL WRITE_COMMAND

MOV A,R6

CALL WRITE_CHAR

MOV A,R5

CALL WRITE_CHAR

MOV A,R4

CALL WRITE_CHAR

MOV A,R3

CALL WRITE_CHAR

mov a,#2ch

CALL WRITE_CHAR

MOV A,R2

CALL WRITE_CHAR

mov c,p1.3

jc nhap_adc

ret

XUAT_CHUOI_1: ;chương trình con xuất 1 chuỗi mong muốn ra lcd

Page 16: Thiết kế cân điện tử

MOV A,#0

LAP_CHUOI1:

push dph

push dpl

push acc

MOVC A,@A+DPTR

MOV DPTR,#8000H

ACALL WRITE_CHAR

pop acc

inc a

pop dpl

pop dph

djnz r0,LAP_CHUOI1

RET

WRITE_COMMAND: ;chương trình con xuất 1 lệnh cho lcd

MOV DPTR,#8000H

SETB P3.4

CLR P3.5

MOVX @DPTR,A

CLR P3.4

ACALL DELAY_1

Page 17: Thiết kế cân điện tử

RET

BINTOASCII: ;chương trình con chuyển 1 hex trong acc ra 3 số hàng trăm,chục,đơn vị.rồi chuyển sang mã ASCII tương ứng của 3 số đó vào r2,r3,r4

MOV B,#10

DIV AB

MOV R2,B

MOV B,#10

DIV AB

MOV R3,B

MOV R4,A

MOV A,#30H

ADD A,R2

MOV R2,A

MOV A,#30H

ADD A,R3

MOV R3,A

MOV A,#30H

ADD A,R4

MOV R4,A

RET

WRITE_CHAR:

MOV DPTR,#8000H

Page 18: Thiết kế cân điện tử

SETB P3.4

SETB P3.5

MOVX @DPTR,A

CLR P3.4

CALL DELAY_1

RET

DELAY_1:

MOV TH0,#HIGH(-50000)

MOV TL0,#LOW(-50000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

RET

DELAY_2: MOV R6,#2

LAP1: MOV R5,#255

LAP2: MOV R4,#250

DJNZ R4,$

DJNZ R5,LAP2

DJNZ R6,LAP1

RET

thanhtien: ,chương trình con thực hiện nhân 2 số hex rồi chuyển thành thập phân với các ký số riêng biệt,chuyển sang mã ASCII tương ưng rồi lưu trong r2,r3,r3,r5,r6.

Page 19: Thiết kế cân điện tử

mul ab

push acc

mov a,b

MOV B,#10

DIV AB

MOV R2,B

MOV B,#10

DIV AB

MOV R3,B

MOV R4,A

pop acc

mov b,a

mov a,r4

push acc

mov a,r3

push acc

mov a,r2

push acc

mov a,b

MOV B,#10

DIV AB

MOV R2,B

MOV B,#10

Page 20: Thiết kế cân điện tử

DIV AB

MOV R3,B

MOV R4,A

pop acc

push acc

mov b,#6

mul ab

add a,r2

MOV B,#10

DIV AB

MOV R2,B

mov r7,a

pop acc

mov r0,a

mov b,#5

mul ab

add a,r3

add a,r7

mov r7,a

pop acc

mov b,a

push acc

mov a,r0

Page 21: Thiết kế cân điện tử

push acc

mov a,b

mov b,#6

mul ab

add a,r7

MOV B,#10

DIV AB

MOV R3,B

mov r7,a

pop acc

mov b,#2

mul ab

add a,r7

add a,r4

mov r4,a

pop acc

mov r5,a

mov b,#5

mul ab

add a,r4

mov r4,a

pop acc

mov b,a

Page 22: Thiết kế cân điện tử

push acc

mov a,r5

push acc

mov a,b

mov b,#6

mul ab

add a,r4

MOV B,#10

DIV AB

MOV R4,B

mov r7,a

pop acc

mov b,#2

mul ab

add a,r7

mov r7,a

pop acc

mov b,a

push acc

mov a,b

mov b,#5

mul ab

add a,r7

Page 23: Thiết kế cân điện tử

MOV B,#10

DIV AB

MOV R5,B

mov r7,a

pop acc

mov b,#2

mul ab

add a,r7

MOV B,#10

DIV AB

MOV R6,B

MOV A,#30H

ADD A,R2

MOV R2,A

MOV A,#30H

ADD A,R3

MOV R3,A

MOV A,#30H

ADD A,R4

MOV R4,A

MOV A,#30H

ADD A,R5

MOV R5,A

Page 24: Thiết kế cân điện tử

MOV A,#30H

ADD A,R6

MOV R6,A

ret

MESS1: DB 'w: '

MESS2: DB 'tt: '

MESS3: DB 'p: '

Mess4: db ' '

END