lucky11357

New Member

Download miễn phí Đề tài Led Cube 8x8x8





IE Register (Interrupt Enable)
EA – bit enable hay disable tất cả các interrupt.
EA=0 thì không ngắt nào được nhận.
EA=1 thì từng nguồn ngắt sẽ được mở hay cấm bằng cách bật hay xóa bit cho phép tương ứng.
ES – bit enable hay disable ngắt cổng nối tiếp.
ES=0 thì không cho phép ngắt nối tiếp.
ES=1 cho phép ngắt nối tiếp.
ET1 – bit enable hay disable ngắt tràn của của Timer1.
ET1=0 Timer1 không ảnh hưởng đến ngắt.
ET1=1 Timer1 kích hoạt ngắt.
EXT1 – cho phép hay cấm ngắt ngoài của Timer1.
EXT1=0 thì sự thay đổi trạng thái của cổng INT0 không ảnh hưởng đến việc ngắt.
EXT1=1 enable ngắt ngoại ngay tại thời điểm INT0 thay đổi trạng thái.
ET0 – bit enable hay disable ngắt tràn của Timer0.
ET0=0 Timer0 không ảnh hưởng đến ngắt.
ET0=1 Timer0 kích hoạt ngắt.
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

từ VĐK
Nếu RS=1: LCD nhận dữ liệu từ VĐK để hiển thị
5
RW
Read/Write
Chọn chức năng ghi/ đọc
RS=1 : chọn chức năng đọc dữ liệu từ LCD vào VĐK
RS=0 : chọn chức năng ghi dữ liệu từ VĐKvào LCD để hiển thị
6
E
Read Write enable
Cho phép/ không cho phép LCD trao đổi thông tin với VĐK. Chờ khi E chuyển từ 1à0 thì tín hiệu ở các chân D0-D7 mới được đưa vào LCD.
7
D0
Data bus 0-7
8 chân này được nối với VĐK để vào/ra thông tin
8
D1
9
D2
10
D3
11
D4
12
D5
13
D6
14
D7
Từ những đặc điểm và chức năng đã được đề cập ở trên ta có sơ đồ VDK sau :
Nguyên tắc hoạt động
Các chân Vcc Vee Vss : cấp dương nguồn -5V và đất tương ứng thì VEE dùng để điều khiển chế độ tương phản của LCD.
Chân chọn thanh ghi RS(regiter select):Có hai thanh ghi trong LCD,chân RS được dùng để chọn thanh ghi,như sau : nếu RS=0 thi thanh ghi mà lệnh được chọn để cho phép người dùng gửi 1 lệnh chẳng hạn như xóa màn hình,đưa con trỏ về đầu dòng…nếu RS=1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD.
Chân đọc/ghi (R/W):Đầu vào đọc/ghi cho phép người dùng ghi thông tin trên LCD khi RW=0 hay đọc thông tin từ nó khi RW=1.
Chân cho phép E(Enable):chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó.Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu.Xung này phải rộng tối thiểu 450ns.
Chân D0-D7: đây là 8 chân dữ liệu 8bit được dùng để gửi nội dung lên LCD hay đọc nội dung của các thanh ghi trong LCD.Để hiển thị các chữ cái và các con số chúng ta sử dụng mã ASCII của các chữ cái từ A-Z,a-f và các con số từ 0-9 đến các chân này khi RS=1.
Cũng có các mã lệnh được gửi đến LCD để xóa màn hình hay đưa con trỏ về đầu dòng hay nhấp nháy con trỏ.
*Chú ý: Chúng ta có thể sử dụng RS=0 để kiểm tra bit bận để xem LCD có sẵn sàng nhận thông tin.Cờ bận là bít D7 và có thể được đọc thi R/W=1 và RS=0 như sau:
Nếu R/W=1, RS=0, D7=1(cờ bận) thì LCD bận thì LCD bận bởi các công việc bên trong và sẽ không nhận bất kỳ thông tin mới nào.Khi D7=0 thì LCD sẵn sàng nhận thông tin mới.Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên LCD.
Sau đây là bảng mã lệnh của LCD:
Mã(Hex)
Lệnh đến thanh ghi của LCD
1
Xóa màn hình hiển thị
2
Trở về đầu dòng
3
Giảm con trỏ (dịch con trỏ sang bên trái)
4
Tăng con trỏ (dịch con trỏ sang bên phải)
5
Dịch hiển thị sang phải
6
Dịch hiển thị sang trái
7
Tắt con trỏ,tắt hiển thị
8
Tắt hiển thị,bật con trỏ
A
Bật hiển thị,tắt con trỏ
C
Bật hiển thị,nhấp nháy con trỏ
E
Tắt con trỏ,nhấp nháy con trỏ
F
Dịch vị trí con trỏ sang trái
10
Dịch vi trí con trỏ sang phải
14
18
Dịch toàn bộ hiển thị sang trái
1C
Dịch toàn bộ hiển thị sang phải
80
Ép con trỏ về đầu dòng thứ nhất
C0
Ép con trỏ về đầu dòng thứ 2
38
Hai dòng và ma trận 5x7
Điều khiển LCD qua các bước sau: - Bước 0: chẩn bị phần cứng.dùng tuốc vít xoay biến trở 5k điều chỉnh độ tương phản của LCD.Xoay cho đến khi các ô vuông (các điểm ảnh)của LCD hiện lên thì xoay ngược biến trở lại 1 chút.
-Bước 1: Khởi tạo cho LCD.
-Bước 2: Gán giá trị cho các bit điều khiển các chân RS,R/W,EN cho phù hợp với các chế độ.Hiển thị ký tự lên LCD hay thực hiện 1 lệnh của LCD.
-Bước 3: Xuất byte dữ liệu ra cổng điều khiển 8 bit dữ liệu của LCD.
-Bước 4: Kiểm tra cờ bận xem LCD sẵn sàng nhận dữ liệu mới chưa
-Bước 5: Quay vòng lại bước 1.
4. Lập trình
Code :
#include
#include
//------------Khoi tao bien va cac gia tri gan-------------//
sbit RS_LCD = P2^5;
sbit RW_LCD = P2^6;
sbit E_LCD = P2^7;
//---------------Sau day la cac chuong trinh con------------//
unsigned char min,sec,hour,x0,x1;
//ngat do bo dinh thoi 0
void timer0_isr() interrupt 1
{
x0++;
if (x0==100)
{
x0 = 0;
x1++ ;
if (x1 == 100)
{
x1 = 0;
sec ++;
if (sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
}
//--------------Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban---------------//
void delay()
{
unsigned int i;
for(i=0;i<125;i++);
}
//--------------Ham kiem tra co ban (busy_flag)--------------??
void kt_ban()
{
unsigned char x;
P0 = 0xff;
RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay();
E_LCD = 0;
x=P0;
x=x&0x80;
}
while(x!=0x80);
}
//---------------Ham ghi lenh giao tiep voi LCD---------------//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
P0 = lenh;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCD
E_LCD = 1;
delay();
E_LCD = 0;
}//------------*******-----------------//
//-----------Ham ghi ky tu ra LCD------------//
void ghi_kytu(unsigned char kytu)
{
kt_ban();
P0 = kytu;
RS_LCD = 1; // Chon thanh ghi du lieu
RW_LCD = 0; //che do ghi
E_LCD =1;
delay(); //xung cho phep chot du lieu >450ns
E_LCD = 0;
}
//-----------Ham ghi chuoi ky tu ra LCD------------//
void ghi_chuoi(char *str)
{
while(*str)
{
// delay(50);
ghi_kytu(*str);
str++;
}
}
//-----------Ham khoi tao LCD------------//
void setting_LCD()
{
ghi_lenh(0x38);
ghi_lenh(0x01); // Xoa man hinh
ghi_lenh(0x0f); // Co dich hien thi
}
/*CHUONG TRINH CHINH */
void main()
{
TMOD = 0x02; //Bit chon che do thu nhat cho timer0
TH0 = 155; //155-255 100 lan dem thi ngat
IE = 0x82; //cho phep ngat tu ben ngoai (ngat ngoai 0)
TR0 = 1; //Cho phep timer0 chay
setting_LCD();
while(1)
{
ghi_lenh(0x80);
ghi_lenh(0x0c);
ghi_chuoi ("Nhom 18-d3dtvt");
ghi_lenh(0xc0);
ghi_lenh(0x0c);
ghi_kytu(hour/10+0x30); // chuyen sag bang ASCII
ghi_kytu(hour%10+0x30);
ghi_kytu(':') ;
ghi_kytu(min/10+0x30);
ghi_kytu(min%10+0x30);
ghi_kytu(':') ;
ghi_kytu(sec/10+0x30);
ghi_kytu(sec%10+0x30);
}
}
Hiển thị mô phỏng :
BÀI 5 : LED MA TRẬN
Nhiệm vụ : Điều khiển LED ma trận 8x8 dòng chữ chạy “NHOM-18”
LED ma trận:
Cơ sở lý thuyết
Dựa trên nguyên tắc như quét màng hình,ta có thể thực hiện việc hiển thị ma trận đèn bằng cách quét theo hàng và quét theo cột.Mỗi led trên ma trận có thễ coi là một điểm ảnh.Địa chỉ của mỗi điểm ảnh được xác định đồng thời với bộ giải mã hàng và giải mã cột.Điểm ảnh này dược xác định trạng thái nhờ vi điều khiển 8051.
 Như vậy tại mỗi thời điểm chỉ có trạng thái của một điểm ảnh được xác định.Tuy nhiên khi xác định địa chỉ và trạng thái của điểm ảnh tiếp theo thì các điểm ảnh còn lại sẽ chuyển về trạng thái tắt(nếu LED đang sáng thì sẽ tắt dần).Vì thế đẻ hiển thị được toàn bộ hình ảnh của ma trận đèn.Ta có thể quét ma trận nhiều lần với tốc độ quét rất lớn,lớn hơn nhiều lần thời gian tắt của đèn.Mắt người chỉ nhận biết được tối đa 24hình/s do đó nếu tốc độ quet rất lớn thì sẽ không nhận ra được sự thay đổi nhỏ của đèn mà sẽ thấy được toàn bộ hình ảnh cần hiển thị.
Nguyên lý hoạt động
Muốn cho led sáng ta cấp dương 5V vào hàng,0V vào cột dòng 10mA đến 15mA. Ví dụ : muốn led ở vị trí 5x4 sáng, ta đưa điện áp cột 4(P0_3) xuống 0V đến hàng 5(P2_5) lên 5V.
Hiển thị chữ : thống kê các điểm sáng thành chữ rồi cho các hàng cột điện áp tương ứng.Giống như quyét bàn phím đưa điện áp 0V ra từng cột nối với cổng 0. Như vậy sẽ có 8 giá trị: 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F phải đưa vào 1 mảng 8 phần tử,rồi sau đó đưa vào 1 vòng for tăng dần 1 biến để tăng ...
 

Các chủ đề có liên quan khác

Top