Tải bản đầy đủ (.doc) (12 trang)

Một số chương trình về lập trình vi điều khiển ATmega128A

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 (64.41 KB, 12 trang )

I. Cổng vào ra
1. Ký hiệu cổng: A, B, C, D, E, F
2. Các bít trên cổng
GN 7 5 3 1
X:5 6 4 2 0
v
3. Thiết lập vào/ra cho cổng
+ định nghĩa cổng vào x
DDRx=0x00;
+ định nghĩa cổng ra x
DDRx=0xff;
4. Khởi tạo dữ liệu cho cổng
Duy trì điện thế 0 vơn cho tất cả chân của cổng x
PORTx=0x00;
Duy trì điện thế 5 vôn cho tất cả chân của cổng x
PORTx=0xff;
5. Xuất giá trị ra cổng x
PORTx= giá trị nhị phân hoặc thập lục phân;
Ví dụ 1:
PORTA=0b1111 1110;
PORTA=0xfe;
GN 5 5 5 5v
v v v
X:5 5 5 5 0v
v
v v v
Ví dụ 2:
PORTA=0b1000 00001;
PORTA=0x81;
PORTA=(1<<8)| (1<<0);
II. Thư viên lập trình Atmega128A


1. Khai báo thư viện
#include <mega128.h>
2. Cấu trúc chương trình
# include <mega218.h>;
#define constant value;
void main(void){


các lệnh trong chương trình;
}
III. Chương trình điều khiển
1. Điều khiển bóng đèn lắp tại chân số 4,6 sáng
#include <mega128.h>
#include <delay.h>
void init(void)
{
DDRA=0x00; // cổng vào
DDRB=0xff; // cổng ra
PORTB=0x00; khởi tạo giá trị 0 vôn cho các chân
}
void main(void)
{
init();
PORTB=(1<<4)|(1<<6); // đặt chân 4,6 là 5 vơn
}
2. Điều khiển bóng đèn lắp tại chân số 4,6 sáng và nhấp nháy trong 100
mili giây
#include <mega128.h>
#include <delay.h>
void init(void)

{
DDRA=0x00; // cổng vào
DDRB=0xff; // cổng ra
PORTB=0x00; khởi tạo giá trị 0 vôn cho các chân
}
void main(void)
{
init();
while (1)
{
PORTB=(1<<4)|(1<<6); // đặt chân 4,6 là 5 vôn
delay_ms(100); // đợi 100 mili giây


PORTB=0x00; // đặt 0 vôn
delay_ms(100); // đợi 100 mili giây
}
}
3. Hai đèn nối chân 6, 4 đồng thời nhấp nháy
#include <mega128.h>
#include <delay.h>
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0x00;
}
void main(void)
{
init();

while (1)
{
PORTB=0x00;
PORTB=(1<<6)|(1<<4);
delay_ms(100);
PORTB=0x00;
delay_ms(100);
}
}
4. Hai đèn nối chân 4,6 đảo nhau nhấp nháy
#include <mega128.h>
#include <delay.h>
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0x00;
}
void main(void)
{
init();
while (1)


{
PORTB=0x00;
PORTB=(1<<6);
delay_ms(500);
PORTB=0x00;
PORTB=(1<<4);

delay_ms(500);
}
}
4. Đèn nối với chân số 6 nhấp nháy, nối với chân số 4 sáng.
#include <mega128.h>
#include <delay.h>
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0b00010000;
}
void main(void)
{
init();
while (1)
{
PORTB=0b01010000;
delay_ms(500);
PORTB=0b00010000;
delay_ms(500);
}
}
5. Mỗi đền nhấp nháy 10 lần, sau đó chuyển đèn khác
#include <mega128.h>
#include <delay.h>
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra

PORTB=0b00000000;


}
int i=0;
int j=0;
void main(void)
{
init();
while (1)
{
i=0;j=0;
while (i<10)
{
PORTB=0b01000000;
delay_ms(500);
PORTB=0b00000000;
delay_ms(500);
i++;
}
while (j<10)
{
PORTB=0b00010000;
delay_ms(500);
PORTB=0b00000000;
delay_ms(500);
j++;
}
}
}

6. Duy trì hai bóng đèn trên, lắp thêm một cơng tắc(ấn xuống- kính, nhả
ra-hở) vào cổng A tại chân số 0, bấm công tắc hai bóng đèn sáng
đồng thời.
Thiết kế:
GN
X:5
v

5
v
5
v

5
v
5
v

5
v
5
v

5v
0v


Định nghĩa cổng: #define SW PINA.0



