Tải bản đầy đủ (.docx) (45 trang)

THIẾT kế hệ THỐNG điều KHIỂN DÙNG vđk ATMEGA16 điều KHIỂN HOẠT ĐỘNG CHO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.03 MB, 45 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ
KHOA ĐIỆN
--------------------

ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG
ĐỀ TÀI:
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN DÙNG VĐK
ATMEGA16 ĐIỀU KHIỂN HOẠT ĐỘNG CHO
MỘT MÁY DẬP KHUÔN

LÊ HỮU MINH

Khóa học: 2014 - 2017


BỘ CÔNG THƯƠNG
TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ
KHOA ĐIỆN
-------------------

ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG
ĐỀ TÀI:
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN DÙNG VĐK
ATMEGA16 ĐIỀU KHIỂN HOẠT ĐỘNG CHO
MỘT MÁY DẬP KHUÔN
Sinh viên thực hiện:

Giáo viên hướng dẫn:

Lê Hữu Minh



ThS. Tôn Thất Đồng

Lớp: 14CDDC11
Niên khoá: 2014 - 2017


TRƯỜNG CĐ CÔNG NGHIỆP HUẾ

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA ĐIỆN

ĐỘC LẬP - TỰ DO - HẠNH PHÚC

TỔ BỘ MÔN TRANG BỊ ĐIỆN

*********

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên : Lê Hữu Minh
Lớp : 14CDDC13
Ngành : Công nghệ kỹ thuật điện-điện tử
I. Tên khóa luận: Thiết kế hệ thống điều khiển dùng VĐK Atmega16 điều khiển một
khâu chuyền băng tải vận chuyển sản phẩm.
II. Yêu cầu:
- Sản phẩm từ băng tải 1 dưới chạy đến tác động vào S1; lúc này piston A tiến: nâng
sản phẩm lên
- Khi piston A nâng hết và chạm vào hành trinh cuối;lúc này piston B đẩy ra, đưa sản
phẩm sang băng chuyền 2 nằm phía trên.

- Khi piston B chạm vào hành trình cuối,thì piston B lùi về.
- Khi piston B về đến chạm hành trình đầu thì tiếp tục piston A hạ về lại vị trí ban
đầu.Kết thúc một chu trình chuyển băng vận chuyển sản phẩm.
III. Nội dung:
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ VĐK ATMEGA 16
1.1. Cấu trúc tổng quát VĐK Atmega
1.2. Cấu tạo phần cứng
1.3. Cấu trúc một chương trình Atmega
1.4. Compile và upload chương trình lên bo
1.5. Tập lệnh cơ bản của Atmega
CHƯƠNG 2: LẬP TRÌNH ĐIỀU KHIỂN
2.1 Phân tích và xây dựng sơ đồ công nghệ
2.2 Xây dựng sơ đồ bước dịch chuyển
2.3 Xây dựng sơ đồ mạch khí nén động lực


2.4 Xây dựng sơ đồ thuật toán
2.5 Xây dựng sơ đồ mạch nguồn
2.6 Xây dựng sơ đồ mạch nguyên lý
2.7 Chương trình điều khiển
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.1 Linh kiện
3.2 Thiết kế mạch in
CHƯƠNG 4: MÔ PHỎNG VÀ KẾT LUẬN
III. Báo cáo: Thực hiện trên khổ giấy A4 với định dạng theo quy định của nhà trường.
IV. Cán bộ hướng dẫn: Đào Hữu Lũy
Ngày giao nhiệm vụ: 25/9/2016
VI. Ngày hoàn thành: 20/2/2017
TỔ TRƯỞNG TBM TRANG BỊ ĐIỆN


CÁN BỘ HƯỚNG DẪN
Đào Hữu Lũy


