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

mạch quang báo giao tiếp với máy tính dùng eprom

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 (298.8 KB, 25 trang )

KHỐI ĐIỀU KHIỂN TRUNG TÂM (AT89c51)
KHỐI GIAO TIẾP
MAY TINH
KHỐI GIẢI MÃ ĐỊA CHỈ CỘT
BẢNG LED MATRIX (32X80)
Báo cáo thực tập công nhân Mạch Quang Báo
Đề tài:
Mạch quang báo hiển thị chữ Ledmatrix
CHƯƠNG 1: GIỚI THIỆU MẠCH QUANG BÁO
GIAO TIẾP MÁY TÍNH
1.1Nhiệm vụ của mạch
Mạch quang báo giao tiếp máy tính có nhiệm vụ hiển thị văn bản cùng với các hiệu ứng
theo mong muốn của người sử dụng. Văn bản có thể được nhập trực tiếp thông qua một bàn
phím máy tính gắn ngoài, hoặc có thể được nhập từ máy tính PC thông qua kết nối với cổng
USB.
1.2 Sơ đồ khối và nhiệm vụ từng khối
a. Sơ đồ khối
Hình 1.1 Sơ đồ khối mạch quang báo giao tiếp máy tính
1 GVHD: Lê Hồng Nam
BAN
PHIM PS/2
Báo cáo thực tập công nhân Mạch Quang Báo
b. Nhiệm vụ từng modul:
Modul hiển thị và điều khiển trung tâm:
Khối điều khiển trung tâm
Gồm vi điều khiển có nhiệm vụ xử lý tất cả các hoạt động của mạch: điều
khiển nhận tín hiệu từ keyboard, điều khiển giao tiếp với PC, điều khiển hoạt
động xuất dữ liệu hàng và quét cột. Các hoạt động này được thực hiện bằng phần
mềm nạp bên trong vi điều khiển.
Khối giải mã địa chỉ cột
Nhận tín hiệu từ Vi Điều Khiển, từ đó đưa ra tín hiệu cho phép cột LED nào


trên bảng ma trận LED được phép sáng. Tại mỗi thời điểm chỉ có một cột LED
được phép sáng.Tín hiệu sau đó được đưa qua bộ đệm dòng cho cột.
Khối giải mã và chốt dữ liệu hàng
Nhận tín hiệu từ Vi Điều Khiển, chốt dữ liệu sau đó được đưa qua bộ đệm
dòng cho hàng
Khối hiển thị:
Khối hiển thị gồm 40 led ma trận 8x8 tạo thành ma trận 32x80 có nhiệm vụ
hiển thị kí tự được nhập. Khối ma trận được ghép nối với khối giải mã hàng và
cột
Modul giao tiếp:
Khối Keyboard
Chính là bàn phím PS dạng đầy đủ của PC. Khi nhấn phím, dữ liệu tương ứng
được xuất hiện trên ma trận led thông qua sự điều khiển của khối trung tâm.
Khối giao tiếp máy tính
Truyền nhận dữ liệu 2 chiều,chuyển đổi mức điện áp logic phù hợp
1.3 Chọn lựa linh kiện các khối
Khối điều khiển trung tâm: chọn bộ vi điều khiển AT89c52
- Ngày nay Vi Điều Khiển được sử dụng rộng rãi trong các ứng dụng hướng điều
khiển do kích thước gọn, khả năng tích hợp cao nhiều tính năng trong một con Vi
Điều Khiển khiến cho mạch điện tử trở nên đơn giản hơn nhiều.
- Giá thành của Vi Điều Khiển không quá đắt như Vi xử lý. Trên thế giới hiện có rất
nhiều nhà sản xuất Vi Điều Khiển (ATMEL, ZILOG, MicroChip, Motorola,
Cypress…). Sự cạnh tranh của các nhà sản xuất về giá thành và khả năng tích hợp
đem lại lợi ích cho người sử dụng.
- Vi Điều Khiển được coi như một “small computer” hay System On Chip (SoC).
Bên trong vi điều khiển bao gồm CPU, ROM , RAM, EEPOM, các giao tiếp ngoại
vi, các khối số học và tương tự (ADC,DAC, op-amp, bộ so sánh…) tuỳ theo từng
loại.
- Tại Việt Nam, thị trường vi điều khiển khá sôi động. Các công cụ phát triển cho vi
điều khiển cũng rất đa dạng và có thể tìm kiếm dễ dàng qua Internet.

Đây là những lí do chính để nhóm quyết định lựa chọn vi điều khiển AT89c52.
Khối giải mã địa chỉ cột: lựa chọn IC 74HC595 (4c) và IC ULN2803 (4c).
Khối giải mã và chốt dữ liệu hàng: lựa chọn IC 74HC573 và IC TD62783 (8c).
Khối hiển thị: sử dụng 40 led ma trận 8x8 tạo thành bảng ma trận 32x80.
Khối Keyboard: bàn phím PS2 của máy tính.
Khối giao tiếp máy tính: max485 và Pl2303-giao tiếp qua cổng USB
EEPROM24c64:lưu dữ liệu nhận từ máy tính
2 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo

CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG
Thiết kế mạch:
2.1.1 Khối trung tâm:
Nguyên lí hoạt động:
Nhận dữ liệu từ PC,bàn phím.
Xử lí dữ liệu,lưu dữ liệu từ máy tính vào eeprom
Xuất dữ liệu ra Port 0
Xuất tính hiệu điều khiển hàng cột ra Port1
Tính toán chọn linh kiện:
+chíp 89c52,
thạch anh 11.059Mhz,2 tụ bù 33pF
điện trở kéo lên ở Port 0 10k
+max 485,
+eeprom 24c64
Tính chọn eeprom
Khối matrix 16x80 => để quét hết 1 màn hình cần 2x80=160byte dữ liệu
Ta thiết kế chạy 1 dòng chữ tối đa là khoảng 10 màn hình.tức là cần
1600 byte dữ liệu hay khoảng 1.5Kbyte
Chọn eeprom 24c64 có khả năng chứa 8Kbyte dữ liệu
Các điện trở kéo lên nguồn 4.7k

+tính toán mạch reset
Chân RST của chíp phải ở mức cao ít nhất 2 chu kì máy thì hệ thống mới được reset




Chọn R=10k

Kiểm tra linh kiện trên mạch:
Đo áp nguồn:5v
Kiểm tra các chân nguồn và đất của các IC đủ áp
IC89c52,kiểm tra chân EA: ở mức cao 5v
Chân reset,sau khi đóng mạch một thời gian,đo áp ở mức thấp
Eeprom 24c64,khi chưa hoạt động,2 chân sda và scl ở mức 5v
Bàn phím:khi chưa giao tiếp chân clk và data ở mức cao
2.1.2 Khối điều khiển hàng
3 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
+ dùng 74hc573 để chốt dữ liệu hàng
+ giả sử thời gian quét hết 1 màn hình led là T
Thời gian mỗi cột sáng trong mỗi chu kì quét là t
Thì ta có quan hệ: t = T/80
 dòng tức thời của mỗi điểm led:

dòng trung bình qua mỗi điểm led .
=>
Công suất qua trở:
Vì dòng qua trở là liên tục khi quét nên
Do đó,với bảng led ta chia làm 2 phần,lúc này dòng qua trở chỉ 1 nửa chu kì quét



Chọn IC nâng dòng td62783
2.1.3 Khối điều khiển cột
Nguyên lí hoạt động:
Khối quét cột sử dụng IC ghi dịch 74hc595,đây là IC ghi dịch vào nối tiếp ra song song 8
bit.Chân 14(DS) đưa dữ liệu nối tiếp vào,chân 11(clk) đưa xung clock vào dịch bit,bit sẽ
được dịch khi sườn dương.chân 12(latch) xung latch cho phép xuất dữ liệu ra song song
Tính toán:
IC ghi dich 74hc595
Tính toán dòng chịu đựng: như ở trên ta tính được dòng tức thời của mỗi điểm led là
800mA.
Trường hợp tất cả các điểm led trong 1 cột sáng hết thì :
dòng tức thời phải chịu là 800mAx16 = 12.8A
dòng trung bình phải chịu 10mAx16 =160mA
chọn IC hút dòng uln2803
tính toán thời gian quét:
dựa trên hiện tượng lưu ảnh của mắt 1/8s : 1/24s ta chọn quết 30 hình/s
như vậy để quét hết 1 hình mất 1/30 s.
1 hình có 80 cột,ta quét 80 cột trong 1/30s thì thời gian sáng của mỗi cột là (1/30)/80 =
4.17ms.do đó ta thực hiện dich với chu kì xung clock là 4ms
Cách đo và kiểm tra linh kiện:
Mạch bao gồm IC 74HC595, IC ULN2803, LED MATRIX.
+ Đo và kiểm tra IC 74HC595.
Sơ đồ chân và cấu tạo bên trong của IC.
4 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
- Để kiểm tra điện áp cấp cho nó đã đúng chưa chúng ta tiến hành đo, sử dụng đồng hồ
với thang đo 20Vdc, khi đã cấp nguồn vào mạch ta đo lần lượt chân 8(GND) = 0v, chân
16(VCC) = 5v, chân 13(OE) = 0v, chân 10(RESET) = 5v.
Nếu đúng như vậy tức là đã cấp đúng cho IC74HC595.

- Để kiểm tra xem IC có bị hư hỏng hay còn sử dụng được phải dùng mạch tạo xung sử
dụng IC 555, gắn ở test board,khi kiểm tra 595 thì chúng ta tháo chúng từ mạch rồi gắn vào
mạch test.
+ Đo và kiểm tra IC ULN2803.
Sơ đồ chân và cấu tạo bên trong của ULN2803.
- Để kiểm tra điện áp cấp cho IC đã đúng hay chưa chúng ta tiến hành đo,sử dụng
đồng hồ đo với thang đo 20Vdc, khi đã cấp nguồn vào mạch ta tiến hành đo chân
9(GND) = 0V ,chân 10(VCC) = 5V
Nếu đúng như vậy tức là đã cấp nguồn đúng cho IC
- Kiểm tra IC:
IC ULN2803 là IC đảo,khi ngỏ vào 5V thì ngõ ra sẽ là 0V, và khi ngõ vào 0V thì
ngõ ra sẽ là 5V.ta chỉ cần rút IC ra khỏi mạch mà cắm vào test board và kiểm tra như
datasheet.
+ Đo và kiểm tra LED MATRIX.
5 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
- Trong hình trên chân dài là hàng, theo thứ tự từ trái qua phải là Hàng 1,Cột xanh
1,Cột đỏ 1,Hàng 2,Cột xanh2,Cột đỏ 2 ……
Tương tự phía dưới cũng vậy.
- Để kiểm tra LED MATRIX cần nắm rõ cấu tạo bên trong của chúng, ở đây ta sử
dụng LED MATRIX có ANODE chung tức là để LED sáng chúng ta cần cấp nguồn
dương (cụ thể ở đây là 5V) vào hàng và GND vào cột thì LED sẽ sáng.
Dựa vào đó ta nối cực dương của nguồn vào hàng thứ nhất, nguồn GND lần lượt
qua các cột, nếu sáng là LED còn hoạt động, Nếu không sáng là đã cháy.
2.1.4 Mạch nguồn:
2.1.2.1 Nguyên lí hoạt động:
Điện áp vào 220VAC – 50Hz qua cầu diode chỉnh lưu toàn kì và qua tụ để san phẳng
sóng,loc sóng hài,qua tụ chỉ còn một áp một chiều và các gợn sóng hài nhỏ
IC tl494 tạo xung với tần số 90KHz điều khiển cho FET đóng ngắt liên tục làm cho dòng
qua cuộn sơ cấp biến áp xung cũng biến thiên liên tục với tần số đó,do hiện tượng cảm ứng

sẽ sinh ra áp đỉnh 12v ở cuộn thứ cấp cũng biến thiên như ở cuộn sơ cấp,áp ở cuộn thứ cấp
sẽ qua tụ lọc san phẳng sóng,lọc hài tạo áp 12v ổn định
2.1.4.1 Tính chọn dòng và áp
+ dòng cần nuôi cho toàn mạch gồm:
- dòng nuôi chíp 89c52
- dòng nuôi các IC max485,eeproom,4 con 74hc573, 4 con td62783, 10 con 74hc595,
10 con uln2803
- dòng nuôi 20 led matrix
+ Tính toán dòng cung cấp:
Nhìn datasheet thì dòng để nuôi chíp và các IC cỡ vài trăm mA,dòng tập trung lớn nhất ở
khối 20 LED matrix.
20 LED matrix xếp thành khối 16 hàng 80 cột. dòng trung bình của mỗi điểm led la
10mA.trường hợp tất cả các led đều sáng thì dòng trung bình toàn khối LED là :
16x80x10mA = 12.8A
6 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
Như vậy để nuôi đủ toàn mach ta chọn dòng cung cấp 15A – 12V
2.1.4.2 Sơ đồ nguyên lí mạch nguồn
2.1.4.3 Tính toán chọn linh kiện
- áp ngõ ra 12v
- dòng ngõ ra max: 15A
- công suất tối đa ngõ ra : 12x15= 180w
- hiệu suất máy biến áp :87%  Pcc = 207w
- tần số xung : 90kHz
+phần tạo trước nguồn nuôi 12v
Biến áp hạ áp 220Vac/50Hz xuống 12Vac/50Hz
Nguồn này để cung cấp cho khối tạo xung nên dòng không lớn,chỉ với IC ổn áp7812 là
đủ,không cần BJT nâng dòng
Cầu diode nắn dòng 1A
Hai tụ ngõ vào ra theo datasheet của 7812 : Cin= 0.33uf, Cout = 0.1uf

Tụ lọc: dòng ngõ ra max
Ta có công thức tính tụ lọc:
Trong đó : T =
Rt là trở kháng tải tương đương.với và Vo =12v thì Rt =
24om Kgs: hệ số gợn,chọn Kgs = 5%
Tính được C = 2777uF
Chọn C = 3300uF
+khối tạo xung : IC tl494 hoạt động ở chế độ single ended.
Ta có =90kHz
Chọn Rt = 5K Ct=2nF
R1,Rv1 cầu phân áp cho ngõ Deadtime.chỉnh điện áp ở DTC khoảng 1.25v thì độ rộng
xung Ton = Toff.
Hai bộ error amplifier ta không dùng nên chân không dảo nối đất,chân invert nối với
Vref(=5v) tạ ra bởi chính con tl494.
BJT đệm đảo pha 2sa1015: chọn Ic=2mA
Khi dẫn,BJT hoạt động ở chế độ bão hòa Vce = 0.2v
R6 = (12-0.2)/20 = 590 om
Chọn R6 = 470 om
Ta có Vce/tl = 0.4v
R4 = (12-0.7-0.4)/3.Ibng = 5k
Chọn R4 = 5k.
+chỉnh lưu và lọc ngõ vào
Áp ngõ vào 220Vac – 50Hz,qua cầu diode chỉnh lưu toàn kì
ở trên ta tính được công suất ở sơ cấp Pcc = 207 w
=>dòng cung cấp I =207/220 = 1A
Tính chọn tụ lọc đầu vào:
Áp dụng công thức như trên ta có
Rt = 220/1=220om

+ tính toán chọn FET

