đồ án thiết kế hệ thống nhung, thiet ke he thong nhung truong quang vinh 229652352 tim hieu ve vi dieu khien pic 16f877a va ung dung 1 cuuduongthancong com thiet ke he thong nhung truong quang vinh 229652352 tim hieu ve vi dieu khien pic 16f877a va ung dung 1 cuuduongthancong com
cu u du on g th an co ng c om ĐỒ ÁN TỐT NGHIỆP CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP Lời nói đầu Ngày với phát triển khơng ngừng khoa học kỹ thuật, kỹ thuật số đem lại cho người thành tựu to lớn giúp cho người dễ dàng đạt mục đích thiết kế Hịa nhập xu hướng vi điều khiển khẳng định vị vững ứng dụng Điển hình cơng nghệ đo lường điều khiển máy tính đặc biệt việc đo nhiệt độ điều khiển hệ thống Trong lĩnh vực sản xuất cơng nghiệp nhiệt độ có tác động trự c tiếp đến chất lượng đầu om q trình gia cơng vậ liệu nhiệt độ ảnh hưởng đến độ xác tính c giãn nở vật liệu Trong trình nung sấy nung gạch nhiệt độ ảnh hưởng đến chất lượng sản phẩm Trong y học nhiệt độ ảnh hưởng tới kết ng nghiên cứu.Trong sống nhiệt độ ảnh hưởng tới chất lượng bảo quản co lương thực Với yêu cầu em xin thiết kế đề tài: “ Đọc nhiệt độ hiển thị cu u du on g th an lên led thanh” dùng cảm biến IC tích hợp LM35 CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP Chương I: Tìm hiểu chung vi điều khiển Vi điều khiển máy tính tích hợp chip, thường sử dụng để điều khiển thiết bị điện tử Vi điều khiển thực chất hệ thống bao gồm vi xử lý có hiệu xuất đủ dùng giá thành thấp ( khác với vi xử lý đa dùng máy tính) kêt hợp với khối ngoại vi nhớ, mô đun vào/ ra, mô đun biến đổi số sang tương tự tương tự sang số,… Ở máy tính mơ đun thường xây dựng chip mạch om 1.1 Cấu trúc vi điều khiển c Hầu hết vi điều khiển ngày xây dựng dựa kiến trúc Von Neumann, kiến trúc định nghĩa bốn thành phần cần thiết hệ ng thống nhúng Những thành phần lõi CPU, nhớ chương trình (thơng co thường ROM nhớ Flash ) nhớ liệu (RAM ), vài an định thời cổng vào/ra để giao tiếp với thiết bị ngoại vi môi trường bên – tât khối thiết kế vi mạch tích th hợp Vi điều khiển khác với vi xử lý đa chỗ hoạt on g động với vài vi mạch hỗ trợ bên Ngồi cấu trúc Von Neumann cịn có cấu trúc Harvard, cấu trúc Harvard du tách rời nhớ liệu nhớ chương trình, nên tốc độ xử lý cao u dung lượng đường truyền khác cu Vi điều khiển thường sử dụng để xây dựng hệ thống nhúng Nó xuất nhiều dụng cụ điện tử, thiết bị điện, máy giặt, lị vi sóng, điện thoại, đầu lọc DVD, thiết bị đa phương tiện, dây chuyền tự động 1.2 Phân loạị 1.2.1 Độ dài ghi Dựa vào độ dài ghi lệnh VĐK mà người ta chia loại VĐK 8bít, 16bít hay 32bit… Các loại VĐK 16bit có độ lệch lớn lên tập lệnh nhiều phong phú Tuy nhiên chương trình viết VĐK 16 bit viết VĐK bit với chương trình thích hợp CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP 1.2.2 Cấu trúc RISC CISC VXL VĐK CISC VĐK có tập lệnh phức tạp Các VĐK có số lượng lớn lệnh nên giúp cho người lập trình linh hoạt dễ dàng viết chương trình VĐK RISC VĐK có tập lệnh đơn giản Chúng có số lương nhỏ lệnh đơn giản Do đó, chúng địi hỏi phần cứng hơn, giá thành thấp hơn, nhanh so với CISC Tuy nhiên địi hỏi người lập trình phải viết om chương trình phức tạp nhiều lệnh .c 1.2.3 Kiến trúc Harvard kiến trúc Vonneumann Kiến trúc Harvard sử dụng nhớ riêng biệt cho chương trình liệu ng Bus địa bus liệu độc lập với nên trình truyền nhận liệu co đơn giản Kiến trúc Vonneumann sử dụng chung nhớ cho chương trình liệu Chức vi xử lý g 1.3.1 th 1.3 Chức vi điều khiển an Điều làm cho VĐK gọn nhẹ hơn, giá thành nhẹ on Trong thập niên cuối kỉ XX, từ đời công nghệ bán dẫn, du kĩ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau u tích hợp với mật độ cao cao diện tích nhỏ, nhờ cu thiết bị điện tử nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phá công nghệ điện tử, công ty trẻ tuổi Intel cho đời vi xử lý Đột phá chỗ: "Đó kết cấu logic mà thay đổi chức chương trình ngồi khơng phát triển theo hướng tạo cấu trúc phần cứng thực theo số chức định trước Tức phần cứng đóng vai trị thứ yếu, phần mềm (chương trình) đóng vai trị chủ đạo chức cần thực Nhờ vi xử lý có mềm dẻo hóa chức Ngày vi xử lý có độ tính toán cao khả xử lý lớn CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu ngồi sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khơng có khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu mà Để vi xử lý hoạt động cần có chương trình kèm theo, chương trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu Chương trình tập hợp lệnh để xử lý liệu thực om lệnh lưu trữ nhớ, công việc thực hành lệnh bao gồm: c Nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động ng cơ, hiển thị kí tự hình…địi hỏi phải kết hợp vi xử lý với mạch co điện giao tiếp với bên gọi thiết bị I/O ( nhập/xuất ) hay an gọi thiết bị ngoại vi Bản than vi xử lý đứng khơng th có nhiều hiệu sử dụng, phần của máy tính hiệu sử dụng Vi xử lý lớn, phức tạp đòi hỏi phải xử lý on g lượng lớn phép tính phức tạp, có tốc độ nhanh Chẳng hạn hệ du thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v u Từ Vi xử lý đến Vi điều khiển cu 1.3.2 Bộ Vi xử lý có khả vượt bậc so với hệ thống khác khả tính tốn, xử lý, thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu toán hệ thống lớn.Tuy nhiên ứng dụng nhỏ, tầm tính tốn khơng địi hỏi khả tính tốn lớn việc ứng dụng vi xử lý cần cân nhắc Bởi hệ thống dù lớn hay nhỏ, dùng vi xử lý địi hỏi khối mạch điện giao tiếp phức tạp Các khối bao gồm nhớ để chứa liệu chương trình thực hiện, mạch điện giao tiếp ngoại vi để xuất nhập điều khiển trở lại, khối liên kết với vi xử lý thực công việc Hệ thống CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP tạo phức tạp, chiếm nhiều không gian, mạch in phức tạp vấn đề trình độ người thiết kế Kết giá thành sản phẩm cuối cao, không phù hợp để áp dụng cho hệ thống nhỏ Vì số nhược điểm nên nhà chế tạo tích hợp nhớ số mạch giao tiếp ngoại vi với vi xử lý vào IC gọi Microcontroller-Vi điều khiển Vi điều khiển có khả tương tự khả vi xử lý, cấu trúc phần cứng dành cho người dùng đơn giản nhiều Vi điều khiển đời mang lại tiện lợi người dùng, om họ không cần nắm vững khối lượng kiến thức lớn người dùng vi c xử lý, kết cấu mạch điện dành cho người dùng trở nên đơn giản nhiều có khả giao tiếp trực tiếp với thiết bị bên Vi điều ng khiển xây dựng với phần cứng dành cho người sử dụng đơn giản co hơn, thay vào lợi điểm khả xử lý bị giới hạn (tốc độ xử lý an chậm khả tính tốn hơn, dung lượng chương trình bị giới hạn) th Thay vào đó, Vi điều khiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản, ứng dụng rộng rãi vào nhiều ứng dụng có chức Ngơn ngữ lập trình, cơng cụ lập trình 1.4.1 du 1.4 on g đơn giản, khơng địi hỏi tính tốn phức tạp Ngơn ngữ lập trình cu u Lập trình vi xử lý ngơn ngữ thường dùng ngơn ngữ lập trình ASM ngơn ngữ C Ngơn ngữ lập trình ASM hay lập trình hợp ngữ ngơn ngữ lập trình trực tiếp cho vi điều khiển ( lập trình trực tiếp ) cịn ngơn ngữ C hay cịn gọi lập trình hướng đối tượng gần với ngơn ngữ người Điều có nghĩa với ASM người lập trình lệnh trực tiếp thơng qua ngơn ngữ câu lệnh có tính ràng buộc cịn ngơn ngữ C sử dụng cấu trúc điều kiện vòng lặp theo ý muốn Nói ngơn ngữ C ưu điểm ngơn ngữ C dễ hiểu cấu trúc lại dài phức tạp so với ngôn ngữ ASM CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP 1.4.2 a) Công cụ lập trình Về phần cứng: Một điều khơng thể thiết timer tích hợp VĐK.Nó có nhiệm vụ tạo đơn vị thời gian.(Có nghĩa chu kì hoạt động hệ thống chia nhỏ thành đơn vị thời gian).Bộ nhớ chương trình đủ lớn để chứa mã lệnh Ngoài mã lệnh task cong mã lệnh Kernel Bộ nhớ RAM vấn đề hạn chế VĐK lần chuyển ngữ cảnh tồn ngữ cảnh Task lưu vào ngăn xếp Về phần mềm: c b) om RAM.Chúng ta có nhiều task cần cành nhiều ngăn xếp kiểu Có hai cơng cụ để lập trình cho VĐK ngơn ngữ bậc thấp cu u du on g th an co ng (Assembly) ngôn ngữ bậc cao (C ,basic…) CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP a) Chương II: Tìm hiểu vi điều khiển Pic 16F877A ứng dụng Khối điều khiển Pic 16F877A PIC viết tắt “ Programable Intelligent Computer ” tạm dịch máy tính thơng minh khả trình hãng General Instrument đặt tên cho vi điều khiển họ: PIC 1650 thiết kế dùng để làm thiết bị ngoại vi cho vi điều khiển CP 1600 Vi điều khiển sau nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC ngày Pic 16F877A dòng Pic phổ biến ( đủ mạnh tính om năng, 40 chân, nhớ đủ cho hầu hết ứng dụng thông thường ) cấu trúc c tổng quát Pic 16F877A: + 8K Plash Rom ng + 368 byte Ram co + 256 byte EEPROM an + port ( A,B,C,D,E ) vào với tín hiệu độc lập th + định thời bit ( timer0 timer2 ) + định thời 16 bit ( timer ) hoạt động trog chế độ tiết kiệm on g lượng ( Sleep mode ) với xung clock bên du + CCP ( Capture/Compare/PWM) + biến đổi AD 10 bit với ngõ vào cu u + so sánh tương tự ( compartor ) + định thời giám sát ( Watchdog timer ) + cổng song song bit với tín hiệu điều khiển + cổng nối tiếp + 15 nguồn ngắt + Nạp chương trình cổng nối tiếp ICSP ( In-Circuit Serial Programming ) + Được chế tạo công nghệ CMOS + 35 tập lệnh có độ dài 14 bit + Tầng hoạt động tối đa 20MHz CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP + Để Pic hoạt động ta cần cấp nguồn cho Pic ngồi thêm vào dao động thạch anh nút reset cu u du on g th an co ng c om 2.1 Sơ đồ khối vi điều khiển Pic 16F877A CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP Sơ đồ khối PIC16F877A gồm khối + ALU – Arithmetic Logic Unit + Khối nhớ chứa chương trình – Flash Program Memory + Khối nhớ chứa liệu EPROM – Data EPROM + Khối nhớ file ghi RAM – RAM file Resgiter + Khối giải mã lệnh điều khiển – Instruction Decode Control + Khối ghi đặc biệt + Khối ngoại vi timer om + Khối giao tiếp nối tiếp c + Khối chuyển đổi tín hiệu tương tự sang số - ADC 2.2 Đặc điểm vi điều khiển Pic 16F877A ng + Các khối port xuất nhập co Đây vi điều khiển thuộc họ Pic16Fxxx gồm 35 lệnh với độ dài 14 bit an Mỗi lệnh thực chu kỳ xung clock, tốc độ hoạt động tối th đa cho phép 20MHz với chu kỳ lệnh 200ns Bộ nhớ chương trình 8Kx 14 bit, nhớ liệu 368x8 byte RAM nhớ liệu EEPROM với on g dung lượng 256x8 byte Số PORT I/O với 33 pin I/O Có kênh chuyển du đổi A/D 2.2.1 Các đặc tính ngoại vi bao gồmcác khối chức năng: cu u + Timer0: Bộ đếm bit với chia tầng bit + Timer1: Bộ đếm 16 bit với chia tầng thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep + Timer2: Bộ đếm bit với chia tầng số, postcaler o Hai capture , so sánh, điều chế độ rộng xung o Các chuẩn giao tiếp nối SSP ( Synchronous serial port ), SPI I2C o Chuẩn giao tiếp nối tiếp song song PSP ( Parallel Slave Port ) với chân điều khiển RD, WR, CS bên 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP Chương V: Lắp ráp – chế tạo- chạy thử ứng dụng 5.1 Đoạn code chương trình #include om #device pic16f877a*=16 ADC=10 c #fuses XT,NOWDT,HS,PUT an co ng #use delay (clock=4000000) th #use fast_io(e) on du #use fast_io(c) g #use fast_io(b) cu u #use fast_io(d) #byte portd=0x08 #byte portb=0x06 #byte portc=0x07 #bit rc0=0x07.0 #bit rc1=0x07.1 38 CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP #bit rc2=0x07.2 #bit rc3=0x07.3 #bit rc4=0x07.4 #bit rc5=0x07.5 #bit rc6=0x07.6 om #bit rc7=0x07.7 c #bit re0=0x09.0 co ng #bit re1=0x09.1 an #bit re2=0x09.2 th int16 g a[10]={0b11000000,0b11111001,0b10100100,0b10110000,0b10011001,0 //int16 du on b10010010,0b10000010,0b11111000,0b10000000,0b10010000}; cu u a[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01010110,0 b01101101,0b01111101,0b00000111,0b01111111,0b01101111}; int q,x,z,chuc,dv,chuc1,dv1; void main() { set_tris_d(0); set_tris_b(0); 39 CuuDuongThanCong.com https://fb.com/tailieudientucntt ĐỒ ÁN TỐT NGHIỆP set_tris_c(0b11110000); set_tris_e(0b000); q=20; z=0; setup_ADC_ports(AN0_AN1_AN2_AN3_AN4); om setup_ADC(ADC_clock_div_2); c set_ADC_channel(0); co ng delay_ms(1000); an while(1) th { on g if((rc4==0)&&(rc5==0)) du {q=q+1; cu u delay_ms(20);} if((rc4==0)&&(rc6==0)) {q=q-1; delay_ms(20);} if(x>=q) {re0=1;} if(x