Cáckhối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, cácmạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối nàycùng liên kết với vi xử lý thì mới t
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ -
ĐỒ ÁN TỐT NGHIỆP Chuyên ngành: CNKT Điện tử, truyền thông
Đề tài: NGHIÊN CỨU, ỨNG DỤNG VI ĐIỀU KHIỂN PIC THIẾT KẾ MẠCH KIỂM SOÁT NGƯỜI RA VÀO
Trang 2LỜI CẢM ƠN
Để hoàn thành đề tài đồ án tốt nghiệp này, lời đầu tiên cho em gửi lời
cảm ơn đến thầy Ths Bồ Quốc Bảo đã tận tình giúp đỡ và chỉ bảo, giúp đỡ
em trong suốt quá trình hoàn thành đồ án
Em xin tỏ lòng biết ơn sâu sắc đến các thầy cô trong khoa điện tửtrường Đại học Công nghiệp Hà Nội đã tận tình giảng dạy, cho em nhữngkiến thức cũng như kinh nghiệm quý báu trong suốt 4 năm học vừa qua
Cuối cùng xin cảm ơn gia đình, người thân, bạn bè, của em đã luôn bêncạnh và khích lệ và giúp đỡ em trong thời gian qua
Mặc dù có nhiều cố gắng, thời gian thực hiện đồ án có hạn, vốn kiếnthức nắm được chưa nhiều nên đồ án còn nhiều hạn chế Em rất mong nhậnđược nhiều sự góp ý, chỉ bảo của thầy cô để hoàn thiện hơn bài viết của mình
Em xin chân thành cảm ơn!
Trang 3LỜI MỞ ĐẦU
Thế giới này với khoa học kĩ thuật phát triển mạnh mẽ cuộc sống conngười ngày càng được phát triển tốt hơn Khoa học kĩ thuật đem lại nhiều tiệních thiết thực hơn cho cuộc sống con người Góp phần to lớn trong quá trìnhphát triển của khoa học kĩ thuật là sự phát triển mạnh mẽ của vi điều khiển.Trong những thập niên cuối thế kỉ 20, bước đột phá lớn nhất trong công nghệđiện tử là việc công ty Intel cho ra đời bộ vi xử lý đầu tiên Phát minh này làtiền đề cho sự ra đời của vi điều khiển, cho phép tạo ra các ứng dụng theo 1công thức khác: phần cứng+phần mềm=ứng dụng Điều này có nghĩa là muốn
có một ứng dụng khác thì chỉ cần thay đổi phần mềm và giữ nguyên phầncứng
Cùng với sự phát triển đa dạng về chủng loại thì tài nguyên của vi điềukhiển cũng được nâng cao Các vi điều khiển ngày nay cung cấp cho ngườidùng một nguồn tài nguyên rộng lớn và phong phú Có thể đáp ứng đượcnhiều yêu cầu khác nhau trong thực tế Vi điều khiển là một thuật ngữ để chỉmột hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng kết hợp với các khốingoại vi như bộ nhớ, các module vào/ra, các module biến đổi số sang tương
tự và tương tự sang số Đó là các hệ thống tích hợp cả phần cứng và phầnmềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tựđộng hóa điều khiển, quan trắc và truyền tin Vi điều khiển ngày càng đượcứng dụng rộng rãi trong đời sống cũng như trong công nghiệp vì khả năng xử
lý nhanh, đa dạng, tiết kiệm năng lượng và độ ổn định
Bên cạnh đó, xuất phát từ thực tế tại các nhà máy mà em đã được thựctập cũng như được tham quan, em đã thấy được nhiêu khâu tự động hóa trongquá trình sản xuất Một trong những khâu đơn giản trong quá trình sản xuất làđếm số lượng sản phẩm một cách tự động Đối với những nơi có nhiều dịch
vụ tiện ích cho con người ví dụ như siệu thị, cửa hàng,… Cần quản lý sốlượng người ra vào để biết được tình hình kinh doanh của cửa hàng hay siêuthị ấy Nhận thấy được nhu cầu cấp thiết đó nên em đã chọn nhiều đề tài đếm
Trang 4người ra vào sử dụng vi điều khiển làm đồ án tốt nghiệp với mong muốn vậndụng được kiến thức của mình đã học trên nhà trường cũng như đã tìm hiểuqua sách vở, mạng internet tạo nên một sản phẩm hữu dụng.
Hà Nội, tháng 03 năm 2018
Sinh viên
MỤC LỤ
Trang 5LỜI CẢM ƠN 1
LỜI MỞ ĐẦU 2
MỤC LỤC 4
DANH MỤC HÌNH ẢNH 5
DANH MỤC BẢNG 6
CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 18F4520 7
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN 7
1.2 PHÂN LOẠI 8
1.3 CẤU TRÚC TỔNG QUAN CỦA VI ĐIỀU KHIỂN: 9
1.4 GIỚI THIỆU VỀ PIC 10
1.5 KIẾN TRÚC PHẦN CỨNG CỦA PIC 18F4520 11
1.6 NGÔN NGỮ LẬP TRÌNH VÀ TRÌNH DỊCH 39
1.7 BỘ CHUYỂN ĐỔI TƯƠNG TỰ -SỐ (ADC) 40
CHƯƠNG 2: THIẾT KẾ SẢN PHẨM 50
2.1 PHÂN TÍCH YÊU CẦU 50
2.2 THIẾT KẾ PHẦN CỨNG 50
2.3 THIẾT KẾ PHẦN MỀM 58
2.4 VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN 59
2.5 KẾT QUẢ THIẾT KẾ, NGHIÊN CỨU 60
KẾT LUẬN 61
TÀI LIỆU THAM KHẢO 62
PHỤ LỤC 63
[1] MÃ CODE CHƯƠNG TRÌNH 63
Trang 6DANH MỤC HÌNH Ả
Hình 1.1 Sơ đồ khối PIC 18F4520 13
Hình 1.2 Sơ đồ chân PIC 18F4520 dạng PDIP 16
Hình 1.3 Sơ đồ tổ chức bộ nhớ chương trình và ngăn xếp 21
Hình 1.4 Sơ đồ tổ chức bộ nhớ dữ liệu RAM 22
Hình 1.5 Phân bổ địa chỉ của các thanh ghi chức năng đặc biệt SFR 23
Hình 1.6 Chế độ dao động EC 27
Hình 1.7 Chế độ dao động ECIO 27
Hình 1.8 Chế độ dao động RC 28
Hình 1.9 Chế độ dao động RCIO 29Y Hình 2.1 Sơ đồ khối tổng quát mạch đếm 51
Hình 2.2 Mạch nguyên lý 52
Hình 2.3 sơ đồ mạch in 53
Hình 2.6 ảnh vi điều khiển PIC 18f4520 thực tế 54
Hình 2.7 Điện trở 54
Hình 2.8 Tụ điện 54
Hình 2.9 Khối phát tín hiệu hồng ngoại 56
Hình 2.10 Khối thu tín hiệu hồng ngoại 57
Hình 2.11 Lưu đồ thuật toán khi người vào 58
Hình 2.12 Lưu đồ thuật toán khi người ra 59
Hình 2.13 Mạch điện thực tế sau khi lắp ráp 60
Trang 7DANH MỤC BẢNG
Bảng 1 1 Các thanh ghi liên quan đến PORTA 35
Bảng 1 2 Các thanhghi liên quan đến PORTB 36
Bảng 1 3 Các thanh ghi liên quan đến PORTC 37
Bảng 1 4 Các thanh ghi liên quan đến PORTD 37
Bảng 1 5 Các thanh ghi liên quan đến PORTE 38
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
18F4520
1.1 GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN
Bộ vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năngtính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng,đặc biệt hiệu quả đối với các bài toán và hệ thống lớn Tuy nhiên đối với cácứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việcứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi
xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau Cáckhối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, cácmạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối nàycùng liên kết với vi xử lý thì mới thực hiện được công việc Để kết nối cáckhối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi
xử lý, bộ nhớ, các thiết bị ngoại vi Hệ thống được tạo ra khá phức tạp, chiếmnhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết
kế Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để ápdụng cho các hệ thống nhỏ
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ
và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhấtđược gọi là Microcontroller-Vi điều khiển
Một số đặc điểm khác nhau giữa vi xử lí và vi điều khiển
Về phần cứng: VXL cần được ghép thêm các thiết bị ngoại vi bên ngoàinhư bộ nhớ, và các thiết bị ngoại vi khác,… để có thể tạo thành một bảnmạch hoàn chỉnh Đối với VĐK thì bản thân nó đã là một hệ máy tính hoànchỉnh với CPU, bộ nhớ, các mạch giao tiếp, các bộ định thời và mạch điềukhiển ngắt được tích hợp bên trong mạch
Về các đặc trưng của tập lệnh: Do ứng dụng khác nhau nên các bộ VXL
và VĐK cũng có những yêu cầu khác nhau đối với tập lệnh của chúng Tập
Trang 9lệnh của các VXL thường mạnh về các kiểu định địa chỉ với các lệnh cungcấp các hoạt động trên các lượng dữ liệu lớn như 1byte, ½ byte, word, doubleword, Ở các bộ VĐK, các tập lệnh rất mạnh trong việc xử lý các kiêu dữliệu nhỏ như bit hoặc một vài bit.
Do VĐK cấu tạo về phần cứng và khả năng xử lí thấp hơn nhiều so vớiVXL nên giá thành của VXL cũng rẻ hơn nhiề u Tuy nhiên nó vẫn đủ khảnăng đáp ứng được tất cả các yêu cầu của người dùng
Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ,các robot có chức năng đơn giản, trong máy giặt, ôtô v.v
1.2.1 Độ dài thanh ghi
Dựa vào độ dài của các thanh ghi và các lệnh của VĐK mà người ta chia
ra các loại VĐK 8bit,16bit, hay 32bit Các loại VĐK 16bit do có độ dài lệnhlớn hơn nên các tập lệnh cũng nhiều hơn, phong phú hơn Tuy nhiên bất cứchương trình nào viết bằng VĐK 16bit chúng ta đều có thể viết trên VĐK 8bitvới chương trình thích hợp
1.2.2 Kiến trúc CISC và RISC
VXL hoặc VĐK CISC là VĐK có tập lệnh phức tạp Các VĐK này cómột số lượng lớn các lệnh nên giúp cho người lập trình có thể linh hoạt và dễdàng hơn khi viết chương trình VĐK RISC là VĐK có tập lệnh đơn giản.Chúng có một số lượng nhỏ các lệnh đơn giản Do đó, chúng đòi hỏi phầncứng ít hơn, giá thành thấp hơn, và nhanh hơn so với CISC Tuy nhiên nó đòihỏi người lập trình phải viết các chương trình phức tạp hơn, nhiều lệnh hơn
1.2.3 Kiến trúc Harvard và kiến trúc Vonneumann
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chương trình và dữliệu Bus địa chỉ và bus dữ liệu độc lập với nhau nên quá trình truyền nhận dữliệu đơn giản hơn
Trang 10Kiến trúc Vonneumann sử dụng chung bộ nhớ cho chương trình và dữliệu Điều này làm cho VĐK gọn nhẹ hơn, giá thành nhẹ hơn.
Một số loại VĐK có trên thị trường:
+ ALU là bộ phận thao tác trên các dữ liệu
+ Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thựchiện
+ Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi
+Thanh ghi PC, lưu giữ địa chỉ của lệnh kế tiếp cần thực thi
+ Một tập các thanh ghi dùng để lưu thông tin tạm thời
1.3.2 ROM:
ROM là bộ nhớ dùng để lưu giữ chương trình ROM còn dùng để chứa
số liệu các bảng, các tham số hệ thống, các số liệu cố định của hệ thống.Trong quá trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội
dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình
Trang 11BUS là các đường dẫn dùng để di chuyển dữ liệu Bao gồm: bus địa chỉ ,bus dữ liệu, và bus điều khiển
1.4 GIỚI THIỆU VỀ PIC
1.4.1 PIC là gì?
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch
là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho
vi điều khiển đầu tiên của họ.PIC1650 được thiết kế để dùng làm các thiết bịngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu
phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay
1.4.2 Tại sao là PIC mà không là các họ vi điều khiển khác?
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051,Motorola 68HC, AVR, ARM, Ngoài họ 8051 được hướng dẫn một cách cănbản ở môi trường đại học, bản thân người viết đã chọn họ vi điều khiển PIC
để mở rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì cácnguyên nhân sau:
Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam
Giá thành không quá đắt
Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập
Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ viđiều khiển mang tính truyền thống: họ vi điều khiển 8051
Số lượng người sử dụng họ vi điều khiển PIC Hiện nay tại Việt Nam
Trang 12cũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi Điềunày tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụngnhư: số lượng tài liệu, số lượng các ứng dụng mở đã được phát triển thànhcông, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khókhăn,…
Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạpchương trình từ đơn giản đến phức tạp,…
Các tính năng đa dạng của vi điều khiển PIC, và các tính năng nàykhông ngừng được phát triển
1.4.3 Ngôn ngữ lập trình cho PIC
Ngôn ngữ lập trình cho PIC rất đa dạng Ngôn ngữ lập trình cấp thấp cóMPLAB (được cungcấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữlập trình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một sốngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic,MikroBasic,…
1.5.1 Sơ đồ khối
Các khối chính trên PIC 18f4520 gồm:
Bộ xử lý trung tâm CPU (central Processing Unit):
Tần số làm việc tối đa 40MHz, sản xuất bằng công nghệ Nano Watt
Thiết kế theo cấu trúc Havard, tập lệnh RISC
Sử dụng kĩ thuật đường ống lệnh (Intruction Pipelining)
Đơn vị logic học (ALU: Arithmetic Logical Unit)
Thanh ghi làm việc (WREG: work regster)
Bộ nhân bằng phần cứng (8x8 Multiply), kết quả được chứa trong cặpthanh ghi (PRODH, PRODL)
Thanh ghi đếm chương trình (PC: Program Counter), có 21 bit thanhghi PCL (PC-Low) chứa các bit từ 7-0, thanh ghi PCH (PC- High) chứa cácbit từ 15-8, thanh ghi CPU (PC-Upper) chứa các bit từ 20-16
Trang 13Thanh ghi con trỏ ngăn xếp STKPTR (Stack Pointer).
31 mức ngăn xếp (31 level stack)
Thanh ghi lựa chon băng (BSR: Bank select Register)
Thanh ghi con trỏ dữ liệu dán tiếp FSR (Indirect Data memory AddressPointer)
Trang 14Bộ phát Xung hệ thống (Oscillator): Nguồn xung từ bên ngoài hoặc
từ bộ phát xung hệ thống sẽ đi qua bộ nhân hoặc chia tần số để lựa chọn lấytần số thích hợp để làm xung hê thống
Nguồn xung chính được đưa vào chip qua chân OSC1 va OSC 2
Nguồn xung phụ được đưa vào chíp qua chân T1OSI, T1OSO
Bộ phát xung nội INTRC tần số 31 kHz
Bộ phát xung nội trên chip tần số 8 MHz
Watchdog Timer (WDT): WDT là một bộ timer có chức năng đặc
biệt Nếu được “cho phép” WDT sẽ và khi tràn sẽ khởi động lại hệ thống.Thời gian khởi động lại hệ thống có thể lựa chọn từ 4ms đến 131,072s WDT
sẽ được khởi tạo ở đầu chương trình, trong thân chương trình sẽ đươc “chèn”các lệnh reset WDT sao cho khi MC thực hiện đúng tuần tự các lệnh, WDTchưa bị tràn Mục đích chính của việc sử dụng WDT là tránh cho vi điềukhiển thực hiện phải một vòng lặp chết (dead loop) mà không thoát ra được.Khi đó, do không thực hiện được các lệnh reset WDT nên MC tràn, tựn độngreset, thoát khỏi tình trạng “bị treo” trong vòng lặp chết Ngoài ra, do có thểhoạt động trong khi MC “ngủ” (sleep Mode) nên WDT còn được sử dụngtrong các ứng dụng tiết kiệm năng lượng
Bộ nạp chương trình: Bộ nạp chương trình nối tiếp trên
chip(Single-Supply In-Circuit Serial Programming ) sẽ giúp nạp chương trình từ mạnhnạp vào bộ nhớ ROM qua các chân PGM, PGC và PGD
Bộ Debuger (In-Circuit Debugger): Mạch Debugger trên chip sẽ giúp
người lập trình kiểm soát lỗi chương trình bằng cách cho vi điều khiển hoạtđộng ở chế độ chạy từng lệnh, nhóm lệnh hay toàn bộ chương trình
Khối phát hiện tín hiệu reset: Mạch tín hiệu reset có khả năng phát
hiện 03 nguồn reset:
Reset từ chân MCLR
Reset khi bật nguồn (POR: Power-on Reset)
Reset khi nguồn yếu (BOR: Brown-out Reset)
Trang 15 Khối quản lý lỗi bộ phát xung (Fail-Safe Clock Monitor): Khối này
được sử dụng để quản lý an toàn bộ phát xung hệ thống
Khối định thời khởi động bộ phát xung (Oscillator Start Up-Timer):
khối này sử dụng để tạo thời gian trễ chờ cho bộ phát xung ổn định
Thiết bị ngoại vi (Peripheral):PIC 18f4520 được tích hợp các thiết bị
ngoại vi sau:
Bộ phát hiện điện áp cao/thấp HLVD (High/low-Voltage detect)
Bộ nhớ lưu dữ liệu khi tắt nguồn EEPROM
04 bộ đếm, định thời 16 bit: Timer0, Timer1, Timer2 và Timer3
01 bộ so sánh tín hiệu tương tự (comparator)
13 kênh biến đổi tương tự - số (ADC) độ phân giải 10 bit
Khối giao tiếp vào/ra số:
Vi điều khiển PIC18F4520 có 5 cổng vào ra A, B, C, D và E mỗi cổng
có một thanh ghi đệm dữ liệu tương ứng là PORTA, PORTB, PORTC,PORTD và PORTE, các thanh ghi này được định địa theo địa chỉ byte theobit
Trang 161.5.2 Sơ đồ chân
Sơ đồ chân dạng PDIP (Lead Plastic Dual In-Line Package) hai hàngchân cắm 2 bên
Hình 1.2 Sơ đồ chân PIC 18F4520 dạng PDIP
Sau đây là giới thiệu cấu tạo chân loại 40 chân (40 Pin PDIP):
• Chân 1(MCLR /VPP/RE3) :
- MCLR là đầu vào Master Clear (reset) hoạt động ở mức thấp dể resettoàn bộ thiết bị
- VPP dùng để thay đổi điện áp đầu vào
- RE3 đầu vào số
Các chân thuộc cổng vào ra Port A
Trang 17• Chân 2(RA0/AN0):với RA0 là cổng vào ra số , AN0 là đầu vào tương
• Chân 5(RA3/AN3/VREF+): RA3 là cổng vào ra số, AN3 là đầu vàotương tự Input3 VREF+ đầu vào tương tự chuyển đổi A/D điện áp tham chiếu(mức cao)
• Chân 6 (RA4/T0CKI/C1OUT): RA4 là đầu vào ra số ,T0CKI đầu vàoxung bên ngoài của Timer0, C1OUT là đầu ra bộ so sánh 1
• Chân 7(RA5/AN4/ SS´ /HLVDIN/C2OUT): trong đó RA5 là cổng vào
ra số, AN4 là đầu vào tương tự Input 4, SS´ chọn đầu vào phụ thuộc SPI,HLVDIN đầu vào tương tự để dò điện áp, C2OUT đầu ra bộ so sánh 2
• Chân 13(OSC1/CLKI/RA7): với OSC1 là đầu vào bộ dao động thạchanh hoặc là đầu vào nguồn xung từ bên ngoài, khi ta nối dây với các thiết bịtương tự thì đầu vào này dạng ST( Schmitt Trigger input ưith CMOSlevels).CLKI là đầu vào CMOS cho nguồn xung bên ngoài và luôn được ghépnối với chân OSC1 Còn RA7 là chân vào ra sử dụng chung
• Chân 14(OSC2/CLKO/RA6): OSC2 là đầu ra bộ dao động thạch anhđược nối với thạch anh hoặc bộ cộng hưởng để lựa chọn dạng bộ dao độngthạch anh CLK0 có tần số bằng ¼ t ần số của OSC1 độ rộng chu kì lệnh,RA6 là đầu vào ra chung Các chân cổng vào ra hai chiều Port B Port B cóthể lập trình bằng phần mềm khi cho kéo đầu vào bên trong yếu lên trên toàn
bộ đầu vào
• Chân 33(RB0/INT0/FLT0/AN12): Với RB0 là cổng vào ra số, INT0 làđầu vào ngắt ngoài Interrup 0, FLT0 là đầu vào báo lỗi PWM được tăngcường CCP1, AN12 đầu vào tương tự Input 12
Trang 18• Chân 34(RB1/INT1/AN10): RB1 là đầu vào ra số , INT1 đầu vào ngắtngoài Interrup1, AN10 đầu tương tự Input 10
• Chân 35(RB2/INT2/AN8): RB2 là đầu vào ra số , INT2 đầu vào nắtngoài Interrup2, AN8 đầu tương tự Input 8
• Chân 36 (RB3/AN9/ccp2): RB3 là đầu vào ra số, AN9 đầu tương tựInput 9, CCP2 ( Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11): RB4 là đầu vào ra số , KBI0 thay đổi mởngắt, AN11 đầu tương tự Input 9
• Chân 38(RB5/KBI1/PGM): RB5 đầu vào ra số , KBI1 thay đổi mởngắt, PGM cho phép có thể lập trình ISCPTM ở điện áp thấp
• Chân 39(RB6/KBI2/PGC): RB6 là đầu vào ra số , KBI2 thay đổi mởngắt, PGC chân dùng trong mạch chạy và xung lập trình ICSP
• Chân 40(RB7/KBI3/PGD): RB7 đầu vào ra số, KBI3 thay đổi mởngắt, PGD chân dùng trong mạch chạy và xung lập trình ICSP
Các chân công Port C
• Chân 15(RC0/T1O SO/T13CKI):RC0 đầu vào ra số, T1OSO đầu ra bộdao động Timer1, T13CKI đầu vào xung bên ngoài Timer1/Timer3
• Chân 16(RC1/T1OSI/CCP2): RC1 đầu vào ra số, T1OSI đầu vào bộdao động Timer1, CCP2(Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 17(RC2/CCP1/P1A): RC2 lầ đầu vào ra số, CCP1(Capture1input/Compare 1 output/PWM1 output.), P1A đầu ra tăng cường CCP1
• Chân 18(RC3/SCK/SCL): RC3 là đầu vào ra số , SCK đầu vào ra đưachuỗi xung vào ra cho SPI lựa chọn, SCL đầu vào ra đưa chuỗi xung vào racho I2CTM lựa chọn
• Chân 23(RC4/SDI/SDA): RC4 là đầu vào ra số , SDI đầu vào dữ liệuAPI, SDA đầ u vào ra dữ liệu cho I2C
• Chân 24(RC5/SDO): RC5 đầu vào ra số , SDO đầu ra dữ liệu SPI
• Chân 25(RC6/TX/CK): RC6 đầu vào ra số , TX đầu ra chuyển đổi dị
bộ EUSARRT, CK đầu vào ra xung đồng bộ EUSART
Trang 19• Chân 26(RC7/RX/DT): RC7 đầu vào ra số , RX đầu vào nhận dị bộEUSART, DT đầu vào ra dữ liệu đồng bộ EUSART.
Các chân cổng Port D( Port D có thể vào ra hai hướng hoặc cổng song
song phụ thuộc(PSP) cho giao diện vi xử lý và khi đó các đầu vào phải làTTL
• Chân 19(RD0/PSP0): RD0 đầu vào ra số, PSP0 cổng dữ liệu songsong phụ thuộc
• Chân 20(RD1/PSP1): RD1 đầu vào ra số, PSP1cổ ng dữ liệu songsong phụ thuộc
• Chân 21(RD2/PSP2): RD2 đầu vào ra số, PSP2 cổng dữ liệu songsong phụ thuộc
• Chân 22(RD3/PSP3): RD3 đầu vào ra số, PSP3 cổng dữ liệu songsong phụ thuộc
• Chân 27(RD4/PSP4): RD4 đầu vào ra số, PSP4 cổng dữ liệu songsong phụ thuộc
• Chân 28(RD5/PSP5/P1B): RD5 đầu vào ra số, PSP5 cổng dữ liệusong song phụ thuộc, P1B đầu ra được tăng cường CCP1
• Chân 29(RD6/PSP6/P1C): RD6 đầu vào ra số, PSP6 cổng dữ liệu songsong phụ thuộc, P1C đầu ra được tăng cường CCP1
• Chân 30(RD7/PSP7/P1D): RD7 đầu vào ra số, PSP7 cổng dữ liệusong song phụ thuộc, P1D đầu ra được tăng cường CCP1
Trang 20Các chân khác
• Chân 12,31(VSS): nối đất chuẩn cho I/O và logic
• Chân 11,32(VDD): cung cấp nguồn dương cho I/O và logic
Loại 44 chân có thêm một số chân phụ khác khi cần thiết ta có thể dễdàng tra trong DataSheet Chi tiết hơn chúng ta có thể thấy qua sơ đồ khối củaPic18F4420/4520 trong tài liệu do microchip cung cấp sẽ có hoàn toàn đầy đủthông tin đặc điểm cấu tạo
1.5.3 Tố chức bộ nhớ
Bộ nhớ vi điều khiển PIC 18f4520 bao gồm 3 loại:
Bộ nhớ chương trình (Program memory)
Bộ nhớ dữ liệu RAM (Data RAM)
Bộ nhớ EEPROM (Data EEPROM)
Bộ nhớ vi điều khiển PIC 18F4520 được thiết kế theo kiến trúc Havard,
bộ nhớ chương trình và bộ nhớ dữ liệu được thiết kế riêng đường Bus, chophép CPU truy cập cùng lúc tới bộ nhớ chương trình và bộ nhớ dữ liệu Bộnhớ dữ liệu EEPROM được sử dụng để lưu trữ dữ liệu khi mất điện, nó coinhư là một ngoại vi của PIC 18F4520 bởi việc truy cập bộ nhớ này thông quacác thanh ghi điều khiển
Bộ nhớ chương trình
Thanh ghi đếm chương trinh PC (Program Counter) của PIC 18F4520 có
21 bit nên có thể địa chỉ hóa 2 Mbyte bộ nhớ chương trình Bộ nhớ Flash củaPIC 18F4520 có dung lượng 32 Kbyte nên chứa được 16384 lệnh từ đơn(Single – Word intructions), với dải địa chỉ từ 0000h đến 7FFFh Nếu đọc ởvùng nhớ ngoài 32 Kbyte của PIC 18f4520 và trong khoảng 2 Mbyte mà nó
có thể quản lý thì dữ liệu sẽ trả về là “0” Pic 18f4520 có 31 mức ngăn xếp
Vector Reset của PIC 18f4520 được đặt ở địa chỉ 0000h, khi reset nộidung của thanh ghi đếm chương trình PC sẽ được xóa về “0” Các thanh ghicủa PIC 18f4520 sẽ được tải lại giá trị mặc định
Trang 21Vector ngắt ưu tiên cao (High – Priority Interrup Vector) được đặt ở địachỉ 0008h, Vector ngắt ưu tiên thấp (Low – Priority Interrup Vector) được đặt
ở địa chỉ 0018h Khi xảy ra ngắt thì thanh ghi đếm chương trình PC sẽ đượcgắn địa chỉ theo ngắt tương ứng để gọi chương trình con phục vụ ngắt
Hình 1.3 Sơ đồ tổ chức bộ nhớ chương trình và ngăn xếp
Thanh ghi đếm chương trình PC 21 bit chứa trong 3 thanh ghi 8 bitriêng biệt, 8 bit thấp chứa trong thanh ghi PCL, 8 bit tiếp theo chứa trongthanh ghi PCH , 5 bit cao chứa trong thanh ghi PCU Thanh ghi PCH và PCUkhông cho phép truy cập trực tiếp mà phải truy cập thông qua 2 thanh ghiPCLATH và PCLATU tương ứng Thanh ghi đếm chương trình PC được sửdụng để chứa địa chỉ của lệnh cần thực hiện PIC 18f4520 được thiết kế theo
kĩ thuật đường ống lệnh nên việc thực hiện lệnh PC-2 và đọc mã lệnh PC
Trang 22được diễn ra tại cùng một thời điểm Mỗi lệnh chiếm 2 byte bộ nhớ chươngtrình nên thanh ghi đếm chương trình sẽ được cộng thêm 2 sau mỗi lệnh.
Bộ nhớ dữ liệu RAM
Bộ nhớ dữ liệu RAM 1536 byte (SRAM) được chia thành 2 vùng chứcnăng riêng biệt, vùng RAM đa dụng GPR (General Purpose Registers) sửdụng để chứa dữ liệu, vùng các thanh ghi chức năng đặc biệt SFR ( SpecialFunction Registers) chứa thanh ghi chức năng điều khiển ngoại vi và CPU
Bộ nhớ dữ liệu RAM được chia thành 16 Bank từ Bank 0 đến Bank 15, vùngRAM đa dụng nằm từ Bank 0 đến Bank 2, các thanh ghi SFR nằm ở Bank 15.Vùng địa chỉ từ 300h đến EFFh không được sử dụng Đọc ở vùng này sẽ trả
về giá trị 00h Bốn bit thấp của thanh ghi lựa chọn băng BSR (Bank SelectRegister) được sử dụng để lựa chọn truy cập băng
Hình 1.4 Sơ đồ tổ chức bộ nhớ dữ liệu RAM
Trang 23Hình 1.5 Phân bổ địa chỉ của các thanh ghi chức năng đặc biệt SFR
Bộ nhớ dữ liệu EEPROM
Bộ nhớ dứ liệu EEPROM của PIC 18f4520 là bộ nhớ mảng không bịmất dữ liệu khi mất điện, độc lập với bộ nhớ chương trình và bộ nhớ dữ liệuRAM, được sử dụng để lưu trữ dữ liệu lâu dài Nó có thể ghi/đọc dữliệu 1000.000 lần, dữ liệu có thể lưu trữ trong bộ nhớ 100 năm Điều khiển vàđọc/ghi bộ nhớ dữ liệu EEPROM không truy cập trực tiếp vào tập thanh ghihay khoảng trống bộ nhớ chương trình mà được truy cập, điều khiển gián tiếpqua các thanh ghi chức năng SFR
Trang 24Bốn thanh ghi SFR được sử dụng để ghi/đọc bộ nhớ dữ liệu EEPROMlà:
EECON1 – thanh ghi điều khiển EEPROM 1
EECON2 – thanh ghi điều khiển EEPROM 2
EEDATA – thanh ghi dữ liệu EEPROM
EEADR – thanh ghi địa chỉ EEPROM
Bộ nhớ dữ liệu EEPROM cho phép đọc/ghi dữ liệu theo byte Thanh ghiEEDATA được sử dụng để chứa dữ liệu, thanh ghi EEADR sử dụng để chứađịa chỉ truy cập vào các ô nhớ của EEPROM Bộ nhớ dữ liệu EEPROM códung lượng 256 byte, 8 bit của thanh ghi địa chỉ EEADR sẽ đia chỉ hóa cácbyte của bộ nhớ từ địa chỉ 00h đến FFh Một byte dữ liệu ghi vào bộ nhớEEPROM sẽ tự động xóa đi dữ liệu trước đó
-Các thanh ghi của EEPROM
Thanh ghi điều khiển EEPROM:EECON1
Trang 250 = Truy cập bộ nhớ dữ liệu EEPROM
bit 6: CFGS: Bit lựa chọn cấu hình hoặc bộ nhớ chương trình Flash/dữ liệu
EEPROM
1 = truy cập thanh ghi cấu hình
0 = Truy cập bộ nhớ chương trình Flash hoặc dữ liệu EEPROM
bit 5: Không sử dụng, đọc trả về giá trị ‘0’
bit 4: FREE: Bit cho phép xóa hàng bộ nhớ Flash
1 = Xóa hàng bộ nhớ chương trình được thiết lập, địa chỉ chứa trong thanhghi TBLPTR, được xóa từ lệnh WR kế tiếp
1 = Cho phép ghi vào bộ nhớ chương trình Flash /dữ liệu EEPROM
0 = Không cho phép ghi
bit 1: WR: Bit điều khiển ghi
1 = Khởi tạo quá trình xóa/ghi bộ nhớ dữ liệu EEPROM hoặc xóa bộ nhớchương trình hoặc ghi bộ nhớ chương trình (Được xóa bằng phần cứngkhi việc ghi hoàn thành Thiết lập được bằng phần mềm nhưng không đượcxóa)
0 = Quá trình ghi hoàn thanh
bit 0: RD: Bit điều khiển đọc
1 = Khởi tạo quá trình đọc bộ nhớ EEPROM ( Đọc mất một chu kỳ máy Bit
RD được xóa bằng phần cứng Thiết lập được bằng phần mềm nhưng khôngđược xóa Bit RD không được thiết lập khi EEPGD = 1 hoặc CFGS = 1.)
0 = Không khởi tạo quá trình đọc EEPROM
Trang 26Thanh ghi điều khiển EEPROM 2: EECON2
Thanh ghi EECON2 không phải là thanh vật lý, nó được dành riêng cho việcghi và xóa bộ nhớ Đọc EECON2 sẽ được ‘0’
Thanh ghi dữ liệu EEPROM: EEDATA
Thanh ghi EEDATA có 8 bit, là thanh ghi đệm dữ liệu cho bộ nhớ dữ liệuEEPROM, được sử dụng để truy cập vào dữ liệu của bộ nhớ (Cho phép đọcghi bằng phần mềm, mỗi ô nhớ của EEPROM có 8 bit)
Thanh ghi địa chỉ EEPROM: EEADR: Thanh ghi EEADR có 8 bit, là thanh
ghi địa chỉ của bộ nhớ dữ liệu EEPROM 8 bit của thanh ghi EEADR được sửdụng để địa chỉ hóa 256 ô nhớ của EEPROM từ 00h đến FFh
1.5.4 Khối tạo dao động
PIC 18f4520 có thể hoạt động ở một trong 10 chế độ tạo dao động khácnhau Việc lựa chọn các chế độ dao động nhờ các bit FOSC3:FOSC0 trongthanh ghi CONFIG1H
-Các chế độ dao động:
LP (Low – Power Crystal) nguồn xung thạch anh ngoài, nguồn thấp
XT (Crystal/Resonator) thạch anh/bộ cộng hưởng bên ngoài
HS (High – Speed Crystal/Resonator) thạch anh/bộ cộng hưởng bênngoài tốc độ cao
HSPLL nhân 4 lần tần số HS bằng vòng khóa pha (Phase LockedLoop)
RC (External Crystal/Resonator) tạo dao động bằng mạch RC bênngoài, phát xung FOSC/4 ra chân RA6
RCIO tạo dao động bằng mạch RC ngoài, vào /ra trên chân RA6
INTIO1 bộ tạo dao động nội, phát xung FOSC/4 ra chân RA6, vào/ratrên chân RA7
INTIO2 bộ tạo dao động nội, vào/ra trên chân RA6 và RA7
EC bộ phát xung ngoài, phát xung FOSC/4 ra chân RA6
ECIO bộ phát xung ngoài, vào/ra trên chân RA6
Trang 27-Tạo dao động bằng thạch ang ngoài (Crystal/Ceramic Resonator)
Trong chế độ tạo dao động LP, XT, HZ, HSPLL sử dụng thạch anh(Crystal) chưa có tụ điện hoặc mạch cộng hưởng thạch anh bọc gốm đã có tụđiện (Ceramic Resonator) Ở các chế độ này bộ tạo dao động kết nối với viđiều khiển PIC 18F4520 qua hai chân OSC1 và OSC2
-Nguồn xung ngoài (External Clock)
Chế độ EC và ECIO sử dụng nguồn xung ngoài làm làm xung hệ thống
và được nối qua cổng NOT trước khi đưa vào chân OSC1/CLKI
Hình 1.6 Chế độ dao động EC
Chế độ nguồn xung ngoài EC (External Clock), nguồn xung được lấy
từ bên ngoài nối qua cổng NOT trước khi đưa vào chân OSC1/CLKI và chânOSC2/CLKO phát ra tần số bằng 1/4 tần số đầu vào
Chế độ nguồn xung ngoài ECIO (External Clock Input Output), nguồnxung được lấy từ bên ngoài nối qua cổng NOT trước khi đưa vào OSC1/CLKI
và chân OSC2/CLKO là chân vào/ra RA6
Hình 1.7 Chế độ dao động ECIO
-Tạo dao động bằng mạch RC ngoài
Chế độ tạo dao động RC và RCIO của PIC 18f4520 sử dụng mạch tạodao động RC (một điện trở REXT và một tụ điện CEXT) để tạo dao động.Chế độ RC và RCIO được sử dụng cho các ứng dụng không nhạy cảm vớithời gian để tiết kiệm chi phí thiết kế
Trang 28Tần số của bộ dao động phụ thuộc vào các yếu tố sau:
Sư biến thể của linh kiện khi sản xuất
Sai số của điện trở REXT tụ điện CEXT
Sự khác biệt điện dụng giữa các kiểu đóng gói tụ điện
Chế độ phát xung RC (Resistor Capacitor), với nguồn xung từ bộ phátxung RC bên ngoài đưa vào chân OSC1, chân OSC2 phát xung với tần sốbằng 1/4 tần số đầu vào, tần số này sử dụng với mục đích kiểm tra và đồngbộ
Hình 1.8 Chế độ dao động RC
Chế độ phát xung RCIO (Resistor Capacutor Input Output), với nguồnxung từ bộ phát xung RC bên ngoài đưa vào chân OSC1, chân OSC2 được sửdụng là chân vào/ra RA6
Trang 29Hình 1.9 Chế độ dao động RCIO
Giá trị linh kiện: 3K < REXT < 100K; CEXT > 20pF
Khối phát xung nội
Vi điều khiển PIC 18F4520 có hai bộ phát xung nội, một bộ INTOSC 8MHz và một bộ dao động INTRC 31 KHz, cả hai có thể được thiết lập làmxung hệ thống Sử dụng nguồn xung nội sẽ tiếp kiệm được chi phí sử dụng bộdao động bên ngoài, hai chân OSC1/RA7 và OSC1/RA6 có thể sử dụng làmchân vào/ra Để lựa chọn sử dụng nguồn xung nội thì phải thiết lập cho khốiphát xung hệ thống hoạt động ở chế độ INTIO1 và INTIO2
Nguồn xung nội:
Bộ dao động nội INTOSC 8 MHz sẽ đưa qua bộ chia tần ( Postscaler)
để tạo ra dải tần số từ 31 KHz đến 8 MHz Sử dụng các bit OSCCON<6:4> đểlựa chọn tần số phù hợp cho hệ thống
Bộ dao động RC nội INTRC 31 KHz không những có thể làm xungcho hệ thống mà nó còn làm nguồn xung cho bộ định thời gian bật nguồn(Power – up Timer), bộ đảm bảo an toàn nguồn xung (Fail-Safe ClockMinitor), bộ định thời gian Reset hệ thống (Watchdog timer) và bộ tăng tốckhởi động (Two-speed Start-up)
Chế độ INTIO:
Chế độ INTIO sử dụng nguồn xung nội INTOSC hoặc INTrc làm xung
hệ thống, chế độ INTIO được chia thành hai chế dộ INTIO1 và INTIO2
Trang 30Với chế độ INTIO1, chân OSC2 phát cung FOSC/4 còn chân OSC1 làvào ra số RA7.
Với chế độ INTIO2, cả hai chân OSC2/RA6 và OSC1/RA7 đều là haichân vào/ra số
1.5.5 Các thanh ghi của bộ phát xung
Thanh ghi chuyến chế độ bộ phát xung: OSCTUNE
bit 7: INTSRC: Bit lựa chọn nguồn xung nội tần số thấp
1 = Chọn tần số 31.25 kHz từ bộ chia tần Postscaler (8 MHz INTOSC chia256)
0 = Chọn tần số 31 kHz từ bộ dao động nội INTRC
bit 6: PLLEN: Bit lựa chọn bộ nhân PLL cho chế độ INTOSC
1 = Cho phép xung từ INTOSC qua bộ nhân tần số PLL (chỉ sử dụng với tần
số 4 MHz và 8 MHz)
0 = Không cho phép PLL
bit 5: Không sử dụng: Đọc được ‘0’
bit 4-0: TUN4:TUN0: Bit chuyển chế độ tần số
01111 = Tần số Max
Trang 31
Thanh ghi điều khiển bộ phát xung OSCCON
bit 7: IDLEN: Bit cho phép chế độ Idle
1 = Chuyển sang chế độ Idle bằng lệnh SLEEP
0 = Chuyển sang chế độ Sleep bằng lệnh SLEEP
bit 6-4: IRCF2:IRCF0: Các bit lựa chọn hệ số chia bộ phát cung nội INTOSC
111 = 8 MHz (xung trực tiếp từ INTOSC)
000 = 31 kHz (xung từ INTOSC/256 hoặc trực tiếp từ INTRC)
bit 3: OSTS: Bit trạng thái bộ bộ định thời khởi động (Oscillator Start-up
Timer)
1 = Kết thúc thời gian chờ khởi động từ bộ OST; bộ phát xung chính hoạtđộng
0 = Đang đếm thời gian khởi động; bộ phát xung chính chưa hoạt động
bit 2: IOFS: Bit báo sự ổn định tín hiệu bộ phát xung nội INTOSC
1 = Bộ phát xung nội INTOSC ở trạng thái ổn định
0 = Bộ phát xung nội INTOSC chưa ổn định
Trang 32bit 1-0: SCS1:SCS0: Bit lựa chọn nguồn xung cho hệ thống
1x = Nguồn hệ thống từ bộ dao động nội
01 = Nguồn xung phụ, nối qua các chân của Timer1(Secondary oscillator)
00 = Nguồn xung chính qua các chân OSC1, OSC2 (Primary oscillator)
Thanh ghi cấu hình 1 byte cao: CONFIG1H
bit 7: IESO: Bit cho phép luân phiên bộ phát xung nội/ngoại
bit 5-4: không sử dụng: đọc sẽ được ‘0’
bit 3-0: FOSC3:FOSC0: Bit lựa chọn bộ phát xung
11xx = Chế độ phát xung RC ngoài, chức năng phát xung CLKO trên chânRA6
101x = Chế độ phát xung RC ngoài, chức năng phát xung CLKO trên chânRA6
1001 = Chế độ phát xung nội, chức năng phát xung CLKO trên chân RA6,vào/ra trên
chân RA7
1000 = Chế độ phát xung nội, vào/ra trên chân RA6 và RA7
0111 = Chế độ dao động RC ngoài, vào/ra trên chân RA6
0110 = Chế độ HS, cho phép PLL (xung hệ thống được nhân 4)
Trang 330101 = Chế độ EC, vào/ra trên chân RA6
0100 = Chế độ EC, phát xung trên chân RA6
0011 = Chế độ phát xung RC ngoài, chức năng phát xung CLKO trên chânRA6
0010 = Chế độ HS
0001 = Chế độ XT
0000 = Chế độ LP
1.5.6 Các thanh ghi của hoạt động Reset
Thanh ghi điều khiển Reset: RCON
bit 7: IPEN: Bit cho phép ưu tiên ngắt
1 = Cho phép ưu tiên ngắt
0 = Không cho phép ưu tiên ngắt
bit 6: SBOREN: Bit cho phép reset BOR bằng phần mềm
Nếu BOREN1:BOREN0 = 01:
1 = Cho phép reset BOR
0 = Không cho phép reset BOR
Nếu BOREN1:BOREN0 = 00, 10 or 11:
Không được sử dụng, đọc sẽ được ‘0’
bit 5: Không được sử dụng: Đọc sẽ được ‘0’
bit 4: RI: Bit cờ lệnh RESET
1 = Lệnh RESET không được thực hiện
0 = Lệnh RESET được thực hiện (phải được thiết lập sau khi xảy ra ngắtBOR)
bit 3: TO: Bit cờ báo Watchdog Time-out (thời gian đặt cho bộ WDT)
1 = Thiết lâp khi bật nguồn (power-up), lệnh CLRWDT hoặc lệnh SLEEP