1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình điều khiển đèn LED1 và LED2 qua các nút nhấn trên giao diện máy tính

16 898 5
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Lập trình điều khiển đèn LED1 và LED2 qua các nút nhấn trên giao diện máy tính
Thể loại Báo cáo
Định dạng
Số trang 16
Dung lượng 341 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

B1:Lập trình điều khiển đèn LED1 và LED2 qua các nút nhấn trên giao diện máy tính: Phương pháp: trên PC : tạo giao diện có 2 nút nhấn led1, led2.. khi ta nhấn nút led1 thì truyền ký tự

Trang 1

B1:Lập trình điều khiển đèn LED1 và LED2 qua các nút nhấn trên giao diện máy tính:

Phương pháp:

trên PC : tạo giao diện có 2 nút nhấn led1, led2 khi ta nhấn nút led1 thì truyền ký tự ‘A’ xuống vđk

Khi nhấn nút led2 thì truyền kt ‘B’.

Trên VĐK :

khi nhận kt ‘A’ => đk led1 sáng.

khi nhận kt ‘B’ => đk led2 sáng.

Ngôn ngữ lập trình:

Trên PC: VC++

Trên Vđk: keilc hoặc assembly.

Các bước làm:

Trên PC:

Chọn giao diện theo kiểu dialog

Trang 2

Chọn thư viện đính kèm

Thêm các nút nhấn vào giao diện

Đặt tên cho nút nhấn:

project/Add to project/components and control :

Xuất hiện dialog:

Trang 3

Click Ok

Kéo biểu tượng điện thoại lên giao diện

Trang 4

B3:Khai báo biến

1 m_mscomm (thuộc lớp Cmscomm) dùng thiết lập cổng com.

Click vào IDC_MSCOMM1 và click vào Add Variable

Trang 5

2 m_trans (dùng để truyền dữ liệu) biến này thuộc lớp DLg

Trang 6

Xuất hiện hộp thoại

Nhập kiểu dữ liệu(CString) và tên biến(m_trans)

B4: Viết hàm

1 hàm void Setting() dùng thiết lập cổng COM Chèn tên hàm này vào hàm khởi tạo DLg(giao diện).

Trang 7

Gõ kiểu hàm là void tên hàm là Setting()

Click ok=> ra được vị trí của hàm

Gõ lệnh vào(hoặc copy nội dung sau vào)

// if port is already opened then close port

if( m_mscomm.GetPortOpen())

m_mscomm.SetPortOpen(false);

m_mscomm.SetCommPort(1); // chon cong com

m_mscomm.SetHandshaking(0); // thiet lap che do bat tay

CString strBitRate = "9600";

CString strParity = "None";

CString strDataBit = "8";

CString strStopBit = "1";

CString strSetting;

strSetting.Format("%s,%c,%s,%s",strBitRate,strParity[1],strDataBit,strStopBit); m_mscomm.SetSettings(strSetting);//"9600,N,8,1");

m_mscomm.SetRThreshold(1); // chon nguong nhan biet co truyen du lieu // set for input direction

m_mscomm.SetInputLen(1);

m_mscomm.SetInBufferSize(1024);

m_mscomm.SetInputMode(0); //chon che do kieu ma ASCII hay binary m_mscomm.SetOutBufferSize(1024);

m_mscomm.SetPortOpen(true); // mo cong com

Chèn hàm Setting() vào phần khởi tạo:

Trang 8

Double click vào hàm khởi tạo này:

BOOL CLhvtDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About " menu item to system menu

// IDM_ABOUTBOX must be in the system command range

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty()) {

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); }

}

// Set the icon for this dialog The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}

=> gõ Setting() vào dưới dòng sau:

// TODO: Add extra initialization here

Setting();

B5: Viết lệnh cho các nút nhấn LED1 và LED2 Double click on LED1 button:

Trang 9

void CLhvtDlg::OnLed1()

{

m_trans ='A';

}

Double click on LED2 button:

=>

void CLhvtDlg::OnLed2()

{

m_trans='B';

m_mscomm.SetOutput((COleVariant)m_trans); }

Đã xong=>chạy CT

Trang 10

Trên Proteus:

Vẽ mạch VĐK kết nối 2 led Vẽ mạch VĐk kết nối cổng COM.

Trên keilc=>Viết CT:

Khởi động keilc :=> vào project/new

Chọn vđk

Viết file led.c

Click on file/ new

Gõ lệnh hoặc copy:

#include <REGX51.H>

#include <stdio.h>

//=========================

#define led1 P0_0

Trang 11

#define led2 P0_1

//=========================

unsigned char ch,abc;

//==========================

void SetupSerial()

{

SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */ TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai */ TH1 = 0xfd ; /* toc do 9600 baud */

TL1 = 0xfd ;

TI = 0; /* co ngat nha^n.=0*/

RI=0; /* co ngat' truye^n =0*/

TR1 = 1; /* timer 1 run */

ES =1; /* cho phep ngat noi tiep */

}

//===========================

void nhan(void) interrupt 4 //Chuong trinh con dung ngat noi tiep {

char ch;

if(RI)

{

RI=0;

ch=SBUF;

SBUF=ch;}}

//===========================

void delay(long time)

{ long n;

for(n=0;n<time;n++){;}

}

void main()

{

SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep

EA = 1; //Cho phep ngat nhung chi có ngat noi tiep duoc dung // VIET CT:

while(1)

{

if (SBUF==65){ //65 la ma DEC cua chu A

led1=0;

led2=1;

}

if (SBUF==66){ //66 la ma DEC cua chu B

led1=1;

led2=0; }

}

}

Lưu lại:

Trang 12

Thêm file dkleddon.c vào project

Trang 13

Thiết lập thông số cho vđk:

 chọn thạch anh 12 Mhz

chọn tab output; chọn tùy chọn tạo file hex

Click build để tạo file hex:

Trang 14

Kết thúc keil c

THIẾT LẬP KẾT NỐI PC<-> PROTEUS DÙNG COM ẢO:

LƯU Ý: CHỌN CỔNG COM X KHÔNG CÓ TÊN SAU ĐÂY(TÙY THUỘC VÀO MỖI MÁY):

Giả sử chọn cổng COM1 (nếu chọn cổng COM khác thì phải vào VC++ chỉnh lại tên cổng com trong hàm Setting())

Chọn COM1 kết nối COM4

=>

Chạy PROTEUS:

Vẽ mạch

NẠP chương trình cho vđk:

Trang 15

Chọn file hex đã dịch trên keilc

Chạy PROTEUS VÀ CT TRÊN VC++

 THƯỞNG THỨC

Trang 16

Viết CT nhấn nút chớp tắt(gửi ký tự C)=> LED1 và LED2

sẽ chớp tắt 500ms.

Nhấn nút stop (tương ứng ký tự S) thì 2 led tắt.

Ngày đăng: 28/10/2013, 04:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w