Báo cáo đồ án môn GNMT Nhóm 5
1. CƠ SỞ LÝ THUYẾT
1.1. CỔNG SONG SONG
1.1.1 GIỚI THIỆU
Cổng song song: Dữ liệu được truyền qua cổng này theo cách song song, cụ
thể dữ liệu
được truyền 8 bit đồng
thời
hay còn gọi byte nối tiếp bit song
song.
Cổng máy in: Lí do là hầu hết các máy in đều được nối với máy tính qua
cổng
này.
Cổng Centronic: Đây
là
tên của một công ty đã thiết kế ra cổng này.
Centronic
là
tên
một
công ty chuyên sản xuất máy in kiểu ma trận đứng hàng
đầu thế giới. Chính công ty này đã
nghĩ
ra kiểu thiết kế cổng ghép nối máy in
với máy
tính.
1.1.2 MỨC ĐIỆN ÁP
CỔNG
Đều sử dụng mức điện áp tương thích TTL(Transiztor - Transiztor - Logic)
biện pháp ghép mức hoặc ghép cách ly qua
bộ ghép nối
quang.
1.1.3 KHOẢNG CÁCH GHÉP
NỐI
Khoảng cách cực đại giữa thiết bị ngoại vi và máy tính ghép qua cổng
song song thường
bị
hạn chế. Lý do
là
hiện tượng cảm ứng giữa các
đường
dẫn và điện dung kí sinh hình thành
gi
ữ
a
các
đường
dẫn có thể làm biến dạng
tín hiệu. Khoảng cách giới hạn cực đại là 8m. Thông
th
ườ
ng
chỉ
1,5
đến 2m
vì lí do an toàn dữ liệu. Nếu sử dụng khoảng cách ghép nối trên 3m thì các
đườ
ng
dây tín hiệu và
.
Với nhiều mục đích sử dụng thì
khoảng cách này hoàn toàn thỏa đáng, tuy vậy cũng
có
những ứng dụng đòi
hỏi phải truyền trên khoảng cách xa hơn. Trong trường hợp đó ta
phải
ngh
ĩ
ngay đến khả năng ghép nối khác (như ghép nối qua cổng
RS232).
1.1.5 CẤU TRÚC CỔNG SONG
SONG
Cổng song song có hai
loại:
ổ
cắm 36 chân và ổ cắm
25 chân.
Ngày
nay, loại ổ cắm
36 chân không còn
đượ
c
sử
dụng, hầu hết các máy tính PC
đều
trang bị ổ cắm 25 chân nên
ta
chỉ
truyền.
D0 2
D1
3
D2 4
D3
5
D4
6
D5
7
D6
8
D7
9
Ac
knowl
edge
10
M ứ
c Low chân này, máy in thông báo cho
máy
tính
biết đã nhận được kí tự vừa gửi và có thể tiếp
tục
nhận.
Busy (Báo
bận)
khi hết
giấy.
Select (Lựa
chọn)
13
Một mức Highcó
nghĩa
là máy in đang trong
trạng
thái
được kích hoạt
.
3
Báo cáo đồ án môn GNMT Nhóm 5
Auto Linfeed (Tự
động)
nạp
dòng)
14
M ứ
c Low ởchân này máy tính nhắc máy in
t
ự
động
nạp một dòng mới mỗi khi kết thúc một
dòng.
xác
định
lú
c
ban đầu khi chân này ở
mức
Low.
Sele
ct Input (Lựa
chọn
lối
vào)
17
Bằng một mức Low máy in được
l
ự
a
chọn
bở
máy
tính.
Ground (Nối
đất)
18-25
Qua bảng trên ta thấy cáp nối giữa máy tính và máy in bao gồm 25 sợi,
tuy nhiên không phải
thái.
•
Đường
dẫn dữ liệu, truyền các bit riêng
lẻ
của các ký tự cần
in.
Từ cách
mô tả các tín hiệu và mức tín hiệu ta có thể nhận thấy các tín hiệu
Acknowledge,
Auto Linefeed, Error, Reset, và Select Input kích hoạt
ở
mức Low. Thông qua chức năng
của
các chân này ta cũng hình dung
được cách điều khiển máy
in.
Đáng chú ý là 8
đường
dẫn song song đều được dùng để chuyển dữ liệu từ
4
Báo cáo đồ án môn GNMT Nhóm 5
máy tính
sang
máy in. Trong những trường hợp này, khi chuyển sang ứng
dụng đo
l
ườ
xếp
và địa
chỉ
các thanh ghi. Các
đường
dẫn của
cổng song song được nối với ba thanh ghi 8 bit
khác nhau:
THANH GHI DỮ LIỆU ĐỊA CHỈ ( 278H, 378H, 2BCH, 3BC
H)
D7 D6 D5 D4 D3 D2 D1 D0
D0(chân
)
D
1
(chân
3)
D2 (chân
4)
D3 (chân
5)
D4 (chân
6)
D5 (chân
7)
D6 (chân
8)
D7 (chân
9)
5
17)
Interrup
Enable
(cho phép
ngắt)
Như sơ đồ trên đã trình bày 8 đường dữ liệu dẫn tới thanh ghi dữ
liệu còn 4 đường
dẫn
điều khiển Strobe, Auto Linefeed, Reset, Select
Input dẫn tới thanh ghi điều khiển. Năm
đườ
ng
dẫn trạng thái
Acknowledge, Busy, Paper Empty, Select, Error tới thanh ghi trạng
thái.
Thanh ghi dữ liệu hay 8 đường dẫn dữ liệu không phải là đường
dẫn 2 hướng trong tất
cả
các
l
oại
máy tính nên dữ liệu
chỉ
có thể được
xuất ra qua các
đường
dẫn này cụ thể từ D0
đến
D7. Thanh ghi điều
khiển hai hướng, hay nói chính xác hơn: Bốn bit có giá trị thấp được
khiển HD44780 của Hitachi nên chúng có tâp lệnh và các chân tương thích
nhau.Bảng sau đây là ý nghĩa và chức năng các chân của LCD.
1.2.3. Nguyên tắc hiể thị ký tự trên LCD
Một chương trình hiển thị ký tự trên LCD sẽ đi theo 4 bước sau:
1. xóa toàn bộ màn hình.
2. Đặt chế độ hiển thị.
3. Đặt vị trí con trỏ(nơi bắt đầu của ký tự hiển thị).
4. Hiển thị ký tự
Chú ý:
+ Bước 3,4 có thể lập lại nhiều lần nếu cần hiển thị nhiều ký tự.
+ Mỗi khi thưc hiện lệnh hoặc ghi dữ liệu hiển thị lên LCD đều phải
kiểm tra cờ bận(xem hàm busy_flag trong chương trình).Tuy nhiên có 1 số
loại LCD không cho phép kiểm tra cờ bận,vì vậy bộ vi điều khiển cần phải
chủ động phân phối thời gian khi ra lệnh cho LCD(ví dụ sau khi xóa màn
hình thì sau 2 ms mới ra lệnh khác vì thời gian để LCD xóa màn hình.
+ Chế độ hiển thị mặc định sẽ là hiển thị dich,vị trí con trỏ mặc định
sẽ ở đầu dòng thư nhất.
2. NỘI DUNG THIẾT KẾ MẠCH VÀ NGUYÊN LÝ HOẠT ĐỘNG
2.1. SƠ ĐỒ NGUYÊN LÝ VÀ MẠCH IN
Mạch in
Mạch nguyên lý
2.2. CHƯƠNG TRINH VIẾT TRONG VB
Option Explicit
Dim i, j As Integer
Dim dem As Integer
Dim X As Byte
Dim dem2 As Integer
Dim gio, phut, giay, ngay, thang, nam As Integer
Private Declare Sub Out32 Lib "inpout32.dll" (ByVal PortAddress As
Integer, ByVal Value As Integer)
write_command (&H1)
End Sub
Private Sub Option3_Click()
write_command (&H1)
End Sub
Private Sub Option4_Click()
write_command (&H1)
End Sub
Private Sub Timer1_Timer()
label1.Caption = "Thoi gian :" & Format(Now, "dd-mm-yyyy hh:nn:ss")
If (Option1 = False And Option2 = False And Option3 = False And Option4
= False) Then
write_data (&H4D)
write_data (&H45)
write_data (&H4E)
write_data (&H55)
write_command (&H80)
End If
'
If (Option1 = True) Then
j = j + 1
giay = Second(Now)
phut = Minute(Now)
write_data (&H30 + phut \ 10)
write_data (&H30 + phut Mod 10)
If (j >= 2) Then
write_data (&H3A)
j = 0
End If
If (j = 1) Then
write_data (&H2F)
write_data (&H30 + thang \ 10)
write_data (&H30 + thang Mod 10)
write_command (&H80)
End If
'
If (Option4 = True) Then
nam = Year(Now)
thang = Month(Now)
write_data (&H30 + thang \ 10)
write_data (&H30 + thang Mod 10)
write_data (&H2F)
write_data (&H30 + nam \ 1000)
write_data (&H30 + (nam Mod 1000) \ 100)
write_data (&H30 + ((nam Mod 1000) Mod 100) \ 10)
write_data (&H30 + nam Mod 10)
write_command (&H80)
End If
End Sub
Sub busy_flag()
Out32 &H37A, &H1
Out32 &H378, &HFF
Do
X = Inp32(&H379) And &H80
dem = dem + 1
Loop While (X = &H0 And dem <> 300)
dem = 0
Out32 &H37A, &HB
End Sub
Sub write_command(LCD_command As Integer)
Private Sub Command1_Click()
If timer = True Then
Time = TimeSerial(Text4.Text, Text5.Text, Text6.Text)
End If
If dates = True Then
Date = DateSerial(Text3.Text, Text2.Text, Text1.Text)
End If
End Sub
Private Sub Command2_Click()
Unload Me
De05.Show
End Sub
Private Sub Form_Load()
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
Option2.Value = False
Option1.Value = False
dates = False
timer = False
End Sub
Private Sub Option1_Click()
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
Text1.Enabled = True
Text2.Enabled = True