Vcc =310V
Dòng hiệu dụng 1A
=>dòng tức thời qua FET 1.44A
7 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
Tần số: 90Khz
Chọn được FET IRF740
2.1.4.4:Đo đạc kiểm tra mạch:
Đo áp của phần tạo trước 12v cấp chi IC tạo xung: áp ra đúng 12v
Phần IC tl494: - đo áp Vcc chân 12: 12v
- đo áp Vref = 5v
- đo áp chân 4(deadtime) 1.25v lúc này xung ngõ ra Ton = Toff
- đo xung ngõ ra chân số 11,Ton = Toff,kiểm tra đúng tần số
Von =12v,Voff = 0.2 v
- đo xung tại chân C của BJT,đáp ứng tần số của BJT tốt,khoảng xung
giống với ngõ ra chân 11 tuy nhiên bị đảo pha,Von = 11.6 v,Voff = 0v
- thử đáp ứng tần số của FET khi thay cuộn sơ cáp bằng trở 180k,đáp ứng
tần số của FET tốt
Đo áp ngõ ra 11v
2.2 Sơ đồ nguyên lí của mạch quang báo:
2.3 Nguyên lý hoạt động của mạch quang báo
Mạch điện sử dụng Vi Điều Khiển nên về phần cứng khá đơn giản. Khối điều khiển
trung tâm sử dụng Vi Điều Khiển 89S52 và eeprom 24c64 để lưu dữ liệu từ máy tính. Khối
chốt dứ liệu dùng 74hc573 và nâng dòng dùng TD62783.
Khối mạch dịch cột sử dụng IC 74HC595, đây là thanh ghi dịch 8-bit vào nối tiếp ra
song song. Ta sử dụng IC này nhằm mục đích tiết kiệm chân giao tiếp với Vi Điều Khiển.
Chân DATA-IN (14) để đưa dữ liệu nối tiếp vào, chân CLK (11) đưa xung đồng hồ dịch bit,
chân LATCH(12) để chốt dữ liệu được gửi ra. 8 đầu ra được nối đến 8 cột của bảng LED
thông qua mạch đệm dòng(ULN2803).
Nguyên lý hoạt động: Chương trình phần mềm chứa trong Vi Điều Khiển làm nhiệm

vụ điều khiển chính mọi hoạt động của mạch. Chương trình phần mềm gồm có nhiều
chương trình con: chương trình hiển thị, chương trình quét phím, giao tiếp máy tính,ghi và
đọc dữ liệu từ EEPROM.
Chương trình Visual C# chạy trên máy tính có nhiệm vụ nhận chữ của người dùng và
xuất ra dữ liệu 8 bit. Chương trình viết cho vi điều khiển sẽ nhận dữ liệu này thông qua
cổng nối tiếp. Bình thường vi điều khiển chạy và hiển thị chữ đã có sẵn trong EEPROM
nhưng khi có dữ liệu nhận được từ cổng nối tiếp thì một chương trình ngắt nối tiếp sẽ được
gọi để lưu dữ liệu từ trên máy tính gửi xuống vào EEPROM. Ưu điểm của việc dùng ngắt
này là vào bất kì thời điểm nào vi điều khiển cũng có thể nhận dữ liệu mà không làm ảnh
hưởng đến nội dung đang hiển thị trên ma trận led.
8 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
CHƯƠNG 3: CHƯƠNG TRÌNH VÀ LƯU ĐỒ THUẬT TOÁN
3.1 Lưu đồ thuật toán quét Led matrix
9 GVHD: Lê Hồng Nam
begin
Thiết lập chọn màu quét, tốc độ quét,nạp con trỏ quét
đưa bit 1 ra chân dữ liệu nối
tiếp của khối quét cột
Dịch va xuất dữ liệu ra cột
Cho phép chốt byte dữ liệu thứ nhất
Nạp byte dữ liệu thứ nhất
Cho phép chốt byte dữ liệu thứ hai
Nạp byte dữ liệu thứ hai
Ngưng chốt dữ liệu,xuất 2 byte
dữ liệu đồng thời ra hàng led
Báo cáo thực tập công nhân Mạch Quang Báo
N
Y
N

Y
THUCHIEN:
MOV DPTR,#HANG1
MOV DEM,#0
X1: MOV R2,#20
X2: MOV R4,#0
SETB DTC
X3:
CLR OEX
SETB CLK
CLR CLK
SETB LATCH
CLR LATCH
HA1:
SETB LE1
10 GVHD: Lê Hồng Nam
Delay 4ms
Xóa dữ liệu hàng
Đưa bit 0 ra chân dữ liệu nối tiếp
khối quét cột
Dịch cột
Dịch hết 80 cột?
Đủ số lần quét 1 màn hình?
Tăng con trỏ quét
Quét hết mã?
Báo cáo thực tập công nhân Mạch Quang Báo
MOV A,R4
ADD A,DEM
MOVC A,@A+DPTR
MOV P0,A

CLR LE1
INC R4
HA2:
SETB LE2
MOV A,R4
ADD A,DEM
MOVC A,@A+DPTR
MOV P0,A
CLR LE2
CLR OE
CALL DELAY
MOV P0,#00H
CLR DTC
SETB OEX
SETB OE
INC R4
CJNE R4,#32,X3
DJNZ R2,X2
INC DEM
INC DEM
CJNE DEM,#114,X1
RET
HANG1:
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0FFH,0FFH,81H,0FFH,81H,0H,81H,0H //P
DB 81H,0H,81H,0H,7EH,0H,0H,0H
DB 0FFH,0FFH,0FFH,0FFH,03H,0H,03H,0H

