Để 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
Trang 1Nhận xét của giáo viên hướng dẫn
-o0o -………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Tp HCM, ngày … tháng … năm 2011
Giáo viên hướng dẫn
Trang 2Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
Nhận xét của giáo viên phản biện
-o0o -
Tp.HCM, ngày … tháng… năm 2011
Giáo viên phản biện
Trương Quang Trung
Trang 3Lời cảm ơn
Trong suốt thời gian học tập tại trường Cao Đẳng
Kỹ Thuật Cao Thắng, chúng em nhận được sự giảng dạy cũng như sự chỉ dẫn một cách tận tình của quí thầy cô về những kiến thức trong học tập cũng như trong cuộc sống.
Chúng em xin chân thành cảm ơn quí thầy cô trong khoa Điện Tử-Tin Học đã giảng dạy cho chúng
em những kiến thức chuyên môn và tạo điều kiện cho chúng em hoàn thành tốt khóa học, qua đó giúp chúng em định hướng được trong việc lựa chọn và
thực hiện đề tài “LỊCH VẠN NIÊN” trong khả năng
của mình.
Chúng em cũng xin chân thành cảm ơn Thầy Nguyễn Hữu Phước, đã tận tình theo dõi, giúp đỡ và hướng dẫn chúng em trong suốt thời gian chúng em thực hiện và hoàn thành đồ án này.
Nhóm sinh viên thực hiện
ĐẶNG QUỐC KHÁNH
ĐOÀN VĂN LÊN
Trang 4Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 5Mục Lục
Nhận xét của giáo viên hướng dẫn Trang
Nhận xét của giáo viên phản biện
Lời cảm ơn
Lời nói đầu
Mục lục
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ố linh kiện đượ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
Trang 6Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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 IC ổn áp 7805 52
2.3.Chip DS1307 53
2.4.Diode 59
2.4.1 Diode chỉnh lưu 59
2.4.2.diode phát quang(led đơn) 60
2.4.3 Led 7 đoạn 60
2.5.Điện trở .62
2.6.Tụ điện .63
2.7.Transistor 65
Chương 3:Sơ đồ nguyên lý các khối trong mạch 77
3.1.Sơ đồ nguyên lý mạch Pic16f877A và DS1307 77
3.1.1.Lưu đồ giải thuật “ Lịch Vạn Niên” 78
3.1.2.Sơ đồ khối chung 79
3.2 Sơ đồ khối hiển thị 80
3.3.Sơ đồ mạch nguồn 81
Chương 4:Tổng quan về ngôn ngữ lập trình CCS 82
Code chương trình “ Lịch Vạn Niên” 83
Chương Tổng Kết: 94
Tài liệu và các trang Web tham khảo: 95
Trang 7CHƯƠNG 1: 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:
Trang 8Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 9Chương 2:
GIỚI THIỆU MỘT SỐ IC ĐƯỢC SỬ DỤNG
TRONG MẠCH2.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ư
Trang 10Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
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
Trang 11• 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
• 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ê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
Trang 12Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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:
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ẽ
Trang 13đượ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
Trang 14Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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 :
Trang 15Hình 2.1 Sơ đồ khối PIC 16F877A
• Sơ đồ nguyên lý:
Trang 16Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
để RESET vi điều khiển
Trang 17Hình 2.3 Sơ đồ khối cấu trúc bên trong PIC 16F877A
Trang 18Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước 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 :
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
Trang 19Hình 2.4 Sơ đồ khối bên trong của vi điều khiển 16F877A
Trang 20Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 21Cá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*10 6 (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)
Trang 22Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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.
Trang 23• 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)
Trang 24Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 25chứ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
Trang 26Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
Trang 27Hì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:
Trang 28Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
Trang 30Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
Hình 2.12-2.13-2.14 Các thanh ghi chức năng đặt biệt PIC 16F877A
Trang 312.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
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
Trang 32Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 33Bit 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
Trang 34Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 35Hì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
Trang 36Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
- 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
Trang 37Hì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
Trang 38Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
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
Trang 39Hì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 còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Bảng chức năng của PortD
Trang 40Đồ án tốt nghiệp khóa 2009-2011 GVHD: Thầy Nguyễn Hữu Phước
• 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ày
Hình 2.25 PORTE Block Diagram
Bảng chức năng của PortE