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:
B1: tạo giao diện ứng dụng MFC có 2 nút nhấn led1, led2.
Chọn giao diện theo kiểu dialog
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:
B2: thêm MSCOMM(dùng để điều khiển cổng com) vào project/Add to
project/components and control:
Xuất hiện dialog:
Chọn Microsoft communication
Click Ok
Kéo biểu tượng điện thoại lên giao diện
B3:Khai báo biến
1. m_mscomm (thuộc lớp Cmscomm) dùng thiết lập cổng com.
Nhấn Ctrl +W
Click vào IDC_MSCOMM1 và click vào Add Variable
2. m_trans (dùng để truyền dữ liệu) biến này thuộc lớp DLg
click vào tab class bên trái(left bottom):
Right click on ClhvtDlg: click add member variable
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();
//==========================
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()
{
NẠP chương trình cho vđk:
Chọn file hex đã dịch trên keilc
Chạy PROTEUS VÀ CT TRÊN VC++
THƯỞNG THỨC
Bai2:
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.