LỜI CẢM ƠN
Để hoàn thành đồ án này, em xin tỏ lòng biết ơn sâu sắc đến các thầy cô và bạn
bè, đã tận tình giúp đở em trong suốt quá trình làm đồ án.
Em chân thần cảm ơn đến thầy Đào hữu lũy,giảng viên ,bộ môn trang bị điện .tận
tình truyền đạt kiến thức trong những tháng qua.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường nói chung.Các thầy
cô trong Khoa Điện nói riêng đã dạy dỗ cho em và đã tận tình truyền đạt kiến thức
trong những năm học tập vừa qua có gì thiếu sót. Em rất mong nhận được sự chỉ
bảo,đóng góp ý kiến của các thầy cô và bạn bè để em có điều kiện bổ sung, nâng cao ý
thức của mình,phục vụ tốt hơn cho công việc thực tế sau nay.
Cuối cùng em kính chúc quý Thầy Cô và bạn bè dồi dào sức khỏe và thành công
trong sự nghiệp của mình. Em xin chân thành cảm ơn
Huế, ngày……tháng..…năm 2017
Sinh viên thực hiện


MỤC LỤC


MỞ ĐẦU
ỹ thuật vi điều khiển hiện nay rất phát triển rất mạnh mẽ, nó được ứng
dụng vào rất rất nhiều lĩnh vực từ trong đời sống sinh hoạt hàng ngày(khóa số, tủ lạnh,
ti vi, ...) cho tới các lĩnh vực trong công nghiệp cũng như trong quân sự. Do có nhiều
ưu điểm như nhỏ gọn, khả năng lập trình để điều khiển theo ý muốn, giá thành thấp, có
khả năng xử lí được nhiều công việc… lên vi điều khiển trở thành linh kiện không thể
thiếu được trong các thiết bị phục vụ con người chúng ta.

AVR là một trong rất nhiều dòng vi điều khiển 8bit hiện nay. Nó được ứng
dụng rộng rãi trong lĩnh vực điều khiển ứng dụng, lĩnh vực điều khiển đo lường, lĩnh
vực điều khiển tự động, lĩnh vực điều khiển quảng cáo .v.v …
Với những kiến thức đã có được về dòng vi điều khiển AVR em đã chọn đề tài tốt
nghiêp: ” Thiết kế hệ thống điều khiển dùng VĐK Atmega16 điều khiển hoạt động cho
một máy dập khuôn”.
Mục tiêu của đề tài là kết hợp vi đi ều khiển AVR Atmega16 vào công nghiệp
để điều khiển máy dập khuôn.

Page | 7


CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ VĐK ATMEGA 16
1.1. Cấu trúc tổng quát VĐK Atmega16:
+ Giới thiệu VĐK AVR:
- Vi điều khiển AVR do hãng Atmel (Hoa Kì) sản xuất được gới thiệu lần đầu năm
1996. AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như AT tiny 13,
AT tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR (chẳn
hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh
hơn là dòng Mega (như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài
Kbyte đến vài trăm Kbyte cùng với các bộ ngoại vi đa dạng được tích hợp trên chip,
cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR). Tốc độ của dòng
ATmega cũng cao hơn so với các dòng khác.
- Sự khác nhau cơ bản giữa các dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như
nhau (hình 1.1). Đặt biệt, năm 2008, Atmel lại tiếp tục cho ra đời dòng AVR mới là
Amega AVR, với những tính năng mạnh mẽ chưa từng có ở các dòng AVR trước đó.
Có thể nói AVR là dòng MCU 8 bit mạnh mẽ nhất hiện nay.
+ Cấu trúc tổng quát VĐK Atmega16:
-


Hiệu xuất cao ( high performance ), là loại vi điều khiển AVR 8 bit công suất

-

thấp
Cấu trúc lệnh đơn giản, thời gian thực thi lệnh như nhau ( thật ra là Advanced
RISC Architecture )
• 32 x 8 thanh ghi công dụng chung ( chắc là 32 thanh ghi công dụng chung 8
bit )
Đầy đủ các sử lí tĩnh
Hỗ trợ 16 MIPS khi hoạt động ở tần số 16 MHz
Tích hợp bộ nhân 2 thực hiện trong 2 chu kì chip
Bộ nhớ chương trình và dữ liệu không bay hơi ( nonvolatile )
• 16k byte trong hệ thống flash khả trình có thể nạp và xóa 1,000 lần o Tùy




-

chọn khởi động phần mã với các bit nhìn độc lập trong hệ thống bằng cách
vào chương trình khởi động chip
512 byte EEPROM có thể ghi và xóa 100,000 lần
1k byte ram nhớ tĩnh trong ( internal SRAM )
Lập trình khóa cho phần mềm bảo mập
Tính năng ngoại vi



-


Page | 8




2 bộ định thời/bộ đếm ( timers/counters ) 8 bit với các chế độ đếm riêng rẽ

và kiểu so sánh
• 1 bộ định thời/bộ đếm ( timer/counter ) 16 bit với các chế độ đếm riêng rẽ,






kiểu so sánh và kiểu bắt sự kiện
Bộ đếm thời gian thực với máy giao động riêng rẽ
4 kênh băm xung PWM
8 kênh ADC 10 bit
Byte định hướng 2 đường giao tiếp nối tiếp
Giao tiếp USART nối tiếp khả trình ○ Giao tiếp SPI nối tiếp chủ/tớ

( master/slave )
• ○ Bộ định thời khả trình giám sát xung nhịp của chip 1 cách riêng rẽ ○ Tích
-

hợp bộ so sánh tín hiệu tương tự
Giao tiếp JTAG
Các tính năng đặt biệt của vi điều khiển

• Chế độ bật nguồn reset và phát hiện Brown-out khả trình
• Tích hợp mạch dao động RC bên trong
• Các ngắt trong và ngoài

6 chế độ nghỉ : rảnh rỗi,giảm nhiễu ADC, Tiết kiệm năng lượng, nguồn

thấp, Standby và Extended Standby
- Vào/ra và các gói dữ liệu
• 32 chân vào ra khả trình
• 40-pin PDIP and 44-lead TQFP
- Điện áp sử dụng
• 2.7 – 5.5V dùng với atmega16L
• 4.5 – 5.5V dùng với atmega16
- Tốc độ xung nhịp dùng cho chip

0 – 8 MHz cho atmega16L

0 – 16 MHz cho atmega16
1.2 Cấu tạo phần cứng của Atemega16
+ Cấu trúc nhân AVR
CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương trình.
Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều
khiển các thiết bị ngoại vi và quản lý ngắt.
+

Cấu trúc tổng quát

AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ
liệu. Các lệnh được thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ chương trình
được lưu trong bộ nhớ Flash.


Page | 9


+ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán được thực
hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3 loại: đại số,
logic và theo bit.
+ Thanh ghi trạng thái
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số
học và logic.

Page | 10


C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập).
Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0).
N: Negative Flag (Nếu kết quả của phép toán là âm).
V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2)V,
For signed tests (S=N XOR V) S: N.
H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau)
T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian
trong các lệnh BLD,BST).
I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt. Nếu bit
này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)
+ Các thanh ghi chức năng chung

Page | 11



+ Con trỏ ngăn xếp (SP)
Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc
biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ
RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp.

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào
ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi
thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ ăng 1 và
khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ
ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp rước khi một
chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp
ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
+ Quản lý ngắt
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình rạng sẵn sxàng
cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ
báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX
được thiết lập…Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện
lại và lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới
vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh
RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện
chươngtrình mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều
ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt
các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ
xảy ra hai trường hợp. Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được
phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua.Bộ nhớ ngăn xếp là
Page | 12


vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập vào SRAM thông
thường thì ta dùng con trỏ X,Y,Z và để truy nhậpvào SRAM theo kiểu ngăn xếp thì ta

dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai
thanh ghi 8 bit chung có địa chỉ SPL :0x3D/0x5D(IO/SRAM) và
SPH:0x3E/0x5E.Khi chương trình phục vụ ngắt hoặc chương trình con thì con trỏ PC
được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp
sẽ giảm 1 khi thực hiện lệnh push.
Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh
RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được
chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được
gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn
hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.

b) Sơ đồ khối:

Page | 13


Hình 1. Hình dạng thực tế Atmega16
Ý nghĩa các chân:
Chân 1 đến 8 : Cổng nhập xuất dữ liệu song song B ( PORTB ) nó có thể đc sử dụng
các chức năng đặc biệt thay vì nhập xuất dữ liệu
- Chân 9 : RESET (RST):Dùng để thiết lập trạng thái ban đầu cho vi điều khiển
+ ChânVcc: Chân số 10 là VCC cấp điện áp nguồn cho Vi điều khiển. Nguồn điện cấp
là +5V±0.5.
+ Chân GND:Chân số11 và chân số 31 nối GND(hay nối Mass). Khi thiết kế cần sử
dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản là sử dụng IC ổn áp
7812.
- Chân 12,13 : 2 chân XTAL2 và XTAL1 Được sử dụng để nhận nguồn xung clocktừ
bên ngoài để hoạt động,thường được ghép nối với thạch anh và các tụ để tạo nguồn
xung clock ổn định
- Chân 14 đến 21 : Cổng nhập xuất dữ liệu song song D ( PORTD ) nó có thể đc sử

dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu
- Chân 22 đến 29 : Cổng nhập xuất dữ liệu song song C ( PORTC ) nó có thể đc sử
dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu
Page | 14


- Chân 30, 31 : AVCC cấp điện áp so sánh cho bộ ADC
- Chân 32 : AREF điện áp so sánh tín hiệu vào ADC
+ Port A (PA): Port A gồm 8 chân (từ chân 33 đến 40) có chức năng: đầu vào cho
chuyển đổi ADC
+ Port C (PC): Port C gồm 8 chân (từ chân 22 đến chân 29) : Nếu giao tiếp
JTAG được kích hoạt điện trở trên các PC5(TDI), PC3 (TMS) ,PC2 (TCK) sẽ
được kích hoạt ngay cả khi khởi động lại (reset)
+ Port D (PD): Port D gồm 8 chân (từ chân 14 đến chân 21) : c+ vào ra của vi điiều
khiển
PORTA (PA7….PA0):là các chân từ 33 đến 40.Là cổng vào ra song song 8 bít khi
không dùng ở chế độ ADC.Bên trong có sẳn các điện trở kéo,khi PORTA là output thì
các điện trở kéo không hoạt động,khi PORTA là input thì các điện trở kéo được kích
hoạt
+PORTB (PB7….PB0):là các chân số 1 đến 8.Nó tương tự như PORTA khi sử dụng
vào ra song song.Ngoài ra các chân của PORTB còn có các chức năng đặc biệt
+ PORTC (PC7….PC0):là các chân 22 đến 30.Cũng giống PORTA và PORTB khi là
cổng vào ra song song.Nếu giao tiếp JTAG được bật,các trở treo ở các chân
PC5(TDI),PC3(TMS),PC2(TCK) sẽ hoạt động khi sự kiện reset xảy ra
+ PORTD (PD7….PD0):là các chân 13 đến 21.Cũng là một cổng vào ra song song
giống các PORT khác

Page | 15



Hình 2. Cấu trúc chân Atmega16
1.3.Cấu trúc một chương trình Atmega
1.

#include <mega16.h>

2.

// Khai báo các biến toàn cầu ở đây

3.
4.