#include <mega128.h>
#include <delay.h>
#define SW PINA.0
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0b00000000;
PORTA=0b00000000;
}
void main(void)
{
init();
while (1)
{
if(SW==1){
PORTB=0b01010000;
}
if(SW==0) PORTB=0b00000000;
}
}
7. Duy trì hai bóng đèn trên, lắp thêm một cơng tắc (ấn xuống- kính, nhả
ra-hở) vào cổng A, bấm cơng tắc- hai bóng đèn đảo nhau sáng.
#include <mega128.h>
#include <delay.h>
#define SW PINA.0
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra

PORTB=0x00;
PORTA=0x00;
}
int swt=0;
void main(void)
{
init();


while (1)
{
if (SW==1)
{
swt++;
}
if (swt==1)
{
PORTB=0x40;
}
if (swt==2)
{
PORTB=0x10;
}
if (swt==3)swt=0;
}
}
8. Duy trì hai bóng đèn trên, lắp thêm một cơng tắc (ấn xuống- kính, nhả
ra-hở) vào cổng A, và 01 bóng đèn khác. Các bóng đèn sáng theo thứ
tự 1,2,3 với độ trễ giữa các bóng đèn là 500 mili giây.
Bóng đèn được lắp vào các chân 4,5,6

#include <mega128.h>
#include <delay.h>
#define SW PINA.0
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0x00;
PORTA=0x00;
}
void main(void)
{
init();
while (1)
{
PORTB=0b00100000;


delay_ms(500);
PORTB=0b01000000;
delay_ms(500);
PORTB=0b00010000;
delay_ms(500);
}
}
9. Duy trì hai bóng đèn trên và thêm 01 bóng đèn khác. Các bóng đèn
sáng theo thứ tự 1,2,3- lặp lại 10 lần-khoảng cách là 0.5 giây; sáng
đồng thời 3 bóng đồng thời trong vịng 5 giây.
Bóng đèn nối tại các chân 4,5,6.
#include <mega128.h>

#include <delay.h>
#define SW PINA.0
void init(void)
{
DDRA=0x00; // cong vao
DDRB=0xff; // cong ra
PORTB=0x00;
PORTA=0x00;
}
int i;
void main(void)
{
init();
while (1)
{
for(i=0; i<5;i++){
PORTB=0b00100000;
delay_ms(500);
PORTB=0b01000000;
delay_ms(500);
PORTB=0b00010000;
delay_ms(500);
}
PORTB=0b00000000;
PORTB=0b01110000;
delay_ms(5000);
}


}

10.Lắp thêm động cơ vào chân số 0. Ấn công tắc K động cơ chạy.
Thiết kế:
GN
X:5
v

PORTB
5 5 5
v v v
5 5 5
v v v

5v
0v

M

GN
X:5
v

#include <mega128.h>
#include <delay.h>
#define SW0 PINA.0
void init()
{
DDRA=0x00; //ngo vao
DDRB=0xff; // ngo ra
PORTB=0x00;
}

void main(void)
{
init();
while(1)
{
if(SW0==0)
{

PORTA
5 5 5
v v v
5 5 5
v v v

5v
0v


PORTB=0x00;//0000 0000
}
if(SW0==1)
{
PORTB=0x01;//0000 0001
}
}
}
11. Lắp thêm động cơ vào chân số 0. Không ấn công tắc K động cơ chạy
tốc độ bình thường, Kín cơng tắc K động cơ chạy chậm lại.
Ý tưởng: Dùng hàm delay_ms() để làm ngắt quảng thời gian cấp điện
từ đó làm cho mơ tơ chạy chậm lại.

#include <mega128.h>
#include <delay.h>
#define SW0 PINA.0
void init()
{
DDRA=0x00; //ngo vao
DDRB=0xff; // ngo ra
PORTB=0x00;
}
void main(void)
{
init();
while(1)
{
if(SW0==0)
{
PORTB=0x01;//0000 0001- mô tơ chạy
delay_ms(50); // Thời gian đợi 50 mili giây
PORTB=0x00;//0000 0000-mô tơ tắt
delay_ms(50); // Thời gian đợi 50 mili giây
}
}
}


12. Lắp thêm động cơ vào chân số 0. Không ấn công tắc K, đảo chiều
quay của động.
Ý tưởng: Bằng cách đảo cực của nguồn cấp
+


M

+
-

Mục đích của sử dụng đi ốt là khơng cho dịng đến các chân của
microprocessor làm ảnh hưởng đến quá trình lập trình và trong một số
trường hợp cực dương nguồn cấp được nối với cực âm nguôn cấp do vậy
động cơ không thể vận hành được.



×