Với sự xuất hiện cuả các Chip vi xử lý và máytính cùng với việc ứng dụng rộng rãi của nó đã đẩy vấn đề điều khiển, tự động hoátrong công nghiệp lên một bước cao hơn để dần dần cải thiện
Trang 2LỜI NÓI ĐẦU
Trong thời đại khoa học ngày nay, lĩnh vực khoa học kỹ thuật phát triển nhanh
từng ngày, đặc biệt lĩnh vực công nghệ điện tử trở nên cần thiết cho xã hội đó chính làđộng lực để tạo nên một xã hội tiên tiến - hiện đại Hiện nay khoa học – kỹ thuật đấtnước ta đang từng bước phát triển hòa chung vào sự phát triển chung của toàn cầu.Trên đà phát triển đó, vấn đề tự động hoá – khoa học điện tử được ứng dụng một cáchrộng rãi trong quá trình sản xuất đặc biệt là ngành điện tử đã ứng dụng rất nhiều trongcông nghiệp Trong lĩnh vực điều khiển, từ khi công nghệ chế tạo loại vi mạch lậptrình phát triển đã đem đến các kỹ thuật điều khiển hiện đại có nhiều ưu điểm vượtbậc trong các ngành công nghiệp như công nghiệp luyện kim, công nghiệp thực phẩm
và sản xuất hàng tiêu dùng việc đếm và phân loại sản phẩm là vô cùng quan trọng vàcần thiết trong sản xuất công nghiệp Với sự xuất hiện cuả các Chip vi xử lý và máytính cùng với việc ứng dụng rộng rãi của nó đã đẩy vấn đề điều khiển, tự động hoátrong công nghiệp lên một bước cao hơn để dần dần cải thiện được lao động chân tay
của con người.Với tầm quan trọng đó nhóm chúng em đã quyết định thực hiện đề tài:
“Mach Đếm Và Phân Loại Sản Phảm ”
Những kiến thức và năng lực đạt được trong quá trình học tập tại trường sẽ đượcđánh giá qua đợt bảo vệ đồ án tốt nghiệp Vì chúng em cố gắng tận dụng tất cả nhữngkiến thức đã học ở trường cùng với sự tìm tòi nghiên cứu, để có thể hoàn thành tốt đồ
án tốt nghiệp này Những kết quả những sản phẩm đạt được trong ngày hôm nay tuykhông lớn lao nhưng nó là thành quả của cả quá trình học tập tại trường Là thànhcông đầu tiên của chúng em trước khi ra trường
Do khoảng thời gian và kiến thức còn hạn hẹp, mặc dù chúng em cố gắng hoànthành đồ án tốt nghiệp này đúng thời hạn Nên không tránh khỏi những thiếu xótmong Quý thầy cô thông cảm Chúng em mong nhận được những ý kiến đóng góp tậntình của quý thầy cô và các bạn Cuối cùng em xin chân thành cảm ơn quý thầy cô vàcác bạn
Nhóm Sinh Viên Thực Hiện:Nguyễn Kim QuangNguyễn Hữu Phúc
Trang 3LỜI CẢM ƠN
Đồ án tốt nghiệp là đúc kết quá trình học tập trong những năm tháng tại trường Cao Đẳng Kỹ Thuật Cao
Thắng, để đạt được kết quả như hôm nay, ngoài sự phấn đấu
của từng thành viên trong nhóm thực hiện là sự quan tâm
giúp đỡ của quý thầy cô tại trường, đặc biệt là các thầy cô
tại khoa điện tử tin học bên cạnh đó là sự chia sẽ kinh
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Trang 5_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tp HCM, Ngày Tháng 07 Năm 2010
Ký Tên
TRƯƠNG HOÀNG HOA THÁM
Trang 7CHƯƠNG 1: DẪN NHẬP
1 ĐẶT VẤN ĐỀ:
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thốngđiều khiển dần được tự động hóa.Với các kỹ thuật tiên tiến như vi xử lý, vi mạch số…được ứng dụng vào lĩnh vực điều khiển, tự động hóa trong công nghiệp với côngnghệ ngày càng hiện đại và tinh vi
Được sự đồng ý của thầy cô Khoa Điện Tử Tin Học.Nhóm chúng em quyết định làm
đề tài tốt nghiệp: “MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM”.
2 NỘI DUNG ĐỀ TÀI:
Sử dụng PIC16F877A để lập trình mạch đếm và phân loại sản phẩm theo kích thước.Dùng các phương pháp hiển thị ra led 7 đoạn
Thiết kê và thi công mạch
3 MỤC ĐÍCH NGHIÊN CỨU:
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học
để đủ điều kiện ra trường Cụ thể khi nghiên cứu đề tài là chúng em muốn hiểu rỏ hơnviệc ứng dụng vi điều khiển trong quá trình sản xuất công nghiệp
Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lạinhững kiến thức đã học ở trường Đồng thời phát huy tính sáng tạo, khả năng giảiquyết một vấn đề theo nhu cầu đặt ra Và đây cũng là dịp để chúng em khẳng địnhmình trước khi ra trường để tham gia vào các hoạt động sản xuất của xã hội
Trang 8CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
A GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC 16F877A
1 Giới thiệu về vi điều khiển PIC:
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ềukhiể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 hãng Microchip nghiên cứu pháttriển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay
Cách phân lọai PIC theo chữ cái:
Các họ PIC xxCxxx được đưa vào một nhóm, gọi là OPT (One Time Programmable) :chúng ta chỉ có thể nạp chương trình cho nó một lần duy nhất
Nhóm thứ hai có chữ F hoặc LF:chúng ta gọi nhóm này là nhóm Flash ,nhóm này chophép ghi xóa nhiều lần bằng các mạch điện tử thông thường
Cách phân lọai PIC theo hai con số đầu tiên của sản phẩm :
-Loại thứ nhất là dòng PIC cơ bản (Base_line), gồm các PIC 12Cxxx, có độ dài lệnh
12 bit
-Loại thứ hai là dòng PIC 10F, 12F , 16F, gọi là dòng phổ thông (Mid Range), có độdài lệnh là 14 bit
-Loại thứ ba là dóng PIC 18F (High End) , độ dài lệnh là 16 bit
PIC 16F877A là dòng PIC phổ biến nhất , đủ mạnh về tính năng, bộ nhớ đủcho các ứng dụng thông thường
2 Vi điều khiển PIC16F877A :
2.1 Kiến trúc Pic
Trang 9
Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc: kiến trúcVon-Neumann và kiến trúc Harvard
Trang 10Hình 2.1: Kiến trúc Harvard và kiến trúc Von-Neuman
Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Harvard Điểm khác biệt giữa kiếntrúc Harvard và kiến trúc Von-Neumann là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương trình Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trongmột bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ chương trình và bộnhớ dữ liệu Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao,vì vớicấu trúc đó, trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ liệu hoặc bộnhớ chương trình Như vậy có thể nói kiến trúc Von-Neumann không thích hợp với cấu trúccủa một vi điều khiển
Đối với kiến trúc Harvard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai
bộ nhớ riêng biệt Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ,như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể Một điểm cần chú ý nữa là tậplệnh trong kiến trúc Harvard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển
mà không phụ thuộc vào cấu trúc dữ liệu Ví dụ, đối với vi điều khiển dòng 16Fxxx, độ dàilệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành từng byte), còn đối với kiến trúcVon-Neumann, độ dài lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từngbyte) Đặc điểm này được minh họa cụ thể trong hình 3.1Tổ chức phần cứng của một viđiều khiển có thể thiết kế theo một trong hai kiến trúc: Harvard và Von Neumann.Tổchức phần cứng của PIC16F877A được thết kế theo kiến trúc Harvard
2.2 Tính năng cơ bản :
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối
đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit,
bộ nhớ dữ liệu 368 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256byte
Số PORT I/O là 5 với 33 pin I/O
Trang 11Các đặc tính ngoại vi bao gồm các khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựavào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rông xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, 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ên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm
Nạp được chương trình ngay trên mạch điện ICSP (In Circuit SerialProgramming)
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
Port vào/ra 4 port, với 32 chân 5 port, với 33 chân vào/ra
Trang 12Bộ định thời 2 bộ 16 bit 2 bộ 8 bit, 1 bộ 16 bit
1 bộ giao tiếp song song PSP
1 bộ giao tiếp nối tiếp đồng bộSSP
Trang 13Như đã nói ở trên , vi điều khiển PIC có kiến trúc Harvard, trong đó CPU truycập chương trình và dữ liệu được trên hai bus riêng biệt, nên làm tăng đáng kể băngthông so với kiến trúc Von Neumann trong đó CPU truy cập chương trình và dữ liệutrên cùng một bus.
Việc tách riêng bộ nhớ chương trình và bộ nhớ dữ liệu cho phép số bit của từ lệnh cóthể khác với số bit của dữ liệu Ở PIC 16F877A, từ lệnh dài 14 bit , từ dữ liệu 8 bit.PIC 16F877A chứa một bộ ALU 8 bit và thanh ghi làm việc WR (working register).ALU là đơn vị tính toán số học và logic, nó thực hiên các phép tình số và đại số Boole
Trang 14trên thanh ghi làm việc WR và các thanh ghi dữ liệu ALU có thể thực hiện các phépcộng, trừ, dịch bit và các phép toán logic
3.2 Sơ đồ chân PIC16F877A:
3.3 Tính năng các chân :
Vpp
Vào ra số lối vào analog 2 Lối vào điện
áp chuẩn V-ref của ADC Lối ra Vref so
Trang 15áp chuẩn V-ref của ADC
ngoài cho timer Lối ra bộ so sánh 1
ngoài cho timer 1
Lối ra Compare2 Lối ra PWM2
Lối ra PWM1
I2C
bộ Xung nhịp truyền đồng bộ
Trang 16RC7/RX/DT 26 I/O Vào/ra số Cổng nhận không đồng bộ Dữ
liệu đồng bộ RD0
I/O I/O I/O I/O I/O I/O I/O I/O
Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra số Cổng song song tớ Vào/ra sô Cổng song song tớ
Bộ nhớ chương trình của vi điều
khiển PIC16F877A là bộ nhớ flash,
dung lượng bộ nhớ 8K word (1 word =
14 bit) và được phân thành nhiều trang
(từ page0 đến page 3) Như vậy bộ
nhớ chương trình có khả năng chứa
Trang 17được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14bit).
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h(Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h(Interrupt vector) Bộ nhớ chương trình không bao gồm bộ nhớ stack và không đượcđịa chỉ hóa bởi bộ đếm chương trình
Bộ nhớ chương trình PIC16F877A
4.2 Bộ nhớ dữ liệu.
Bộ nhớ dữ liệu được chia thành 4 bank, mỗi bank có dung lượng 128 byte
RAM tĩnh Mỗi bank bao gồm các thanh ghi có chức năng đặc biệt SFR (Special
Function Register) nằm ở vùng địa chỉ thấp, và các thanh ghi mục đích chung GPR
(General Purpose Register) nằm ở vùng địa chỉ cao Các thanh ghi SFR thường xuyên
được sử dụng như STATUS, INTCON, FSR được bố trí trên tất cả các bankgiúp thuận tiện trong quá trình truy xuất
Trang 18Sơ đồ tổ chức bộ nhớ dữ liệu PIC16F877A
Trang 19động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình theođúng qui trình định trước.
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa chỉ
và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ 9 sẽghi đè
lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi
đè lên giá trị cất vào Stack lần thứ 2
4.3 Bộ nhớ EEPROM
Một bộ nhớ dữ liệu đặc biệt kiểu EEPROM dung lương 256 byte được tích hợptrong PIC 16F877A và được xem như thiết bị ngoại vi được nối vào bus dữ liệu, bộnhớ này có thể ghi đọc trong quá trình hoạt động dưới sự điều khiển của chương trình
Bộ nhớ EEPROM thường dùng các lưu trữ các chương trình không bị thay đổi nhưcác hằng chuẩn, các dữ liệu của người sử dụng và không bị mất đi khi ngắt nguồnnuôi
5 Các cổng xuất nhập.
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 Bên cạnh đó, do vi điều khiển được tích hợp sẵn bêntrong 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ôngthườ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
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,PORTC, PORTD và PORTE
Trang 20Cấu trúc cơ bản của chân port.
5.1 Port A.
PORTA bao gồm 6 I/O pin ( RA0 –RA5) Đây là các chân “hai chiều”(bidirectional pin), nghĩa là có thể xuất và nhập được Chức năng I/O này được điềukhiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trongPORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA
và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output, ta
“clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA
Chân RA4 dùng chung với lối vào xung nhịp cho timer0 khi dùng bộ đếm xung từ bênngoài
Các chân khác của cổng A được ghép lối vào của các bộ so sánh tương tự và bộ biếnđổi ADC 8 kênh
5.2 Port B.
PORTB (RPB) gồm 8 pin I/O ( RB0 – RB7) Thanh ghi điều khiển xuất nhậptương ứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trongquá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTBcòn liên quan đến ngắt ngoại vi và bộ Timer0
Trang 21PORTB còn được tích hợp chức năng điện trở kéo lên (20k ohm) được điều khiển bởichương trình.
Chân RB0 có thể lựa chọn là lối vào của ngắt ngoài Extint
Có 3 chân của cổng B được ghép lối với chức năng ICSP là RB6, RB7, RB3 tươngứng với lối vào PGC, PGD, LVP khi nạp trình.Lối vào RB4 và RB7 làm phát sinhngắt RBIF khi thay đổi trạng thái khi các chân này định nghĩa là các lối vào Trạngthái hiện tại của lối vào này được so sánh với trạng thái được chốt lại tại lần đọc trước
đó Khi có sự khác nhau thì cờ ngắt RBIF được lập
5.3 Port C.
PORTC (RPC) gồm 8 pin I/O (RC0 – RC7) Thanh ghi điều khiển xuất nhậptương ứng là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ sosánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART
6.Các bộ định thời
6.1 Timer 0.
• Bộ đếm 8 bit
• Ghi/đọc được
• Có bộ chia 8 bit lập trình được
• Chọn xung nhịp bên ngoài hoặc bên trong
• Sinh ngắt TOIF khi tràn chuyền từ FFh→ 00h
• Chọn sườn xung khi lấy xung nhịp từ bên ngoài
Trang 22Timer0 dùng làm bộ đếm xung nhịp của vi điều khiển vể tạo ra một bộ đếm thời gian.Chế độ đếm thời gian được chọn bằng cách đặt bit T0CS = 0 (bit OPTION<5>).Trong các chế độ đếm thời gian, thanh ghi TMR0 tăng một đơn vị sau mỗi chu kỳmáy Thanh ghỉ TMR0 có thể được ghi đọc trong chương trình để xác lập hoặc lấy giátrị hiện thời của timer0.
Hình : Sơ đồ khối Timer0
Timer0 dùng để đếm các xung từ bên ngoài cấp vào chân RA4 Chế độ đếmxung được chọn bằng cách đặt T0CS = 1 Trong chế độ này thanh ghi Timer0 tăngmột đơn vị sau mỗi sườn lên hoặc sườn xuống tùy thuộc vào trạng thái của bit T0SE
Bộ chia trước được dùng chung cho hai khối watchdog và Timer0 Việc gắn bộ chiatrước cho khối nào được chọn bằng bít PSA(OPTION<3>) Hệ số chia phụ thuộc giátrị của bit PS2:PS1:PS0 của thanh ghi OPTION
Ngắt timer0 xảy ra khi thanh ghi TMR0 tràn, chuyển từ FFh→00h Sự tràn này
sẽ đặt bít T0IF = 1 Ngắt T0IF có thể che bằng bit T0IE Cờ T0IF phải được xóa bằngphần mềm
Trang 23
6.2 Timer 1.
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanhghi (TMR1H:TMR1L) Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>) Bit điều khiểncủa Timer1 sẽ là TMR1IE (PIE<0>) Tương tự như Timer0, Timer1 cũng có hai chế
độ hoạt động: chế độ định thời (timer) với xung kích là xung clock của oscillator (tần
số của timer bằng ¼ tần số của oscillator) và chế độ đếm (counter) với xung kích làxung phản ánh các sự kiện cần đếm lấy từ bên ngoài thông qua chânRC0/T1OSO/T1CKI (cạnh tác động là cạnh lên) Việc lựa chọn xung tác động (tươngứng với việc lựa chọn chế độ hoạt động là timer hay counter) được điều khiển bởi bitTMR1CS (T1CON<1>) Sau đây là sơ đồ khối của Timer1:
Hình :Sơ đồ khối của Timer1:
6.3 Timer 2.
Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler vàpostscaler Thanh ghi chứa giá trị đếm của Timer2 là TMR2 Bit cho phép ngắtTimer2 tác động là TMR2ON (T2CON<2>) Cờ ngắt của Timer2 là bit TMR2IF(PIR1<1>) Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần
số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiểnbởi các bit T2CKPS1:T2CKPS0 (T2CON<1:0>))
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 cònđóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP
Trang 24Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong khi Timer1
là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh) Timer0, Timer1 và Timer2 đều có haichế độ hoạt động là timer và counter Xung clock có tần số bằng ¼ tần số củaoscillator Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiếtlập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác động) trong khi các thông sốcủa xung tác động lên Timer1 là cố định Timer2 được hỗ trợ bởi hai bộ chia tần sốprescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cố định là cạnh lên.Timer1 có quan hệ với khối CCP, trong khi Timer2 được kết nối với khối SSP
Sơ đồ khối của Timer 2
7 ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạngtương tự và số PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hiệu điệnthế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn đượcxác lập trên hai chân RA2 và RA3 Kết quả chuyển đổi từ tín tiệu tương tự sang tínhiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
-INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE, PEIE).-PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF)
-PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE)
Trang 25-ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quảchuyển đổi
-ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộchuyển đổi
-PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog ởPORTA
-PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào analog ởPORTE
Hình: khối ADC
8 Ngắt.
PIC16F877A có 15 nguồn ngắt được điều khiển bởi thanh ghi INTCON, ngoài
ra mỗi ngắt còn được điều khiển bởi một bit cho phép và cờ ngắt riêng Các cờ ngắtvẫn hoạt động bình thường khi thỏa mãn điều kiện ngắt, không phụ thuộc vào các bitcho phép
Trang 26Sơ đồ logic của tất cả các ngắt trong PIC16F877A.
- Ngắt trên chân INT
Trang 27Bit điều khiển của ngắt RB0/INT nằm trong thanh ghi INTCON, thanh ghi này
còn chứa bit cho phép ngắt toàn cục GIE (Global Interrupt Enable) INTCON<7> , bit cho phép ngắt ngoại vi PEIE (Peripheral Interrupt Enable) INTCON<6> Bit điều
khiển các ngắt khác nằm trong thanh ghi PIE1 và PIE2, cờ ngắt nằm trong thanh ghiPIR1 và PIR2 Trong một thời điểm chỉ có 1 chương trình ngắt được thực thi, chương
trình ngắt kết thúc bằng lệnh RETFIE (Return from Interrupt) để trở về chương trình
chính
Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ tiếp theo củachương trình chính được cất vào stack và bộ đếm chương trình chỉ đến địa chỉ 0004h.Khi lệnh RETFIE được thực thi thì bit GIE được tự động set để tiếp tục cho phép cácngắt
Trước khi thực thi chương trình ngắt, nội dung một số thanh ghi SFR như làSTATUS, PCLATH cần được lưu lại và nạp lại các nội dung đó sau khi thực thi xongchương trình ngắt Ta phải làm như vậy vì trong khi thực hiện chương trình ngắt, nộidung các thanh ghi này có thể thay đổi và khi trở vể chương trình chính, chương trìnhchính có thể hoạt động không chính xác
Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng Các cờ ngắtvẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái củabit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuôc vào bit GIE và các bit điều khiểnkhác Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanhghi này còn chứa bit cho phép các ngắt ngoại vi PEIE Bit điều khiển các ngắt nằmtrong thanh ghi PIE1 và PIE2 Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 vàPIR2
Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trìnhngắt được kết thúc bằng lệnh RETFIE Khi chương trình ngắt được thực thi, bit GIE
tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộnhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h Lệnh RETFIE được dùng
để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIEcũng sẽ được set để cho phép các ngắt hoạt động trở lại Các cờ hiệu được dùng để
Trang 28kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phépngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắtxảy ra.
Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạngthái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào xảy racần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời đểm xảy ra ngắt
Trang 29Ký hiệu theo quy luật vòng màu
Bảng 2.1 Bảng Quy Ước Màu
Trang 31Tụ điện là một linh kiện điện tử được dùng khá phổ biến biến trong công nghiệp điện và điện tử.
Tụ điện dùng để chứa điện năng với hình thức điện tích bằng cách nạp điệnvào.Điện tích có thể đổi thành dòng điện bằng cách xã điện ra Sự nạp và xã điện được thực hiện trong một thời gian tức khắc.
Theo nguyên tắc,một tụ điện gồm có hai má(phiến) bằng kim loại song song thân cách nhau bằng một chất cách điện gọi là điện môi.
A.Thông số kỹ thuật:
1.Điện dung danh định:
Là giá trị ghi trên thân tụ bằng chữ số hoặc bằng màu
Đơn vị điện dung là Farad (F)
Farad là đơn vị rất lớn nên thường ta dùng các ước số sau:
-Micro Farad =1/1000000 F =10-6 F
-Nano Farad =1/1000 µF = 10-9 F
-Pico Farad =1/1000000 µF = 10-12 F
B.
Phân Loại Tụ Điện Và Cách Đọc Tụ Điện
Tụ điện theo đúng tên gọi chính là linh kiện có chức năng tích tụ năng lượngđiện, nói một cách nôm na Chúng thường được dùng kết hợp với các điện trở trongcác mạch định thời bởi khả năng tích tụ năng lượng điện trong một khoảng thời giannhất định Đồng thời tụ điện cũng được sử dụng trong các nguồn điện với chức nănglàm giảm độ gợn sóng của nguồn trong các nguồn xoay chiều, hay trong các mạch lọcbởi chức năng của tụ nói một cách đơn giản đó là tụ ngắn mạch (cho dòng điện điqua) đối với dòng điện xoay chiều và hở mạch đối với dòng điện 1 chiều
Trang 32Trong một số các mạch điện đơn giản, để đơn giản hóa trong quá trình tính toánhay thay thế tương đương thì chúng ta thường thay thế một tụ điện bằng một dây dẫnkhi có dòng xoay chiều đi qua hay tháo tụ ra khỏi mạch khi có dòng một chiều trongmạch Điều này khá là cần thiết khi thực hiện tính toán hay xác định các sơ đồ mạchtương đương cho các mạch điện tử thông thường
Hiện nay, trên thế giới có rất nhiều loại tụ điện khác nhau nhưng về cơ bản,chúng ta có thể chia tụ điện thành hai loại: Tụ có phân cực (có cực xác định) và tụđiện không phân cực (không xác định cực dương âm cụ thể)
Để đặc trưng cho khả năng tích trữ năng lượng điện của tụ điện, người ta đưa rakhái niệm là điện dung của tụ điện Điện dung càng cao thì khả năng tích trữ nănglượng của tụ điện càng lớn và ngược lại Giá trị điện dung được đo bằng đơn vị Fara(kí hiệu là F) Giá trị F là rất lớn nên thông thường trong các mạch điện tử, các giá trị
tụ chỉ đo bằng các giá trị nhỏ hơn như micro fara (μF), nano Fara (nF) hay picro FaraF), nano Fara (nF) hay picro Fara(pF)
1F = 106μF), nano Fara (nF) hay picro FaraF = 109nF = 1012pF
1 Tụ Hoá
Kí hiệu tụ hoá và hình dạng tụ hoá
Tụ hóa là một loại tụ có phân cực Chính vì thế khi sử dụng tụ hóa yêu cầu người
sử dụng phải cắm đúng chân của tụ điện với điện áp cung cấp Thông thường, các loại
tụ hóa thường có kí hiệu chân cụ thể cho người sử dụng bằng các ký hiệu + hoặc =tương ứng với chân tụ
Có hai dạng tụ hóa thông thường đó là tụ hóa có chân tại hai đầu trụ tròn của tụ(tụ có ghi 220μF), nano Fara (nF) hay picro FaraF trên hình a) và loại tụ hóa có 2 chân nối ra cùng 1 đầu trụ tròn (tụ cóghi giá trị 10μF), nano Fara (nF) hay picro FaraF trên hình a) Đồng thời trên các tụ hóa, người ta thường ghi kèm giátrị điện áp cực đại mà tụ có thể chịu được Nếu trường hợp điện áp lớn hơn so với giátrị điện áp trên tụ thì tụ sẽ bị phồng hoặc nổ tụ tùy thuộc vào giá trị điện áp cung cấp.Thông thường, khi chọn các loại tụ hóa này người ta thường chọn các loại tụ có giá trị