void main(void)
{

5.

// Khai báo các biến cục bộ ở đây

6.
7.

// Input / Output Cổng khởi tạo

8.

// Port A khởi tạo

9. PORTA=0x00;

10. DDRA=0x00;
11.

// Port cổng B khởi tạo
12. PORTB=0x00;
13. DDRB=0x00;
14.

// Cổng C khởi tạo

15. PORTC=0x00;

Page | 16


16.
17.
18.
19.
20.
21.
22.
23.

DDRC=0x00;
// Port cổng B khởi tạo
PORTD=0x00;
DDRD=0x00;
while (1)
{

}
{

1.4.Compile và upload chương trình lên bo
1.4.1 CodeVisionAVR
1. Giới thiệu

CodeVisionAVR là công cụ phần mềm sử dụng cho việc soạn thảo và biên dịch
chương trình dành cho các vi điều khiển thuộc họ AVR bằng ngôn ngữ C. Phần mềm
được viết chuyên nghiệp hướng tới người sử dụng bởi sự đơn giản, sự hỗ trợ cao của
các thư viện có sẵn.
2. Tạo Project trên CodeVisionAVR

Sau khi cài đặt CodeVision, trên desktop xuất hiện icon của phần mềm, bạn mở
nó lên và tiến hành làm theo các bước sau đây:
- Tạo mới Project. Chọn menu File và chọn New, chọn Project và chọn OK

Cửa sổ con firm xuất hiện,ở đây bạn chọn OK để xác nhận tạo 1 project
mới.tiếp theo là cửa sổ CodeVisionAVR dùng để chọn loại chip.Ở đây tôi chọn
AT90,AtTiny, Atmega,FPSLIC,cho phép sử dụng các loại vi điều khiển tương ứng
Cuối cùng chọn OK để xác nhận

Page | 17


Cửa sổ CodeVisionAVR xuất hiện.Trong cửa sổ này,cho các bạn những tùy
chọn thiết lập ban đầu cho vi điều khiển của mình

Thẻ chip.với các loại tùy chọn loại chip,chon xung Clock.
Ở đây tôi chọn Atmega 16 với xung Clock 8Mhz.


Page | 18


Thẻ Port là các port tương ứng với các loại vi điều khiển ta chọn.trong trường
hợp này,tôi chọn Atmega16 nên các Port gồm A,B,C,D.Ở mỗi port lại có các tùy
chọn,giúp mình chọn chiều của port (Data Direction ) và giá trị của Port đó
(Pullup/Output Value)
Với Data Direction: Out là đầu ra, In là đầu vào
Với Pullup/Output Value: 0 là mức thấp, 1 là mức cao, P là có trở treo, T là không
dùng trở treo.

Ví dụ ở đây: PORTB.1 là Input và không dùng trở treo, PORTB.2 là Output và
ở mức thấp.Các Port khác làm tương tự.

Page | 19


1.4.2.Upload chương trình lên bo
Cách nạp code chương trình trong Proteus
Để nạp code cho Vi điều khiển
1/ Double click trên Vi điều khiển. Màn hình Edit Component sẽ xuất hiện..
2/ Nhấp vào biểu tương open để mở file sẽ nạp.
3/ Chọn file.hex hay file.cof để nạp / click Open.
4/ Màn hình Edit Component :chọn OK.

Page | 20


Sau khi nạp xong để kiểm tra hoạt động của mạch chúng ta nhấn vào nút Play

1.5. Tập lệnh cơ bản cua Atmega
Ngôn ngữ lập trình C là ngôn ngữ khá mạnh và được nhiều người sử dụng. Lập
trình bằng ngôn ngữ cấp cao như C giúp xây dựng các ứng dụng nhanh chóng và dễ
dàng hơn. Sau đây sẽ giới thiệu một cách cơ bản nhất về cách viết chương trình cho
AVR sử dụng ngôn ngữ C.
Một chương trình C cho AVR thường bao gồm những thàn phần cơ bản như:
chú thích (comments), biểu thức (expressions), câu lệnh (statements), khối (blocks),
các toán tử, cấu trúc điều khiển (flow controls), hàm (function)….
Chú thích (comments): Chú thích là những đoạn trong chương trình dùng để
giải thích hay bình phẩm những gì ta làm trong chương trình, phần chú thích không
được biên dịch vì vậy nó không có bất kỳ ảnh hưởng nào dến hoạt động của chương
trình. Có hai cách để tạo phần chú thích trong C là chú thích theo từng dòng bằng cách
đặt ở đầu dòng chú thích dấu “//” và chú thích block bằng cách kẹp đoạn cần chú thích
vào giữa /*…*/.
Tiền xử lý (preprocessor): là một tiện ích của ngông ngữ C, các preprocessor
được trình biên dịch xử lý trước tất cả các phần khác. Các preprocessor được bắt đầu
bằng dấu “#”, trong ngôn ngữ C có hai preprocessor được sử dụng phổ biến nhât đó là
Page | 21


#include và #define. Preprocessor #include dùng để chỉ định 1 file được đính kèm
trong quá trình xử lý, và #define dùng để định nghĩa một chuỗi thay thế hoặc 1 macro.
Biểu thức (expressions): là một phần của các câu lệnh, biểu thúc có thể bao
gồm các biến, các toán tử, gọi hàm…. Biểu thức trả về một giá trị đơn. Biểu thức
không phải là một câu lệnh hoàn chỉnh.
Câu lệnh (statements): là một dòng lệnh hoàn chỉnh có thể bao gồm các từ khóa
(key words), các biểu thức các câu lệnh khác và được kết thúc bằng dấu “;”.
Khối (blocks): là sự kết hợp của nhiều câu lệnh để cùng thực hiện một nhiệm vụ
nào đó. Khối được kẹp giữa hai dấu mở khối “{” và đóng khối “}”.
Toán tử (operators): là những ký hiệu báo cho trình biên dịch biết nhũng nhiệm

vụ cần thực hiện(toán tử đại số, toán tử logic và quan hệ …).
Cấu trúc điều khiển (flow controls): Các cấu trúc điều khiển cho phép chương
trình thực hiện đúng theo ý tưởng của người viết chương trình. Các cấu trúc điều khiển
thường dùng trong lập trình C:
-“If (điều kiện) câu lệnh;” Nếu điều kiện là đúng thì thực hiện câu lệnh tiếp theo sau,

câu lệnh có thể được viết cùng dòng hay dòng sau từ khóa if. Điều kiện là một biểu
thức bất kỳ có thể là sự kết hợp của nhiều điều kiện thông qua các toán tử quan hệ
AND(&&), OR(||), … Điều kiện được cho là đúng khi nó khác 0 .
Trong trường hợp cần thực thi nhiều câu lệnh khi một điều kiện nào đó thỏa mãn
ta có thể đặt các câu lệnh đó trong một khối:
If (điều kiện)
{
Câu lệnh 1;
Câu lệnh 2;

}
-“If (điều kiện) câu lệnh 1; else câu lệnh 2;”: Nếu điều kiện đúng thì thực hiện câu

lệnh 1, nếu không đúng thì thực hiện câu lệnh 2. Việc đặt else và các câu lệnh trên
cùng 1 dòng hay khác dòng không làm thay đổi ý nghĩa của cấu trúc.
Nếu cần thực hiện nhiều câu lệnh thì các câu lệnh cần được dặt trong 1 khối:
Page | 22


If (điều kiện) {
Câu lệnh 1;
Câu lệnh 2;

}

Else {
Câu lệnh 1;
Câu lệnh 2;

}
-Trong trường hợp có nhiều khả năng xảy ra cho 1 biểu thức (hay một biến) với mỗi

khả năng lại cần thực hiện một công việc nào đó, ta có thể sử dụng cấu trúc switch:
Switch (biểu thức) {
Case hằng _số_1:
Các câu lệnh 1;
Break;
Case hằng_số_2:
Các câu lệnh 2;
Break;
Defaul:
Các câu lệnh khác;
}
Cấu trúc switch hoạt động theo cách thức sau: Đầu tiên chương trình tính giá trị
của biểu thức sau đó lần lượt đem so sánh với các giá trị hằng số đặt phía sau từ khóa
case. Biểu thức có giá trị bằng hằng số nào thì thực hiện các câu lệnh trong case đó dến
khi tìm thấy từ khóa break. Có thể đặt bao nhiêu case tùy ý. Nếu giá trị của biểu thức
không tương ứng với các hằng số thì chương trình thực hiện các câu lệnh trong phần
defaul: (nếu có phần này).

Page | 23


-Cấu trúc lặp While: “while (điều kiện) câu lệnh 1”. Ý nghĩa của cấu trúc lặp while


là thực hiện câu lệnh 1 (hoặc 1 khối câu lệnh đặt trong dấu “{}”) khi điều kiện còn
đúng.
-Cấu trúc lặp for : “for (biểu thức 1; biểu thức 2; biểu thức 3) câu lệnh”. Trong đó

biểu thức 1 là biểu thức khởi tạo, biểu thức 2 là điều kiện, biểu thức 3 là biểu thức thực
hiện sau. Biểu thức 1 được thực hiện 1 lần sau đó chương trình kiểm tra điêu kiện qua
biểu thức 2, nếu điều kiện đúng câu lệnh được thực hiện, sau đó thực hiện biểu thức 3
rồi lại quay lại kiểm tra điều kiện. Cứ như vậy tới khi điều kiện không còn đúng nữa
thì chương trình thoát khỏi vòng lặp. Chú ý khi sử dụng vòng lặp for là các biểu thức
trong cấu trúc for có thể không có nhưng các dấu “;” thì bắt buộc phải có.
Hàm (functions): Trong C có rất nhiều hàm, mỗi hàm dùng để thực hiện một
chức năng cụ thể. Các hàm trong C thường được thiết kế nhỏ gọn, để có những hàm
phức tạp người dùng cần tự tạo ra.
Các từ khóa (key words): Từ khóa là những từ quy định của ngôn ngữ C như tên
các kiểu dữ liệu (char, int, unsigned int, …); tên các cấu trúc điều khiển (if, while, for,
…). Cần chú ý không được đặt tên biến trùng với từ khóa.
Các kiểu dữ liệu thường dùng khi lập trình C cho vi điều khiển:
Tên kiểu dữ liệu
Char
Unsigned char
Signed char
Int
Unsigned int
Singed int
Short int
Unsigned short int
Singed short int
Long int
Unsigned long int
Singed long int

Long long int
Unsigned long long int
Signed long long int

Số byte
1
1
1
2
2
2
2
2
2
4
4
4
8
8
8

Khoảng dữ liệu
- 127 đến 127 hoặc 0 đến 255
0 đến 255
- 127 đến 127
- 32767 đến 32767
0 đến 65353
- 32767 đến 32767
- 32767 đến 32767
0 đến 65353

- 32767 đến 32767
- 2147483647 đến 2147483647
0 đến 4294967295
- 2147483647 đến 2147483647
- (2^63 – 1) đến (2^63 – 1)
0 đến (2^64 – 1 )
- (2^63 – 1) đến (2^63 – 1)

Page | 24


CHƯƠNG 2: LẬP TRÌNH ĐIỀU KHIỂN
2.1 Phân tích và xây dựng sơ đồ công nghệ
2.1.1. Phân tích
Khi tác động vào S1- lúc này piston A nâng sản phẩm lên – piston A nâng hết chạm
vào hành trình cuối – pison B đẩy ra đưa sản phẩm sang băng chuyền 2 nằm phía trên
– piston B chạm vào hành trình cuối – piston B lùi về - psiton B chạm vào hành trình
đầu tiếp tục piston A hạ về ban đầu – kết thúc chu trình chuyển băng vận chuyển sản
phẩm

Page | 25


×