Nguyên văn bởi vodienDT4
Xem bài viết
Thông báo
Collapse
No announcement yet.
Dành cho người mới tìm hiểu 8051
Collapse
X
-
Nguyên văn bởi vo_cam Xem bài viếtREADY: SETB BUSY ;P1.7: CHON LAM BIT KIEM TRA CO BUSY
CLR RS ;RS = 0: LENH
SETB RW ;R/W = 1:CHON CHUC NANG DOC TU LCD
BACK: CLR E ;EN = 0 - > TAO CANH LEN
SETB E ;EN = 1
JB BUSY,BACK ; Nhảy về lable back nếu busy vẫn =1
NOP ;CHO DEN KHI CO BUSY = 0,KHONG BUSY
RET
code đã chạy với lcd 2 dòng
nếu dùng C bạn chuyển các câu lệnh trên sang ngôn ngữ C!
Chúc thành công!
Bảng mã lệnh của LCD
Mã (HEX) Lệnh đến thanh ghi của LCD
01 Xoá màn hình hiển thị
02 Trở về đầu dòng
04 Giảm con trỏ(dịch con trỏ sang trái )
06 Tăng con trỏ(dịch con trỏ sang phải)
05 Dịch hiển thị sang phải
07 Dịch hiển thị sang trái
08 Tắt con trỏ, tắt hiển thị
0a Tắt hiển thị, bật con trỏ
0c Bật hiển thi, tắt con trỏ
0e Bật hiển thị, nhấp nháy con trỏ
0f Tắt con trỏ, nhấp nháy con trỏ
10 Dịch vị trí con trỏ sang trái
14 Dịch vị trí con trỏ sang phải
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
0c0 Ép con trỏ về đầu dòng thứ 2
38 Hai dòng và ma tận 5x7.
Chương trình
/*=========bo tien xu li===============*/
#include<AT89x51.h>
#include<string.h>
/*===========khai bao bien toan cuc============*/
sfr LCDdata = 0xA0; // cong P2, 8 bit du lieu.
sbit BF = 0xA7; // co ban, bit DB7.
sbit RS = P3^0; // chon thanh ghi
sbit RW = P3^1; // doc/ghi
sbit EN = P3^2; //cho phep chot du lieu
/*===========cac chuong trinh con cua LCD==========*/
/*--------------kiem tra su san sang cua LCD------------------------*/
void wait(void)
{
RS=0; //chon thanh ghi lenh
RW=1; //đoc tu LCD
LCDdata=0xff; //gia tri 0xff
while(BF) //kiem tra co ban
{
EN=0; //dua xung cao xuong thap đe chot.
EN=1; //dua chan cho phep len cao
}
}
/*------------------------thiet lap lenh cho LCD--------------------------*/
void LCDcontrol(unsigned char x)
{
RS=0;//chon thanh ghi lenh
RW=0;//ghi len LCD.
LCDdata=x ;// gia tri x
EN=1;//cho phep muc cao
EN=0;//xung cao xuong thap
wait();//đoi LCD san sang.
}
/*------------------------------Khoi tao LCD-------------------------*/
void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh, bat con tro
LCDcontrol(0x01);//xoa man hinh
}
/*-------------------------thiet lap du lieu cho LCD-----------------*/
void LCDwrite(unsigned char c)
{
RS=1;//ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;//gia tri C
EN=1;//cho phep muc cao
EN=0;//xung cao xuong thap
wait();//cho
}
void LCDwrites(unsigned char *s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;count<lens;count++){
LCDwrite(*(s+count));
}
}
/*========================ham chinh==================*/
void main(void)
{
LCDinit(); // khoi tao LCD
LCDcontrol(0x80);// dua con tro ve dau dong 1
LCDwrites("VU XUAN LOI");
LCDcontrol(0xC0);
LCDwrites("VI DIEU KHIEN");
while(1); //vong lap vo han
}Last edited by vuxuanloi; 13-10-2009, 16:16.Vũ xuân Lợi
YM!:
Comment
-
Giup e voi! hic
Em dang lam do an mon vie dieu khien dung 8051, em thi dung 89s52, adc0804, voi dien ap tham chieu Vef/2 la 2.5V,lam mach do dien ap voi cac dai dien ap tu 0-5V, 0-25V, 0-50V, em lam thi da chay ngon nhung gap mot van de. vi du khi em do dai dien ap 0-5V, ADC0804 se nhan biet duoc gia tri dien ap nho nhat la 20mV, e thay led7thanh cua e nhap nhay rat mach o vi tri hang chuc mV, con khi e do dai dien ap 0-25V thi vi tri hang tram mV nhay, nhin vao, e thay chan, e muon mach cua e that tot, led khong bi nhay, e khong biet phai lam the nao. Mong moi nguoi giuap do e, e xin cam on
http://www.mediafire.com/?l2zjn5mwt0t
Comment
-
Nguyên văn bởi talaai_89 Xem bài viếtGiup e voi! hic
Em dang lam do an mon vie dieu khien dung 8051, em thi dung 89s52, adc0804, voi dien ap tham chieu Vef/2 la 2.5V,lam mach do dien ap voi cac dai dien ap tu 0-5V, 0-25V, 0-50V, em lam thi da chay ngon nhung gap mot van de. vi du khi em do dai dien ap 0-5V, ADC0804 se nhan biet duoc gia tri dien ap nho nhat la 20mV, e thay led7thanh cua e nhap nhay rat mach o vi tri hang chuc mV, con khi e do dai dien ap 0-25V thi vi tri hang tram mV nhay, nhin vao, e thay chan, e muon mach cua e that tot, led khong bi nhay, e khong biet phai lam the nao. Mong moi nguoi giuap do e, e xin cam on
http://www.mediafire.com/?l2zjn5mwt0t
nhấp nháy ở đây là: giá trị của nó bị nhảy hay cụ thể như thế nào!?
bạn cần nói cụ thể hơn! và post code cùng mạch nên để mọi người cùng giúp đỡ !0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
||
PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK
Comment
-
vang, e da lam mach cu the, con so bi nhap nhay, chi o 1 vi tri thoi,do la gia tri bi nhay, khong phai tat ca cac chu so deu nhay,khi do o dai 0-5V thi chu so hang chuc mV bi nhay,m khi do o dai 0-25 va 0-50 thi chu so o hang tram mV bi nhay,mong moi nguoi giup do e, e xin cam on.Day la mach va code cua e, mong moi nguoi gop y
http://www.mediafire.com/?sharekey=0...01da0f25e869f4
Comment
-
Nguyên văn bởi talaai_89 Xem bài viếtvang, e da lam mach cu the, con so bi nhap nhay, chi o 1 vi tri thoi,do la gia tri bi nhay, khong phai tat ca cac chu so deu nhay,khi do o dai 0-5V thi chu so hang chuc mV bi nhay,m khi do o dai 0-25 va 0-50 thi chu so o hang tram mV bi nhay,mong moi nguoi giup do e, e xin cam on.Day la mach va code cua e, mong moi nguoi gop y
http://www.mediafire.com/?sharekey=0...01da0f25e869f4
yahoo: vodanhkithuat860945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
||
PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK
Comment
-
Nguyên văn bởi quynh Xem bài viếtĐây là quyển sách khá hay về lạp trinh C cho 8051.
Tui up mãi lên đây ko được.Bạn nào cần thì liên hệ với mình nhé.Quyển này viết bằng tiếng anh, khá cơ bản.Dung lượng gần 5MB
Thanks!Bki4u-University of Technology!
Comment
-
Các bác giải thích giùm hoạt động của times để làm chương trình Delay, thêo mình hiểu thi delay là làm đi làm lại một vấn đề, nhưng mình đọc hoài vẫn không hiểu nó hoạt động ra sao hết, từng lệnh thì hiểu nhưng cấu trúc chung thì ko rõ . Ngoài cách dùng times để làm delay, thì còn nhưng cách nào làm delay nữa không các bác có thể gợi ý một vài chưong trình he!
Mình hiểu được dùng times làm bộ dêm thì ro, còn dùng làm bộ định thời thì mơ hồ qua . Bác nào hiểu rõ về ASM giải thích giùm mình nhe! Thanhks
DELAY:
MOV TMOD,#01H ; chọn time 0 che do 16 bit
MOV TL0,#LOW(-250) ; byte thấp
MOV TH0,#HIGH(-250); byte cao
SETB TR0 ; đặt
JNB TF0,$; hiển thi co TF0
CLR TF0 ; xóa TF0
CLR TR0 ; xóa TF0
RETLast edited by se7enlove_3w; 20-10-2009, 11:06.
Comment
-
Nguyên văn bởi se7enlove_3w Xem bài viếtCác bác giải thích giùm hoạt động của times để làm chương trình Delay, thêo mình hiểu thi delay là làm đi làm lại một vấn đề, nhưng mình đọc hoài vẫn không hiểu nó hoạt động ra sao hết, từng lệnh thì hiểu nhưng cấu trúc chung thì ko rõ . Ngoài cách dùng times để làm delay, thì còn nhưng cách nào làm delay nữa không các bác có thể gợi ý một vài chưong trình he!
Mình hiểu được dùng times làm bộ dêm thì ro, còn dùng làm bộ định thời thì mơ hồ qua . Bác nào hiểu rõ về ASM giải thích giùm mình nhe! Thanhks
DELAY:
MOV TMOD,#01H ; chọn time 0 che do 16 bit
MOV TL0,#LOW(-250) ; byte thấp
MOV TH0,#HIGH(-250); byte cao
SETB TR0 ; đặt
JNB TF0,$; hiển thi co TF0
CLR TF0 ; xóa TF0
CLR TR0 ; xóa TF0
RET
Thực ra delay chỉ là để làm chậm lại thời gian xử lí 1 công việc mà con vxl đang đảm nhiệm, vì tốc độ of vxl rất nhanh nên nếu ko có delay, thì các hệ thống sẽ làm việc rất nhanh => ko đáp ứng được yêu cầu thực tế. Giả sử như bạn cho nhấp nháy 1 con led, nếu ko dùng delay, chắc chắn bạn ko thể nhìn thấy nó nhấp nháy được.
Việc tạo hàm delay, thường nếu ko cần chính xác lắm thì người ta dùng các vòng lặp, trong vòng lặp, con vxl ko làm gì cả, chỉ chạy cho hết vòng lặp thì thôi. Còn nếu cần chính xác (cỡ us) thì bạn có thể dùng timer. Chương trình trên của bạn là 1 ví dụ. Timer là 1 bộ đếm lên, như chương trình trên của bạn thì bạn đã thiết đặt chế độ 16bit cho timer, mỗi khi timer đếm đến FFFF thì nó dừng và cờ tràn TF (Timer Flag) được được đặt bằng 1.
Khi timer đang đếm, cái lệnh JNB TF0,$ làm nhiệm vụ khi nào TF0 = 0 thì con vxl ko làm gì cả, còn khi TF0 = 1 thì con vxl mới thoát khỏi delay và tiếp tục chương trình. Bạn đặt giá trị cho bộ đếm là -250, có nghĩa là hàm này sẽ tạo độ trễ khoảng 250us (với tần số thạch anh là khoảng 12MHz).
Thân ái !
Comment
-
Mình hiểu được dùng times làm bộ dêm thì ro, còn dùng làm bộ định thời thì mơ hồ qua . Bác nào hiểu rõ về ASM giải thích giùm mình nhe! Thanhks
Timer là ngoại vi có chức năng đơn giản là đếm các xung nhịp. Khi xung nhịp đưa vào đếm trong timer là xung nhịp hệ thống (xung nhịp của CPU) thì gọi nó là Timer (hay bộ định thời). Khi xung nhịp đưa vào đếm trong timer là tín hiệu lấy từ bên ngoài thì gọi nó là counter (hay bộ đếm sự kiện). Sở dĩ có sự phân biệt như vậy là do tính chất khác nhau của 2 loại tín hiệu này. Xung nhịp của hệ thống thì thường đều đặn (ví dụ: nếu thạch anh dùng cho 8051 là 12M thì mỗi chu kì máy là 1us) do đó có thể dùng nó để xác định thời gian (ví dụ: Cứ 1us có một xung nhịp--> nếu timer đếm được đến 100 tức là đã trôi qua thời gian là 100us). Xung nhịp lấy từ bên ngoài thì không phải luôn luôn đều đặn. ví dụ một dây chuyền đếm sản phẩm, không phải luôn luôn là 1phút có một sản phẩm đi qua.
Để lựa chọn việc sử dụng timer hay counter phụ thuộc vào giá trị khởi tạo cho thanh ghi TMOD.
MOV TMOD,#01H ; chọn time 0 che do 16 bit
MOV TL0,#LOW(-250) ; byte thấp
MOV TH0,#HIGH(-250); byte cao
SETB TR0 ; đặt
JNB TF0,$; hiển thi co TF0
CLR TF0 ; xóa TF0
CLR TR0 ; xóa TF0
RETFor a better world
Comment
-
ngắt ngoài 8051
Các anh cho em hỏi
sau khi xảy ngắt ngoài thì làm thế nào 8051 trở về chương trình chính em thử mô phỏng đă treo chân IT0 lên 5V sau ngắt nhưng 8051 vẫn chạy trong ngắt của nó mà ko trở về main
ORG 0000H
LJMP MAIN
ORG 0000BH
LJMP EX0ISR //NGAT BO DINH THOI 0
ORG 0013H
LJMP EX1ISR //NGAT BO DINH THOI 1
ORG 0030H
MAIN:
MOV IE,#00H
MOV IE,#85H
SETB IT1
SETB IT0
MOV A,#66H
BACKM:
MOV P1,A
MOV P2,A
RR A
CALL DELAY
SJMP BACKM
EX0ISR: //PHUC VU NGAT 0
MOV P1,#00H //DUNG DONG CO PHAI
MOV A,#01H
BACK0: MOV P2,A
RR A
CALL DELAY
JMP BACK0
RETI
EX1ISR: //PHUC VU NGAT 1
MOV P2,#00H
MOV A,#66H
BACK1: MOV P1,A
RR A
CALL DELAY
JMP BACK1
RETI
DELAY:
SETB PSW.3
SETB PSW.4
MOV R2,#12
AGAIN: MOV R3,#200
HERE1: MOV R4,#206
HERE2: DJNZ R4,HERE2
DJNZ R3,HERE1
DJNZ R2,AGAIN
RET
END
Comment
Bài viết mới nhất
Collapse
-
bởi haidangdooLễ Hội Tuyết Sapporo – Điểm Đến Mùa Đông Không Thể Bỏ Lỡ
Lễ hội tuyết Sapporo, một trong những sự kiện mùa đông lớn nhất thế giới, được tổ chức hàng năm tại Sapporo, Hokkaido, Nhật Bản. Đây là cơ hội để bạn chiêm ngưỡng các tác...-
Channel: Quảng cáo
hôm nay, 15:13 -
-
bởi nganngan1510Gạch thông gió GreenTiles là một vật liệu xây dựng được ưa chuộng nhờ vào khả năng thông gió tự nhiên và tính thẩm mỹ cao. Việc thi công gạch thông gió không chỉ đòi hỏi sự chính xác mà còn cần sự nhanh chóng để đảm bảo tiến độ...
-
Channel: Tìm mua
hôm nay, 14:36 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
hôm nay, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 11:28 -
-
bởi trun9Chào các bạn,
Tôi vừa làm 1 video Youtube đăng lên vào tối hôm qua, hiện tại có 4 lượt xem đều là của tôi vào xem có ai xem không
https://www.youtube.com/watch?v=_oFIBAcvoSY
Vào xem và chửi tôi để tôi bớt làm lại đi.-
Channel: Quảng cáo
hôm nay, 08:55 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:31 -
Comment