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
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
hôm nay, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
hôm nay, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietBqv phải vào ngay để tán đồng với bài viết trên của bạn. Chỉ bàn về kỹ thuật, thiết bị máy móc của hãng dù danh tiếng vẫn có thể xảy ra những chuyện ngoài dự kiến, thậm chí những chuyện tưởng như không bao giờ có thể xảy ra....
-
Channel: Điện tử công suất
24-01-2025, 19:31 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80(ĐT chia sẻ MPPT này, với mong muốn rằng, chúng ta hãy tự tin lên, hãy tự hào là người VN, đừng quá tin vào người khác, đừng quá thần tượng họ, cần kiểm tra thực chứng chứ không nên cứ cho các thiết bị thông minh, cao siêu là hoàn hảo)
-
Channel: Điện tử công suất
24-01-2025, 12:08 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Dưới đây là hình ảnh thực:
(bị phạm con tụ pi C17 (phía trên IC U3/DIP08: văng mất xác!)
(hàn vào vị trí C17 tụ pi 27nF ( giá trị phỏng đoán từ 10-100nF!), mạch vẫn chạy như trước khi cạy keo)...-
Channel: Điện tử công suất
24-01-2025, 12:05 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80ĐT đã mạnh dạn mail thử cho hãng SRNE, họ trả lời là nó dùng nhiệt điện trở ở bên trong mạch như sau:
"Our street light controller product triggers high temperature protection based on internal thermistor sampling''
Thấy hơi lo lắng vì kiến thức điện tử...-
Channel: Điện tử công suất
24-01-2025, 11:39 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi mèomướpDạ chú mua cái kẹp dòng ấy ạ. Chị hàng xóm nhà cháu có 1 cái thấy lâu lâu rùi chưa hỏng ạ. Ví dụ như mẫu này trên shoppee đầy ạ...
https://vn.shp.ee/dWYVgq7-
Channel: Điện tử dành cho người mới bắt đầu
21-01-2025, 12:48 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi vi van phamBác Đinh Vặn sai rồi,bây giờ con nít mẫu giáo đã giải phương trình 2 ẩn số rồi.
Tôi chứng minh bác lên youtube đầy video đơn giản tựa rất hot, chỉ 1 transistor hay 1 con diode và hướng dẩn cách làm, tác giả không vẽ sơ đồ mạch điện...-
Channel: Điện tử công suất
21-01-2025, 11:55 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nguyendinhvanBây giờ mới có tháng giêng, bao giờ mới đến tháng mười ?
Các cháu mẫu giáo mới lên lớp 1 được có 4 tháng. Nên đừng lấy lý do chúng nó đã đi học rồi để bắt nó viết một bài luận văn, hay là giải bài toán hàm. Phải kiên nhẫn...-
Channel: Điện tử công suất
21-01-2025, 00:47 -
Comment