Nghiên cứu vi điều khiển arm lpc2103 ứng dụng lập trình quang báo

97 103 1
Nghiên cứu vi điều khiển arm lpc2103 ứng dụng lập trình quang báo

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƢỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ ========== ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài NGHIÊN CỨU VI ĐIỀU KHIỂN ARM LPC2103 ỨNG DỤNG LẬP TRÌNH QUANG BÁO Ngƣời hƣớng dẫn Sinh viên thực Lớp KS ĐẶNG THÁI SƠN MAI THẾ ANH 46K - ĐTVT VINH, 5/2010 Mục lục Mục lục Lời nói đầu Thuật ngữ viết tắt Chƣơng Giới thiệu đề tài 1.1 Mục đích đề tài 1.2 Phƣơng pháp nghiên cứu 1.3 Tình hình nghiên cứu phát triển cơng nghệ vi điều khiển ARM, quang báo nƣớc 1.3.1 ARM 1.3.2 Quang báo 11 Chƣơng Vi điều khiển ARM LPC2103 13 2.1 Giới thiệu chung 13 2.1.1 Khái quát 13 2.1.2 Các tính 13 2.1.2.1 Tổng quan kiến trúc 14 2.1.2.2 Bộ xử lí ARM7TDMI-S 14 2.1.2.3 Hệ thống nhớ flash chíp 16 2.1.2.4 Hệ thống nhớ SRAM chíp 17 2.1.3 Ứng dụng 17 2.1.4 Sơ đồ khối 18 2.2 Khối điều khiển hệ thống 22 2.2.1 Khái quát 22 2.2.2 Các chân chức 22 2.2.3 Các ghi chức 23 2.2.4 Nguồn dao động 24 2.2.5 Ngõ vào ngắt 24 2.2.5.1 Khái quát ghi 24 2.2.5.2 Thanh ghi chứa cờ ngắt ( EXINT-0xE01FC140) 25 2.2.5.3 Thanh ghi thiết lập chức wakeup dùng ngắt (EXTWAKEUP0xE01FC144) 26 2.2.5.4 Thanh ghi thiết lập chế độ ngắt (EXTMODE-0x01FC148) 26 2.2.5.5 Thanh ghi thiết lập cực tính cho chế độ ngắt (EXTPOLAR0xE01FC14C) 27 2.2.5.6 Kết hợp nhiều chân ngắt cho nguồn ngắt 28 2.2.6 Vịng khóa pha (Phase locked loop-PLL) 28 2.2.6.1 Miêu tả ghi 29 2.2.6.2 Thanh ghi điều khiển PLL 31 2.2.6.3 Thanh ghi tạo cấu hình PLL (PLLCFG-0xE01FC084) 32 2.2.6.4 Thanh ghi trạng thái PLL (PLLSTAT-0xE01FC088) 33 2.2.6.5 Các chế độ hoạt động PLL 34 2.2.6.6 Thanh ghi cập nhật giá trị PLL liên tục (PLLFEED-0xE01FC08C) 34 2.2.6.7 PLL chế độ Power Down 35 2.2.6.8 Tính tốn tần số dao động PLL 35 2.2.6.9 Thủ tục xác định cấu hình PLL 35 2.2.7 Điều khiển nguồn 36 2.2.7.1 Diễn tả ghi 36 2.2.7.2 Thanh ghi điều khiển nguồn (PCON-0xE01FC0C0) 37 2.2.7.3 Thanh ghi điều khiển nguồn cho ngoại vi (PCONP-0xE01FC0C4) 37 2.2.8 Reset 38 2.2.9 Bộ chia VPB 39 2.2.9.1 Thanh ghi chia VPB (VPBDIV - 0xE01FC100) 39 2.2.10 Wakeup time 40 2.3 Bộ điều khiển vector ngắt(VIC) 41 2.3.1 Chức 41 2.3.2 Diễn giải 41 2.3.3 Các ghi điều khiển ngắt 42 2.3.4 Các bƣớc thực chƣơng trình ngắt 43 2.3.4.1 Đối với ngắt FIQ 43 2.3.4.2 Đối với ngắt IRQ 43 2.3.4.3 Đối với ngắt non IRQ 44 2.4 Sử dụng ghi xuất nhập đa dụng (GPIO) 45 2.5 Sử dụng ADC 46 2.6 UART0 UART1 48 2.6.1 Chức 48 2.6.2 Diễn tả chân chức 48 2.6.3 Diễn tả ghi chức 48 2.6.3.1 Thanh ghi đệm truyền thu 48 2.6.3.2 Thanh ghi giữ giá trị truyền phát 49 2.6.3.3 Thanh ghi cho phép ngắt truyền thông nối tiếp 50 2.6.3.4 Thanh ghi nhận dạng ngắt truyền thông nối tiếp 51 2.6.3.5 Thanh ghi điều khiển FIFO cho truyền thông nối tiếp 52 2.6.3.6 Thanh ghi điều khiển đường truyền cho truyền thông nối tiếp 53 2.6.3.7 Thanh ghi điều khiển trạng thái cho đường truyền cho truyền thông nối tiếp (U0LSR-0xC000C014) 54 2.6.4 Kiến trúc truyền thông nối tiếp UART0 56 2.7 Time/Counter TIMER0 TIMER1 57 2.7.1 Tính 57 2.7.2 Các ghi điều khiển Timer/Counter 57 2.7.2.1 Thanh ghi cờ ngắt Timer/Counter (IR, T0IR T1IR) 57 2.7.2.2 Thanh ghi điều khiển Timer/Counter (TCR, T0TCR T1TCR) 58 2.7.2.3 Thanh ghi điều khiển đếm (CCR, T0CTCR T1CTCR) 58 2.7.2.4 Thanh ghi điều khiển chế độ Match (MCR, T0MCR T1MCR): 59 Chƣơng Phƣơng pháp lập trình với ARM 60 3.1 Công cụ phát triển 60 3.2 Cài đặt keil 61 3.3 Trình biên dịch C 62 3.4 Xây dựng đề án 63 3.4.1 Tạo đề án 63 3.4.2 Quản lý đề án (Project manager) 64 3.4.2.1 Cửa sổ soạn thảo chương trình (Application Editor) 65 3.4.2.2 Cửa sổ trạng thái (Outout Window) 65 3.4.2.3 Môi trường soạn thảo cấu hình linh kiện(Device Editor) 65 3.4.3 Môi trƣờng gỡ rối Debbug 65 Chƣơng Ứng dụng lập trình quang báo 67 4.1 Cấu trúc nguyên lý phần cứng 67 4.1.1 Sơ đồ khối tổng quát 67 4.1.2 Khối nguồn 68 4.1.3 Khối điều khiển trung tâm 70 4.1.3.1 Mạch kết nối JTAG 71 4.1.3.2 Mạch Reset hệ thống 71 4.1.3.3 Mạch giao tiếp cổng COM 72 4.1.4 Khối đệm giải mã hàng 73 4.1.5 Khối đệm giải mã cột 75 4.1.6 Khối hiển thị (ledmatrix) 77 4.2 Thiết kế phần mềm 80 4.2.1 Thiết kế lƣu đồ chƣơng trình 80 4.2.1.1 Lưu đồ chương trình 81 4.2.1.2 Lưu đồ chương trình hiển thị 82 4.2.1.3 Lưu đồ hiệu ứng dich chữ 84 4.2.1.4 Lưu đồ hiệu ứng chữ rơi 85 KẾT LUẬN 86 Phụ lục Tài liệu tham khảo 87 Phụ lục Mã nguồn chƣơng trình 88 Lời nói đầu Ngày đại đa số lĩnh vực sản xuất điều khiển, giám sát, đo lường….đều trang bị hệ thống tự động hóa Kĩ thuật vi điều khiển sử dụng nhờ tính ưu việt như: khả lập trình phù hợp với thiết kế nhỏ lớn giao tiếp với thiết bị ngoại vi máy tính đem lại hồn hảo, độ xác tính mềm dẻo cao thơng qua giao tiếp người máy Vi điều khiển quản lý hoạt động hệ thống thông qua phần mềm, nhờ ta mở rộng thay đổi hoạt động cách dễ dàng cách thay đổi số thơng số chương trình Vi điều khiển hoạt động theo chương trình nạp sẵn, đọc tín hiệu từ bên ngồi đưa vào sau lưu trữ xử lý, sở đưa thơng báo, tín hiệu điều khiển thiết bị bên ngồi hoạt động theo thơng số u cầu hệ thống Qua kiến thức học tập nghiên cứu số họ vi điều khiển hướng dẫn tận tình thầy Đặng Thái Sơn em mạnh dạn chọn đề tài “Nghiên cứu vi điều khiển ARM LPC2301 ứng dụng lập trình quang báo” làm đồ án tốt nghiệp với mong muốn nâng cao khả hiểu biết dịng vi điều ứng dụng rộng rãi kỹ thuật để làm sản phẩm đáp ứng yêu cầu thực tế Nội dung đồ án gồm chương: Chương Giới thiệu đề tài Chương Vi điều khiển ARM LPC2103 Chương Phương pháp lập trình với ARM Chương Ứng dụng lập trình quang báo Em xin chân thành cảm ơn thầy giáo KS.Đặng Thái Sơn tận tình hướng dẫn em hồn thành tốt đồ án Mặc dù cố gắng với điều kiện khó khăn, kinh nghiệm hạn chế thời gian có hạn nên kết đạt hạn chế Em mong góp ý phê bình quý thầy cô bạn đọc Sinh viên Mai Thế Anh Thuật ngữ viết tắt Từ viết tắt ARM Tiếng Anh Advanced RISC Machines Tiếng Việt Vi điều khiển với tập kiến trúc phát triển RISC ADC Analog-to-Digital Converter Bộ chuyển đổi tương tự số APB ARM Peripheral Bus Bus ngoại vi ARM AHB Advanced High-perfommance Bus chức thực thi cao Bus AMBA CISC Advanced Microcontroller Bus Kiến trúc bus nâng cao vi điều Architecture khiển Complex Instruction Set Máy tính với tập lệnh đầy đủ Computer CPU Central Processing Unit Đơn vị xử lý trung tâm CPLD Complex programmable logic Thiết bị logic có khả lập trình device phức tạp Curent Program Status Register Thanh ghi trạng thái chương trình CPSR DBGSEL Debug select Lựa chọn chế độ gỡ rối EINT External Interrupt Ngắt FPGA Field-Programmable Gate Array Vi mạch dùng cấu trúc mảng phân tử FIQ Fast Interrupt Request Yêu cầu ngắt có mức ưu tiên cao GPIO General Purpose Input/Output Ngõ vào đa dụng Ports IDE Integrated Development Môi trường thiết kế hợp Environment ISP In-System Programming Lập trình hệ thống IAP In-Application Lập trình ứng dụng JTAG Joint Test Action Group Chuẩn giao tiếp cho vi điều khiển LED Light Emitting Diode Diode phát quang LR Link Register Thanh ghi liên kết LIC License ID Code Mã khóa ID MCU Multipoint Control Unit Đơn vị điều khiển đa mục đích PDA Personal Digital Assistant Thiết bị số hỗ trợ người sử dụng PC Program Counter Bộ đếm chương trình PIC Programmable Intelligent Máy tính khả trình thơng minh Computer PLL Phase Locked Loop Vịng khóa pha RISC Reduced Instruction Set Máy tính với tập lệnh suy giảm Computer RTC Real-time Clock Đồng hồ thời gian thực SRAM Static RAM RAM tĩnh SP Stack Point Con trỏ ngăn xếp SPI Serial Peripheral Interface Giao diện ngoại vi nối tiếp USB Universal Serial Bus Chuẩn kết nối máy tính UART Universal Asynchronous Chuẩn truyền/nhận không đồng Receiver/Transmitter VIC Vectored Interrupt Controller Bộ điều khiển vector ngắt Chƣơng Giới thiệu đề tài 1.1 Mục đích đề tài Nghiên cứu để hiểu rõ cấu trúc phần cứng, phần mềm lập trình Ứng dụng lập trình bảng điện tử thực số hiệu ứng thông dụng như: hiệu ứng dịch chữ trái, dịch phải, cuộn tròn, chớp tắt, hiệu ứng chữ rơi,… 1.2 Phƣơng pháp nghiên cứu Để thực đề tài em thực trình tự nghiên cứu sau: Tìm hiểu số chip vi điều khiển khả trình phổ dụng: - 8051 - PIC - AVR - ARM Chọn chip vi điều khiển ARM LPC2103 nghiên cứu sâu phương pháp thực hiện: - Nghiên cứu cấu trúc tính ARM LPC2103 - Nghiên cứu môi trường phát triển IDE - Nghiên cứu phương pháp thiết kế lập trình chip ARM Tham khảo thiết kế có sẵn với ARM Phần cứng đáp ứng yêu cầu đặt ra: - Lập sơ đồ khối hệ thống - Sơ đồ nguyên lý modun sử dụng Thiết kế phần mềm với tính đặt ra: - Thiết kế lưu đồ thuật tốn chương trình - Thiết kế modul chương trình - Thiết kế lưu đồ thuật tốn modul chương trình - Thiết kế modul chương trình Nạp chạy thử mạch ghi nhận kết 1.3 Tình hình nghiên cứu phát triển công nghệ vi điều khiển ARM, quang báo nƣớc 1.3.1 ARM Cấu trúc ARM (viết tắt từ tên gốc Acorn RISC Machine) loại cấu trúc vi xử lý 32-bit kiểu RISC sử dụng rộng rãi thiết kế nhúng Do có đặc điểm tiết kiệm lượng, CPU ARM chiếm ưu sản phẩm điện tử di động, mà với sản phẩm việc tiêu tán công suất thấp mục tiêu thiết kế quan trọng hàng đầu Ngày nay, 75% CPU nhúng 32-bit thuộc họ ARM, điều khiến ARM trở thành cấu trúc 32-bit sản xuất nhiều giới CPU ARM tìm thấy khắp nơi sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy trị chơi cầm tay, máy tính cầm tay) thiết bị ngoại vi máy tính (ổ đĩa cứng, định tuyến để bàn.) Một nhánh tiếng họ ARM vi xử lý Xscale Intel Việc thiết kế ARM năm 1983 dự án phát triển công ty máy tính Acorn Nhóm thiết kế, dẫn đầu Roger Wilson Steve Furber, bắt đầu phát triển vi xử lý có nhiều điểm tương đồng với Kỹ thuật MOS 6502 tiên tiến Acorn sản xuất nhiều máy tính dựa 6502, việc tạo chip bước tiến đáng kể cơng ty Nhóm thiết kế hồn thành việc phát triển mẫu gọi ARM1 vào năm 1985, vào năm sau, nhóm hồn thành sản phẩm “thực‟‟ gọi ARM2 ARM2 có tuyến liệu 32-bit, khơng gian địa 26-bit tức cho phép quản lý đến 64Mbyte địa 16 ghi 32-bit Một ghi đóng vai trị đếm chương trình với bit cao bit thấp lưu giữ cờ trạng thái vi xử lý Có thể nói ARM2 vi xử lý 32-bit khả dụng đơn giản giới, với gồm 30.000 transistor (so với vi xử lý lâu bốn năm Motorola 68000 với khoảng 68.000 transistor) Sự đơn giản có nhờ ARM khơng có vi chương trình (mà chiếm khoảng ¼ đến 1/3 68000) giống hầu hết 4.2.1.2 Lưu đồ chương trình hiển thị Bắt đầu Khởi tạo biến cờ hiển thị c=0, t=0, index, index1 Khởi tạo hàm display1(); Khởi tạo hàm display2(); Khởi tạo, kích hoạt timer0 ngắt timer0 phục vụ cho hiển thị Kiểm tra biến index Index = Index = Gọi hàm display_m1(); Nếu c=4, t=4 gán c=0, t=0 Tăng c, t Index1 = Kiểm tra c, t index1 Gọi hàm display_m2(); Nếu c=4, t=4 gán c=0, t=0 Tăng c, t Kiểm tra biến index1 c#4, t#4 c#4, t#4 Index1 = Kiểm tra c, t index1 c =4 or t=4 c =4 or t=4 Index = 0; Index = 1; Kết thúc Hình 4.13 Lưu đồ thuật tốn chương trình hiển thị 82 Vì ngồi việc qt hiển thị ảnh tĩnh ta cịn tạo hiệu ứng cho nên để hình ảnh hiển thị mịn đẹp em sử dụng phương pháp hình offscreen Đây phương pháp quét sử dụng nhiều đệm hiển thị với biến điều khiển kết hợp chặt chẽ với Trong giới hạn đồ án em sử dụng phương pháp hình offscreen với hai đêm hiển thị mảng m1, m2, biến điều khiển hiển thi index index1: - Khi index=0 hiển thị đệm m1 - Khi index=1 hiển thị đệm m2 - index phép thay đổi index1 thay đổi qt xong tồn hình để tránh xung đột liệu Như tạo hiệu ứng ta kết hợp hiển thị cách linh hoạt hai hình hiển thị hiệu ứng mịn đẹp 83 4.2.1.3 Lưu đồ hiệu ứng dich chữ Bắt đầu Khởi tạo biến cờ sử dụng Khởi tạo index = 0, index1=0 Khởi tạo mảng m1 m1 Khởi tạo mảng m2 Khởi tạo trỏ liệu tính tốn thời gian dịch Kiểm tra load cấu hình N Y Khởi tạo đệm Gọi hàm dịch bit Index1 = 1; Chuyển mảng m2 sang m1 dùng dùng hàm hàm copy(); copy(); copy(); Index1 = 0; Delay(); Kiểm tra dịch hết đệm N Y Kiểm tra dịch hết liệu biến lặp N N Y Kết thúc Hình 4.14 Lưu đồ thuật tốn chương trình dịch chữ 84 4.2.1.4 Lưu đồ hiệu ứng chữ rơi Bắt đầu Khởi tạo biến cờ sử dụng Khởi tạo mảng m1, m2 Gán index = 0, index1 = 0; k=0; N Kiểm tra load cấu hình Y Load liệu cho mảng m2 Hàng n = hàng (n-1); Hàng = data k; k++; index1=1; copy(); index1=0; k=row; N Y Kết thúc Hình 4.15 Lưu đồ thuật tốn chương trình tạo chữ rơi 85 KẾT LUẬN Trong số vi điều khiển 32 bit dịng ARM đánh giá dòng mạnh với đặc điểm mà vi điều khiển khác khơng có ARM thiết kế CPU có sức mạnh cách mạng hóa ngành cơng nghệ di động Hãng chun phát minh chip sử dụng điện Vì vậy, hãng trở thành nhà sản xuất vi xử lý lựa chọn dành cho ĐTDĐ, thiết bị internet cá nhân, điều khiển game di động, GPS, camera, việc nghiên cứu học tập họ vi điều khiển ARM mở hội cho tham gia vào thị trường nhúng cách dễ dàng thực tế Sau thời gian tìm hiểu em hồn thành đồ án với nội dung chính: - Tìm hiểu cấu trúc, cơng cụ phương pháp lập trình họ vi điều khiển 32bit ARM cụ thể ARM LPC2103 - Sử dụng vi điều khiển LPC2103 ứng dụng thực tế lập trình quang báo thực hiệu ứng thơng dụng Dịng vi điều khiển ứng dụng phát triển mạnh Việt Nam, thời gian thực tiếp xúc sử dụng với họ vi điều khiển ARM em cịn q ngắn so với chu trình học tập phát triển công nghệ nên kết đạt cịn hạn chế, mong đóng góp từ quý thầy cô bạn đọc Một lần em xin gửi lời cảm ơn chân thành đến thầy giáo Ks.Đặng Thái Sơn, thầy cô giáo khoa công nghệ gia đình, bạn b giúp đỡ em trình học tập thực đồ án Vinh, ngày 10 tháng 05 năm 2010 Sinh viên Mai Thế Anh 86 Phụ lục Tài liệu tham khảo [1] Hồ Anh Túy, Lí thuyết mạch, NXB Giáo dục, năm 2006 [2] Phạm Minh Hà, Kĩ thuật mạch điện tử, NXB Khoa học kỹ thuật, năm 2006 [3] Phạm Văn Ất, Kĩ thuật lập trình C, NXB Khoa học kỹ thuật, năm 2005 [4] Trevor Martin, The Insider’s Guide To The Philips ARM7, Based Microcontrollers [5] User manual LPC2101/02/03 NPX [6] Các website: http://www.hocavr.com http://www.pnlabvn.com http://bkit4u.com http://www.dientuvietnam.net http://www.keil.com http://arm.com http://www.hitex.co.uk/arm http://bkhcm.info 87 Phụ lục Mã nguồn chƣơng trình /* thư viện định nghĩa sử dụng */ #include #include /* khai báo biến sử dụng */ unsigned char m1[m*row]; unsigned char m2[h*row]; unsigned long decode_row1[4]={0x00000000,A1,B1,0x00003000}; unsigned long decode_row2[4]={0x00000000,A2,B2,0x06000000}; unsigned char c=0,t=0,index=0,index1=0; unsigned char enable_display=0,*p,link; /* hàm chương trình sử dụng */ // hàm khởi tạo kết nối PLL void init_PLL(void) { PLLCFG=0x00000024; PLLCON=0x00000001; PLLFEED=0x000000AA; PLLFEED=0x00000055; while(!(PLLSTAT&0x00000400)); PLLCON=0x00000003; PLLFEED=0x000000AA; PLLFEED=0x00000055; APBDIV=0x00000001; } // hàm dịch trái 1bit void shift_bit(void) { unsigned char i,j; for(i=0;i

Ngày đăng: 14/10/2021, 23:48

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan