Tải bản đầy đủ (.pdf) (34 trang)

Hướng dẫn lập trình C cho vi điều khiển PIC Khởi động

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 (1.38 MB, 34 trang )



Hướng dẫn lập trình C cho vi điều khiển PIC

Khởi động thread sẽ là phần hướng dẫn tạo một project HTC-PIC với MPLAB IDE
---Khởi động MPLAB và làm theo tất cả các hình phía dưới.















Cuối cùng là trở về khung soạn thảo chính để bắt đầu coding
bài 1:
Lập trình giao tiếp 1 led đơn.
vẽ mạch như hình:



Cơ bản là chỉ bật cho LED sáng thôi !
PHP Code:
/*******************************************************************


FileName: LED POINT-PIC.c
Author:
Chu Manh Cuong
Xtal:
11.0592Mhz
MCU:
PIC16F887
Created Date:
23/4/2011
Finish Date:
23/4/2011
*************************************************************************/
/************************************************************************
=================Phan` khai bao' thu vien===============================
mac dinh bat buoc phai co 2 cua HT-PIC c
*****************************finish header****************************** */
#include <htc.h>
#include
/**********************************************************************
===các bien' thay the'
===thay vi truy xuat' truc tiep' toi' cac' bi't hoac cac' port dieu khien
thi chung ta se truy xuat' bang cac' ten thay the' khac' de tang tinh'
linh hoat cho chuong trinh
=== o day LED duoc noi' vao` pin RD0, va ho.at dong. o muc logic 0
RD0=0 led sang' và nguoc lai.
***********************************************************************/
#define LED RD0
void main()
{
TRISD = 0Xfe ; //thie't lap portD voi bit RD0 la` output

PORTD = 0xff; //tat' led


LED = 0;//bat. led sang'
/************************************************************************
while(1){....} la mot vong` la.p vo ha.n, vi dieu khien se~ dung` chuong trinh o day
***********************************************************************/
while(1);
}

Vẫn mạch trên nhưng tăng thêm chút mắm muối là làm cho bóng led này nhấp nháy
PHP Code:
/*******************************************************************
FileName: LED POINT-PIC.c
Author:
Chu Manh Cuong
Xtal:
11.0592Mhz
MCU:
PIC16F887
Created Date:
23/4/2011
Finish Date:
23/4/2011
*************************************************************************/
/************************************************************************
=================Phan` khai bao' thu vien===============================
mac dinh bat buoc phai co 2 cua HT-PIC c
*****************************finish header****************************** */
#include <htc.h>

#include
void delay(int time);
#define LED RD0
//==========================main program======================//
void main()


{
TRISD = 0Xfe ; //thie't lap portD voi bit RD0 la` output
while(1){
LED = !LED; //đảo bit của led
delay(100); //trì hoãn một thời gian
/*********************************************************
co' the thay cu.m le.nh trong dau {..}cua ham while(1) bang
2 dong` lenh
LED = 1; //tắt led
delay(100);//trì hoãn một thời gian
LED = 0; //bật led lên
delay(100);//trì hoãn một thời gian
***********************************************************/
}
}
//========================================delay
void delay(int time)
{
int i,j;
for(i=0;ifor(j=0;j{;}
}


Bài 2: Vẫn là led đơn nhưng là 8 LED, phức tạp hơn chút nữa


PHP Code:


/*******************************************************************
FileName: LED POINT-PIC.c
Author:
Chu Manh Cuong
Xtal:
11.0592Mhz
MCU:
PIC16F887
Created Date:
23/4/2011
Finish Date:
23/4/2011
*************************************************************************/
/************************************************************************
=================Phan` khai bao' thu vien===============================
mac dinh bat buoc phai co 2 cua HT-PIC c
*****************************finish header****************************** */
#include <htc.h>
#include
void delay(int time);
#define LED_PORT PORTD
//==========================main program======================//
void main()

{
int counter;
//thiet' lap mot bo. dem'
unsigned char data; //du lieu hien thi ra led
TRISD = 0X00 ; //thie't lap portD voi bit RD0 la` output
while(1){
/**************************************************************
type 1: led chay tu trai sang phai
**************************************************************/
data = 0xfe;//he bin la: 11111110
for(counter=0;counter<8;counter++)
{
LED_PORT = data;
delay(60);
data<<=1;
//dich bit di mot don vi


data|=0x01;

//toan' tu? OR logic voi 0x80

}
/**************************************************************
type 2: led chay tu phai sang trai
**************************************************************/
data = 0x7f; //he bin la: 01111111
for(counter=0;counter<8;counter++)
{
LED_PORT = data;

delay(60);
data>>=1;
data|=0x80;
//toan' tu? OR logic voi 0x80
}
/**************************************************************
type 3: led dồn tu trai sang phai
**************************************************************/
data = 0xfe;//he bin la: 11111110
for(counter=0;counter<8;counter++)
{
LED_PORT = data;
delay(60);
data<<=1;
//dich bit di mot don vi
}
/**************************************************************
type 4: led don` tu phai sang trai
**************************************************************/
data = 0x7f; //he bin la: 01111111
for(counter=0;counter<8;counter++)
{
LED_PORT = data;
delay(60);
data>>=1;
}
}
}



//========================================delay
void delay(int time)
{
int i,j;
for(i=0;i{
for(j=0;j{;}
}
}

Mọi người có thể tùy biến code của chính mình sao cho thấy phù hợp, có 2 phương pháp để điều khiển led đơn đó là
:
1-dịch dữ liệu rồi AND,OR gì đó rồi đưa ra PORT LED
2-Tạo một bảng mã sau đó xuất dần các giá trị đó ra PORT
Xem them mot so topic tuong tu:
 Hộp quà trái tim nhân ngày 20-10
 [HELP]Xử lý nhiễu khi thu hồng ngoại
 [TUT] Hướng dẫn sử dụng stack trong vi điều...
 [TUT]Sử dụng Timer của vi điều khiển !
 Giáo trình vẽ mạch in
 Hướng dẫn lập trình C cho vi điều khiển PIC
 Đồng hồ số sử dụng LCD để hiển thị - VDK...
 KIT thí nghiệm Vi điều khiển PIC-AVR-8051
 Cần giúp đỡ về lập trình đồng hồ số ds12887
 tài liệu
Lần sửa cuối bởi manhcuong.k08; 23-04-2011 lúc 12:40 PM Lý do: Automerged Doublepost

www.hlab.com.vn
Trả lời với trích dẫn




The Following User Says Thank You to manhcuong.k08 For This Useful Post:
tri.dtk10 (24-04-2011)

 23-04-2011 09:47 PM#2


manhcuong.k08
Sinh Viên Năm 1

Tham gia ngày
Oct 2009
Đến từ
www.dientutaynguyen.co.cc
Bài gửi
153
Points
823.508.402,47
Thanks
15
Thanked 30 Times in 26 Posts

Demo một LED đơn cho bài 2:

YouTube Video
www.hlab.com.vn
Trả lời với trích dẫn


 23-04-2011 10:35 PM#3

L!nh_X!nh
Moderator


Tham gia ngày
Nov 2009
Đến từ
**thiên đường**
Tuổi
21
Bài gửi
355
Points
705.046.615,95
Thanks
71
Thanked 112 Times in 77 Posts
Blog Entries
1

xin mod đừng del comment này ,
đây là chủ thớt trên ạh.
tôi cũng chân thành xin lỗi ông, cường ạ

nhưng cái video phợt quá, phải chia sẻ :))
Lần sửa cuối bởi L!nh_X!nh; 23-04-2011 lúc 10:38 PM



×