Đặt vấn đề Cùng với sự phát triển của khoa học và công nghệ , các thiết bị điện tử đã , đang và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các lĩnh v
Trang 1CHƯƠNG 1 : TỔNG QUAN VỀ NỘI DUNG ĐỀ TÀI 1.1 Đặt vấn đề
Cùng với sự phát triển của khoa học và công nghệ , các thiết bị điện tử đã , đang và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các lĩnh vực khoa học kĩ thuật cũng như đời sống xã hội
Việc gia công, xử lý các tín hiệu điện tử hiện đại đều dựa trên cơ sở nguyên
lý số Vì các thiết bị làm việc trên cơ sở nguyên lý số có ưu điểm hơn hẳn so với các thiết bị làm việc dựa trên cơ sở nguyên lý tương tự , đặc biệt là trong kĩ thuật tính toán
Sự phát triển mạnh mẽ của công nghệ điện tử đã cho ra đời nhiều vi mạch số
cỡ lớn với giá thành rẻ và khả năng lập trình cao đã mang lại những thay đổi lớn trong ngành điện tử Mạch số ở những mức độ khác nhau đang thâm nhập trong các lĩnh vực điện tử thông dụng và chuyên nghiệp một cách nhanh chóng Các trường kĩ thuật là nơi mạch số thâm nhập mạnh mẽ và được học sinh , sinh viên
ưa chuộng do lợi ích và tính khả thi của nó Vì thế sự hiểu biết sâu sắc về kĩ thuật
số là không thể thiếu với sinh viên ngành điện tử hiện nay Nhu cầu hiểu biết kĩ về
kĩ thuật số không chỉ riêng đối với những người theo chuyên ngành điện tử mà còn đối với những cán bộ kĩ thuật khác có sử dụng thiết bị điện tử
1.2 Khảo sát vấn đề
Hiện nay những ứng dụng của phần cứng được sử dụng ngày càng nhiều và phổ biến , đảo qua các con phố chúng ta có thể thấy những bảng quảng cáo có sử dụng đèn led hoặc sử dụng vi xử lý để hiển thị thời gian hay nhiệt độ Chúng trông khá đẹp mắt và tiện lợi Trong đồ dung gia đình cũng có rất nhiều đồ điện tửmang tính năng tự động như : tivi , máy vi tính …
Đề tài chúng em chọn xuất phát từ ý tưởng sử dụng IC DS1307 thời gian thực, cùng với việc mọi người phải biết chính xác ngày , giờ để thu xếp việc làm cho hợp lý Với ý tưởng này chúng em đã kết hợp lý thuyết và thực tế để làm đồ
án “ Thiết kế lịch vạn niên điện tử hiển thị trên LCD”
Trang 21.3 Các vấn đề cần giải quyết của bài toán
Bài toán “Thiết kế lịch vạn niên điện tử hiển thị trên LCD” đặt ra các yêu cầu sau :
- Đảm bảo hiển thị đúng thời gian ngày tháng năm, giờ phút giây
- Có khả năng phát triển và mở rộng vào các ứng dụng khác trong thực tế
- Sử dụng chip thời gian thực DS1307
- Xây dụng chương trình phần mềm điều khiển
- Lập trình cho nút bấm để tăng giảm giờ phút
- Sử dụng cảm biến nhiệt để đo nhiệt độ
1.5 Mục đích đề tài
Sự cần thiết, quan trọng cũng nhưu tính khả thi và lợi ích của mạch số cũng chính là lý do để chúng em chọn và thực hiện đồ án Thiết kế lịch vạn niên điện tử hiển thị trên LCD” nhằm ứng dụng kiến thức dã học vào thực tế
Sử dụng một con IC thời gian thực DS1307 kết hợp với vi điều khiển 89S52 , 89S52 có nhiệm vụ đọc/ghi ( giờ, phút, giây, ngày, tháng, năm… ) từ chip
DS1307 Hiển thị ngày tháng năm, giờ phút giây , nhiệt độ trên LCD
Mục đích của yêu cầu đề tài như sau :
- Mạch hiển thị ngày ,tháng ,năm ,thứ ,giờ ,phút ,giây chính xác trên LCD
- Khi thời gian báo thức trùng với thời gian thực thì loa sẽ phát ra âm thanh
- Mạch có sử dụng đo nhiệt độ hiển thị LCD
Trang 3Chương ll:
GIỚI THIỆU MỘT SỐ IC ĐƯỢC SỬ DỤNG TRONG MẠCH
2.1 Giới thiệu về PIC:
2.1.1 Tổng quan về họ vi điều khiển:
Dòng PIC đầu tiên là PIC1650 được phát triển Microelectronics Division thuộc General_Instrument PIC bắt nguồn từ chữ viết tắc của “Programmable Intelligent Computer” (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc này, PIC 1650 được Pic là một ho vi điều khiển RISC được sản xuất bởi công ty Mirochip Technology dùng để giao tiếp với các thiết bị ngoại vi cho cácmáy chủ 15 bit CP1600, vì vậy, người ta cũng gọi PIC “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, vì vậy PIC 8_bit được phất triển vào
khoảng năm 1975 để hổ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù cụm từ RISC chưa được sử dụngthời bấy giờ, nhưng PIC thật sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động) Năm 1985 General
Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu hũy bỏ hầu hết các dự
án lúc đó quá lỗi thời Tuy nhiên, PIC được bổ xung EPROM để tạo thành một
bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được sản xuất với hàng loạt các module ngoại vi tích hợp sẵn (như USART,PWM,ADC….), với
bộ nhớ chương trình từ 512 Word đến 32k Word
2.1.1.1.Một số đặc tính của Vi điều khiển PIC:
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng nhưng chúng ta có thể điểm qua một vài nét sau:
8/16 bit CPU, xây dựng theo kiến trúc Harward có sữa đổi
Flsah và ROM có thể tùy chọn từ 256 byte đến 256 Kbyte
Các cổng xuất/nhập (I/O) mức logic thường từ 0V đến 5.5V, ứng với logic 0 và 1
8/16 bit timer
Các chuẩn giao tiếp nối tiếp đồng bộ, khung đồng bộ USART
Trang 4 Bộ chuyển đổi ADC Analog_to_digital converters, 10/12 bit.
Bộ so sánh điện áp
Các module Capture/Campare/PWM
LCD
MSSP Peripheral dựng cho các giao tiếp IC2,SPI
Bộ nhớ nội EPROM-có thể ghi/xóa lên tới một triệu lần
Moudle điều khiển động cơ,đọc encoder
Hỗ trợ giao tiếp USB
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IRDA
Một số dòng có tích hợp 7675bộ RF (PIC16f639,và RFPIC)
KEELOQ mã hóa và giải mã
DSP những tính năng xử lý tín hiệu số (dsPIC) đặc điểm thực thi tốc độ cao của RISC CPU của họ vi điều khiển PIC16F87XA
Timer0 : 8_bit định thời/đếm với 8_bit, prescaler
Timer1 : 16_bit định thời/đếm với prescaler, có thể được tăng lên trong suốt chế độ Sleep qua thạch anh/xung clock bên ngoài
Timer2 : 8_bit định thời/đếm với 8_bit, prescaler, postscaler
Hai module Capture, Compare,PWM:
Capture có độ rộng 16 bit, độ phân giải 12,5ns
Compare có độ rộng 16 bit, độ phân giải 200ns
Độ phân giải lớn nhất của PWM là 10bit
Có 13 ngõ I/O có thể điều khiển trực tiếp
Trang 5 Dòng vào và ra lớn:
25mA dòng vào cho mỗi chân
20mA dòng ra cho mõi chân
Module điện áp chuẩn VREF có thể lập trình trên PIC
Có thể lập trình ngõ vào đến từ những ngõ vào của PIC và trên điện áp bêntrong
Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài
2.1.1.4 Các đặc điểm đặc biệt của vi điều khiển Pic:
Có thề ghi/xóa tới 100.000 lần với kiểu bộ nhớ chương trình Enhanced Flash
1000.000 lần ghi/xóa với kiểu bộ nhớ EPROM
EPROM có thể lưu trữ dữ liệu hơn 40 năm
Có thể lập trình lại dưới sự điều khiển của phần mềm
Mạch lập trình nối tiếp qua hai chân
Nguồn đơn 5V cấp cho mạch lập trình nối tiếp
Watchdog Timer (WDT) với bộ dao dộng RC tích hợp sẵn trên Chip cho hoạt động đáng tin cậy
Có thể lập trình màng bảo vệ
Tiết kiệm năng lượng với chế độ Sleep
Có thể lựa chọn bộ dao động
Trang 62.1.2 Giới thiệu về PIC16F8XX và PIC16F877A:
PIC16F8XX lò nhóm PIC trong họ PIC16FXX của họ vi điều khiển 8_bit,tiêu tốn năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối Bao gồm các nhóm sau:
Họ PIC16F8XX có nhiều tính năng đặc biệt làm giảm các thiết bị ngoại
vi, vì vậy kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng lượng thấp Ở dây có bốn sự lựa chọn bộ dao động và chỉ có chân kết nối bộ dao dộng RC nên có giải pháp tiết kiệm cao Chế độ SLEEP tiết kiệm nguồn
và có thể được đánh thức bởi các nguồn reset Và còn nhiều phần khác đó được giới thiệu bên trên sẽ được nói ở các phần kế tiếp
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng,
40 chân, bộ nhớ đủ cho hầu hết các ứng dụng thông thường) Cấu trúc tổng quát của PIC16F877A như sau:
8 K Flash ROM
368 Bytes RAM
256 Bytes EEPROM
5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
2 bộ định thời 8 bits (Timer 0 và Timer 2)
Trang 7 Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệmnăng lượng (SLEEP MODE) với nguồn xung Clock ngoài.
2 bô CCP( Capture / Compare/ PWM)
1 bộ biến đổi AD 10 bits, 8 ngõ vào
2 bộ so sánh tương tự (Compartor)
1 bộ định thời giám sát (WatchDog Timer)
Một cổng song song 8 bits với các tín hiệu điều khiển
Một cổng nối tiếp
15 nguồn ngắt
Có chế độ tiết kiệm năng lượng
Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial
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 đếmdự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
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
CS ở bên ngoài
Các đặc tính Analog:
8 kênh chuyển đổi ADC 10 bit
Hai bộ so sánh
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Cổng 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 đượcchương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Trang 8 Có thể hoạt động với nhiều dạng Oscillator khác nhau.
2.1.2.2 Sơ lược về vi điều khiển PIC 16F877A:
Trang 9 PORT E : 3 chân
PORT C : 8 chân
Mỗi chân của vi điều khiển PIC 16F877A có một chức năng khác nhau Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các thiết bị ngoại vi
2.1.2.3 Cấu trúc phần cứng của PIC 16F877A:
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng General Instrument đặt tên cho con vi điều khiển đầu tiên của họ Hãng
Micrchip tiếp tục phát triển sản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình
Cấu trúc tổng quát của PIC16F877A như sau :
o 8K Flash Rom
o 368 bytes Ram
o 256 bytes EFPROM
o 5 port vào ra với tín hiệu điều khiển độc lập
o 2 bộ định thời Timer0 và Timer2 8 bit
o 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm năng lượng với nguồn xung clock ngoài
o 2 bộ Capture/ Compare/ PWM
o 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
o 2 bộ so sánh tương tự
o 1 bộ định thời giám sát (Watch Dog Timer)
o 1 cổng song song 8 bit với các tín hiệu điều khiển
o 1 cổng nối tiếp
o 15 nguồn ngắt
Trang 10
Hình 2.2 Bộ nhớ chương trình PIC 16F877A
Trang 11Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chương trình PC có dung lượng 13 bit.
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h Khi
có ngắt xảy ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h
Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa chỉ hóa bởi bộ đếm chương trình
2.1.2.4.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
Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank Mỗi bank có dụng lượng 128 byte
Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte đầu tiên thuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại thuộc bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng không được chứa dữ liệu khác trong đây thì 4 bank bộ nhớ dữ liệu của
PIC16F877A được tổ chức theo cách khác
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức năng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đích dùng chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi Vùng
ô nhớ các thanh ghi mục đích dùng chung này chính là nơi người dùng sẽ lưu dữliệu trong quá trình viết chương trình Tất cả các biến dữ liệu nên được khai báochứa trong vùng địa chỉ này
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào
mà thường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các bank để thuận tiện trong việc truy xuất Sở dĩ như vậy là vì, để truy xuất mộtthanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải khai báo đúng bank chứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận tiện hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương trình
Trang 12Hinh 2 3 : Bộ nhớ dữ liệu PIC16F877A
Trang 13Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh Các thanh ghi PORTA, PORTB, PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đến bank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùng chung có địa chỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC,
TRISD, TRISE cũng được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ
đồ trên.Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên cả 4 bank Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệucủa PIC16F877A là : phải khai báo đúng bank chứa thanh ghi đó Nếu thanh ghinào mà 4 bank đều chứa thì không cần phải chuyển bank
2.1.3 Khái quát chức năng các Port trong vi điều khiển PIC 16F877A:
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àntoà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.Vi điều khiển PIC16F877A có 5 cổng xuất nhập,
gồm PORTA, PORTB, PORTC, PORTDvà PORTE.
Trang 142.2 Chip DS1307
Chip DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử dụng, tình bằng giây, phút, giờ…DS1307 là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM DS1307 được đọc và ghi thông qua giao diện nối tiếpI2C (TWI của AVR) nên cấu tạo bên ngoài rất đơn giản DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hình 2.4 :
Hình 2.4 Hai gói cấu tạo chip DS1307.
Các chân của DS1307 được mô tả như sau:
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao
động cho chip
- V BAT: cực dương của một nguồn pin 3V nuôi chip
- GND: chân mass chung cho cả pin 3V và Vcc.
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều
khiển Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì
DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được)
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver),
tần số của xung được tạo có thể được lập trình Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch