Em mới học năm hai! Ngành cơ điện tử nhưng em rất yêu thích về lập trình nhất là VDK nên quyết tâm tự học! Nhưng khổ nỗi em chẳng biết bắt đầu từ đâu, học như thế nào cho hiệu quả! híc! mấy bác chỉ giúp em! Hiện em đang nghiên cứu con 8051! hic!
Thông báo
Collapse
No announcement yet.
tư vấn giùm em với mấy bác!
Collapse
X
-
hãy bắt đầu với luồng người bắt đầu với 8051.
sau đó kiếm giáo trình về học nhé.
Sách bắt đầu đây: Lập trình VĐK của thày Cường (HV KTQS):
Chúc bạn thành công.http://dientuvietnam.net/forums/showthread.php?t=2197
http://www.4shared.com/file/22730850..._VDK_8051.html
Đó là phần học lấy kiến thức, nhưng quanh quẩn là phải làm luôn mới hiểu.Đối với họ 8051 mình thấy Reads51 là okie. Down tại đây:
http://rigelcorp.com/reads51.htm
-
To Super_noob:
Keil C thì mình chưa sử dụng bao giờ nên cũng ko dám nói nhiều về nó.
Mặt khác với Reads51 bạn có thể lập trình bằng ASM hoặc C đều dc.
bạn vào link trên down Reads51 về mà "cày 8051" đi nhé.
ngoài ra nếu học bạn nên chuẩn bị những thứ sau để phục vụ học VĐK 8051 dễ dàng hơn:
1. chuẩn bị mạch nạp. có thể mua chỉ khoảng trên dưới 100k thôi
2. làm mạch nguồn
3. mua loại chip AT89C52 về thực hành cùng các linh kiện cần thiết.
4. học kiến thức trong cuốn sách mà bạn đã down ở trên rùi đó.
5. Ngoài ra bạn còn phải có phần mềm nạp chip nữa. Mình dùng ProLoad thấy chip chạy rất ổn định. bạn vào link này down nhé: http://projects.sunrom.com/proload/
==> đi đến thực hành.
Chúc bạn thành công với 8051.Last edited by NANO PRO; 09-09-2007, 13:44.
Comment
-
@super noob:
-Cái đó là do bạn tự chọn thôi.Nếu như bạn mới học về vi điều khiển thì bạn nên chọn ASM vì muốn lập trình với ASM bạn phải hiểu về cấu trúc của VDK để lập trình cho từng thanh ghi và nó tốn ít bộ nhớ hơn là C.Còn lập trình bằng C thì đễ học hơn vì nó gần giống ngôn ngữ con người,nhưng mà học C khi bạn mới biết về vi điều khiển sẽ dân đến việc kiến thức về vi điều khiển của bạn sẽ dậm chân tại chỗ và Cái thiết yếu là khi lập trình C khi biên dịch ra thì nó ngốn rất nhiều bộ nhớ VDK.Cho nên các bước cần thiết bạn phải làm như sau.
1/Tìm hiểu về cấu trúc vi điều khiển(nên học con AT89C51 nó thuộc hô 8051)
2/tìm hiểu tập lệnh ASM của con AT89c51,tìm hiểu chức năng của các ngắt,Timer,cờ tràn.....
3/Tìm hiểu cách vẽ mạch và vẽ mạch in (bằng OrCAD hoặc protel,eagler ....)
4/Học cách làm mạch in thủ công
5/Làm 1 mạch nạp cho con AT89C51 vì cách mạch nạp mua đắt hơn là làm và qua đó nâng cao kĩ năng làm mạch in.
6/Tập lập trình làm nhấp nháy led theo nhiều kiểu.
7/Kiếm tài liệu nâng cao để học
Chúc vuiTâm trí ta say nhưng lòng ta đâu có say
Bởi trái tim tôi đã trót say người
Comment
-
Học nhanh thì mua 1 cái kit về học.
Mình thấy có nhiều anh bán những kit loại đó lắm.
Dùng 8051 của Philip đấy.khỏi mạch nạp gì cả lại khỏi tháo cắm.
đỡ mất time làm mấy cái mạch EZ.
hình như bác tamphong có đấy.
Rồi PNLAB nữa.
TME
nhiều nhiều sắm 1 cái mà học cho nhanh.
Sông dài, Thuyền lớn, Biển rộng bao la.
Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.
Comment
-
Nếu dùng con 8051 của Philip(P89V/C51RDx) thì có phải là quá tốn tiền trong khi bạn này trong thời gian học không,nhưng mà con này lợi ở điểm có thể nạp ISP dùng mạch nạp ngoài ,mạch nạp ngoài cũng chỉ cần 4 con MAX232 và 4 tụ thôi.
Mới học dễ bị dốt VDK lắm nên dùng con rẻ thôi,cái thiết yếu là mạch nạpTâm trí ta say nhưng lòng ta đâu có say
Bởi trái tim tôi đã trót say người
Comment
-
Đốt vài con có saoNguyên văn bởi bk_future Xem bài viếtNếu dùng con 8051 của Philip(P89V/C51RDx) thì có phải là quá tốn tiền trong khi bạn này trong thời gian học không,nhưng mà con này lợi ở điểm có thể nạp ISP dùng mạch nạp ngoài ,mạch nạp ngoài cũng chỉ cần 4 con MAX232 và 4 tụ thôi.
Mới học dễ bị dốt VDK lắm nên dùng con rẻ thôi,cái thiết yếu là mạch nạp
mà con này chì lém.
Có đau mới hổng dám đốt nữa.
Mà RB rẻ mà chỉ vài chục K.
Còn RD thì mắc thật nhưng đáng $.
Cần RD thì call mình(quảng cáo tí chơi).
@phucthinhel:mạch nạp của anh xài tốt lém.
Sông dài, Thuyền lớn, Biển rộng bao la.
Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.
Comment
-
cho em hỏi cái .Cả ngay hôm nay em tim mãi không ra lôi tại sao mà chuong trình không chạy được .HUhu.Đây là chương trình em viêtcho LCD
#include <REGX51.H>
#include<string.h>
sfr LCD_data=0xa0;
sbit BF=0xa7;
sbit RS=P3^5;
sbit Rw=P3^4;
sbit En=P3^3;
void wait(void)
{
long n=0;
En=1;
RS=0;
Rw=1;
LCD_data=0Xff;
while(BF){n++;if(n>100) break;}
En=0;
Rw=0;
}
//*ham dieu khien LCD thuc hien 1 lenh*//
void LCD_control(unsigned char x)
{
En=1;
RS=0;
Rw=0;
LCD_data=x;
En=0;
wait();
}
//*ham khoi tao
void LCDinit(void)
{
LCD_control(0x30);//che do 8 bit
LCD_control(0X38);//2 dong va ma tran 5X7
LCD_control(0x0C);//bat contro
LCD_control(0x06);//tang con troi dich con tro sang phai
LCD_control(0x01);//xoa man hinh
}
//============
void LCD_write(unsigned char c)
{
En=1;
RS=1;
Rw=0;
LCD_data=c;
En=0;
wait();
}
//=========
void LCD_puts(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1) LCD_control(0x80) ;
else LCD_control(0xc0);
len=strlen(s);
While(len!=0)
{
LCD_write(*s);
s++;
len--;
}
}
//=================
void delay(long time)
(
long n;
for(n=0;n<time;n++)
{
;
};
)
//=============
void main(void)
{
char x;
LCDinit();
LCD_puts("8052mcu",1);
delay*(30000);
While(1==1)
{
for(x=0;x<15;x++)
{
LCD_puts("8052mcu",1);
LCD_control(0X18) ;
delay(5000)
}
}
}
nó báo lỗi như sau :
#include <REGX51.H>
#include<string.h>
sfr LCD_data=0xa0;
sbit BF=0xa7;
sbit RS=P3^5;
sbit Rw=P3^4;
sbit En=P3^3;
void wait(void)
{
long n=0;
En=1;
RS=0;
Rw=1;
LCD_data=0Xff;
while(BF){n++;if(n>100) break;}
En=0;
Rw=0;
}
//*ham dieu khien LCD thuc hien 1 lenh*//
void LCD_control(unsigned char x)
{
En=1;
RS=0;
Rw=0;
LCD_data=x;
En=0;
wait();
}
//*ham khoi tao
void LCDinit(void)
{
LCD_control(0x30);//che do 8 bit
LCD_control(0X38);//2 dong va ma tran 5X7
LCD_control(0x0C);//bat contro
LCD_control(0x06);//tang con troi dich con tro sang phai
LCD_control(0x01);//xoa man hinh
}
//============
void LCD_write(unsigned char c)
{
En=1;
RS=1;
Rw=0;
LCD_data=c;
En=0;
wait();
}
//=========
void LCD_puts(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1) LCD_control(0x80) ;
else LCD_control(0xc0);
len=strlen(s);
While(len!=0)
{
LCD_write(*s);
s++;
len--;
}
}
//=================
void delay(long time)
(
long n;
for(n=0;n<time;n++)
{
;
};
)
//=============
void main(void)
{
char x;
LCDinit();
LCD_puts("8052mcu",1);
delay*(30000);
While(1==1)
{
for(x=0;x<15;x++)
{
LCD_puts("8052mcu",1);
LCD_control(0X18) ;
delay(5000)
}
}
}
#include <REGX51.H>
#include<string.h>
sfr LCD_data=0xa0;
sbit BF=0xa7;
sbit RS=P3^5;
sbit Rw=P3^4;
sbit En=P3^3;
void wait(void)
{
long n=0;
En=1;
RS=0;
Rw=1;
LCD_data=0Xff;
while(BF){n++;if(n>100) break;}
En=0;
Rw=0;
}
//*ham dieu khien LCD thuc hien 1 lenh*//
void LCD_control(unsigned char x)
{
En=1;
RS=0;
Rw=0;
LCD_data=x;
En=0;
wait();
}
//*ham khoi tao
void LCDinit(void)
{
LCD_control(0x30);//che do 8 bit
LCD_control(0X38);//2 dong va ma tran 5X7
LCD_control(0x0C);//bat contro
LCD_control(0x06);//tang con troi dich con tro sang phai
LCD_control(0x01);//xoa man hinh
}
//============
void LCD_write(unsigned char c)
{
En=1;
RS=1;
Rw=0;
LCD_data=c;
En=0;
wait();
}
//=========
void LCD_puts(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1) LCD_control(0x80) ;
else LCD_control(0xc0);
len=strlen(s);
While(len!=0)
{
LCD_write(*s);
s++;
len--;
}
}
//=================
void delay(long time)
(
long n;
for(n=0;n<time;n++)
{
;
};
)
//=============
void main(void)
{
char x;
LCDinit();
LCD_puts("8052mcu",1);
delay*(30000);
While(1==1)
{
for(x=0;x<15;x++)
{
LCD_puts("8052mcu",1);
LCD_control(0X18) ;
delay(5000)
}
}
}
#include <REGX51.H>
#include<string.h>
sfr LCD_data=0xa0;
sbit BF=0xa7;
sbit RS=P3^5;
sbit Rw=P3^4;
sbit En=P3^3;
void wait(void)
{
long n=0;
En=1;
RS=0;
Rw=1;
LCD_data=0Xff;
while(BF){n++;if(n>100) break;}
En=0;
Rw=0;
}
//*ham dieu khien LCD thuc hien 1 lenh*//
void LCD_control(unsigned char x)
{
En=1;
RS=0;
Rw=0;
LCD_data=x;
En=0;
wait();
}
//*ham khoi tao
void LCDinit(void)
{
LCD_control(0x30);//che do 8 bit
LCD_control(0X38);//2 dong va ma tran 5X7
LCD_control(0x0C);//bat contro
LCD_control(0x06);//tang con troi dich con tro sang phai
LCD_control(0x01);//xoa man hinh
}
//============
void LCD_write(unsigned char c)
{
En=1;
RS=1;
Rw=0;
LCD_data=c;
En=0;
wait();
}
//=========
void LCD_puts(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1) LCD_control(0x80) ;
else LCD_control(0xc0);
len=strlen(s);
While(len!=0)
{
LCD_write(*s);
s++;
len--;
}
}
//=================
void delay(long time)
(
long n;
for(n=0;n<time;n++)
{
;
};
)
//=============
void main(void)
{
char x;
LCDinit();
LCD_puts("8052mcu",1);
delay*(30000);
While(1==1)
{
for(x=0;x<15;x++)
{
LCD_puts("8052mcu",1);
LCD_control(0X18) ;
delay(5000)
}
}
}|
Comment
-
To Super_noob
bạn khiêm tốn quá. Thực thà mà nói cho đến năm thứ 3 (học kì 2) mình mới thực sự tham gia vào quá trình học tập. Với sự khởi đầu của bạn cùng với quyết tâm mình tin bạn sẽ học tốt.Nguyên văn bởi super_noob Xem bài viếtcảm ơn các bạn nhiều lắm! mình sẽ cố học ASM trước nhưng các bạn có thể nói rõ hơn cho mình về cách chuẩn bị để thực hành được kô? bởi mình tự học hoàn toàn nên kô có ai hướng dẫn cả, với lại mới là sv năn hai nên chưa hiểu lắm về điện tử! mong các bạn giúp minh!
Mình có thể tổng hợp các modul nhỏ để bạn có kế hoạch học tập trinh phục 8051 như sau:
1. Sáng Led đơn, nháy theo chu kì(chạy ngược, chạy xuôi...) ...
2. Phím bấm ==> ma trận phím
3. Led 7 thanh (loại đơn, x2, x3, x4)
4. UART: truyền nhận dữ liệu nối tiếp
5. ghép nối ADC(ADC0804, 0808, 0809...)
6. truyền nhận hồng ngoại
7. Thực hành ngắt, Timer ....
==> thực hiện các modul lớn hơn như hệ thống điều khiển đèn giao thông (2 hướng, 3 hướng, 4 hướng ...), điều khiển nhiệt độ, đo dòng, ổn định tốc độ động cơ (DC, AC), giao tiếp máy tính để điều khiển giám sát ....Và tiến đến làm chủ 8051
Chúc bạn thành công.
Comment
-
Mình tự học VDK hồi lớp 12
bạn vào trang này học khỏi cái này 1/2 kiến thức thành thạo lun áh
http://codientu.info/codientu/ki_thu...cvdk/index.htm
Tài liệu khác mình sẽ gửi lên sau
Tâm trí ta say nhưng lòng ta đâu có say
Bởi trái tim tôi đã trót say người
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Vấn đề về tốc độ quaybởi nguyendinhvanSử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
-
Channel: Điện tử truyền hình
hôm nay, 19:50 -
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -

Comment