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

Lập trình hợp ngữ và điều khiển thiết bị - BÀI THỰC HÀNH SỐ 5

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 (141.53 KB, 6 trang )

Lập trình hợp ngữ và điều khiển thiết bị

BÀI THỰC HÀNH
SỐ 5
Phần 1. Làm theo hướng dẫn
Bài 1. Kiểm tra cơ chế hoạt động của bàn phím

Bước 1. Thiết kế mạch theo sơ đồ dưới đây

Bước 2. Thử chuyển tất cả các công tắc gạt SW1->SW4 sang nối đất sau đó nhấn
các phím, quan sát kết quả.
Bước 3. Thử chuyển tất cả các công tắc gạt sang nối dương nguồn VCC sau đó
nhấn các phím, quan sát kết quả.
Bước 4. Mỗi thời điểm chỉ cho một công tắc gạt nối đất rồi nhấn các phím và quan
sát kết quả.

Bài 2. Điều khiển hiển thị dữ liệu trên LCD

Bước 1. Thiết kế mạch theo sơ đồ dưới đây
Bài thực hành


Lập trình hợp ngữ và điều khiển thiết bị

Bước 2. Viết chương trình điều khiển LCD hiển thị hai dòng chữ

XIN CHAO K6 TIN
****************
#include <at89x51.h>
#include "string.h"
//Dinh nghia mot so chan de dieu khien den LCD


#define LCD_DATA P2
sbit EN=P0^2;
sbit RS=P0^0;
sbit RW=P0^1;
//Khai bao prototype cho cac ham
void Init_System();
void Delay_ms(int interval);
void LCD_init();
void Wait_For_LCD();
void LCD_Send_Command(unsigned char x);
void LCD_Write_One_Char(unsigned char c);
Bài thực hành


Lập trình hợp ngữ và điều khiển thiết bị
void LCD_Write_String(unsigned char *s);
void main()
{
Init_System();
LCD_init();
LCD_Write_String("Xin chao K6 Tin");
LCD_Send_Command(0xC0);
LCD_Write_String("***************");
while(1){
}
}
void Init_System()
{
//Thiet lap LCD o che do ghi
RW=1;

}
void Delay_ms(int interval)
{
int i,j;
for(i=0;i<1000;i++)
{
for(j=0;j}
}
//Ham thuc hien gui mot lenh xuong LCD
void LCD_Send_Command(unsigned char x)
{
LCD_DATA=x;
RS=0; //Chon thanh ghi lenh
RW=0; //De ghi du lieu
EN=1;
Delay_ms(1);
EN=0;
Wait_For_LCD(); //Doi cho LCD san sang
EN=1;
}
//Ham khoi tao LCD o che do ghi
Bài thực hành


Lập trình hợp ngữ và điều khiển thiết bị
//Ham kiem tra va cho den khi LCD san sang
void Wait_For_LCD()
{
//Delay_By_Timer_0(80);

Delay_ms(10);
}
void LCD_init()
{
LCD_Send_Command(0x38); //Chon che do 8 bit, 2 hang cho LCD
LCD_Send_Command(0x0E); //Bat hien thi, nhap nhay con tro
LCD_Send_Command(0x01); //Xoa man hinh
LCD_Send_Command(0x80); //Ve dau dong
}
//Ham de LCD hien thi mot ky tu
void LCD_Write_One_Char(unsigned char c)
{
LCD_DATA=c; //Dua du lieu vao thanh ghi
RS=1; //Chon thanh ghi du lieu
RW=0;
EN=1;
Delay_ms(1);
EN=0;
Wait_For_LCD();
EN=1;
}
//Ham de LCD hien thi mot xau
void LCD_Write_String(unsigned char *s)
{
unsigned char length;
length=strlen(s); //Lay do dai xau
while(length!=0)
{
LCD_Write_One_Char(*s); //Ghi ra LCD gia tri duoc tro boi con tro
s++; //Tang con tro

length--;
}
}

Bài thực hành


Lập trình hợp ngữ và điều khiển thiết bị
Bước 3. Quan sát kết quả, nhận xét và đặt câu hỏi với giáo viên để nhận giải đáp.
Chú ý xem các hàm
- Khởi tạo cho LCD
- Gửi mã lệnh tới bộ điều khiển LCD
- Gửi dữ liệu tới hiển thị trên LCD

Phần 2. Tự thực hành

Bài thực hành


Lập trình hợp ngữ và điều khiển thiết bị
Bài 3. Viết chương trình ghép nối bàn phím với vi điều khiển 8051
Dưới đây là sơ đồ mạch. Trong sơ đồ này, chúng ta không cần liên tục hỏi
vòng các phím bấm mà sử dụng cơ chế ngắt. Các cột của ma trận
phím được nối với một mạch AND 4 đầu vào. Đầu ra của mạch AND
này được nối với chân ngắt ngoài 0 (INT0). Khi chưa có phím nào
được nhấn, tín hiệu đưa đến chân ngắt ở mức cao. Khi có phím được
bấm, tín hiệu đưa đến chân ngắt được chuyển xuống mức thấp ->
kích hoạt ngắt.
Bạn hãy viết chương trình để bắt sự kiện người dùng bấm các phím số (0>9) trên bàn phím và hiển thị số tương ứng lên led 7 thanh


Bài thực hành



×