TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI Khoa điện tử __o0o__ BÁO CÁO ĐỒ ÁN MÔN GHÉP NỐI MÁY TÍNH Đề tài: Thiết kế mô hình điều khiển đèn giao thông ở ngã tư sử dụng cổng nối tiếp Yêu cầu: Hệ thống có các đèn Xanh, Đỏ, Vàng (mô phỏng bằng các led lớn) điều khiển xe cộ, các đèn xanh, đỏ (mô phỏng bằng các led nhỏ) dành cho người đi bộ trên 2 hướng đi độc lập; có 02 đồng hồ đếm ngược hiển thị thời gian sáng của các đèn Xanh, Đỏ điều khiển xe cộ trên 2 hướng đi độc lập. Hệ thống có thể chạy ở các chế độ khác nhau trong ngày dựa vào đồng hồ thời gian thực trên máy tính: + Chế độ thường: Từ 7h đến 23h: Các đèn sángtắt; các đồng hồ đếm ngược theo quy luật như thực tế. + Chế độ nghỉ: Thời gian còn lại trong ngày: Chỉ có đèn Vàng nhấp nháy. LỜI NÓI ĐẦU Máy tính hiện nay đều có các thiết bị ngoài thông dụng như: màn hình, bàn phím, chuột, máy in… Tuy nhiên máy tính không chỉ dừng lại với thiết bị ngoại vi nói trên mà còn có những yêu cầu cao hơn như kết nối với các máy móc trong công nghiệp. Chính vì vậy nhà sản xuất đã trang bị một số cách thức để có thể ghép nối với bus của máy tính như: RS232, LPT, COM, USB, các khe PCI …Việc nghiên cứu để mở rộng giao tiếp của máy tính với thiết bị ngoại vi đã trở thành môn học chính thức của rất nhiều ngành học trong các giảng đường đại học. Sau một thời gian học tập và nghiên cứu môn học “Đo lường và điều khiển máy tính” dưới sự hướng dẫn của cô giáo. Chúng em đã thử nghiệm và hoàn thành đề tài của của cô giao cho nhóm. Mục đích của đề tài hướng đến: Bước đầu làm quen và thử nghiệm các cách giao tiếp đơn giản giữa máy tính và vi điều khiển thong qua cổng nối tiếp RS232. Hướng đến các phương thức giao tiếp cao hơn được ứng dụng trong thực tế như USB, RS234… Tuy đã rất cố gắng trong việc thực hiện đồ án tuy nhiên do kiến thức hiểu biết còn hạn hẹp nên khó tránh phải những sai sót. Rất mong nhận được những nhận xét quí báu từ cô để chúng em hoàn thiện đồ án một cách tốt nhất. Chúng em xin trân thành cảm ơn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Khoa điện tử o0o
BÁO CÁO ĐỒ ÁN MÔN GHÉP NỐI MÁY TÍNH
Đề tài: Thiết kế mô hình điều khiển đèn giao thông ở ngã tư sử dụng cổng nối tiếp
+ Chế độ nghỉ: Thời gian còn lại trong ngày: Chỉ có đèn Vàng nhấp nháy
Trang 2LỜI NÓI ĐẦU
Máy tính hiện nay đều có các thiết bị ngoài thông dụng như: màn hình, bànphím, chuột, máy in… Tuy nhiên máy tính không chỉ dừng lại với thiết bị ngoại vinói trên mà còn có những yêu cầu cao hơn như kết nối với các máy móc trong côngnghiệp Chính vì vậy nhà sản xuất đã trang bị một số cách thức để có thể ghép nốivới bus của máy tính như: RS232, LPT, COM, USB, các khe PCI …Việc nghiêncứu để mở rộng giao tiếp của máy tính với thiết bị ngoại vi đã trở thành môn họcchính thức của rất nhiều ngành học trong các giảng đường đại học
Sau một thời gian học tập và nghiên cứu môn học “Đo lường và điều khiểnmáy tính” dưới sự hướng dẫn của cô giáo Chúng em đã thử nghiệm và hoàn thành
đề tài của của cô giao cho nhóm
Mục đích của đề tài hướng đến:
- Bước đầu làm quen và thử nghiệm các cách giao tiếp đơn giảngiữa máy tính và vi điều khiển thong qua cổng nối tiếp RS232
- Hướng đến các phương thức giao tiếp cao hơn được ứng dụngtrong thực tế như USB, RS234…
Tuy đã rất cố gắng trong việc thực hiện đồ án tuy nhiên do kiến thức hiểubiết còn hạn hẹp nên khó tránh phải những sai sót Rất mong nhận được nhữngnhận xét quí báu từ cô để chúng em hoàn thiện đồ án một cách tốt nhất
Chúng em xin trân thành cảm ơn!
Giáo viên hướng dẫn: Vũ Thị Thu Hương
Sinh viên thực hiện: Nuyễn Văn Hiền
Nguyễn Văn Hòa Nguyễn Tiến Hiệp Lớp: Điện tử 3 – K3
Trang 3Máy tính Các thi t b ch p h nhế ị ấ à
M ch i u khi nạ đ ề ể
I) CƠ SỞ LÝ THUYẾT
1) Giới thiệu về giao tiếp máy tính
Hình 1: Mô hình giao tiếp giữa máy tính và thiết bị ngoại vi
Máy tính: Phần mềm điều khiển và giám sát được thiết kế trên máy tính có
chức năng gửi các tín hiệu điều khiển qua cổng giao tiếp của máy tính đếnmạch điều khiển, đồng thời nhận các tín hiệu về trạng thái hoạt động của cácthiết bị và hiển thị trên giao diện của phần mềm
Mạch điều khiển: Có nhiệm vụ đọc tín hiệu điều khiển từ máy tính rồi điều
khiển các thiết bị tương ứng, đồng thời gửi các tín hiệu về trạng thái hoạtđộng của các thiết bị lên máy tính
Các thiết bị chấp hành: Hoạt động theo sự điều khiển của các khối trên.
Trang 42) Cổng nối tiếp RS232
RS232 là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kếtnối nhiều nhất là với 2 thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữliệu là 12.7 đến 25.4 m, tốc độ 20kBít/s đôi khi là tốc độ 115 k Bít/s với một sốthiết bị đặc biệt
Sơ đồ chân cổng Com (Cổng đực):
Tín hiệu truyền theo tiêu chuẩn RS - 232 của hãng EIA (Electronics IndustryAssociations)
Chuẩn RS-232 quy định mức logic 1 (mark) ứng với điện áp từ -3V đến-25V, mức logic 0 (space) ứng với điện áp từ 3V đến 25V và có khả năng cung cấpdòng từ 10 mA đến 20 mA Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chậpmạch
Trang 5 Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V).Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượttruyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark : -10V) để khôi phụctrạng thái đường truyền Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Chiều dài cable cực đại 15m
Trang 6Tốc độ truyền dữ liệu được quy định chuẩn gồm các tốc độ: 300, 600, 1200,
2400, 4800, 9600, 19200, 28800, 56600 baud
Các phương thức truyền thông 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 bít đồng bộ khung(Hình 2a)
- Phương thức không đồng bộ: Các byte chứa các bit thông tin được chứa trongmột khung Một khung được bắt đầu bằng 1 bít Start, tiếp theo là các bit mangthông tin, kế tiếp là bít kiểm tra chẵn lẻ và kết thúc là bít Stop Khoảng các giữacác khung là các bít dừng bất kỳ, Khi đó đường truyền được đấy lên mức cao(Hình 2b)
- Phương thức lai: Đây là phương thức kết hợp của 2 phương thức trên, trong đócác bít trong 1 khung được truyền 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 2: Các phương thức truyền tin nối tiếp
Trang 73) Giới thiệu vi mạch giao tiếp MAX 232
Vì tín hiệu của cổng COM thường ở mức ±12V nên không tương thích với mứcđiện áp TTL Muốn giao tiếp KIT Vi điều khiển 8051 với máy tính qua cổng COM tacần một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ở đây ta chọn vi mạchMAX232 để thực hiện việc tương thích điện áp
Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng tronggiao diện nối tiếp với máy tính Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vàothành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15Vthành mức TTL ở phía nhận
Vi mạch MAX 232 có hai bộ chuyển đổi mức từ TTL sang RS232 và hai bộlam chức năng ngược lại
Cụ thể, hai bộ chuyển mức R1IN → R1OUT, R2IN → R2OUT làm chứcnăng chuyển mức từ TTL sang RS232 Còn hai bộ chuyển mức T1IN → T1OUT,T2IN → T2OUT làm chức năng chuyển mức từ TTL sang RS232
Trang 84) Giao tiếp cổng nối tiếp của vi điều khiển AT89S52.
Chúng ta sẽ tìm hiểu các thanh ghi giúp cho vi điều khienr có thể giao tiếp với máy tinh
Thanh ghi điều khiển timer: TCON
TF1: Báo trạng thái tràn cho bộ Timer/Counter1
TR1: Điều khiển cấp xung cho bộ Timer/Counter1
TF0: Báo trạng thái tràn cho bộ Timer/Counter0
TR0: Điều khiển cấp xung cho bộ Timer/Counter0
IE1: Báo trạng thái ngắt ngoài 1
IT1: Cho phép tác động ngắt ngoài 1 bằng cạnh xuống (default IT1 = 0, tác
động ngắt bằng mức thấp)
IE0: Báo trạng thái ngắt ngoài 0
IT0: Cho phép tác động ngắt ngoài 0 bằng cạnh xuống (default IT1 = 0, tác
động ngắt bằng mức thấp)
Thanh ghi chế độ timer: TMOD
Là thanh ghi 8 bit, truy xuất (ghi/đọc) byte
GATE, C/T: Điều khiển trạng thái hoạt động cho Timer/Counter
M1, M0: Chọn chế độ hoạt động cho Timer/Counter
Trang 9T I 6
Thanh ghi điều khiển truyền/nhận nối tiếp: SCON (Serial CONtrol)
SM0: Bit 0 chọn chế độ của port nối tiếp
SM1: Bit 1 chọn chế độ của port nối tiếp
SM2: Bit 2 chọn chế độ của port nối tiếp
REN: Cho phép thu Bít này phải được set để nhận các kí tự
0 0 0 Là thanh ghi dịch 8 bit, tốc độ [OSC]/12
0 1 1 Truyền nhận 8 bit, tốc độ thay đổi được
1 0 2 Truyền nhận 9 bit, tốc độ là [OSC]/32 hoặc [OSC]/64
1 1 3 Truyền nhận 9 bit, tốc độ thay đổi được
Cổng nối tiếp
Trang 10AT89S52 có một cổng (Port) nối tiếp trong chip có thể hoạt động ở nhiều chế độ khác nhau Chức năng chủ yếu của port nối tiếp là thực hiện chuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi từ nối tiếp sang song song với dữ liệu nhập để có thể giao tiếp với máy tính qua cổng nối tiếp hoặc các thiết bịtương ứng.
Port nối tiếp có bốn chế độ hoạt động, trong đó ở chế độ 1 port nối tiếp hoạt động như một bộ UART 8 bit có tốc đọ thay đổi Dữ liệu được truyền nối tiếp trên chân TXD và nhận nối tiếp trên chân RXD Chế độ này cung cấp cho AT89S52 một công cụ giao tiếp với máy tính qua cổng COM
Thao tác trao đổi dữ liệu qua port nối tiếp bao gồm 3 bước chính:
- Khởi tạo cổng nối tiếp
+ Truy xuất SCON để đặt các thông số như chế độ hoạt động, cho phép thu,…+ Thiết lập hoặc xóa bit SMOD của thanh ghi PCON để đặt hệ số chia của tốc
độ baud
+ Truy xuất các thanh ghi của các bộ Timer1 và Timer 2 để đặt cấc tốc độ baudcho cổng nối tiếp (chỉ với chế dộ 1và3)
- Kiểm tra cờ TI (khi truyền) và RI (khi nhận)
- Ghi/đọc byte dữ liệu ở SBUF
5) Phần mềm lập trình Visual Basic 6.0
Visual Basic là ngôn ngữ lập trình hướng đối tượng, mỗi đối tượng lập trìnhnhư nút nhấn, textbox… sẽ có một chương trình riêng bên trong, các đối tượng này
có các thuộc tính và các phương thức riêng để hoạt động
Truyền thông nối tiếp của Visual basic.
RXD TXD
D Thanh ghi dịch CLK
SBUF CLK (chỉ ghi)
Trang 11Việc truyền thông nối tiếp trên Windows được thực hiện thông qua mộtActiveX có sẵn là Microsoft Comm Control ActiveX này được lưu trữ trong fileMSCOMM32.OCX Quá trình này có hai khả năng thực hiện điều khiển trao đổithông tin:
- Điều khiển sự kiện: Truyền thông điều khiển sự kiện là phương pháp tốtnhất trong quá trình điều khiển việc trao đổi thông tin Quá trình điều khiển thựchiện thông qua sự kiện OnComm
- Hỏi vòng: Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiệnthông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào
đó để xác định xem có sự kiện nào xảy ra hay không Thông thường phươngpháp này sử dụng cho các chương trình nhỏ
- ActiveX MsComm được bổ sung vào một Visual Basic Project thông
qua menu Project > Components:
- Biểu tượng của MsComm: và các thuộc tính cơ bản mô tả như sau:
• Settings:
- Xác định các tham số cho cổng nối tiếp
- Cú pháp: MSComm1.Settings = ParamString
- MSComm1: tên đối tượng
- ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"
- BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị
hợp lệ là:
Trang 12N Không kiểm tra
- D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bit trong một khung truyền
- S: số bit stop (1, 1.5, 2)
VD: MSComm1.Settings = "9600,N,8,1" sẽ xác định tốc độ truyền 9600bps, không kiểm tra parity với 1 bit stop và 8 bit dữ liệu
- Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp
Cú pháp: MSComm1.PortOpen = True / False
- Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổngđồng thời xoá nội dung của các bộ đệm truyền, nhận
VD: Mở cổng COM1 với tốc độ truyền 9600bps
MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 1
MSComm1.PortOpen = True
•Các thuộc tính nhận dữ liệu:
- Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm.
Cú pháp: InputString = MSComm1.Input
Trang 13Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào Nếu
InputLen=0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm
VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệu
MSComm1.InputLen = 0
If MSComm1.CommEvent = comEvReceive Then
InputString = MSComm1.Input
End If
• Các thuộc tính xuất dữ liệu:
Bao gồm các thuộc tính Output, chức năng của các thuộc tính này giống
như các thuộc tính nhập.VD: MSComm1.Output=giá trị cần xuất ra
• CommEvent:
Trả lại các sự kiện xảy ra tại cổng nối tiếp như sau:
ComEvReceive 2 Khi có ký tự trong bộ đệm nhận
ComEvCTS 3 Có thay đổi trên CTS (Clear To Send)ComEvDSR 4 Có thay đổi trên DSR (Data Set Ready)ComEvCD 5 Có thay đổi trên CD (Carrier Detect)
II) CHƯƠNG TRÌNH MÔ PHỎNG
1) Giao diện VB
Trang 14Chương trình chạy trên phần mêm VB 6.0 có giao diện để điều khiển hoạt động của mô hình giao thông bằng cách gửi dữ liệu trực tiếp từ máy tính thông quacổng COM xuống vi điều khiển để điều khiển hệ thống đèn.
Nếu vi điều khiển nhận được chữ cái “N” tương ứng với hệ thống sẽ hoạt đông ở chế độ ban ngày “hình ảnh ông mặt trời”
Nếu vi điều khiển nhận được chữ cái “D” tương ứng với hệ thống sẽ hoạt động ở chế độ ban đêm “hình ảnh ông trăng”
Sau đây là toàn bộ Code của chương trình VB:
*************************************************************Option Explicit
Dim bien1, bien2, bien3 As Integer
Private Sub Command1_Click()
Trang 15Date = Format(Text2.Text, "dd/mm/yyyy")
MsgBox ("Ngay cua he thong da duoc thay doi")
Trang 16Private Sub Command7_Click()
bien2 = MsgBox("Ban thuc su muon thoat khoi chuong trinh?",
vbOKCancel + vbQuestion, "Thoat")
.Settings = "9600,N,8,1" ' thiet dat cau hinh cong COM
.CommPort = 1 'su dung cong COM1
.RThreshold = 1
.SThreshold = 0
.InputMode = 0 'comInputModeText 0
.InputLen = 2 'Doc toan bo du lieu trong bo dem nhan
If PortOpen = False Then ' mo cong
Trang 17Private Sub Timer2_Timer()
If (7 < Hour(Now) And Hour(Now) < 23) Then
Trang 19 Mô phỏng Proteus
Sau đây là mạch mô phỏng trên phần mềm mô phỏng Proteus:
Mạch mô phỏng điều khiển đèn giao thông
Trang 21sbit kcp1=P1^7;
unsigned char M[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned long int dv0,c0,c1,dv1;
unsigned long int i,j,dem=0;
unsigned char dem1;
void delay (unsigned long n)
Trang 22x1=0;d2=0;cp2=0;kcp1=0;//led sang v1=1;d1=1;cp1=1;kcp2=1;v2=1;x2=1;//led toi
Trang 24}
if(dem>25 &&dem<= 30) // giai doan {
v1=0;d2=0;cp2=0;kcp1=0;//led sang x1=1;d1=1;cp1=1;kcp2=1;v2=1;x2=1;//led toi
Trang 25} // Giai doan 3 if(dem>30 && dem<=55) {
d1=0;x2=0;cp1=0;kcp2=0;//led sang x1=1;v1=1;kcp1=1;v2=1;d2=1;cp2=1;//led toi c0=(55-dem)/10;
Trang 26d1=0;v2=0;cp1=0;kcp2=0;//led sang x1=1;v1=1;kcp1=1;x2=1;d2=1;cp2=1;//led toic1=(60-dem)/10;
dv1=(60-dem)%10;
Trang 27}else if(luu=='D')
{dem=0;
led4=0;led1=0;led2=0;led3=0;
v1=0;v2=0;//led sangx1=1;d1=1;cp1=1;kcp1=1;x2=1;d2=1;cp2=1;kcp2=1;//led toi
Trang 28led4=0;led1=0;led2=0;led3=0;
v1=1;v2=1;//led sangx1=1;d1=1;cp1=1;kcp1=1;x2=1;d2=1;cp2=1;kcp2=1;//led toidelay(2000);
} }
Trang 29MỤC LỤCLời mở đầu………trang 1I)Cơ sở lý thuyết………trang 31) Giới thiệu về giao tiếp máy tính………trang 32) Cổng nối tiếp RS232……….trang 33) Vi mạch MAX232……….trang 7 4) Giao tiếp cổng nối tiếp với AT89S52………trang 75) Phần mềm VB6.0……… trang 11II) Chương trình mô phỏng………trang 14