Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
`
Lời Nói Đầu
Ngày nay, các thiết bị máy móc, hệ thống nhằm phục vụ đời sống con ngời trong sinh hoạt cũng nh trong sản xuất phát triển nhanh và ngày càng thông
minh. Sở dĩ có đợc điều đó là nhờ ứng dụng thành tựu của khoa học kỹ thuật.
Một trong vô số những thành tựu của khoa học kỹ thuật nói chung, của khoa học
kỹ thuật điện tử nói riêng là bộ vi điều khiển, ghép nối máy tính.
Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển điều
khiển các hoạt động của ti vi, máy giặt, đầu đọc laser, điện thoại, lò vi ba...trong
hệ thống sản xuất tự động, bộ vi điều khiển đợc sử dụng trong rụ bốt, dây truyền
tự động,...các hệ thống càng thông minh thì vai trò của hệ vi điều khiển càng
quan trọng. Đây là nói đến vi điều khiển, còn ghép nối máy tính có nó cũng có
rất nhiều ứng dụng có liên quan đến vi điều khiển. Ghép nối máy tính với máy
in, máy quét, máy ảnh, máy quay phim ... qua các cổng ghép nối của máy tính.
Qua học tập và nghiên cứu chúng em đã tìm hiểu về đề tài : Thit k
ng h thi gian thc hin th LCD s dng cng ni tip.
Do thời gian nghiên cứu và kinh nghiệm còn hạn chế nên không tránh
khỏi những thiếu sót.
Vì vậy, em rất mong sự góp ý chỉ bảo của các thầy cô và các bạn.
Chúng em xin chân thành cảm ơn!
Hà Nội, Ngày 08Tháng 03Năm 2011
Giáo viên hớng dẫn
:Phm Vn Chin
Nhóm sinh viên thực hiện: Nguyn c Cng
:Lờ Vit Hựng
:Mai Th Tho
Lớp : in T 2_k2
Lp in t 2 k2
1
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
Phần I: Giới thiệu chung về ghép nối máy tính
A. Giới thiệu
Sự phát triển của ghép nối máy tính đã mở rộng đáng kẻ các lĩnh vực ứng
dụng của máy tính, đặc biệt là đo lờng và điều khiển. Thực tế cho thấy, trong các
công ty xí nghiệp đã ng dụng kỹ thuật ghép nối rất nhiều, Ví Dụ: Những điều
khiển CNC, dây truyền công nghệ sản xuất xi măng, điều khiển các thiết bị khác
nhau nh những phần cứng và chơng trình do ngời sử dụng viết, ngôn ngữ giao
tiếp là: Pascal, C++, ASM, VB, VB.net...có khả năng ghép nối máy tính có độ
chính xác cao, thời gian thu nhập số liệu ngắn và quan trọng là mức thu thập và
xử lý các kết quả.
Đề tài, đo điện áp một chiều hiển thị trên màn hình LCD và trên máy tính
dạng đồ thị là một đề tài tơng đối khó và có nhiều ứng dụng trong ngàng điện tử
và mộ số ngành khác.
B. Sự giao tiếp giữa máy tính và các khối ghép nối.
I. Máy tính và các khối ghép nối.
Nh chúng ta đã biết cấu trúc của một máy tính đợc chia làm 3 phần chính:
Khối xử lý trung tâm CPU làm nhiệm vụ thu thập và xử lý mi dữ liệu.
Khối nhớ (Memory): Lu trữ các loại dữ liệu khác nhau đa vào lấy và lấy ra
ở CPU.
Khối vào ra (I/O): Làm nhiệm vụ tơng thích với các thiết bị bên ngoài và
đờng Bus trong máy tính.
Trong máy tính hiện nay thờng có các thiết bị ngoại vi sau: Màn Hình, bàn
phím, chuột, loa, máy in.... Với các thiết bị ngoại vi đó, máy tính đều có khối xử
lý tơng ứng, ví dụ: Khối ghép giữa bus máy tính với màn hình là card màn hình
(VGA), khối ghép giữa bus máy tính với loa là soundcard... thông thờng các máy
tính thế hệ hiện nay thì các khối ghép nối cho các thiết bị ngoại vi thông dụng
này đều đợc tích hợp trên một bản mạch chính gọi là Mainboard.
Tuy nhiên máy tính không ch dừng lại ở ghép nối với máy in, màn hình,
loa,..mà nó còn đợc ứng dụng vô cùng rộng rãi trong nhiều lĩnh vực. Nhờ các
cổng ghép nối RS232, LPT, cổng USB, các khe căm mở rộng...mà chúng ta có
thể tạo ra các phần cng có thể ghép nối vơi máy tính dới sự điều khiển của các
phn mềm.
Nội dung của môn học này là chúng ta đi vào nghiên cửu các cổng, cỏc
khe cắm mở rộng của máy tính, đ từ đó ta có thể chế tạo ra các khối ghép nối
phục vụ trong nhiều lĩnh vực trong công nghiệp nh là o lờng và điều khiển.
Lp in t 2 k2
2
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
1. Các dạng tin trao đổi của máy tính
a. Dạng số (Digital)
Đây là một chuỗi các bit 0 và 1 đợc biểu diễn theo hệ đếm nh: nh phân, hệ
thập lục phân... Các tín hiệu này có thẻ ở dạng nối tiếp hoặc song song và mức
có thẻ là RS hoặc TTL...
b. Dạng chữ (Text)
Đây biểu diễn của các ký tự dới dạng số, trên thế giới hiện nay thông dụng
là biểu diễn các ký theo mã ASCCII. Theo cách này thì các ký tự đợc biểu diễn
bằng các chính là c bit 0,1 trên hệ thập lục phân, ví dụ: Mã ký tự A là 41h.
Dạng tín hiệu này có thể coi là tìn hiệu số.
c. Dạng tơng tự (Analog)
Đây là các dòng điện hay đi n áp biến đổi liên tục theo thời gian. Điển
hình là đại lợng vật lý thu thập từ các bộ cảm biến (sensor). Muốn xử lý đợc các
tín hiệu này, máy tính (khối ghép nối) phải chuyển nó sang dạng số bằng các bộ
biến đổi ADC.
d. Dạng âm tần
Đây là dạng tổng hợp của nhiều tín hiệu tơng tự vơi tín hiệu số vi các
biên độ khác nhau. Cũng có thẻ coi đõy là một dạng của tín hiệu Analog.
2. Các dạng thông tin trao đổi của máy tính
Trong quá trình gửi tin từ các thiết bị ngoại vi vào máy tính có các dạng
tín hiệu sau:
Tin về trạng thái của thiết bị ngoại vi
Tin mạng dữ liệu cần trao đổi.
Trong quá trình ngợc lại.
Tin về dữ liệu trao đổi.
Tin mang lệnh điều khiển
3. Các phơng thức trao đổi tin của máy tính
Trao đổi theo chơng trình (Assembly, Pascal, C++, VB, VB.net...)
Trao đổi trực tiếp với các khối nhớ (DMA Direct Memory Access)
a. Chế độ trao đổi tin theo chơng trình
Đây là chế độ trao đổi tin trong đó máy tính trao đổi với các thiết bị ngoại
vi bằng các lệnh vào ra. Lệnh dịch chuyển dữ liệu giữa các thanh ghi. Cụ thể:
Trong ngôn ngữ Asembly các lệnh đợc lệnh dành cho trao đổi IN, OUT,
MOV.
Trong ngôn ngữ Pascal:
Đọc một byte dữ liệu: X:=PORT[địa chỉ]
Đa một byte dữ liệu: PORT[địa chỉ]: =y;
Đọc một byte dữ liệu: OUTPORT(địa chỉ, y)
Trong chế độ trao đổi theo chơng trình có 3 phơng pháp:
Lp in t 2 k2
3
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
Phơng pháp trao đổi đồng bộ.
ở phơng pháp này, máy tính sẽ tiến hành trao đổi tin ngay v i thiết bị
ngoài khi khởi động xong mà không cần biết trạng thái của trạng thái đờng dây
cũng nh thiết bị ngoài.
Để có thể thực hiện đợc phơng pháp này thì yêu cầu là:
+ Tốc độ trao đổi tin của thiết bị ngoài lớn hơn tốc độ trao đổi tin của máy
tính.
+ Thiết bị ngoài cần phải ở trạng thái sẵn sàng ngay khi máy tính khởi
động xong.
+ Phơng pháp này có u điểm là tốc độ trao đổi tin nhanh nhng có nhợc
điểm là dễ bị mất tin khi thiết bị ngoài cha ở trạng thái sãn sàng.
Phơng pháp không đồng bộ
Trong phơng pháp này, trớc khi trao đổi tin, máy tính tiến hành đọc, kiểm
tra trạng thái của thiết bị ngoài, nên thiết bị ngoài đã ở trạng thái sẵn sàng thì
tiến hành trao đổi tin còn ngợc lại sẽ chờ.
Ngoài ra trong quá trình trao đổi, nếu tin bị lỗi thì yêu cu truyền lại.
Phơng pháp này có độ tin cậy cao nhng tốc độ chậm hơn phơng pháp đồng
bộ.
Phơng pháp trao đổi ngắt chơng trình
Phơng pháp này lợi dụng đợc u điểm, khắc phục đợc nhợc điểm của hai phơng
pháp trên:
+ Khi thiết bị ngoài có yêu cầu trao đổi sẽ gửi tin tín hiệu theo yêu cầu
(ngắt) đến máy tính.
+ Máy tính dừng chơng trình đang phục vụ (nếu thiết bị ngoài đang yêu
cầu có mức yêu tiên cao hơn) và nhớ lại dừng đồng thời gửi tín hiệu xác nhận,
yêu cầu thiết bị ngoài trao đổi tin.
+ Máy tính và thiết bị ngoài trao đổi tin theo chơng trình (gọi là chơng
trình con phục vụ ngắt).
+ Kết thúc quá trình trao đổi tin, máy tính trở lại chơng trình từ điểm
dừng.
+ Phơng pháp trao đổi theo ngắn chơng trình khắc phục đợc nhợc điểm
của hai phơng pháp đồng bộ và không đồng bộ, nó cho phép tận dụng tối đa thời
gian làm việc của máy tính.
b. Trao đổi MDA.
Đây là phơng thức trao đổi trực tiếp với khối nhớ của máy tính mà không
thông qua CPU. Khi đó CPU sẽ ở trạng thái treo nhờng quyền điều khiển bù cho
ghép nối. Thiết bị ngoài và khối nhớ của máy tính sẽ tiến hành trao đổi (đọc/ghi
dữ liệu). Sau khi quá trình kết thúc sẽ nhờng lại quyền điều khiển Bus cho CPU.
Lp in t 2 k2
4
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
Phần II: ghép nối truyền tin nối tiếp
I. Khái Niệm Về Truyền Tin Nối Tiếp .
1. Khái niệm
Truyền tin nối tiếp là phơng thức truyền tin trong đó các bit mang thông
tin đợc truyền kế tiếp nhau trên 1 đờng dẫn vật lý . Tại 1 thời điểm phía bên
truyền và bên nhận chỉ có thể truyền ( hoặc nhận) 1 bit .
Ưu điểm của truyền tin nối tiếp :
+ Tiết kiệm đờng dẫn
+ Có khả năng truyền đi xa
Nhợc điểm
+ Tốc độ chậm hơn các thiết bị thờng phải có khối chuyển đổi nối tiếp
song song, song song nối tiếp khi sử dụng phơng pháp này để trao đổi tin .
2. Các phơng thức truyền tin nối tiếp
Có 3 phơng thức truyền tin nối tiếp :
+ Phơng thức đồng bộ : Các byte chứa các bit thông tin đợc truyền liên
tiếp trên đờng truyền và chỉ đợc ngăn cách ( phân biệt ) nhau bằng bit đồng bộ
khung (SYN). Hình 1
+ Phơng thức không đồng bộ : Các byte chứa các bit thông tin đợc chứa
trong 1 khung. 1 khung đợc bắt đầu bằng 1 bit start, tiếp theo là các bit mang
thông tin, kế tiếp là các bit kiểm tra chẵn lẻ và kết thúc là 1 bit stop . Khoảng
cách giữa các khung là các bit dừng bất kỳ , khi đó đờng truyền đợc lấy lên mức
cao (hình 2 ).
+ Phơng thức lai : ây là phơng thức kết hợp của hai phơng pháp trên ,
trong đó các bit trong 1 khung đợc truyềng theo phơng thức không đồng bộ còn
các byte đợc truyền theo phơng thức đồng bộ
Hình 1
Hình 2
Lp in t 2 k2
5
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
II. Cổng Nối Tiếp
1. Giới thiệu
Cổng nối tiếp RS232 là 1 giao diện phổ biến rộng rãi nhất , ta còn gọi là
cổng com 1 ,com2 , để tự do cho các ứng dụng khác nhau , giống nh cổng
máy in , cổng nối tiếp RS232 cũng đợc dử dụng rất thuận tiện trong việc ghép
nối máy tính với các thiết bị ngoại vi . Việc truyền dữ liệu qua cổng RS232 đợc tiến hành theo cách nối tiếp nghĩa là các bit dữ liệu đợc gửi đi nối tiếp với
nhau trên 1 đờng dẫn .
2. Cấu trúc cổng nối tiếp
í nghĩa các chân tín hiệu nh sau :
Mức tín hiệu trên các chân của cổng nối tiếp thờng nằm trong khoảng
-12v _ +12v
Các bit dữ liệu đợc đảo ngợc lại . mức điện áp ở mức logic 1 : -12v _ -3v
mức điện áp ở mức logic 0 : +3v _ +12v
trạng thái tĩnh trên đờng dẫn có mức điện áp -12v
bằng tốc độ baund ta thiết lập tốc độ truyền dữ liệu các giá trị thông thờng là :
300, 600, 1200, 2400,4800, 9600.
3. ịa chỉ các cổng nh sau :
Com1: địa chỉ cơ bản là : 3F8H
Com2: địa chỉ cơ bản là : 2F8H
Com3: địa chỉ cơ bản là : 3E8H
Com4: địa chỉ cơ bản là : 2E8H
Lp in t 2 k2
6
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
Sự trao đổi các đờng dẫn tín hiệu :
Trên máy tính có một vi mạch đảm bảo việc truyền (nhận) dữ liệu thông qua
cổng nối tiếp, vi mạch đó gọi là UART ( bộ truyền nhận nối tiếp không đồng bộ
) . UART để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại
vi , phổ biến nhất là vi mạch 8250 của hãng NSC hoặc các thiết bị tiếp theo , nh
16C550 , bộ UART có 10 thanh ghi để điều khiển tất cả chức năng của việc nhập
vào xuất ra dữ liệu theo cách nối tiếp .
4. Các thanh ghi điều khiển .
a) Thanh ghi điều khiển modem(3F8 +4)
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
LOOP OUT2 OUT1 RTS
DTR
D0=1 : đa DTR=0
D0=0 : đa DTR =1
D1=1: đa RTS =0
D1=0: đa RTS =1
OUT1 , OUT2 điều khiển đầu ra phụ
b) Thanh ghi trạng thái modem(3F8+6)
RLSD RI
DSR
CTS
RLSD1 RI1
DSR1
CTR1
Thanh ghi này nhiệm vụ thông báo về trạnh thái các đờng dẫn bắt tay điều chú ý
ở thanh ghi này là : D4, D5 ,D6 chính là lối vào của các đờng dẫn CTS , DSR ,
RI
đã đợc đảo .
c) Thanh ghi điều khiển đờng truyền( 3F8+3)
C7
C6
C5
C4
C3
C2
C1
C0
C1, C0 : đặt số bit trong mỗi từ
00: 5 bit
01: 6 bit
10 : 7 bit
11: 8 bit
C2 : các bit dừng
0 : 1 bit dừng
1: 1,5 bit dừng
C3 : bit kiểm tra chẵn lẻ
0 : không kiểm tra
1 : có kiểm tra
C4 : loại chẵn lẻ
0: bit lẻ
Lp in t 2 k2
7
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
1: bit chẵn
C5 : stick bit
0: không có stick bit
1: stick bit
C6 : đặt break
0: normal output
1: gửi 1 break
C7 ( DLAB) : bit phân chia truy nhập cho các thanh ghi cùng địa chỉ
d) Thanh ghi trạng thái đờng truyền (3F8+5)
0
S6
S5
S4
S3
S2
S1
S0
S0=1: Khi có 1 byte mới nhận đợc
S1=1: Khi ký tự trớc không đợc đọc ký tự mới đến sẽ xoá ký tự cũ trong bộ
đệm
S2=1: Khi có lỗi chẵn lẻ
S3=1: Khi có lỗi khung truyền
S4=1 : Khi có gián đoạn đờng truyền
S5=1 : Khi bộ truyền rỗng cổng nối tiếp có thể truyền nhận
S6=1: Khi bộ đệm truyền rỗng
S7=0: Không sử dụng
e) Thanh ghi cho phép ngắt ( 3F8+1)
D7
D6
D5
D4
D3
D2
D1
D0
D0=1 : Cho phép ngắt khi nhận 1 ký tự
D1=1 : Cho phép ngắt khi bộ đệm truyền rỗng
D2=1: Cho phép ngắt khi thay đổi trạng thái đờng truyền
D3=1: Cho phép ngắt khi thay đổi trạng thái modem
D4=0
D5=0
D6=0
D7=0
f) Thanh ghi nhận dạng ngắt ( 3F8+2)
D7
D6
0
0
D5
0
D4
0
D2
D1 D0 Mức u tiên
0
1
0
1
1
0
Lp in t 2 k2
D3
D2
D1
D0
0
Nguồn
gây ặt lại ngắt
ngắt
Không kiểm tra ngắt
Cao nhất
Lỗi đờng nhận dữ liệu
ọc thanh ghi
8
Nhúm thc hiờn:DCN105
Trờng ĐH Công Nghiệp Hà Nội
ghép Nối Máy Tính
trạng thái đờng
truyền
ọc thanh ghi
đệm
1
0
0
Thứ 2
Có dữ liệu nhận
0
1
0
Thứ 3
0
0
0
Thứ 4
Thanh ghi đệm truyền
rỗng
Cỏc trng thỏi modem
c thanh ghi
trng
thỏi
modem
g) Thanh ghi chứa số chia tốc độ baud (byte thấp - địa chỉ cơ sở )
thanh ghi này gồm có 8 bit , chứa phần thấp số chia của tốc độ baud . số chia tốc
độ baud tính theo công thức :
số chia tốc độ baud = 1843200/( 16*tốc đọ baud cần thiết lập )
h) Thanh ghi chứa số chia tốc độ baud( byte cao 3F8+1)
i) Thanh ghi đệm đọc viết ( 3F8)
iii. Nối ghép 8051 với RS232
Chuẩn RS232 không tơng thích với mức logic TTL, nên cần bổ sung thêm
một bộ điều khiển đờng truyền, chẳng hạn nh chip MAX232 để chuyển đổi các
mức điện áp RS232 về các mức TTL và ngợc lại. Do vậy nối ghép 8051 với đầu
nối RS232 thông qua chip MAX232.
a. Chân RxD và TxD của 8051
8051 có hai chân đợc dùng chuyên cho truyền và nhận dữ liệu nối tiếp.
Hai chân này là RxD và TxD và là một phần của cổng P3 (đó là P3.0 và P3.1 t ơng ứng). P3.0 là chân số 10 của 8051, còn P3.1 là chân số 11. Các chân này tơng thích với mức logic TTL. Do vậy cần có thêm một bộ điều khiển đờng
truyền để chúng tơng thích với RS232. Bộ điều khiển nh vậy có thể là chip
MAX232.
b. Bộ điều khiển đờng truyền MAX232
Vì RS232 không tơng thích với các bộ vi xử lý và vi điều khiển hiện nay
nên ta cần một bộ điều khiển đờng truyền (bộ chuyển đổi điện áp) để chuyển đổi
các tín hiệu RS232 về các mức điện áp TTL đợc các chân TxD và RxD của 8051
chấp nhận. Một ví dụ của bộ chuyển đổi nh vậy là chip MAX232 của hãng
Maxim. Bộ MAX232 chuyển đổi từ các mức điện áp RS232 về mức TTL và ngợc lại. Một điểm mạnh khác của chip MAX232 đó là dùng điện áp của ân RxD
của đầu nối DB của RS232. Bộ điều khiển đờng R1 cũng có gán R1in và R1out
trên các chân số 13 và 12 tơng ứng. Chân R1in (chân số 13) là ở phía RS232 đ
MAX232 có gán T1in và T1out trên các chân số 11 và 1 tơng ứng. Chân T1in là ở
phía TTL và đợc nối tới chân RxD của bộ vi điều khiển, còn T1out là ở phía
RS232 đợc nối tới chân TxD đầu nối DB của RS232 và chân R1 out (chân số 12) là
ở phía TTL và đợc nối tới chân RxD của bộ vi điều khiển, chân TxD bên phát đợc nối với RxD của bên thu và ngợc lại. MAX232 cần có 4 tụ điện giá trị từ 1
đến 22àF. giá trị thờng dùng là 10àF.
Lp in t 2 k2
9
Nhúm thc hiờn:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
Lớp điện tử 2 k2
10
ghÐp Nèi M¸y TÝnh
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
PhÇn III: Néi dung ®Ò tµi
I. Ch¬ng tr×nh ®iÒu khiÓn b»ng VB
1. Form chÝnh
2.Chương trình vb
Dim chg As String
Dim a, b, c As Integer
Private Sub Command1_Click()
Text3.Text = Format(Now, "hh:nn:ss")
phut giay hien tai trong text3
End Sub
Private Sub Command2_Click()
If IsDate(Text3.Text) Then
data type chua ca ngay lan gio la DATE
Lớp điện tử 2 k2
11
'hien thi gio
'text3="hh:nn:ss"
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Time = Format(Text3.Text, "hh:nn:ss")
'cho phep dat lai
gio he thong trong text3
Else
MsgBox "loi nhap gio.moi ban nhap lai gio!"
'thong bao loi nhap gio
End If
End Sub
Private Sub Command3_Click()
Text4.Text = Format(Now, "dd/mm/yyyy") 'hien thi ngay
thang nam hien tai trong text4
End Sub
Private Sub Command4_Click()
If IsDate(Text4.Text) Then
'text4="dd/mm/yyyy"
Date = Format(Text4.Text, "dd/mm/yyyy") 'cho phep dat lai
ngay he thong trong text4
Else
MsgBox "loi nhap ngay.moi ban map lai ngay!"
'thong bao loi nhap ngay
End If
End Sub
Private Sub Command5_Click() 'lenh thoat
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub
Private Sub Command6_Click() ' hien tho gio phut
Timer1.Enabled = True
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Timer1.Interval = 100
End Sub
Private Sub Command7_Click() 'hien thi phut giay
Timer1.Enabled = False
Timer2.Enabled = True
Timer3.Enabled = False
Timer4.Enabled = False
Timer2.Interval = 100
End Sub
Private Sub Command8_Click() 'hien thi ngay thang
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = True
Timer4.Enabled = False
Lớp điện tử 2 k2
12
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Timer3.Interval = 100
End Sub
Private Sub Command9_Click() 'hien thi thang nam
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = True
Timer4.Interval = 100
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = 1
MSComm1.SThreshold = 1
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Text3.Text = " "
Text4.Text = " "
Text5.Text = " "
End Sub
Private Sub Timer1_Timer()
Text1.Text = Format(Now, "hh:nn:ss")
phut giay hien tai trong text1
Text2.Text = Format(Now, "dd/mm/yyyy")
thang nam hien tai trong text2
Text5.Text = Format(Now, "hh:nn")
thi gio phut
send ("g")
xuong VDK
a = Hour(Now)
tai cho bien a
send (Chr(a Mod 256))
cua gio xuong VDK
send (Chr(a \ 256))
cua gio xuong VDK
b = Minute(Now)
tai cho bien b
send (Chr(b Mod 256))
cua phut xuong VDK
send (Chr(b \ 256))
cua phut xuong VDK
c = Second(Now)
tai cho bien c
send (Chr(c Mod 256))
cua giay xuong VDK
Lớp điện tử 2 k2
13
'mo cong
'gio phut
'hien thi gio
'hien thi ngay
'dinh dang hien
' gui ky tu g
' gan gio hien
' gui byte thap
' gui byte cao
' gan phut hien
' gui byte thap
' gui byte cao
' gan giay hien
' gui byte cao
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
send (Chr(c \ 256))
'
cua giay xuong VDK
d = Day(Now)
'
tai cho bien d
send (Chr(d Mod 256))
'
cua ngay xuong VDK
send (Chr(d \ 256))
'
cua ngay xuong VDK
e = Month(Now)
'
tai cho bien e
send (Chr(e Mod 256))
'
cua thang xuong VDK
send (Chr(e \ 256))
'
cua thang xuong VDK
f = Year(Now)
'
tai cho bien f
send (Chr(((f Mod 1000) Mod 100) Mod 256))
thap cua nam xuong VDK
send (Chr(((f Mod 1000) Mod 100) / 256)) '
cua nam xuong VDK
End Sub
gui byte cao
gan ngay hien
gui byte thap
gui byte cao
gan thang hien
gui byte thap
gui byte cao
gan nam hien
' gui byte
gui byte cao
Private Sub Timer2_Timer() 'phut giay
Text1.Text = Format(Now, "hh:nn:ss")
Text2.Text = Format(Now, "dd/mm/yyyy")
Text5.Text = Format(Now, "nn:ss")
send ("p") ' gui ky tu p xuong VDK
a = Hour(Now)
send (Chr(a Mod 256))
send (Chr(a \ 256))
b = Minute(Now)
send (Chr(b Mod 256))
send (Chr(b \ 256))
c = Second(Now)
send (Chr(c Mod 256))
send (Chr(c \ 256))
d = Day(Now)
send (Chr(d Mod 256))
send (Chr(d \ 256))
e = Month(Now)
send (Chr(e Mod 256))
send (Chr(e \ 256))
f = Year(Now)
send (Chr(((f Mod 1000) Mod 100) Mod 256))
send (Chr(((f Mod 1000) Mod 100) / 256))
End Sub
Private Sub Timer3_Timer() 'ngày tháng
Text1.Text = Format(Now, "hh:nn:ss")
Text2.Text = Format(Now, "dd/mm/yyyy")
Text5.Text = Format(Now, "dd/mm")
send ("t") ' gui ky tu t xuong VDK
Lớp điện tử 2 k2
14
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
a = Hour(Now)
send (Chr(a Mod 256))
send (Chr(a \ 256))
b = Minute(Now)
send (Chr(b Mod 256))
send (Chr(b \ 256))
c = Second(Now)
send (Chr(c Mod 256))
send (Chr(c \ 256))
d = Day(Now)
send (Chr(d Mod 256))
send (Chr(d \ 256))
e = Month(Now)
send (Chr(e Mod 256))
send (Chr(e \ 256))
f = Year(Now)
send (Chr(((f Mod 1000) Mod 100) Mod 256))
send (Chr(((f Mod 1000) Mod 100) / 256))
End Sub
Private Sub Timer4_Timer() 'thang nam
Text1.Text = Format(Now, "hh:nn:ss")
Text2.Text = Format(Now, "dd/mm/yyyy")
Text5.Text = Format(Now, "mm / yy")
send ("n") ' gui ky tu n xuong VDK
a = Hour(Now)
send (Chr(a Mod 256))
send (Chr(a \ 256))
b = Minute(Now)
send (Chr(b Mod 256))
send (Chr(b \ 256))
c = Second(Now)
send (Chr(c Mod 256))
send (Chr(c \ 256))
d = Day(Now)
send (Chr(d Mod 256))
send (Chr(d \ 256))
e = Month(Now)
send (Chr(e Mod 256))
send (Chr(e \ 256))
f = Year(Now)
send (Chr(((f Mod 1000) Mod 100) Mod 256))
send (Chr(((f Mod 1000) Mod 100) / 256))
End Sub
Sub send(buffer As String)
If MSComm1.PortOpen = True Then
MSComm1.Output = buffer
End If
End Sub
II. Ch¬ng tr×nh vi ®iÒu khiÓn
// Chuong trinh hien thi thoi gian thuc tren LCD
Lớp điện tử 2 k2
15
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
// Giao tiep voi may tinh qua cong COM
// lap trinh vi dieu khien ghep noi may tinh hien thi lcd
#include <regx52.h>
#include <stdio.h>
#include<math.h>
#include<string.h>
//Dinh nghia I/O
sbit en_lcd=P2^6;
sbit rw_lcd=P2^5;
sbit rs_lcd=P2^4;
sbit d7=P0^7;
unsigned int gp[13];
//mang giu lieu
unsigned char i,j,
count1,count2,sec1,sec2,h1,h2,m1,m2,ngay1,ngay2,thang1,thang2,nam1,nam2;
char hour,minute,sec,ngay,thang,nam;
void delay(unsigned int number)
{ unsigned char j;
unsigned int i;
for(i=0;i<=number;i++)
{ for(j=0;j<=100;j++)
{}
}
}
/******************* Ham kiem tra LCD ******************/
void lcd_ban(void)
{
long n=0;
P0=0xff;
en_lcd=1;
rs_lcd=0;
rw_lcd=1;
while(d7==1)
{
n++;
if(n>=100)
break;
}
en_lcd=0;
}
/**************** Ham gui mot lenh len LCD*********************/
Lớp điện tử 2 k2
16
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
void write_command(unsigned char command)
{
lcd_ban();
rs_lcd=0;
rw_lcd=0;
P0=command;
// gui lennh command len LCD
en_lcd=1;
delay(1);
en_lcd=0;
// dua xung EN xuong muc thap de chot du lieu
delay(1);
}
/***************** Ham gui du lieu len LCD ****************/
void write_data(unsigned char lcd_data)
{
lcd_ban();
rs_lcd=1;
rw_lcd=0;
P0=lcd_data;
// gui du lieu data len LCD
en_lcd=1;
delay(1);
en_lcd=0;
delay(1);
}
/*************** Ham khoi tao cho LCD*****************/
void khoitao()
{
write_command(0x01);
//xoa man hinh
write_command(0x38);
//che do 2 dong va ma tran 5x7
write_command(0x0c);
// bat con tro,tat hien thi
write_command(0x06);
// dich con tro sang phai
write_command(0x0c); // bat hien thi nhap nhay con tro
}
/*************************** Ham gui mot ki tu len LCD
*****************************/
void write_string(char *s)
{
while(*s)
{
write_data(*s);
// viet tung ki tu len lcd khi chuoi do con
ki tu
s++;
Lớp điện tử 2 k2
17
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
}
}
/************ Ham hien thi cho LCD ***************/
void hienthi(unsigned int n)
{
write_data(48+n);
}
void main(void)
{
SCON = 0x52; // cong noi tiep hoat dong o che do 1
TMOD = 0x21; // timer1 hoat dong o che do 2-8 bit tu nap lai,timer 0
hoat dong che do 1 16 bit
TH1=TL1= -3; // tao toc do duong truyen cho cong noi tiep baud=9600
TR1 = 1;
// de timer 1 bat dau hoat dong
IE = 0x91; // cho phep ngat toan bo va cho phep ngat port noi
tiep,cho phep ngat ngoai 0,
IT0 = 1; //
cho phep ngat suon am
IP = 0x01;// uu tien ngat cong noi tiep
khoitao();
write_command(0x01); // xoa man hinh
delay(20);
write_command(0x80);
write_string("* DONG HO LCD *");
write_command(0xc8);
write_string("/" );
delay(10);
sec=0;
hour=0;
minute=0;
thang=0;
nam=0;
ngay=0;
while(1)
{
for(i=0;i<13;++i)
{ gp[i]=_getkey();
}
if (gp[0]=='p')//phut giay
{
hour=gp[2]*256+gp[1];
minute=gp[4]*256+gp[3];
sec=gp[6]*256+gp[5];
Lớp điện tử 2 k2
18
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
ngay=gp[8]*256+gp[7];
thang=gp[10]*256+gp[9];
nam=gp[12]*256+gp[11];
}
if (gp[0]=='g')// gio phut
{
hour=gp[2]*256+gp[1];
minute=gp[4]*256+gp[3];
sec=gp[6]*256+gp[5];
ngay=gp[8]*256+gp[7];
thang=gp[10]*256+gp[9];
nam=gp[12]*256+gp[11];
}
if (gp[0]=='t')// thang ngay
{
hour=gp[2]*256+gp[1];
minute=gp[4]*256+gp[3];
sec=gp[6]*256+gp[5];
ngay=gp[8]*256+gp[7];
thang=gp[10]*256+gp[9];
nam=gp[12]*256+gp[11];
}
if (gp[0]=='n')// nam thang
{
hour=gp[2]*256+gp[1];
minute=gp[4]*256+gp[3];
sec=gp[6]*256+gp[5];
ngay=gp[8]*256+gp[7];
thang=gp[10]*256+gp[9];
nam=gp[12]*256+gp[11];
}
m1=minute/10;
m2=minute%10;
h1=hour/10;
h2=hour%10;
sec1=sec/10;
sec2=sec%10;
thang1=thang/10;
thang2=thang%10;
ngay1=ngay/10;
ngay2=ngay%10;
nam1=nam/10;
nam2=nam%10;
if(gp[0]=='p')
{
Lớp điện tử 2 k2
19
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
write_command(0x80);
write_string(" H.THI PHUT-GIAY");
write_command(0xc6);
hienthi(m1);
hienthi(m2);
write_command(0xc9);
hienthi(sec1);
hienthi(sec2);
}
if(gp[0]=='g')
{
write_command(0x80);
write_string(" H.THI GIO-PHUT");
write_command(0xc6);
hienthi(h1);
hienthi(h2);
write_command(0xc9);
hienthi(m1);
hienthi(m2);
}
if(gp[0]=='t')
{
write_command(0x80);
write_string("H.THI THANG-NGAY");
write_command(0xc6);
hienthi(thang1);
hienthi(thang2);
write_command(0xc9);
hienthi(ngay1);
hienthi(ngay2);
}
if(gp[0]=='n')
{
write_command(0x80);
write_string("H.THI NAM-THANG");
write_command(0xc6);
hienthi(nam1);
hienthi(nam2);
write_command(0xc9);
hienthi(thang1);
hienthi(thang2);
}
}
}
Lớp điện tử 2 k2
20
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Iii. S¬ Đå Nguyªn Lý
IV. Sơ Đồ Mạch In:
Lớp điện tử 2 k2
21
Nhóm thực hiên:DCN105
Trêng §H C«ng NghiÖp Hµ Néi
Lớp điện tử 2 k2
22
ghÐp Nèi M¸y TÝnh
Nhóm thực hiên:DCN105