Với hệ thống này, mỗi loại sản phẩm sẽ được hiển thị tên và giá của sản phẩm đó trên 1 màn hình LCD nhỏ, và các nội dung đó sẽ được điều khiển trên một máy tính.. Hình 2.5 Sơ đồ bộ nhớ d
Trang 1KHOA XÂY DỰNG VÀ ĐIỆN
ĐỒ ÁN TỐT NGHIỆP
KỸ SƯ NGÀNH CÔNG NGHIỆP
THIẾT KẾ VÀ THI CÔNG
HỆ THỐNG BÁO GIÁ TRÊN NHIỀU LCD
ĐIỀU KHIỂN BẰNG MÁY TÍNH
TP Hồ Chí Minh, tháng 2 năm 2012
Trang 2LỜI MỞ ĐẦU
Kỹ thuật vi điều khiển với tốc độ phát triển nhanh đã và đang mang đến những thay đổi to lớn trong khoa học công nghệ cũng như trong đời sống hàng ngày của chúng ta Ngày nay, các thiết bị máy móc ngày càng trở nên thông minh hơn, các công việc được thực hiện với hiệu quà cao hơn, đó cũng là nhờ vi xủ lý, vi điều khiển
Trong nhịp sống hiện đại hôm nay, quỹ thời gian dành cho gia đình của mọi người chúng ta gần như bị co hẹp lại Việc mua sắm đồ dùng ngày nay trong các siệu thị, hệ thống cửa hàng… đang được mọi người lựa chọn để rút ngắn thời gian và tăng tính tiện lợi Ở đó, các sản phẩm hàng hóa đều đươc niêm yết sẵn giá cả, người tiêu dùng có thể thoải mái lựa chọn theo sở thích và túi tiền của mình
Đối với 1 sinh viên chuyên ngành Điện Điện Tử, vận dụng các kiến thức đã được học khi ngồi trên ghế giảng đường đại học, qua đó góp phần củng cố những kiến thức đó em đã
thực hiện đề tài: “Thiết kế và thi công hệ thống báo giá trên nhiều LCD điều khiển bằng máy tính”
Mặc dù em đã cố gắng rất nhiều để hoàn thành đồ án này, song do giới hạn về thời gian cũng như kiến thức nên chắc chắn nội dung còn nhiều thiếu sót Rất mong sự đóng góp ý kiến của quý thầy cô và các bạn sinh viên để luận văn này được hoàn thiện hơn Xin chân thành cảm ơn
Sinh viên thực hiện Nguyễn Ngọc Ánh
Trang 3Em cũng xin cảm ơn tất cả các thầy cô của trường Đại Học Mở Tp.HCM nói chung, quý thầy cô của khoa Xây Dựng & Điện nói riêng đã tận tình giảng dạy, trang bị cho em những kiến thức bổ ích trong thời gian học đại học
Tôi cũng xin cảm ơn tất cả bạn bè đã động viên, góp ý, giúp đỡ tôi rất nhiều trong quá trình học tập và thực hiện đồ án tốt nghiệp này
Tôi xin cám ơn tất cả
Thành phố Hồ Chí Minh, tháng 02 năm 2012
Trang 4MỤC LỤC
Lời mở đầu
Lời cảm ơn
Mục lục
Chương 1: TỒNG QUAN ĐỀ TÀI
1.1 Giới thiệu đề tài
1.2 Ứng dụng đề tài
1.3 Yêu cầu đề tài
Chương 2: GIỚI THIỆU MỘT SỐ LINH KIỆN SỬ DỤNG TRONG MẠCH 2
2.1 Vi điều khiển PIC16F877A 2
2.1.1 Các dạng sơ đồ chân 2
2.1.2 Sơ đồ khối 3
2.1.3 Chức năng các chân 4
2.1.4 Đặc điểm vi điều khiển 6
2.1.5 Tổ chức bộ nhớ 7
2.1.6 Cổng xuất nhập I/O 11
2.1.7 Ngắt (INTERRUPT) 12
2.2 Màn hình LCD1602 13
2.3 Tìm hiểu về chuẩn RS232 và IC MAX232 14
2.3.1 Tìm hiểu về chuẩn RS232 trên các cổng kết nối (cổng com) của máy vi tính 14
2.3.2 Tìm hiểu về ic max 232 17
2.4 IC ghi dịch 74HC595 18
Chương 3: THIẾT KẾ MẠCH ĐIỆN22 3.1 Trình bày sơ đồ khối 22
3.2 Phân tích sơ đồ khối 22
3.2.1 Khối nguồn 22
3.2.2 Khối giao tiếp 22
3.2.3 Khối điều khiển 22
3.2.4 Khối hiển thị 22
3.3 Sơ đồ nguyên lý 22
3.4 Giới thiệu phần mềm mô phỏng 23
3.4.1 Giới thiệu phần mềm PROTEUS 23
3.4.2 Các ưu điểm 23
Trang 53.4.3 Nhược điểm 23
3.4.4 Quá trình mô phỏng trên Proteus 24
3.5 Tính toán các thông số linh kiện cho từng mạch 27
3.5.1 Các linh kiện trong khối nguồn 27
3.5.2 Các linh kiện trong khối điều khiển 29
3.5.3 Các linh kiện trong khối hiển thị 30
3.5.4 Khối giao tiếp RS232 31
3.6 Thi công mạch 31
Chương 4: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH.33 4.1 Lưu đồ giải thuật 33
4.2 Chương trình cho PIC16F877A 36
Chương 5: THIẾT KẾ GIAO DIỆN VÀ LẬP TRÌNH PHẦN MỀM TRÊN MÁY TÍNH 49
5.1 Thiết kế giao diện 49
5.2 Chương trình điều khiển trên máy tính 56
Chương 6: KẾT LUẬN 59 Phụ lục 1: Bảng mã ASCII
Phụ lục 2: RS232.
Phụ lục 3: Datasheet 74HC595
Trang 6CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu đề tài
Kỹ thuật vi điều khiển với tốc độ phát triển nhanh đã và đang mang đến những thay đổi to lớn trong khoa học công nghệ cũng như trong đời sống hàng ngày của chúng ta Ngày nay, các thiết bị máy móc ngày càng trở nên thông minh hơn, các công việc được thực hiện với hiệu quả cao hơn, đó cũng là nhờ vi xử lý, vi điều khiển
Trong nhịp sống hiện đại hôm nay, quỹ thời gian dành cho gia đình của mọi người chúng ta gần như bị co hẹp lại Việc mua sắm đồ dùng ngày nay trong các siệu thị, hệ thống cửa hàng… đang được mọi người lựa chọn để rút ngắn thời gian và tăng tính tiện lợi
Ở đó, các sản phẩm hàng hóa đều được niêm yết sẵn giá cả, người tiêu dùng có thể thoải mái lựa chọn theo sở thích và túi tiền của mình
Đối với 1 sinh viên chuyên ngành Điện Điện Tử, vận dụng các kiến thức đã được học khi ngồi trên ghế giảng đường đại học, qua đó góp phần củng cố những kiến thức đó
em đã thực hiện đề tài: “Thiết kế và thi công hệ thống báo giá trên LCD điều khiển
bằng máy tính”
Với hệ thống này, mỗi loại sản phẩm sẽ được hiển thị tên và giá của sản phẩm đó trên 1 màn hình LCD nhỏ, và các nội dung đó sẽ được điều khiển trên một máy tính Người tiêu dùng sẽ biết được loại sản phẩm đó là gì và được bán với giá bao nhiêu từ đó sẽ đưa ra quyết định có nên mua nó hay không Còn đối với người bán hàng, họ chỉ cần ngồi trên một máy tính cá nhân mà vẫn có thể thông báo tới khách hàng những thông tin về các loại sản phẩm của mình
1.2 Ứng dụng đề tài
Đề tài “Thiết kế và thi công hệ thống báo giá trên nhiều LCD điều khiển bằng máy tính” này sẽ được sử dụng ở rất nhiều nơi như: hệ thống các siêu thị, các showroom,
các cửa hàng điện thoại, mĩ phẩm, bánh kẹo…
1.3 Yêu cầu đề tài
+ Thiết kế và thi công một module Master gồm mạch điều khiển và giao tiếp với
máy tính qua cổng COM
+ Thiết kế và thi công 5 module Slave hiển thị các thông tin về sản phẩm
+ Lập trình cho vi điều khiển nhận dữ liệu truyền từ máy tính và xuất nội dung
hiển thị lên các LCD
+ Thiết kế giao diện và lập trình phần mềm trên máy tính
Trang 7CHƯƠNG 2: GIỚI THIỆU MỘT SỐ LINH KIỆN SỬ DỤNG
Trang 82.1.2 Sơ đồ khối vi điều khiển PIC16F877A
Hình 2.2 Sơ đồ khối vi điều khiển PIC16F877A
Hình 2.2 là sơ đồ khối của PIC 16F877A, gồm các khối:
Trang 9- Khối bộ nhớ chứa chương trình – Flash Program Memory
- Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM
- Khối bộ nhớ file thanh ghi RAM – RAM file Register
- Khối giải mã lệnh và điều khiển – Instruction Decode Control
- Khối thanh ghi đặc biệt
- Khối ngoại vi timer
- Khối giao tiếp nối tiếp
- Khối chuyển đổi tín hiệu tương tự sang số - ADC
- Khối các port xuất nhập
2.1.3 Chức năng các chân của PIC16F877A
• Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ vào nhận xung clock từ bên ngoài
• Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock
• Chân (1) có 2 chức năng
- : ngõ vào reset tích cực ở mức thấp
Trang 10- Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC
• Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
- RA0,1,2: xuất/ nhập số
- AN 0,1,2: ngõ vào tương tự của kênh thứ 0,1,2
• Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự của kênh thứ 2/ nhõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn cao của bộ AD
• Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tương tự kênh 3/ ngõ vào điện
áp chuẩn (cao) của bộ AD
• Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoài cho Timer 0/ ngõ ra bộ so sánh 1
• Chân RA5/AN4/ / C2OUT(7): xuất nhập số/ ngõ vào tương tự kênh 4/ ngõ vào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2
• Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài
• Chân RB1(34), RB2(35): xuất nhập số
• Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP
• Chân RB4(37), RB5(38): xuất nhập số
• Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP
• Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP
• Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/ ngõ vào xung clock bên ngoài Timer 1
• Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer 1/ ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2
• Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõ ra PWM1
• Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng bộ, ngõ
ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế độ I2C
• Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu I2C
• Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI
• Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng bộ USART
• Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART
• Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song
Trang 11• Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào tương
• Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC
2.1.4 Đặc điểm vi điều khiển PIC16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là
20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O là
5 với 33 pin I/O Có 8 kênh chuyển đổi A/D
¾ Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
- Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
- Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
- Hai bộ Capture/so sánh/điều chế độ rông xung
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD,
WR
¾ Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân
Trang 12- Watchdog Timer với bộ dao động trong
- Chức năng bảo mật mã chương trình
- Chế độ Sleep
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
Bảng 2.3: Tóm tắt đặc điểm của VDK PIC 16F877A
2.1.5 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory)
2.1.5.1 Bộ nhớ chương trình
Trang 13Bộ nhớ chương trình của vi điều khiển
PIC16F877A là bộ nhớ flash, dung lượng bộ
nhớ 8K word (1 word = 14 bit)
Như vậy bộ nhớ chương trình có khả năng
dung lượng 13 bit (PC<12:0>)
Khi vi điều khiển được reset, bộ đếm
chương trình sẽ chỉ đến địa chỉ 0000h (Reset
vector) Khi có ngắt xảy ra, bộ đếm chương
trình sẽ chỉ đến địa chỉ 0004h (Interrupt
vector)
Bộ nhớ chương trình không bao gồm bộ Hình 2.4 Bộ nhớ chương trình PIC16F877A
nhớ stack và không được địa chỉ hóa bởi
bộ đếm chương trình Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau
2.1.5.2 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình
Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:
Trang 14Hình 2.5 Sơ đồ bộ nhớ dữ liệu PIC16F877A
- Thanh ghi chức năng đặc biệt SFR
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển Có thể phân thanh ghi
Trang 15SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ như ADC, PWM, …) Phần này sẽ đề cập đến các thanh ghi liên quan đến các chức năng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta
đề cập đến các khối chức năng đó
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện phép
toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa
các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrput- on-change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức
năng ngoại vi
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt này
được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
Trang 16CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các
ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của
vi điều khiển
- Thanh ghi mục đích chung GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register) Đây là các thanh ghi dữ liệu thông thường, người sử dụng
có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứa các biến
số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình
2.1.6 Cổng xuất nhập I/O
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách
bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,
Trang 17PORTC, PORTD và PORTE Trong đề tài đã dùng PORT B và PORT C để xuất dữ liệu điều khiển và hiển thị cho khối hiển thị và nhận dữ liệu truyền xuống từ máy tính
- PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng là
TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình
Các thanh ghi SFR liên quan đến PORTB bao gồm:
• PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
• TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
• OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0
- PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng là
TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm:
- PORTE : chứa giá trị các chân trong PORTE
- TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP
- ADCON1 : thanh ghi điều khiển khối ADC
Một số ngắt đã dùng trong đề tài:
#INT_GLOBAL : ngắt chung, nghĩa là khi có ngắt xảy ra, hàm theo sau chỉ thị này được thực thi, bạn sẽ không nhận được khai báo thêm chỉ thị ngắt nào khác khi dùng chỉ thị này CCS không sinh bất kì mã lưu nào, hàm ngắt bắt đầu ngay tại vector ngắt
#INT_RDA : data nhận từ RS232 sẵn sàng
Trang 182.2 MÀN HÌNH LCD1602
LCD 1602 là một module hiển thị bằng tinh thể lỏng, với định dạng ký tự ma trận điểm, được sản xuất theo cơng nghệ CMOS năng lượng thấp, cĩ thể hiển thị 16 ký tự trên 1 hàng, và 32 ký tự trên hai hàng, với độ phân giải tới 5x8 điểm/ký tự Cĩ thể giao tiếp với vi điều khiển qua bus 4 bits hoặc 8 bits
- Sơ đồ cấu trúc bên trong của LCD 1602:
Trong LCD 1602, gồm hai module chính là module điều khiển và module hiển thị Module điều khiển thu nhận những tín hiệu điều khiển từ vi điều khiển bên ngồi, lưu trữ
và xử lý và thực hiện kích cho màn hình hiển thị
- Sơ đồ kết nối chân:
Hình 2.6: Sơ đồ kết nối chân
Vị trí
2 VDD Nguồn cung cấp 4.5-5.5 V
3 VEE Nguồn cho LCD Phân áp thúc cho LCD
4 RS Lựa chọn thanh
ghi Đầu vào lựa chọn thanh ghi
5 RW Đọc/viết Đầu vào lựa chọn Đọc/viết
6 E Cho phép Tín hiệu cho phép đọc hay
viết dữ liệu
7 DB0 Bus dữ liệu 0-7 Trong chế độ giao tiếp 8 bit,
được dùng như bus hai chiều Trong chế độ 4 bit, tấc cả
được để hở
8 DB1
9 DB2
10 DB3
11 DB4 Trong chế độ 8 bit, hoạt
động như bus hai chiều
Trong chế độ 4 bit, hoạt
12 DB5
13 DB6
Trang 1914 DB7 động trao đổi dữ liệu.
Bit 7 còn được dùng làm bit
báo LCD bận
15 A Anode của đèn
16 K Cathode của đèn
+ Chân Vcc, Vss và VEE: Vcc được nối với nguồn +5VDC, Vss đươc nối mới mass Cấp nguồn +5VDC và nối đất tương ứng thì VEE được đùng để điều khiển độ tương phản cho LCD
+ Chân chọn thanh ghi RS (Register Select): cĩ hai thanh ghi rất quan trọng trong
LCD, chân RS được dùng để chọn các thanh ghi này như sau: Nếu RS=0 thì thanh ghi lện được chọn cho phép người dùng gửi một lệnh chẳng hạn như xĩa màn hình, đưa con trỏ về đầu dịng…Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD
+ Chân đọc/ ghi (R/W): Cho phép người dùng ghi thơng tin lên LCD khi R/W = 0
hoặc đọc thơng tin từ nĩ khi R/W = 1
+ Chân cho phép E (Enable): được sử dụng bởi LCD để chốt thơng tinh hiện hữu trên
chân dữ liệu của nĩ Khi dữ liệu được cấp đến chân dữ liệu thì 1 xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu Xung này phải rộng tối thiểu là 450ns
+ Chân D0 – D7: đây là 8 chân dữ liệu 8 bits, được dùng để gửi thơng tin lên LCD
hoặc đọc nội dung của các thanh ghi trong LCD Để hiện thị các chữ cái và các con số, chúng ta gửi các mã ASCII cửa các chữ cái từ A đến Z, a đến z và các con số từ 0-9 đến các chân này khi bật RS = 1
Cũng cĩ các mã lệnh mà cĩ thể gửi đến LCD để xĩa màn hình hoặc đưa con trỏ về đầu dịng hoặc nhấp nháy con trỏ Chúng ta cũng sử dụng RS = 0 để kiểm tra bits cờ bận để xem LCD cĩ sẵn sàng nhận thơng tin Cờ bận là D7 và cĩ thể đọc được khi R/W = 1 và RS
= 0 như sau : Nếu R/W = 1, RS = 0 khi D7 = 1( cờ bận 1) thì LCD bận bởi các cơng việc bên trong và sẽ khơng nhận bất kỳ thơng tin nào Khi D7 = 0 thì LCD sẵn sàng nhận thơng tin mới Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất kì dữ liệu nào lên LCD
Trang 202.3 Tìm hiểu về chuẩn RS232 và IC MAX232
2.3.1 Tìm hiểu về chuẩn RS232 trên các cổng kết nối (cổng com) của máy vi tính.
Hình 2.7: Hình dáng của 2 cổng com thông dụng
Hình 2.8: Sơ đồ chân của 2 cổng Com
Các dữ liệu ở dạng bits (bit 0 hay bit 1) cho xuất – ra /nhập – vào trên các cổng com của các máy tính PC đều theo chuẩn rs232 ,chuẩn này qui định như sau:
Mức “0” cho xác lập theo mức áp dương trong khoảng từ +3v đến +25v
Mức “1” cho xác lập theo mức áp âm trong khoảng từ -3v đến -25v
Trang 21Với qui định này (gọi là chuẩn rs 232) , việc bị giảm áp trên đường line do dây kéo quá dài sẽ không còn quan trong nữa ,có thể nói chuẩn rs 232 cho phép truyền bit trên các đường dây rất dài mà không sợ bị sai lầm
Tìm hiểu về cổng com máy vi tính (loại cổng com 9 chân) Trên đó chúng ta có các dạng tín hiệu như sau :
Trong 9 chân của cổng com có 3 chân quan trọng đó là :
Chân 5 (GND) là đường masse,dùng lập mức áp chuẩn 0v cho các tính hiệu của hệ thống
Chân 2 (RXD,RECEIVER DATA) dùng nhận dữ liệu vào máy tính pc, các dữ liệu dạng bit đến từ các thiết bị khác
Chân 3(TXD,TRANSIMITTER DATA) cho phát ra dữ liệu dạng bit từ máy tính pc,truyền dến các thiết bị khác
Các tín hiệu khác có tác dụng “bắt tay ” giữa các thiết bị kết nối đó là:
Chân 1(DCD, DATA CARRIER DETECT ) Dùng dò dữ liệu trên sóng mang , hộp modem sẽ gửi tín hiệu dcd quan chân này về máy tính pc để báo cho pc biết đã phát hiện
dữ liệu trên sóng mang , như vậy cho biết đã có kết nối tốt giữa thiết bị đầu cuối (DTE) và hộp modem DCD là tín hiệu của hộp modem gửi về máy tính pc qua cổng com
Chân 4 (DTR ,DATATERMINAL READY) Tín hiệu này từ thiết bị đầu cuối (hay từ cổng com ) báo cho hộp modem biết là nó đã sẵn sàng để truyền dữ liệu , vậy nếu thiết bị đầu cuối có “trục trặc gì ”, nó sẽ không có tín hiệu dtr gửi đến hộp modem Tín hiệu này tác dụng ở mức áp thấp
Chân 6(DSR,DATA SET READY) Tập dữ liệu đã sẵn sàng , tín hiệu này gửi từ hộp modem về máy tính báo cho biết là nó đã sẵn sàng gửi dữ liệu Nó có tác dụng ở mức áp thấp
Chân 8 (CTS, CLEAR TO SEND ) Để trả lời tín hiệu rts, khi đã sẵn sàng ,hộp modem sẽ gửi tín hiệu cts về máy tính pc,báo cho biết nó đã sẵn sàng nhân dữ liệu đến, khi
nó đến máy tính và máy tính sẽ cho gửi dữ liệu sau khi nhận được tín hiệu này
Chân 9(RI,RING INDICATOR) Tín hiệu cho biết hiện đang có tín hiệu báo chuông trên đường line
Chúng ta thấy rằng , tín hiệu dạng bit (bit 0 hay bit 1) xuất hiện trển cổng com sẽ theo chuẩn rs 232, trong khi đó tín hiệu dạng bit ở cac thiết bị khác (như ở pic 16f877a) thường làm việc theo chuẩn ttl , qui định chuẩn ttl như sao:
Mức “0” cho xác lập theo mức áp thấp ,0v (hay dưới 2v)
Mức “1” cho xác lập theo mức áp cao ,5v (hay trên 2v)
Trang 22Điều này cho thấy sự khác biệt rất lớn giữa qui định chuẩn rs232 và chuẩn TTL Do vậy trong kết nối để truyền dữ liệu dạng bit giữa máy tính pc và các thiết bị khác người ta phải dùng đến ic biến đổi mức chuẩn của tín hiệu ic thường dùng là max 232
2.3.2 Tìm hiểu về ic max 232
Hình 2.9: Cấu trúc bên trong của mã 232
Xác lập lại mức áp để định trạng thái bit 0 và bit 1 cho tương thích với các loại thiết
bị
Đảo pha các tín hiệu cho đứng theo qui định với máy tính pc và đúng với qui định của chuẩn TTL
Max 232 có cấu trúc bên trong như hình vẽ :
Trong max232 có mạch điện chức năng sau sau:
Mạch nghịch lưu dùng tự nâng áp, mức áp nguồn nuôi +5v đưa vào chân 16,với mạch nghịch lưu dùng các tụ điện 10uf trên chân 1, 3 và trên chân 2 nó cho nâng mức +5v lên mức áp +10v chúng ta có thể đo mức áp +10v trên chân số 2
Mạch đảo cực nguồn nuôi Người ta dùng mạch đảo cực với các tụ 10uF trên chân
4, 5 và trên chân 6 Nó tạo ra đường nguồn âm -10v Chúng ta có thể đo mức áp này trên chân số 6
Trong max 232 có 2 tầng truyền khuếch đại đảo pha dùng cho đường RXD(đường thu nhận tín hiệu vào máy tính pc) Tín hiệu chuẩn TTL vào trên chân 10 hoặc 11, sau khi cho khuếch đại đảo pha, ở ngả ra nó sẽ tương thích với chuẩn rs 232 , tín hiệu này cho ra trên chân 7 hoặc 14 để vào máy tính pc qua cổng com
Trang 23Trong max 232 có 2 tầng khuếch đại đảo pha dùng cho đường TXD(đường cho phát tín hiệu ra từ các máy tính pc) Tín hiệu này có chuẩn rs 232 sẽ cho vào trên chân 8 hoặc 13 , sau khi cho khuếch đại đảo pha,ở ngả ra nó sẽ tương thích với chuẩn TTL, tín hiệu này cho ra trên chân 9 hoặc 12 để vào các thiết bị khác
Về đường đi của tín hiệu:
Tín hiệu ra (TXD) từ thiết bị ngoài (theo chuẩn TTL) sẽ cho vào chân 11, sau khi được khuếch đại đảo pha cho ra trên chân 14, tín hiệu này sẽ cho vào chân số 2 của cổng com , ở đây nó là tín hiệu RXD
Tín hiệu ra (TXD) từ chân số 3 của cổng com , cho vào chân 13 , sau khi được khuếch đại đảo pha , nó ra trên chân 12 và sẽ cho vào các thiết bị bên ngoài ,ở đây nó là tín hiệu rxd
2.4 IC ghi dịch 74HC595
Đề tài sử dụng PIC để điều khiển hiển thị lên 5 màn hình LCD Vi điều khiển sẽ dùng 3 chân để điều khiển hiển thị và 8 chân để truyền dữ liệu cho LCD Như vậy với 5 màn hình LCD sẽ không đủ số chân của vi điều khiển
Vì thế nên trong đề tài này, em sử dụng IC ghi dịch 74HC595 để truyền dữ liệu từ vi điều khiển xuống LCD Như vậy, chúng ta chỉ cần dùng 6 chân của vi điều khiển để điều khiển, và khi đó chúng ta có thể mở rộng thêm ra nhiều LCD mà vẫn chỉ dùng 6 chân của Vi điều khiển
Trang 24Về nguyên tắt hoạt động cũng đơn giản, đại khái là như thế này: bạn cho 1 bit vào SERIAL
DATA INPUT và tác động vào chân SHIFT CLOCK, bit dữ liệu (1) sẽ được đặt sẳn ở ngỏ
ra QA của 74595, tiếp tục đưa vào bit (2) và tác động vào SHIFT CLOCK thì bit dữ liệu (1) sẽ được đặt sẳn ở ngỏ ra QB, bit dữ liệu (2) sẽ được đặt sẳn ở ngỏ ra QA, tương tự đến bit cuối cùng Các bạn chú ý là dữ liệu chỉ đc chuẩn bị sẳn ở các ngỏ ra và chỉ được xuất ra khi ta tác động vào chân LATCH CLOCK Chúng ta có thể xuất dữ liệu bất cứ lúc nào không phải cần chuẩn bị đến bit cuối cùng!
Trang 27CHƯƠNG 3: THIẾT KẾ MẠCH ĐIỆN
3.1 Trình bày sơ đồ khối
3.2 Phân tích sơ đồ khối
3.2.1 Khối nguồn
- Vì hầu hết các linh kiện trong đề tài như PIC16f877A, LCD1602,74HC595,
MAX232… đều hoạt động với điện áp nguồn 5VDC nên khối nguồn có nhiệm vụ cung cấp điện áp Vcc = 5V ổn định cho các khối giao tiếp, khối điều khiển và khối hiện thị LCD
3.2.2 Khối giao tiếp
- Là khối giao tiếp giữa máy tính và vi điều khiển
- Khối giao tiếp có nhiệm vụ nhận dữ liệu từ máy tính truyền xuống và truyền cho PIC16F877A trong khối điều khiển
3.2.3 Khối điều khiển
- Là bộ não trung tâm của toàn bộ hệ thống
- Khối điều khiển có nhiệm vụ:
+ Nhận giữ liệu từ khối giao tiếp
+ Phân tích và sử lý các dữ liệu đã nhận
+ Điều khiển hoạt động và hiển thị của khối hiển thị
3.2.4 Khối hiển thị
- Khối hiển thị sẽ nhận dữ liệu và các lệnh điều khiển từ khối điều khiển gửi qua
- Giải mã dữ liệu và hiển thị lên LCD
3.3 Sơ đồ nguyên lý
KHỐI NGUỒN
KHỐI GIAO
TIẾP RS232
KHỐI ĐIỀU KHIỂN
KHỐI HIỂN THỊ LCD
Trang 283.4 Giới thiệu phần mô phỏng
3.4.1 Giới thiệu phần mềm PROTEUS
Proteus VSM ( Virtual Simulation Microprocessor) là chương trình tạo và chạy
các mạch điện, các mạch có vi xử lý và mô phỏng quá trình làm việc của mạch nguyên lý, giúp cho người học điện tử có thể hình dung trực quan hơn vào thực tế các linh kiện điện
tử
Phần mềm Proteus VSM được thiết kế bởi công ty Labcenter Electronics Proteus
cung cấp cho người dùng hầu như toàn bộ các linh kiện điện tử để người dùng có thể tạo ra được các mạch nguyên lý và sau cùng là chạy thử, so sánh kết quả với thực tế Proteus được sử dụng rộng rãi trong giảng dạy, trong phòng thí nghiệm điện tử cũng như trong thực hành vi xử lý…
3.4.2 Các ưu điểm của phần mềm
- Dễ dàng tạo ra một sơ đồ nguyên lý đơn giản từ các mạch điện tử đơn giản, đến các mạch có bộ lập trình vi xử lý
- Dễ dàng chỉnh sửa các đặc tính của linh kiện trên sơ đồ nguyên lý: chỉnh sửa tên, trị số các linh kiện như điện trở, tụ điện…, thay đổi tần số hoạt động cơ bản của vi xử lý…
- Công cụ hỗ trợ kiểm tra lỗi thiết kế trên sơ đồ nguyên lý Xem và lưu lại phần báo lỗi
- Chạy mô phỏng và phân tích các tính chất của mạch điện tử cơ bản Công cụ hỗ trợ cho việc chạy và mô phỏng rất mạnh và chính xác Các công cụ hỗ trợ cho việc phân tích tần số, dạng sóng và âm thanh…không những thế, phần mềm còn có thêm các máy phân tích từ đơn giản như đồng hồ đo Volt, Ampe, đến các máy đo giao động , máy tạo sóng dao động…
- Có thể mô phỏng công cụ phát và thu tín hiệu từ các mạch giao tiếp máy tính qua RS232 Trong đó người sử dụng có thể điều khiển có thể điều khiển được quá trình phát, tốc độ Baud…giúp người lập trình có thể mô phỏng các mạch truyền phát tín hiệu
- Proteus có 1 thư viện khá lớn với hơn 6000 linh kiện các loại và ngày càng được
Trang 293.4.4 Quá trình mô phỏng trên Proteus
Khởi động chương trình:
Vào thư viện của Proteus lấy các linh kiện cần thiết
Trang 30Thực hiện vẽ mạch:
Trang 31Thực hiện mô phỏng:
Trang 323.5 Tính toán thông số linh kiện trong từng mạch
3.5.1 Các linh kiện trong khối nguồn
3.5.1.1 IC ổn áp 7805
IC7805 được dùng trong mạch nguồn
- IC7805 có 3 chân cho ta kết nối với nó: Chân 1 là chân nguồn đầu vào, chân 2 là chân GND, chân 3 là chân lấy điện áp ra
- IC78058 có các đặc tính sau:
+ Dòng cực đại có thể duy trì 1A
+ Dòng đỉnh 2.2A
+ Công suất tiêu tán cực đại nếu không dùng tản nhiệt: 2W
+ Công suất tiêu tán nếu dùng tản nhiệt đủ lớn: 15W
+ Điện áp ngõ ra nằm trong khoảng 4,8 – 5,2 V
+ Độ trôi nhiệt của 7805 xấp xỉ 1mv/1oC Nó có hệ số trôi nhiệt âm nên khi nhiệt
độ tăng thì điện áp ngõ ra sẽ giảm Ví dụ: nếu ở 25 oC điện áp ngõ ra là 4,98V thì có thể tại 65 oC ta đo được áp ngõ ra khoảng 4,94 oC
+ IC7805 có bảo vệ chập tải, nên nếu ta lỡ làm chập thì chưa hẳn 7805 đã hỏng
- Vì IC7805 có độ chênh lệch giữa điện áp ngõ vào Vi và điện áp ngõ ra Vo tối thiểu
là 2V nên ta chọn ngõ vào là điện áp DC có trị hiệu dụng 12V
Trang 333.5.1.2 Thành phần lọc nguồn và lọc nhiễu
- Như chúng ta đã biết thì các tụ C2, C4 là các tụ hóa có tác dụng để lọc điện áp Vì đây là điện áp 1 chiều nhưng chưa phẳng vẫn còn các gợn nhấp nhô nên các tụ này có tác dụng lọc nguồn cho thành điện áp một chiều phẳng Tụ C2 là tụ lọc nguồn đầu vào 7805,
tụ này phải có điện dung đủ lớn (100uF) để lọc phẳng điện áp đầu vào và điện áp chịu đựng của tụ phải lớn hơn điện áp đầu vào (12V) Tụ C4 là tụ lọc nguồn đầu ra cho 7805
Tụ này cũng là tụ hóa dùng để lọc nguồn đầu ra cho phẳng
- Trong thành phần 1 chiều còn có các sóng hài bậc 2, 3,…sóng nhấp nhô có tần số cao, nhiễu bên ngoài Các sóng này ảnh hưởng đến hoạt động của 7805 Nếu trong mạch tồn tại những thành phần này sẽ làm sai sót khó phát hiện trong mạch làm cho mạch hoạt động không ổn định Hai tụ lọc nhiễu tần số cao C1 và C3 (104) phải là tụ không phân cực,
tụ Ceramic Hai tụ này lọc các thành phần sóng hài bậc cao cho đầu vào và đầu ra đảm bảo cho mạch hoạt động bình thường
Các tụ sử dụng trong mạch
- Đèn Led D1 có nhiệm vụ báo khi đã có nguồn LED được mắc nối tiếp với điện trở
330 để hạn dòng
Trang 343.5.2 Các linh kiện trong khối điều khiển
- Việc kết nối chân RESET để đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển
được cấp điện, hoặc đang hoạt động mà hệ thống báo lỗi cần tác động cho Vi điều khiển hoạt động trở lại, hoặc do người dùng muốn quay về trạng thái hoạt động ban đầu Vì vậy MCLR ở mức thấp, vi điều khiển sẽ được reset Tín hiệu RESET được cấp bởi mạch ngoại
vi với các yêu cầu cụ thể sau:
MCLR trực tiếp lên nguồn Vcc
+ R1 phải nhỏ hơn 40k để đảm bảo các đặc tính điện của vi điều khiển Ở đây chúng ta chọn R1 = 4,7k
MCLR
- Để PIC16F877A hoạt động được cần phải cung cấp một nguồn xung clock, nguồn này có thể từ bên ngoài hoặc trong bản thân vi điều khiển đã có sẵn (gọi là dao động nội) Nguồn xung clock có thể là một mạch dao động RC hay thường dùng hơn là một dao động thạch anh…Yêu cầu của nguồn xung clock phải càng ổn định càng tốt, vì vậy em chon mạch dao động dùng thạch anh 4MHz
Để thực thi xong 1 lệnh, vi điều khiển cần đến 4 chu kì xung clock Vậy thời gian thực thi một lệnh của vi điều khiển là :
Ti = 4/(4x106) = 1us
2 tụ 33p được đùng để ổn định dao động
- Ở đây em dùng port B đề xuất dữ liệu qua khối hiển thị
+ 3 chân 33 (SER), 34 (SCK) và 35 (RCK) được nối với IC 74595 để truyền dữ liệu
Trang 353.5.3 Các linh kiện trong khối hiển thị
Khối hiển thị gồm 5 module Các chân 12 (RCK) và 11 (SCK) của IC 74HC595 trên 5 module được nối chung với nhau và nối với 2 chân RCK và SCK của PIC Chân 14 (SER) của module 1 sẽ nối với chân SER của PIC, Còn các chân 14 của các module còn lại sẽ được nối với chân thứ 9 của IC 74HC595 trên module trước
- Qui trình để vi điều khiển xuất dữ liệu 1 byte ra 8 chân của IC 595 như sau: + Vi điều khiển gửi bit đầu tiên trong byte dữ liệu đến chân SER
+ Vi điều khiển tạo 1 xung dương lên chân SCK, khi nhân được xung này, IC
sẽ nạp bít đã nhận vào thanh ghi dịch
+ Vi điều khiển lại gửi bit thứ 2 của dữ liệu đến chân SER,sau đó lại tạo 1 xung dương lên chân SCK, IC lại nạp bit thứ 2 này vào thanh ghi.Cứ tiếp tục như thế cho đến khi hết 1 byte
+ Khi truyền hết 8 bits vào thanh ghi của con IC thứ 1, thanh ghi này sẽ đầy, ta tiếp tục truyền bit thứ 9 vào thì bit thứ 1 sẽ truyền ra chân Q7’ đến chân SER của IC thứ 2 nạp vào thanh ghi dịch của con IC này Cứ như vậy, khi nạp đầy thanh ghi dịch, nếu ta tiếp tục truyền dữ liệu, nó sẽ ra chân Q7’ của IC thứ 3, 4, 5
+ Vi điều khiển tạo 1 xung dương lên chân RCK, IC sẽ xuất dữ liệu này ra 8 chân Q
- Biến trở 10k được nối với chân VEE để điều chỉnh độ tương phản cho LCD
Trang 36- Hai chân 15 (A) và 16 (K) được dùng để cấp nguồn cho đèn nền của LCD Điện trở 330 Ohm được dùng để hạn dòng cho đèn nền
3.5.4 Khối giao tiếp RS232
Khối giao tiếp máy tính gồm Max232 chuyển mức tín hiệu RS232 với mức điện áp logic 0 (+3V đến +15V) sang TTL 0V, và mức logic 1(-15V đến -3V) thành 5V Nhờ khối này mà ta có thể truyền dữ liệu từ máy tính xuống cho khối điều khiển để xuất ra khối hiển thị
Giá trị các tụ trên sơ đồ mạch là 10u được chọn theo datasheet của nhà sản xuất
3.6 Thi công mạch:
Sơ đồ mạch in Module Master
Trang 37Sơ đồ mạch in Module Slave
Module Master
Trang 38Module Slave
Trang 39CHƯƠNG 4: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH
4.1 Lưu đồ giải thuật
Kiểm tra stop bit Kytutam= “#”;
Thoát ngắt
Khởi tạo LCD
Chọn dòng LCD Xuất dữ liệu Stop
Trang 40Lưu đồ chương trình ngắt
Lưu đồ khởi tạo LCD
Khởi tạo
DBx = data Kiểm tra cờ bận BF
thoatngat Phantuhh=0;
Mang++; lcd1[phantuhh]=kytutam; phantuhh++;