DB 03H,0H,03H,03H,0FFH,0FFH,0FFH,0FFH,0H,0H //H
DB 0FFH,0FFH,0FFH,0FFH,0H,03H,0H,03H
DB 0H,03H,0H,03H,0FFH,0FFH,0FFH,0FFH
//DB 0FFH,7FH,0H,80H,0H,80H,3H,80H
//DB 1H,80H,0H,80H,0FFH,7FH,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
DB 0H,0H,0H,0H,0H,0H,0H,0H
END
11 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
3.2 Lưu đồ thuật toán giao tiếp máy tính:
N
Y
12 GVHD: Lê Hồng Nam
begin
Khởi tạo 8051 ở chế độ giao tiếp nối
tiếp
Kiểm tra bên nhận đã sẵn sàng chưa?
Truyền dữ liệu
Xử lí dữ liệu
Kiểm tra dữ liệu cần truyền hết chưa?
Báo cáo thực tập công nhân Mạch Quang Báo
Chương trình:
ORG 0000h
MAIN : CLR P3.2 // RTS = 0 : NHAN NOI TIEP
MOV TMOD,#20H //TIMER1 CHE DO 2 TU NAP LAI
MOV TH1,#-6 //TOC DO BAUD 4800
MOV SCON,#50H //TRUYEN NHAN NOI TIEP CHE DO 1

CLR RI //XOA CO NHAN
SETB TR1
LAI: JNB RI,LAI
CLR RI
MOV A,SBUF
CLR RI
CALL GHIDULIEUVAOEEPROM
CJNE A,#00H,LAI //DUNG NHAN NEU NHAN DUOC MA 00H
JMP MAIN
END
3.3Lưu đồ giao tiếp với EEPROM
Write vào eeprom: Read từ eeprom:
13 GVHD: Lê Hồng Nam
end
begin
begin
Gửi tín hiệu START
Gửi tín hiệu START
Nạp giá trị đọc(0A1h)
Nạp địa chỉ cần đọc từ
eeprom
Nạp giá trị gửi (0A0h)
Nạp địa chỉ cần ghi dữ
liệu vào eeprom
Gửi nối tiếp gửi nối tiếp
Nhận byte nối tiếpNạp byte dữ liệu
Lưu byte dữ liệu
nhận đươc vào RAM
chờ xử lí
Gửi nối tiếp

Ghi nữa không?
Báo cáo thực tập công nhân Mạch Quang Báo
Y Y
N

CHƯƠNG TRÌNH GIAO TIẾP EEPROM:
CÁC CHƯƠNG TRÌNH CON GIAO TIẾP EEPROM
;
// cac chuong trinh con giao tiep
; ghi du lieu vao eeprom
; nap cac gia tri ban dau cho phep ghi tai dia chi
WRITE: LCALL START_BIT
MOV A,#10100000B
CALL WRITEIN
MOV A,BYTECAO
CALL WRITEIN
MOV A,BYTETHAP
CALL WRITEIN
RET
; ghi 1 byte data noi tiep vao
WRITEIN: MOV R7,#08H
X0: RLC A
MOV SDA,C
CALL CLOCK
DJNZ R7,X0
CALL CLOCK //bo qua ack cua slave
RET
; doc du lieu tu eeprom
; nap cac gia tri ban dau cho phep doc tai dia chi
READ:

LCALL START_BIT
MOV A,#10100000B
CALL WRITEIN
MOV A,BYTECAO
CALL WRITEIN
MOV A,BYTETHAP
CALL WRITEIN
LCALL START_BIT
MOV A,#10100001B
14 GVHD: Lê Hồng Nam
Đọc nữa ko?
Gửi tín hiệu STOP
Gửi tín hiệu STOP
end
end
Báo cáo thực tập công nhân Mạch Quang Báo
CALL WRITEIN
RET
; doc 1 byte du lieu noi tiep
READ_DATA:
MOV R7,#08H
MOV DULIEUDOC,#00H
X1: SETB SCL
NOP
MOV C,SDA
CLR SCL
MOV A,DULIEUDOC
RLC A
MOV DULIEUDOC,A
DJNZ R7,X1

LCALL MASTER_ACK
RET
; doc byte cuoi
READ_END:
MOV R7,#08H
MOV DULIEUDOC,#00H
X2: SETB SCL
NOP
MOV C,SDA
CLR SCL
MOV A,DULIEUDOC
RLC A
MOV DULIEUDOC,A ; SAVE ROTATED DATA
DJNZ R7,X2
LCALL NO_ACK
LCALL STOP_BIT
RET
; START BIT
;1 trang thai tu cao xuong thap tren duong sda khi scl dang o muc cao
START_BIT:
SETB SCL
NOP
NOP
SETB SDA
NOP
CLR SDA
NOP
NOP
CLR SCL
NOP

RET
; STOP BIT
;1 trang thai tu thap len cao tren duong sda khi scl o muc cao
STOP_BIT:
NOP
CLR SDA
NOP
15 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
SETB SCL
NOP
SETB SDA
NOP
RET
; ACK cua master khi doc du lieu
MASTER_ACK:
CLR SDA
CALL CLOCK
SETB SDA
RET
; CLOCK
CLOCK:
NOP
SETB SCL
NOP
CLR SCL
NOP
RET

