Vi điều khiển là một máy tính được tích hợp trên một chip, nó thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoạ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ố,... Ở máy tính thì các module thường được xây dựng bởi các chip và mạch ngoài.
Vi điều khiển thường được sử dụng để xây dựng các hệ thống nhúng. Nó cũng được sử dụng trong các thiết bị điện, điện tử như máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện hay dây chuyền sản xuất tự động,...
Có thể phân loại vi điều khiển theo theo độ dài thanh ghi và theo kiến trúc
Dựa vào độ dài của các thanh ghi và các tập lệnh của vi điều khiển mà vi điều khiển có thể chia thành các dòng 8 bit, 16 bit hay 32 bit,… Vi điều khiển có thanh ghi nhiều bit hơn thì sẽ có độ dài tập lệnh lớn hơn, do đó số lượng các tập lệnh cũng nhiều hơn các dòng có thanh ghi ít bit hơn.
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chương trình và dữ liệu, với 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. Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tích hợp.
Kiến trúc Von-Neumann sử dụng chung bộ nhớ cho chương trình và dữ liệu, làm giảm kích thước và giá thành của vi điều khiển.
CPU (central processing unit) hay bộ xử lý trung tâm chịu trách nhiệm nạp lệnh, giải mã và thực thi các tập lệnh. Từ đó, tất cả mọi hoạt động của của vi điều khiển đều là do CPU điều khiển. CPU giao tiếp với các phần khác trong vi điều khiển thông qua hệ thống bus.
Hệ thống xung clock làm nhiệm vụ cấp xung nhịp cho toàn vi điều khiển. Thông số kĩ thuật tốc độ xung clock tối đa (maximum clock speed hay maximum CPU speed) của các dòng vi điều khiển, ví dụ như vi điều ATmega328 có tốc độ xung nhịp tối đa là 20 MHz,[1] cho biết tốc độ xử lý tối đa mà vi xử lý trong vi điều khiển này có thể đáp ứng được. Hệ thống xung clock được thiết kế chủ yếu từ các mạch tạo xung (oscillator circuit) trong vi điều khiển.
Bộ nhớ (tiếng Anh: memory) là nơi lưu trữ chương trình hoặc là nơi chứa các thông tin mà CPU đang làm việc. Có 2 kiểu bộ nhớ cơ bản:
Hệ thống ngoại vi trên vi điều khiển rất đa dạng theo nhiều dòng vi điều khiển khác nhau, nhưng nhìn chung các dòng vi điều khiển đều có những ngoại vi cơ bản như sau:
Để đưa chương trình vào được vi điều khiển thì phải thông qua mạch nạp. Mạch nạp được thiết kế để đưa file file thực thi (thường là file .hex) từ máy tính xuống vi điều khiển, thông qua các chuẩn ngoại vi có sẵn trên vi điều khiển, ví dụ như board Arduino IDE hỗ trợ nạp chương trình qua mạch nạp ISP nối vào các chân SPI có sẵn của board.[2] Các mạch nạp phổ biến có thể kể đến như ST Link, JTAG, ISP,...
Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài.