ĐỒ ÁN TỐT NGHIỆP ĐIỆN tử cải tiến LỊCH VẠN NIÊN
NỘI DUNG ĐỒ ÁN
Lời nói đầu
Ngày nay, khoa học công nghệ đạt được một trình độ phát triển rất nhanh và mạnh mẽ, cùng với sự phát triển của các nghành kĩ thuật nói chung và công nghệ điện tử nói riêng. Những thành tựu đạt được cũng như các ứng dụng của công nghệ kĩ thuật điện tử ngày càng được sử dụng nhiều trong cuộc sống hàng ngày của con người và trong các nghành công nghiệp khác. Đặc biệt hiện nay trong lĩnh vực vi xử lý, những ứng dụng của nó đã mang lại hiệu quả rất thiết thực trong cuộc sống như: quang báo điện tử, lịch vạn niên, điều khiển tốc độ động cơ, hệ thống đếm sản phẩm….
Nắm dược tầm quan trọng đó, chúng em đã quyết định chọn đề tài “ LỊCH VẠN NIÊN ’’ để làm đồ án tốt nghiệp của mình. Để qua đó thể hiện được một phần mô hình ứng dụng trong cuộc sống, trong gia đình…
Bằng những kiến thức đã đạt được trong quá trình học tập tại nhà trường và những tìm hiểu nghiên cứu bên ngoài cùng với những nổ lực của bản thân, mỗi sinh viên trong nhóm của chúng em sẽ được đánh giá qua đợt bảo vệ đồ án này. So với thời gian học tập tại trường thì đó là thành quả của quá trình học tập cùng với những thành công ban đầu trước khi tốt nghiệp ra trường.
Nhóm chúng em đã cố gắng nổ lực hết mình trong suốt thời gian thực hiện đề tài này nhưng với lượng kiến thức và thời gian cho phép nên đồ án còn nhiều thiếu sót. Nhóm chúng em mong nhận được nhiều sự nhận xét và ý kiến đóng góp của quý thầy cô và các bạn về đề tài này cũng như hướng mở rộng, phát triển đề tài để hoàn thiện hơn. Nhóm chúng em xin chân thành cám ơn.
Mục Lục
Nhận xét của giáo viên hướng dẫn............................................................... Trang 1
Nhận xét của giáo viên phản biện............................................................................. 2
Lời cảm ơn..................................................................................................................... 3
Lời nói đầu..................................................................................................................... 4
Mục lục........................................................................................................................... 5
Chương dẫn nhập:........................................................................................................ 7
1.1.Đặt vấn đề....................................................................................................... 7
1.2.Các yêu cầu đạt được và hạn chế của đề tài............................................... 7
1.3.Mục đích nghiên cứu..................................................................................... 8
1.4.Đối tượng nghiên cứu, ứng dụng và hướng phát triển đề tài.................... 8
Chương 2: Giới thiệu một số IC được sử dụng trong mạch..................................... 9
2.1.Giới thiệu về Pic............................................................................................. 9
2.1.1.Tổng quan về họ vi điều khiển........................................................... 9
2.1.1.1.Một số đặc tính của vi điều khiển Pic......................................... 9
2.1.1.2.Những đặc tính ngoại vi.............................................................. 10
2.1.1.3.Đặc điểm về tương tự................................................................... 11
2.1.1.4.Các đặc điểm đặc biệt của vi điều khiển Pic............................ 11
2.1.1.5.Công nghệ CMOS......................................................................... 12
2.1.2.Giới thiệu về Pic16f8xx và Pic16f877A......................................... 12
2.1.2.1.Các đặc tính ngoại vi bao gồm................................................... 13
2.1.2.2.Sơ lược về vi điều khiển Pic16f877A........................................ 14
2.1.2.3.Cấu trúc phần cứng của Pic16f877A......................................... 18
2.1.2.4.Một số chế độ đặc biệt của vi điều khiển Pic16f877A........... 19
2.1.2.4.1.Dao động................................................................................. 19
2.1.2.4.2.Reset......................................................................................... 21
2.1.2.4.3.MCLR....................................................................................... 21
2.1.2.4.4.Interrups.................................................................................. 22
2.1.2.5.Tổ chức bộ nhớ............................................................................. 23
2.1.2.5.1.Bộ nhớ chương trinh.............................................................. 23
2.1.2.5.2.Bộ nhớ dữ liệu........................................................................ 24
2.1.2.6.Các thanh ghi chức năng đặc biệt.............................................. 31
2.1.2.6.1.Thanh ghi trạng thái(Status Register).................................. 31
2.1.2.6.2.Thanh ghi tùy chọn(Option Register)................................. 32
2.1.2.7.Khái quát chức năng các Port trong vi điều khiển Pic............ 33
2.1.2.7.1.PortA và thanh ghi TrisA...................................................... 34
2.1.2.7.2.PortB và thanh ghi TrisB....................................................... 36
2.1.2.7.3.PortC và thanh ghi TrisC....................................................... 38
2.1.2.7.4.PortD và thanh ghi TrisD...................................................... 39
2.1.2.7.5.PortE và thanh ghi TrisE....................................................... 40
2.1.2.8.Bộ định thời của Pic16f877A..................................................... 41
2.1.2.8.1.Bộ định thời Timer0............................................................... 41
2.1.2.8.2.Bộ định thời Timer1............................................................... 43
2.1.2.8.3.Bộ định thời Timer2............................................................... 45
2.1.2.9.Chế độ diều chế xung PWM....................................................... 46
2.1.2.10.Module ADC............................................................................... 48
2.1.2.10.1.Giới thiệu Module ADC 10 bit........................................... 48
2.1.2.10.2.Các thanh ghi điều khiển.................................................... 48
2.1.2.10.3. Lựa chọn xung Clock cho biến đổi ADC......................... 51
2.2.Giới thiệu IC họ TTL................................................................................... 52
2.2.1.Đặc tính điện.................................................................................... 52
2.2.2.Cách đánh giá IC.............................................................................. 54
2.2.2.1.Nguồn nuôi và công suất tiêu tán............................................ 54
2.2.2.2.Tính chống nhiễu....................................................................... 54
2.2.3.IC giải mã 3 đường sang 8 đường 74LS138.................................. 56
2.2.4.IC chốt Led 7 đoạn 74LS373......................................................... 60
2.3.Chip DS1307................................................................................................ 61
2.4.Diode Xung................................................................................................... 66
2.5.IC số 74LS540.............................................................................................. 66
2.6.Sensor nhiệt LM35...................................................................................... 68
2.6.1.Hình dạng.......................................................................................... 68
2.6.2.Sơ đồ chân........................................................................................ 68
2.6.3.Đặc tính cơ bản................................................................................ 69
2.7.Led 7 đoạn.................................................................................................... 69
2.7.1.Hình dạng.......................................................................................... 69
2.7.2.Sơ đồ chân........................................................................................ 70
2.7.3.Phân loại Led 7 đoạn....................................................................... 70
2.8.LM2576......................................................................................................... 70
Chương 3:Sơ đồ nguyên lý các khối trong mạch................................................... 72
3.1.Sơ đồ nguyên lý mạch Pic16f877A và DS1307...................................... 72
3.1.1.Lưu đồ giải thuật “ Lịch Vạn Niên”.............................................. 73
3.1.2.Lưu đồ giải thuật so sánh................................................................ 74
3.2.Sơ đồ mạch bàn phím.................................................................................. 75
3.3.Sơ đồ mạch nguồn........................................................................................ 77
3.4.Sơ đồ khối IC giải mã.................................................................................. 78
3.5.Sơ đồ khối hiển thị....................................................................................... 79
3.6.Thi công và test mạch.................................................................................. 80
Chương 4:Tổng quan về ngôn ngữ lập trình CCS.................................................. 83
Code chương trình “ Lịch Vạn Niên”..................................................................... 83
Chương Tổng Kết:................................................................................................... 112
Tài liệu và các trang Web tham khảo:................................................................ 113
CHƯƠNG DẪN NHẬP
1.1. Đặt vấn đề:
Với những thành tựu về khoa học kỹ thuật cũng như nhu cầu của con người ngày càng cao. Vì vậy đòi hỏi nhiều ứng dụng của khoa học kỹ thuật vào các ngành công nghệp nói chung và kỹ thuật điện tử nói riêng được ứng dụng vào cuộc sống. Nó giúp cho ngành điện tử ngày càng phát triển, đồng thời giúp cho cuộc sống của con người ngày càng nâng cao hơn.
Một trong các ứng dụng được sử dụng rộng rãi trong cuộc sống hàng ngày, trong các thiết bị trong gia đình.
Trong giai đoạn hiện nay, với sự phát triển vượt bậc của công nghệ chế tạo, hàng loạt các loại IC mới ra đời và phát triển. Những loại IC này xử lý nhanh hơn rất nhiều so với các IC trước và đặc biệt chúng ta có thể ghi/xóa dữ liệu 1 cách dễ dàng.Vì thế, nó được sử dụng nhiều trong các thiết bị điện-điên tử.
Với sự ra đời của các dòng IC mới làm thúc đẩy sự phát triển của những IC thời gian thực như: DS1307, DS12887…Bên cạnh sự phát triển của khoa học kĩ thuật đã góp phần nâng cao đời sống con người.Cũng chính vì thế mà mọi người cần phải biết chính xác ngày, giờ để thu xếp việc làm, học tập cho hợp lý.
Xuất phát từ thật tiễn nhóm chúng em đã quyết định chọn đề tài “ Lịch Vạn Niên” nhằm đáp ứng nhu cầu ham muốn học hỏi của bản thân, cũng như góp phần nâng cao giá trị của những mạch điện tử ứng dụng trong cuộc sống.
1.2. Các yêu cầu cần đạt được và hạn chế của đề tài:
Các yêu cầu đạt được:
- Hiển thị nhiệt độ, thứ ( trong tuần ),giờ, phút, ngày, tháng, năm ( dương lịch ).
- Cài đặt được thời gian, cập nhật thời gian thực thông qua DS1307
- Cài đặt nhiệt độ và hẹn giờ
Hạn chế của đề tài:
- Chưa hiển thị được ngày, tháng, năm ( âm lịch )
1.3. Mục đích nghiên cứu:
Trong quá trình nghiên cứu và thực hiện đề tài này giúp cho người thực hiện:
- Tăng khả năng tự học, tự nghiên cứu và giải quyết vấn đề.
- Tiếp xúc trực tiếp với thực tế, nâng cao kinh nghiệm nghề nghiệp chuyên ngành.
- Phải nắm vững và vận dụng những kiến thức chuyên ngành, tìm hiểu nghiên cứu tài liệu qua sách vở, giáo trình nước ngoài và các mạch điện và mô hình thực tế liên quan để thi công phần cứng.
1.4. Đối tượng nghiên cứu, ứng dụng và hướng phát triển của đề tài:
Lập trình vi xử lý cho hoạt động của mạch nên đối tượng nghiên cứu chính là vi điều khiển Pic16F877A, IC số cho vấn đề điều khiển và hiển thị.
Đề tài này được ứng dụng rộng rãi và phổ biến trong cuộc sống con người.
Hướng phát triển của đề tài là xem xét nghiên cứu các ứng dụng trong thực tế để có thể mở rộng và phát triển đề tài.
Chương 2:
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ác má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ụng thờ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.
- 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.
- Chỉ gồm 35 lệnh đơn.
- Tất cả các lệnh là một chu kỳ ngoại trừ chương trình con là hai chu kỳ.
- Tốc độ hoạt động:
- DC_20MHz ngõ vào xung clock.
- DC_200ns chu kỳ lệnh.
2.1.1.2. Những đặc tính ngoại vi:
- 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.
- 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.
2.1.1.3. Đặc điểm về tương tự:
10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D).
Brown_out Reset(BOR).
Module so sánh về tương tự:
- Hai bộ so sánh tương tự.
- 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ên trong.
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.
2.1.1.5.Công nghệ CMOS:
- Năng lượng thấp, tốc độ caoFlash/công nghệ EPROM.
- Việc thiết kế hoàn toàn tĩnh.
- Khoảng điện áp hoạt động từ 2V đến 5,5V.
- Tiêu tốn năng lượng thấp.
2.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:
- PIC16F83
- PIC16CR83
- PIC16F84
- PIC16CR84
- Tất cả các PIC16/17 điều có cấu trúc RICS. PIC16CXX các đặc tính nổi bậc, 8 mắc ngăn xếp tack, nhiều nguồn ngắt tích hợp bên trong lẫn bên ngoài. Có cấu trúc Haward với các bus dữ liệu và bus thực thi chương trình riêng biệt nhau cho phép độ dài một lệnh là 14_bit và bus dữ liệu 8_bit cách biệt nhau. Tất cả các lệnh điều mất một chu kỳ lệnh, ngoại trừ các lệnh rẽ nhánh chương trình mất hai chu kỳ lệnh. Chỉ có 35 lệnh và một lượng lớn các thanh ghi cho phép đáp ứng cao trong ứng dụng.
- 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).
- Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệm nă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 Programming)
- Được chế tạo bằng công nghệ CMOS
- 35 tập lệnh có độ dài 14 bits.
- Tần số hoạt động tối đa 20MHz.
2.1.2.1. Các đặc tính ngoại vi bao gồm :
- 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.
- 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 được chươ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.
- Chế độ Sleep.
- 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:
- Sơ đồ chân :
Hình 2.1 Sơ đồ khối PIC 16F877A
- Sơ đồ nguyên lý:
Hình 2.2 Sơ đồ nguyên lý PIC 16F877A
l.Nhận xét:
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra các nhận xét ban đầu như sau
- PIC16F877A có tất cả 40 chân
- 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2 chân thạch anh và một chân dùng để RESET vi điều khiển.
- 5 port của PIC16F877A bao gồm :
- PORTB : 8 chân
- PORTD : 8 chân
- PORTA : 6 chân
- 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.
Hình 2.3 Sơ đồ khối cấu trúc bên trong PIC 16F877A
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 :
- 8K Flash Rom
- 368 bytes Ram
- 256 bytes EFPROM
- 5 port vào ra với tín hiệu điều khiển độc lập
- 2 bộ định thời Timer0 và Timer2 8 bit
- 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
- 2 bộ Capture/ Compare/ PWM
- 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
- 2 bộ so sánh tương tự
- 1 bộ định thời giám sát (Watch Dog Timer)
- 1 cổng song song 8 bit với các tín hiệu điều khiển
- 1 cổng nối tiếp
- 15 nguồn ngắt
- Sơ đồ khối
Hình 2.4 Sơ đồ khối bên trong của vi điều khiển 16F877A
2.1.2.4. Một số chế độ đặt biệt của vi điều khiển PIC 16F877:
2.1.2.4.1. Dao động:
PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:
- LP low-power crystal
- XT crystal/resonatpor
- HS high-speed crystal/resonatpor
- RC resistor/capacitor
Hình 2.5 Các chế độ lao động
Trong các chế độ LP, XT và HS chúng ta sử dụng thạch anh dao động nối vào các chân OSC1 và OSC2 để tạo dao động.
Việc lựa chọn tụ trong dao động thạch anh được lựa chọn dựa vào bảng sau:
Hình 2.6 Giá trị tụ trong dao động thạch anh
Tụ có giá trị lớn sẽ mang tính ổn định của dao động nhưng làm tăng thời gian khởi động.
Cách tính chu kỳ máy: Ví dụ ta sử dụng thạch anh 10Mhz. Khi đó: Tần số dao động của thạch anh là Fosc = 10Mhz thì chu kỳ dao động của thạch anh là Tosc = 1/Fosc= 1/10*106(s).
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*106(s) = 0.4 µs = 400 ns
2.1.2.4.2. Reset:
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau:
- Power-on Reset (POR)
- MCLR Reset during sleep
- MCLR Reset during normal operation
- WDT Reset (during normal operation)
- WDT Wake-up (during sleep)
- Brown-out Reset (BOR)
Hình 2.7 Các chế độ reset
2.1.2.4.3. MCLR :
PIC16F877A có một bộ lọc nhiễu ở phần MCLR . Bộ lọc nhiễu này sẽ phát hiện và bỏ qua các tín hiệu nhiễu. Ngõ vào MCLR trên chân 4 của PIC16F877A. Khi đưa chân này xuống thấp thì các thanh ghi bên trong VĐK sẽ được tải những giá trị thích hợp để khởi động lại hệ thống. (Lưu ý: Reset do WDT không làm chân MCLR xuống mức thấp).
Hình 2.8 Mạch MCLR
2.1.2.4.4. Interrupts:
PIC16F877A có nhiều nguồn ngắt khác nhau. Đây là một số ngắt tiêu biểu:
- Ngắt ngoài xảy ra trên chân INT.
- Ngắt do Timer0.
- Ngắt do Timer1.
- Ngắt do Timer2.
- Ngắt do thay đổi trạng thái trên các chân PortB.
- Ngắt so sánh điện thế.
- Ngắt do Port song song.
- Ngắt USART.
- Ngắt nhận dữ liệu.
- Ngắt truyền dữ liệu .
- Ngắt chuyển đổi ADC.
- Ngắt màn hình LCD.
- Ngắt hoàn tất ghi EEPROM.
- Ngắt module CCP.
- Ngắt Module SSP.
Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các thanh ghi này sẽ được nghiên cứu ở các phần sau).
Hình 2.9 Các chế độ ngắt
2.1.2.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.2.5.1. Bộ nhớ chương trình:
Hình 2.10 Bộ nhớ chương trình PIC 16F877A
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ Flash, dung lượng 8K word (1 word chứa 14bit) và được phân thành nhiều trang như hình trên.
Để 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.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.
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áo chứ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ột thanh 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.
Hình 2.11 Bộ nhớ dữ liệu PIC 16F877A
Dự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ệu của PIC16F877A là : phải khai báo đúng bank chứa thanh ghi đó. Nếu thanh ghi nào mà 4 bank đều chứa thì không cần phải chuyển bank.
Bảng tóm tắt các thanh ghi chức năng đặc biệt:
Hình 2.12-2.13-2.14 Các thanh ghi chức năng đặt biệt PIC 16F877A
2.1.2.6. Các thanh ghi chức năng đặt biệt:
2.1.2.6.1. Thanh ghi trạng thái (Status Register):
Thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ 03h, 83h, 103h và 183h : 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.
Hình 2.15 Status Register
Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián tiếp).
1 = Bank 2, 3 (100h – 1FFh )
0 = Bank 0, 1 (00h – FFh)
Bit 6 – 5 RP1 – RP0: Bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực tiếp).
11 = Bank 3 ( 180h – 1FFh)
10 = Bank 2 (100h – 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h – 7Fh)
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT.
1: Lệnh xóa WDT hoặc Sleep xảy ra.
0: WDT hoạt động.
Bit 3 PD: Bit báo công suất thấp ( Power down bit).
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT.
0: Thực thi lệnh Sleep.
Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0.
0: Khi kết quả của một phép toán khác 0.
Bit 1 DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp.
0: Không có số nhớ sinh ra.
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ.
0: Không có số nhớ sinh ra.
2.1.2.6.2. Thanh ghi tùy chọn (Option Reg Register):
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng như: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian chờ của WDT.
Hình 2.16 Option-Reg Register
Bit 7 RBPU : Bit cho phép PORTB được kéo lên nguồn.
1: Không cho phép PORTB kéo lên nguồn.
0: Cho phép PORTB kéo lên nguồn.
Bit 6 INTEDG: Bít lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội.
Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer 0
1: Cạnh xuống
0: Cạnh lên
Bit 3 PSA: Bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 hay WDT
1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT
0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT
2.1.2.7 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à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
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE
2.1.2.7.1. Port A và thanh ghi TRIS A:
PORTA gồm có 6 chân. Các chân của PortA, ta lập trình để có thể thực hiện được chức năng “hai chiều” : xuất dữ liệu từ vi điều khiển ra ngoại vi và nhập dữ liệu từ ngoại vi vào vi điều khiển.
Hình 2.17 Block diagram of RA3:RA0 Pins
Port A gồm 6 chân từ RA0 đến RA5. Việc ghi giá trị vào thanh ghi TRISA sẽ qui định các chân của Port A là input hay output(nếu là 1 thì là input, là output nếu là 0). Việc đọc thanh ghi Port A sẽ đọc trạng thái của các chân ở Port A. Việc ghi giá trị vào thanh ghi Port A sẽ thay đổi trạng thái của các chân Port A. Riêng chân RA4 được tích hợp chức năng là chân cung cấp xung clock ngoài cho Timer 0 (RA4/T0CKI). Những chân khác của Port A được đa hợp với các chân ngõ vào Analog của ADC và chân ngõ vào điện thế so sánh của bộ so sánh Comparator. Hoạt động của những chân này được quy định bằng những bit tương ứng trong các thanh ghi ADCCON1 và CMCON1.
Hình 2.18 Block Diagram of RA4/TOCKI Pin
Khi các chân của Port A được sử dụng làm ngõ vào Analog thì các bit trong thanh ghi TRISA phải được set bằng 1.
Chức năng các chân trong Port A.
Hình 2.19 PORT A Function
Ngoài ra, PORTA còn có các chức năng quan trọng sau :
- Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sang Digital
- Ngõ vào điện thế so sánh
- Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng : thực hiện các nhiệm vụ đếm xung thông qua Timer0…
- Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port).
Các thanh ghi FSR liên quan đến PORTA bao gồm:
- PORTA địa chỉ 05h) : chứa giá trị các pin trong PORTA.
- TRISA (địa chỉ 85h) : điều khiển xuất nhập.
2.1.2.7.2. PORT B và thanh ghi TRISB:
PORTB có 8 chân từ chân RB0-RB7. Việc ghi giá trị vào thanh ghi TRISB sẽ quy định các chân của Port B là input hay output (1: input, 0: output). Việc đọc thanh ghi PortB sẽ đọc trạng thái của các chân ở Port B. Việc ghi giá trị vào thanh ghi Port B sẽ thay đổi trạng thái của các chân Port B.
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và Low Voltage Programming function: RB3/PGM, RB6/PGC, RB7/PGD. Mỗi chân Port B có một transistor kéo lên Vdd. Chức năng này hoạt động khi bit RBPU (Option <7>) được xóa. Chức năng này sẽ tự động được xóa khi Port B được quy định là input.
Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port B thay đổi (Khi Port B được quy định là output thì chức năng này không hoạt động. Giá trịchân của PortB được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệch giữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên. Ngắt có thể làm cho VĐK thoát khỏi trạng thái SLEEP.
Bất cứ sự truy xuất nào trên PortB sẽ xóa trạng thái sai lệch, kết thúc ngắt và cho phép xóa cờ ngắt RBIF.
Hình 2.20 Cấu trúc bên trong Port B.
Chức năng các chân trong portB.
Hình 2.21 Chức năng các chân trong Port B
Các thanh ghi SFR lien 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.
2.1.2.7.3. Port C và thanh ghi TRISC:
Port C gồm 8 chân từ chân RC0-RC7. Việc ghi giá trị vào thanh ghi TRISC sẽ quy định các chân của Port C là input hay output (1: input, 0: output). Việc đọc thanh ghi Port C sẽ đọc trạng thái của các chân ở Port C. Việc ghi giá trị vào thanh ghi Port C sẽ thay đổi trạng thái của các chân Port C. Các chân của Port C được đa hợp với các chức năng ngoại vi.
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giá trị các bit của thanh ghi TRISC. Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghi TRISC và mặc định các chân này là output, ngoài ra một số chức năng ngoại vi khác sẽ tự động mặc định một số chân là ngõ vào. Do đó cần xem xét kĩ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC cho thích hợp .
Hình 2.22 Port C Block Diagram
Bảng chức năng các chân trong portC
Hình 2.23 PORT C Functions
Các thanh ghi lien quan đến PORTC:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
- TRISC (địa chỉ 87h) : điều khiển xuất nhập.
2.1.2.7.4. Port D và thanh ghi TRISD:
Port D gồm 8 chân từ chân RD0-RD7. Bên cạnh chức năng là port xuất nhập, PortD còn có thể hoạt động như một cổng song song bằng cách set bit PSPMODE (TRISD<4>), trong chế độ này buffer ngõ vào là TTL. PORTD coøn laø coång xuaát döõ lieäu cuûa chuaån giao tieáp PSP (Parallel Slave Port)
Bảng chức năng của PortD
Hình 2.24 PORTD Functions
Các thanh liên quan đến PORTD bao gồm:
- Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
- Thanh ghi TRISD : điều khiển xuất nhập.
- Thanh ghi TRISD : điều khiển xuất nhập PORTD và chuẩn giao tiếp PSP.
2.1.2.7.5. PortE và thanh ghi TRISE:
Port E có 3 chân RE0 / RD/ AN5, RE1/ WR / AN6, RE2 / CS/AN7, có thể được cấu hình như các chân xuất nhập thông thường.
Các chân của Port E có thể trở thành các chân điều khiển cho cổng song song của VĐK khi bit PSPMODE (TRISE<4>) được set bằng 1. Trong chế độ này, người sử dụng phải đảm bảo các chân của PortE là ngõ vào.
Ngoài ra các chân Port E còn có thể được cấu hình như các ngõ vào Analog, tại chế độ này, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0.
Thanh ghi TRISE quy định chức năng xuất nhập của Port E ngay cả khi nó được sử dụng như các ngõ vào Analog. Phải đảm bảo các chân này được quy định là ngõ vào trong chế độ nà
Hình 2.25 PORTE Block Diagram
Bảng chức năng của PortE
Hình 2.26 PORTE Functions
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 thong số cho chuẩn giao tiếp PSP.
- ADCON1 : thanh ghi điều khiển khối ADC.
2.1.2.8. Bộ định thời của PIC 16F877A:
PIC16F877A có tất cả 3 timer : timer0 (8 bit), timer1 (16 bit) và timer2 (8 bit ).
2.1.2.8.1. Bộ định thời Timer 0:
Module Timer 0 là một bộ định thời/ đếm 8 bit, có khả năng đọc và ghi được , có một bộ tiền định tỉ lệ (Prescaler) 8 bit lập trình được, có bit lựa chọn nguồn xung clock trong hoặc ngoài, có ngắt khi Timer tràn, có bit lựa chọn cạnh tác động của xung clock ngoài
...............................................................................................................................
nhietdocanhbao=(f2/16)*10+(f2%16);
}
void sosanh()
{
if(dem%2==1)
{
if((nhietdo>nhietdocanhbao)||(nhietdo==nhietdocanhbao)||(hengio==gio)&&(henphut==phut))
a5=1;
else
a5=0;
}
else
a5=0;}
CHƯƠNG TỔNG KẾT
Sản phẩm mà chúng em đưa ra chỉ là một mô hình nhỏ. Thiết kế này chỉ nhằm mục đích tìm hiểu và ứng dụng vi điều khiển vào việc thiết kế điều khiển. Tuy nhiên với một đề tài có tính thực tiễn thì với việc được trao dồi thêm kiến thức, chúng em hoàn toàn có thể phát triển đề tài thành một sản phẩm hoàn chỉnh hơn.
Qua việc thực hiện đề tài chúng em cũng nhận thấy, vi điều khiển và các loại IC số có một tầm ứng dụng rất lớn trong thực tiễn. Không chỉ giới hạn trong những thiết kế đơn giản, vi điều khiển còn đi vào trong những hệ thống cực kì phức tạp điều này chình là một lý do để chúng em say mê, đi sâu vào lĩnh vực rất thú vị này.
Trong thời gian làm đề tài, chúng em cũng gặp rất nhiều khó khăn trong vấn đề tìm hiểu tài liệu, vấn đề thi công mạch, nhưng với sự cố gắng của bản thân và nhận được sự giúp đỡ nhiệt tình từ phía thầy cô trong khoa Điện Tử-Tin Học, cũng như góp ý của bạn bè trong lớp, nhóm chúng em đã hoàn thành đồ án này đúng tiến độ mà Khoa đã phân công. Đồng thời, chúng em xin chân thành cảm ơn thầy NGUYỄN HỮU PHƯỚC đã hướng dẫn, giúp đỡ và tạo điều kiện cho chúng em hoàn thành đề tài.
Tài liệu và các trang Web tham khảo:
1. Kĩ Thuật Số I – Thầy Nguyễn Hữu Phước – Trường Cao Đẳng Kĩ Thuật Cao Thắng
2. Giáo trình Vi Xử Lý – Thầy Nguyễn Trọng Khanh – Trường Cao Đẳng Kĩ Thuật Cao Thắng
3.Giáo trình Linh Kiện Điện Tử và Ứng Dụng- NXB Giáo Dục
4.www.datasheet.com
5.www.diendandientu.com
6.www.dientuvietnam.net
7.www.picvietnam.com
8.www.google.com.vn