; tinh hieu NO ACK khi doc xong byte cuoi

NO_ACK:
SETB SDA
CALL CLOCK
RET
END
;
ĐOẠN CHƯƠNG TRÌNH NHẬN DỮ LIỆU TỪ MÁY TÍNH LƯU VÀO EEPROM:
SDA BIT P3.7 ; BIT DATA
SCL BIT P3.6 ; XUNG CLOCK
BYTECAO DATA 31H ; DIA CHI BYTE
BYTETHAP DATA 33H
ORG 0000H
LCALL DELAY1S ; CHO ROM ON DINH
LCALL DELAY1S
LCALL DELAY1S
;
MAIN:
CLR P3.2
MOV TMOD,#21H
MOV TH1,#-6
MOV SCON,#50H
CLR RI
SETB TR1
NHAN: JNB RI,NHAN
MOV A,SBUF
CLR RI
CJNE A,#31H,NHAN // A = 31H THI NHAN GOI DU LIEU
NHANGOIDULIEU:
16 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo

MOV BYTECAO,#00H
MOV BYTETHAP,#01H
LCALL WRITE
MOV R0,#00H
HERE: JNB RI,HERE
MOV A,SBUF
CLR RI
CJNE A,#30H,GHI // A = 30H THI NGUNG NHAN DU LIEU
LJMP EXIT
GHI: LCALL WRITEIN
INC R0
LJMP HERE
EXIT: LCALL STOP_BIT
MOV BYTECAO,#00H ;GHI SO BYTE NHAN DUOC VAO DIA
CHI DAU CUA EEPROM
MOV BYTETHAP,#00H
LCALL WRITE
MOV A,R0 ;GHI SO BYTE NHAN DUOC VAO BYTE DAU CUA EEPROM
LCALL WRITEIN
LCALL STOP_BIT
RET
;
DOAN CHƯƠNG TRINH KET HOP LAY DU LIEU TU EEPROM VUA QUET LED
MATRIX:
LE1 BIT P2.3
OE BIT P2.7
CLK BIT P1.0
DTC BIT P1.1
LATCH BIT P1.2
OEXANH BIT P1.3

DEM DATA 35H
TOCDO DATA 36H
ORG 0000H
MAIN: CLR OE
SETB LE1
CLR OEXANH
CHAYLAI: MOV DEM, #24
MOV BYTECAO, #00H
MOV BYTETHAP,#00H
NEXT: MOV TOCDO,#10
LAYDULIEUQUET:
LCALL READ
MOV R2,#7
SETB DTC
DICH: LCALL READ_DATA
CALL XUNGDICH
MOV DULIEU,A
CALL DELAY1S
17 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
MOV DULIEU,#00H
CLR DTC
DJNZ R2,DICH
LCALL READ_END
CALL XUNGDICH
MOV DULIEU,A
ACALL DELAY1S
MOV DULIEU,#00H
CLR DTC
DJNZ TOCDO,LAYDULIEUQUET

INC BYTETHAP
DJNZ DEM,NEXT
SETB P1.7
JMP CHAYLAI
;
XUNGDICH:
SETB CLK
SETB LATCH
CLR CLK
CLR LATCH
RET
3.4Lưu đồ thuật toán nhận dữ liệu từ bàn phím
18 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
CHƯƠNG TRÌNH:
BIT_PHIM:
JB CHECKED,NHANBITDULIEU ;NEU DA NHAN DC BIT START THI TIP TUC
NHAN BIT DL
CLOCKBITSTART:
JB DATAKB,LOIBITS ;BIT START=1 THI LA LOI,NHAY TOI
LOIBITS
SETB CHECKED ;DANH DAU DA NHAN DC BIT START
MOV COUNTBIT,#8 ;BIEN DEM BIT DU LIEU
RETI
NHANBITDULIEU:
JB DU8BIT,CLOCKBITSTOP ;KT DA NHAN DU 8BIT DU LIEU
CHUA
CLOCKBITDATA:
MOV A,TAM
MOV C,DATAKB ;COPY BIT DATA VAO CO NHO C

RRC A ;QUAY PHAI THANH CHUA A CUNG CO
NHO C
MOV TAM,A
DJNZ COUNTBIT,EXITBP ;CHUA NHAN DU 8BIT DL THI NHAY TOI EXITBP
SETB DU8BIT ;DANH DAU DA NHAN DU 8BIT DU LIEU
MOV COUNTBIT,#2 ;1BIT PARITY, 1BIT STOP
RETI
LOIBITS: ;LOI TRUYEN DU LIEU HOAC NHAN MA BREAK
CLR CHECKED
CLR DU8BIT
MOV TAM,#0
POP ACC
POP PSW
RETI

CLOCKBITSTOP:
DJNZ COUNTBIT,EXITBP ;BO QUA BIT PARITY ;KTRA THI SO VOI BIT P CUA
STATUS
JNB DATAKB,LOIBITS ;BIT STOP=0 LA LOI,NHAY TOI LOIBITS

;XU LI 8BIT MA NHAN DUOC
MOV A,TAM
CJNE A,#0F0H,BREAKCODE ;TRONG 3 BYTE NHAN DC CHI LUU
BYTE THU 3
MOV BREAK,#2
BREAKCODE:
DJNZ BREAK,LOIBITS
OK:
MOV R3,#20
DJNZ R3,$

MOV A,TAM
MOV SCANCODE,A
MOV TAM,#0
19 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
CLR CHECKED
CLR DU8BIT
EXITBP:
RETI
Lưu đồ thuật toán chuyển từ mã bàn phím qua mã led matrix
20 GVHD: Lê Hồng Nam
GIAI MA
SCANCODE=’A’
DEM=BYTE DAU
CHU A
EXIT
DEM=BYTE DAU
CHU Z
DEM=BYTE DAU
CHU B
SCANCODE=’Z’
SCANCODE=’B’
Báo cáo thực tập công nhân Mạch Quang Báo
// GIAO TIEP BAN PHIM
BIT_PHIM:
PUSH ACC
PUSH PSW
JB CHECKED,NHANBITDULIEU ;NEU DA NHAN DC BIT START THI
TIP TUC NHAN BIT DL
CLOCKBITSTART:

JB DATAKB,LOIBITS ;BIT START=1 THI LA LOI,NHAY TOI
LOIBITS
SETB CHECKED ;DANH DAU DA NHAN DC BIT START
MOV COUNTBIT,#8 ;BIEN DEM BIT DU LIEU
POP PSW
POP ACC
RETI
NHANBITDULIEU:
JB DU8BIT,CLOCKBITSTOP ;KT DA NHAN DU 8BIT DU LIEU
CHUA
CLOCKBITDATA:
MOV A,TAM
MOV C,DATAKB ;COPY BIT DATA VAO CO NHO
C
RRC A ;QUAY PHAI THANH CHUA A
CUNG CO NHO C
MOV TAM,A
DJNZ COUNTBIT,EXITBP ;CHUA NHAN DU 8BIT DL THI NHAY TOI
EXITBP
SETB DU8BIT ;DANH DAU DA NHAN DU 8BIT DU LIEU
21 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
MOV COUNTBIT,#2 ;1BIT PARITY, 1BIT STOP
POP PSW
POP ACC
RETI
LOIBITS: ;LOI TRUYEN DU LIEU HOAC NHAN MA BREAK
CLR CHECKED
CLR DU8BIT
MOV TAM,#0

POP PSW
POP ACC
RETI

CLOCKBITSTOP:
DJNZ COUNTBIT,EXITBP ;BO QUA BIT PARITY ;KTRA THI SO VOI
BIT P CUA STATUS
JNB DATAKB,LOIBITS ;BIT STOP=0 LA LOI,NHAY TOI LOIBITS

;XU LI 8BIT MA NHAN DUOC
MOV A,TAM
CJNE A,#0F0H,BREAKCODE ;TRONG 3 BYTE NHAN DC CHI LUU
BYTE THU 3
MOV BREAK,#2
BREAKCODE:
DJNZ BREAK,LOIBITS
OK:
MOV R3,#20
DJNZ R3,$
MOV A,TAM
MOV SCANCODE,A
MOV TAM,#0
CLR CHECKED
CLR DU8BIT
EXITBP:
POP PSW
POP ACC
RETI
// XOA RAM
CLEARRAM:

PUSH ACC
PUSH 00H
MOV R0,#30H ; BAT DAU
TAI DIA CHI 30H
CLEAR: MOV @R0,#0 ; NAP 00 VAO
THANH GHI
INC R0 ; TANG DEN
DIA CHI CUOI CUNG
22 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
CJNE R0,#7FH,CLEAR
POP 00H
POP ACC
RET
// LUU DU LIEU VAO RAM
SAVERAM:
MOV R0,#30H
MOV DEM1,#0
NHAYLAI: MOV A,VALUE
MOV B,#16
MUL AB
ADD A,DEM1
MOVC A,@A+DPTR
MOV @R0,A ;SET KY TU MOI
INC R0
INC DEM1
CJNE DEM1,#16,NHAYLAI
MOV R0,#30H
RET
// CHON MA TU BAN PHIM

UNCODE:
MOV A,SCANCODE
CJNE A,#1CH,C1
MOV VALUE,#0;'A'
C1: CJNE A,#32H,C2
MOV VALUE,#1;'B'
C2: CJNE A,#21H,C3
MOV VALUE,#2;'C'
C3: CJNE A,#23H,C4
MOV VALUE,#3;'D'
C4: CJNE A,#24H,C5
MOV VALUE,#4;'E'
C5: CJNE A,#2BH,C6
MOV VALUE,#5;'F'
C6: CJNE A,#34H,C7
MOV VALUE,#6;'G'
C7: CJNE A,#33H,C8
MOV VALUE,#7;'H'
C8: CJNE A,#43H,C9
MOV VALUE,#8;'I'
C9: CJNE A,#3BH,C10
MOV VALUE,#9;'J'
C10: CJNE A,#42H,C11
MOV VALUE,#10;'K'
C11: CJNE A,#4BH,C12
MOV VALUE,11;'L'
C12: CJNE A,#3AH,C13
23 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
MOV VALUE,#12;'M'

C13: CJNE A,#31H,C14
MOV VALUE,#13;'N'
C14: CJNE A,#44H,C15
MOV VALUE,#14;'O'
C15: CJNE A,#4DH,C16
MOV VALUE,#15;'P'
C16: CJNE A,#15H,C17
MOV VALUE,#16;'Q'
C17: CJNE A,#2DH,C18
MOV VALUE,#17;'R'
C18: CJNE A,#1BH,C19
MOV VALUE,#18;'S'
C19: CJNE A,#2CH,C20
MOV VALUE,#19;'T'
C20: CJNE A,#3CH,C21
MOV VALUE,#20;'U'
C21: CJNE A,#2AH,C22
MOV VALUE,#21;'V'
C22: CJNE A,#22H,C23
MOV VALUE,#22;'X'
C23: CJNE A,#35H,C24
MOV VALUE,#23;'Y'
C24: CJNE A,#1AH,C25
MOV VALUE,#24;'Z'
C25: CJNE A,#1DH,C26
MOV VALUE,#25;'W'
C26: CJNE A,#0FFH,C27
MOV VALUE,#00H
C27:
RET

//………………………BANG MA CHU………………….
BANG_MA_CHU:
DB 0E0H,7FH,0F0H,7FH,8H,3H,4H,3H,2H,3H,4H,3H,8H,3H,0F0H,7FH ;CHU A
DB 0FEH,7FH,0FEH,7FH,2H,41H,2H,41H,2H,41H,2H,41H,0FCH,22H,78H,1CH ;CHU
B
DB 0F8H,1FH,0FCH,3FH,0EH,40H,6H,40H,6H,40H,6H,40H,0CH,20H,18H,10H ;CHU C
DB 0FEH,7FH,0FEH,7FH,6H,40H,6H,40H,6H,40H,6H,40H,0CH,20H,0F8H,1FH ;CHU
D
DB 0FEH,7FH,0FEH,7FH,86H,61H,86H,61H,86H,61H,86H,61H,6H,60H,6H,60H ;CHU
E
DB 0FEH,7FH,0FEH,7FH,86H,1H,86H,1H,86H,1H,86H,1H,6H,0H,6H,0H ;CHU F
DB 0F8H,1FH,0FCH,3FH,6H,40H,6H,40H,6H,40H,6H,44H,0CH,3CH,8H,4H ;CHU G
DB 0FEH,7FH,0FEH,7FH,80H,1H,80H,1H,80H,1H,80H,1H,0FEH,7FH,0FEH,7FH ;CHU
H
DB 0H,0H,6H,60H,6H,60H,0FEH,7FH,0FEH,7FH,6H,60H,6H,60H,0H,0H ;CHU I
DB 0H,20H,6H,60H,6H,60H,0FEH,7FH,0FEH,3FH,6H,0H,6H,0H,0H,0H;CHU J
24 GVHD: Lê Hồng Nam
Báo cáo thực tập công nhân Mạch Quang Báo
DB 0FEH,7FH,0FEH,7FH,0C0H,3H,60H,6H,30H,0CH,18H,18H,0CH,30H,6H,60H
;CHU K
DB 0FEH,7FH,0FEH,7FH,0H,60H,0H,60H,0H,60H,0H,60H,0H,60H,0H,60H ;CHU L
DB 0FEH,7FH,0FEH,7FH,0CH,0H,18H,0H,30H,0H,18H,0H,0CH,0H,0FEH,7FH ;CHU
M
DB 0FEH,7FH,0FCH,7FH,18H,0H,30H,0H,60H,0H,0C0H,0H,80H,1H,0FEH,7FH ;CHU
N
DB 0F8H,1FH,4H,20H,2H,40H,2H,40H,2H,40H,2H,40H,4H,20H,0F8H,1FH ;CHU O
DB 0FEH,7FH,0FEH,7FH,2H,1H,2H,1H,2H,1H,2H,1H,0FCH,0H,78H,0H ;CHU P
DB 0F8H,1FH,4H,20H,2H,40H,2H,40H,2H,50H,4H,30H,0F8H,5FH,0H,20H ;CHU Q
DB 0FEH,7FH,0FEH,7FH,2H,7H,02H,0DH,2H,19H,2H,31H,0FCH,60H,78H,40H ;CHU
R

DB 78H,10H,0FCH,20H,86H,41H,86H,41H,86H,41H,86H,41H,0CH,23H,18H,1EH ;CHU
S
DB 6H,0H,6H,0H,6H,0H,0FEH,7FH,0FEH,7FH,6H,0H,6H,0H,6H,0H ;CHU T
DB 0FEH,1FH,0H,20H,0H,40H,0H,40H,0H,40H,0H,40H,0H,20H,0FEH,1FH ;CHU U
DB 0FEH,0FH,0H,18H,0H,30H,0H,60H,0H,60H,0H,30H,0H,18H,0FEH,0FH ;CHU V
DB 6H,60H,1CH,38H,70H,0EH,0C0H,3H,0C0H,3H,70H,0EH,1CH,38H,6H,60H ;CHU
X
DB 1EH,0H,30H,0H,60H,0H,0C0H,7FH,0C0H,7FH,60H,0H,30H,0H,1EH,0H ;CHU Y
DB 6H,7CH,6H,7EH,6H,63H,86H,61H,0C6H,60H,66H,60H,3EH,60H,1EH,60H ;CHU Z
DB 0FEH,7FH,0FEH,3FH,0H,18H,00H,0CH,00H,0CH,0H,18H,0H,30H,0FEH,7FH
;CHU W
25 GVHD: Lê Hồng Nam

×