Thứ Ba, 9 tháng 10, 2012


Mạch trái tim chưa từng xuất hiện

Ngày 20-10 sắp tới rồi, món quà này xin gửi tới các bạn gái các chị gái và cả các em gái nữa. Chúc chị em luôn vui vẻ, hạnh phúc và thành đạt!

Thứ Hai, 24 tháng 9, 2012

Quà lưu niệm 20/10



Cừa hàng Dientu686.com chúng tôi nhận thiết kế và bán các loại mạch trang trí tặng người yêu. Các bạn ai có như cầu vui lòng liên hệ ngay cho chúng tôi theo số điện thoại: 0985946944. [url]Http://dientu686.com[/url].
Sau đây là một số loại mạch trái tim các bạn có thể tham khảo:

LED Trái Tim Lồng Đôi


LED trái tim đóng hộp xinh xắn



LED trái tim bông hồng trong suốt



Led matrix nói lời yêu thương



Quạt tạo chữ trên không



Chúng tôi có thể ghép led matrix dơn màu hoặc 3 màu với led trái tim, tùy theo yêu cầu của khách hàng.
Hi vọng những sản phẩm trên đây có thể làm vừa lòng các bạn.

Chủ Nhật, 12 tháng 8, 2012

[dientu686.com]Dientu686.com nhận đặt mua linh kiện nước ngoài


Dientu686.com nhận đặt mua linh kiện nước ngoài

Linh kiện điện- điện tử bao gồm:
- Linh kiện trong nước không có sẵn hàng.
- Linh kiện hiếm gặp, ít sử dụng.
- Linh kiện cần số lượng lớn, giá tốt hơn giá thị trường.

Điều kiện đặt mua :
- Số lượng tốt thiểu đặt mua là 10 đơn vị, hoặc giá trị đơn hàng lớn hơn 300.000 vnd.

- Thông tin linh kiện bao gồm tên đầy đủ của linh kiện, kiểu chân, Datasheet kèm theo (nếu có). 

- Giá linh kiện phụ thuộc và số lượng đặt hàng.
- Báo giá linh kiện sau 1 ngày.
- Thanh toán 100% trước khi nhận hàng. 

Phương thức đặt mua:
- Gửi email gồm danh sách linh kiện, số lượng cần đặt mua, thông tin liên hệ theo mẫu sau đến e-mail dientu686@gmail.com (ưu tiên e-mail có đầy đủ thông tin liên hệ).
- Gọi điện, nhắn tin số điện thoại 0985 946 944
- Liên hệ trực tiếp tại Nguyên Xá  - Minh Khai - Từ Liêm - Hà Nội

Thời gian đặt mua :
- 2-14 ngày có hàng kể từ ngày đặt mua, Số ngày cụ thể tuỳ vào thời điểm và được thông báo khi đặt mua.

Xin chân thành cám ơn!
http://dientu686.com/

Thứ Sáu, 10 tháng 8, 2012

[dientu686.com]Tối ưu hóa nguyên của 8051 bằng con trỏ


Tối ưu hóa nguyên của 8051 bằng con trỏ

về nguyên tắc khi lập trình, tất cả các hoạt dộng xử lý thì trình dịch đã xử lý trên C, đến khi nạp vào chip thì đó chỉ là những giá trị nhị phân 8 bit hoặc 16 bit....
nếu tất cả những gì trên C làn được thì mình cũng có thể tích hợp vào trong chương trình chạy của mình.
hôm nay mình xin trình bày về các cách lập trình để tối ưu tài nguyên của 8051:
1, sử dụng con trỏ thay vì dùng các mảng cố định.
mình xin đưa ra 2 cách để các bạn so sánh: (mình chỉ đưa ra phần chính)
cách 1:
char *chuoi ="EITVIET.COM"; // đây là khai báo kiểu chuỗi kí tự
char *chuoi2="tiennam191";
...............................................
void hienthi1()
{
......xử lý để hiển thị chuỗi "EITVIET.COM" lên LCD, Matrix,...
}
void hienthi2()
{
xử lý để hiển thị chuỗi "tiennam191" lên LCD, Matrix,,....
}
-> về cơ bản thì chúng ta viết ra 2 hàm này ko sai, nhưng vẫn tiêu phí của vđk kha khá bộ nhớ. mình nói như vậy vì các nguyên nhân sau. thứ nhất đây đều là định dạng kiểu chuỗi, chúng đều có thuộc tính về độ dài, mã của các kí tự và dùng chung file "string.h". thứ 2 chúng ta có thể dùng con trỏ để xử lý 2 chuỗi này trong 1 hàm chung.
mình xin đưa ra cách của mình :
#include <stdio.h>
#include <string.h>
unsigned int dodai,i;
void hienthi(char *chuoi) // chuoi sẽ trỏ đến chuỗi mình nhập vào.
{
dodai=strlen(chuoi); // hàm strlen(); sẽ đo độ dài 1 chuỗi, để sử dụng hàm này cần có thư viện string.h
for(i=0;i<dodai;i++) // độ dài chuỗi đã được đo bằng hàm strlen().
{
hienthi_kt(chuoi[i]); // trường hợp này mình dùng trong hiện thị lcd các bạn có thể thay bằng các cách hiện thị khác....
........................... // xử lý thêm các việc khác
}
}

khi sử dụng thì chúng ta nhập luôn chuỗi để ghi vào hàm.
ví dụ : hienthi("EITVIET.COM"); hienthi("tiennam191"); tóm lại các bạn có thể ghi bất kì chuỗi nào vào trong hàm để hiển thị.
qua kinh nghiệm của mình thì mình thấy mảng 1 chiều, 2 chiều,... cũng có thể áp dụng con trỏ, để xử lý.
Mình xin đưa ra ví dụ
Unsigned char sangdan[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
Unsigned char sangmot[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
Unsigned char I;
Void delay(unsigned int tre)
{
While(tre--);
}
Void hienthi(unsigned char *mang)
{
For(i=0;i<8;i++)
{
P0=P3=mang[i];
P1=P2=0x00;
Delay(1000);// trễ 1000*8 uS
}
}
Khi sử dụng chỉ cần gọi : hienthi(sangmot); hienthi(sangdan);
Đây là những kinh nghiệm khi lập trình của mình, hi vọng sẽ có ích cho các bạn.
phần 2: 1 chương trình led trái tim dùng con trỏ.bạn hãy mổ xẻ nó nhé. hi vọng các bạn sẽ phát triển code để có những hiệu ứng đẹp và thuật toán tối ưu hơn. 
#include <regx52.h>
#define tien 1
#define lui 0
unsigned char i,j,k,a,b,c,d,e,f;
unsigned char sm[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xff};
unsigned char sd[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};
unsigned char td[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsigned char pr[]={0x0F,0x87,0xC3,0xE1,0xF0,0xF8,0xFC,0xFE,0xFF};
unsigned char nn[]={0xFE,0xFD,0xFA,0xF5,0xEA,0xD5,0xAA,0x55,0xAA};
unsigned char dn[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0x7E,0x7D,0x7B,0x77,0x6F,0x5F,0x3F,0x3E,
0x3D,0x3B,0x37,0x2F,0x1F,0x1E,0x1D,0x1B,
0x17,0x0F,0x0E,0x0D,0x0B,0x07,0x06,0x05,
0x03,0x02,0x01,0x00};
void delay(unsigned int time) { while(time--); }
unsigned char lb(unsigned char bi)
{
unsigned char j,r;
unsigned int tg;
for(j=0;j<8;j++) { r=(bi&0x01)?1:0;tg|=r;tg<<=1;bi>>=1; }
tg=tg/2;
return tg;
}

void hu1(unsigned char *ma,unsigned char l,unsigned char model,unsigned char ma1,unsigned char ma2,unsigned int tre)
{
for(i=0;i<l;i++) 
{
if(model==tien) { a=ma[i]; b=ma1; c=ma[i]; d=ma1; }
if(model==lui) { a=ma1; b=lb(ma[i]); c=ma1; d=ma[i]; }
delay(tre);
}
for(i=0;i<l;i++) 
{
if(model==tien) { a=ma2 ; b=ma[i]; c=ma2; d=lb(ma[i]); }
if(model==lui) { a=lb(ma[i]); b=ma2; c=lb(ma[i]); d=ma2; }
delay(tre);
}
}
void hu2(unsigned char *ma,unsigned char bd,unsigned char kt,unsigned char chieu,unsigned char dao,unsigned int tre)
{
for(i=bd;i<kt;i++) 
{
if(dao==lui) j=(kt-i-1);
if(dao==tien) j=i;
if(chieu==tien) {a=b=c= ma[j]; d=lb(ma[j]); }
if(chieu==lui ) {a=b=c= lb(ma[j]); d=ma[j]; }
delay(tre);

}
void hu3(unsigned char *ma,unsigned char l,unsigned char gt1,unsigned char chieu,unsigned char dao,unsigned int tre)
{
for(i=0;i<8;i++) 

if(dao==lui) j=(l-i-1);
if(dao==tien) j=i;
if(chieu==tien){a=ma[j];b=c=d=~gt1;}
if(chieu==lui ){d=ma[j];a=c=b=~gt1;}
delay(tre);
}
for(i=0;i<8;i++) 

if(dao==lui) j=(l-i-1);
if(dao==tien) j=i;
if(chieu==tien){a=gt1;b=ma[j];c=d=~gt1;}
if(chieu==lui ){d=gt1;c=lb(ma[j]);a=b=~gt1;}
delay(tre);
}
for(i=0;i<8;i++) 

if(dao==lui) j=(l-i-1);
if(dao==tien) j=i;
if(chieu==tien){a=b=gt1;c=ma[j];d=~gt1;}
if(chieu==lui ){d=c=gt1;b=lb(ma[j]);a=~gt1;}
delay(tre);
}
for(i=0;i<8;i++) 

if(dao==lui) j=(l-i-1);
if(dao==tien) j=i;
if(chieu==tien){a=b=c=gt1;d=lb(ma[j]);}
if(chieu==lui ){d=c=b=gt1;a=lb(ma[j]);}
delay(tre);
}
}
void do_nuoc(unsigned char model, unsigned int tre)
{
unsigned char bd=0,kt=0;
for(j=8;j>0;j--)
{
bd=kt;kt=kt+j;
for(i=0;i<9;i++) 

if(model==tien) { a=sm[i]; c=sm[i];} 
if(model==lui ) { b=lb(sm[i]); d=sm[i];} 
delay(tre);
}
for(i=bd;i<kt;i++) 

if(model==tien) {b=dn[i]; d=lb(dn[i]); }
if(model==lui ) {a=lb(dn[i]); c=lb(dn[i]); }
delay(tre);
}

for(i=0;i<36;i++) 

if(model==tien) {b=0x00;d=0x00;a=dn[i];c=dn[i];}
if(model==lui ) {a=0x00;c=0x00;b=lb(dn[i]);d=dn[i];}
delay(tre);
}
}
void nhapnhay(unsigned int tre)
{
for(i=0;i<3;i++) 
{
a=b=c=d=0x00;delay(tre);
a=b=c=d=0xff;delay(tre);
}
}
void main()
{
while(1) 
{
nhapnhay(30000);
hu1(sm,8,tien,0xff,0xff,20000);
hu1(sm,8,lui ,0xff,0xff,20000);
hu2(sm,0,8,tien,tien,20000);
hu2(sm,0,8,lui ,tien,20000);
hu2(sd,0,8,tien,tien,20000);
hu2(sd,0,8,tien,lui ,20000);
hu2(dn,0,36,lui ,tien,20000);
hu1(sd,8,tien,0xff,0x00,20000);
hu1(td,8,tien,0x00,0xff,20000);
hu1(sd,8,lui ,0xff,0x00,20000);
hu1(td,8,lui ,0x00,0xff,20000);
hu3(sd,8,0x00,tien,tien,20000);
hu3(td,8,0xff,lui ,tien,20000);
hu3(sd,8,0x00,lui ,tien,20000);
hu3(td,8,0xff,tien,tien,20000);
do_nuoc(lui ,20000);
nhapnhay(30000);
hu2(dn,0,36,tien,tien,20000);
hu2(sd,0,8,tien,lui ,20000);
hu2(sd,0,8,tien,tien,20000);
hu3(td,8,0xff,tien,tien,20000);
do_nuoc(tien,20000);
hu2(dn,0,26,tien,tien,20000);
hu2(pr,0,7,tien,tien,35000);
hu2(dn,14,26,lui,tien,20000);
hu2(pr,0,7,lui,tien,30000);
hu2(dn,14,36,tien,tien,20000);
hu2(sm,0,8,tien,tien,20000);
hu2(sm,0,8,lui ,tien,20000);
hu2(sd,0,8,tien,tien,20000);
hu2(sd,0,8,tien,lui ,20000);
hu2(dn,0,26,tien,tien,20000);
hu2(pr,0,7,tien,tien,35000);
hu2(dn,0,36,lui ,tien,20000);
hu2(pr,0,7,lui,tien,30000);
hu2(dn,14,36,tien,tien,20000);
nhapnhay(30000);
do_nuoc(tien,20000); 
hu1(sm,8,tien,0xff,0xff,20000);
hu1(sm,8,lui ,0xff,0xff,20000);
hu3(sd,8,0x00,tien,tien,20000);
hu3(td,8,0xff,lui ,tien,20000);
hu3(sd,8,0x00,lui ,tien,20000);
hu3(td,8,0xff,tien,tien,20000);
hu1(sd,8,tien,0xff,0x00,20000);
hu1(td,8,tien,0x00,0xff,20000);
hu1(sd,8,lui ,0xff,0x00,20000);
hu1(td,8,lui ,0x00,0xff,20000);
hu3(sd,8,0x00,tien,tien,20000);
hu3(td,8,0xff,lui ,tien,20000);
hu3(sd,8,0x00,lui ,tien,20000);
hu3(td,8,0xff,tien,tien,20000);
do_nuoc(lui ,20000);
hu2(dn,0,26,tien,tien,20000);
hu2(pr,0,7,tien,tien,35000);
hu2(dn,14,26,lui,tien,20000);
hu2(pr,0,7,lui,tien,30000);
}

}

http://dientu686.com/ 

[dientu686.com]Tìm hiểu các thông số của động cơ bước trước khi tính toán


Tìm hiểu các thông số của động cơ bước trước khi tính toán

Mình xin khai bút trong diễn đàn.

Moment xoắn , sự chính xác và độ phân giải là những thông số kỹ thuật quan trọng của một động cơ bước.
Động cơ bước cung cấp các thỏa thuận để có thế kiểm tra khi mà các kỹ sư đang đau đầu để xác định lý do tại sao một động cơ cụ thể lại gặp vấn đề trong một ứng dụng đặc biệt. Động cơ bước nổi bật trong việc cung cấp khả năng điều khiển chính xác vị trí và vận tốc góc với đáp ứng xung điện áp từ một mạch điều khiển vòng hở, nhưng với điều kiện người thiết kế hệ thống phải tính toán được ảnh hưởng của những thông số liên quan đến động cơ .
Trong một động cơ bước thực tế , một rotor bằng sắt có nhiều răng đáp ứng với từ trường thay đổi trong nam châm điện của stator được sinh ra bởi một mạch điều khiển . Những mạch này phải cung cấp các xung tuần tự đúng lúc cho những pha cần thiết để lái rotor đến một vị trí góc nhất định trong một thời gian xác định với sai số chấp nhận được và giữ nó tại vị trí đó cho tới khi mạch điều khiển chỉ định một vị trí mới . Dưới đây là một số các thông số có liên quan đến động cơ mà chúng ta sẽ thảo luận trong các yêu cầu hoạt động cụ thể :
- dynamic torque : moment được hình thanhg bởi động cơ khi chuyển động ,nó phụ thuộc vào dòng điện trong nam châm điện của stator.
- Phase inductance: một tham số điện , nó giới hạn thời gian lên của dòng điện pha và do đó ảnh hưởng tới dynamic torque.
- Holding torque : moment của động cơ sinh ra để ngăn cản một tải tĩnh nào đó có ý định kéo hệ thống ra khỏi vị trí hiện tại.
- Torque stiffness : một khả năng của động cơ chống lại sự chuyển vị góc trong một bước.
- Rotor inertia : một thông số cơ khí ,nó giới hạn khả năng tăng tốc và giảm tốc của động cơ.
Những vấn đề của động cơ bước bắt đầu khi khách hàng tiếp cận với nhà cung cấp động cơ bước với những tài liệu không đầy đủ hoặc không chính xác. Thí dụ ,nhà thiết kế của một công ty yêu cầu một động cơ có moment giữ (holding torque) nhất định trong khi cái mà họ thực sự cần là moment động (dynamic torque) . Và khi không có lựa chọn phù hợp có lẽ họ tìm đến động cơ có moment giữ lớn hơn.
Một động cơ không nhất thiết phải thỏa mãn tất cả các yêu cầu,bởi vì một moment giữ lớn hơn không nhất thiết phải chuyển thành một moment động lớn hơn .Ngoài ra, moment giữ lớn hơn luôn đi đôi với một quán tính cũng lớn hơn , làm cản trở khả năng tăng tốc và có thể làm chậm sự hoạt động của hệ thống tới mức không thể chấp nhận được. Mặc dù có nhiều thông số nhưng bạn có thể theo một số các hướng dẫn nhanh để xem xét xem liệu động cơ chạy không đúng có phải là do một phần không tốt nào đó hay cơ bản là nó không phù hợp với ứng dụng mà mình chuẩn bị làm .
Độ chính xác của một bước phụ thuộc vào cấu trúc của động cơ và nó tỉ lệ với moment cứng (torque stiffness) của động cơ . Mối quan hệ giữa moment giữ (holding torque) , T , góc chuyển vị , q , xấp xỉ :
T = T0 • sin(Nq)
Trong đó , N là số răng của rotor , T¬0 là moment tĩnh cực đại của động cơ . Moment cứng của động cơ ( torque stiffness) được cho bởi :
dT/dq=N•T0•cos(Nq)
Trong đó dT là sự biến thiên moment , dq là sự thay đổi về góc . Phương trình trên chỉ ra , có thể tăng N hoặc T0 để cải thiện moment cứng . Tạo ra những bước phụ (microstepping ) giữa những bước cơ khí nguyên thủy ( tương ứng với số răng của rotor ) ,hoặc tăng số pha ( thí dụ như sử dụng điều khiển 3 pha , 5 pha ) không cải thiện được moment cứng của động cơ (fig 1) .

Những thông số thiết kế cơ khí , phương pháp sản xuất , và dung sai ảnh hưởng tới độ chính xác tuyệt đối của động cơ bước . Độ chính xác của bước , thí dụ phụ thuôc vào vị trí chính xác các răng của stator , phân bố đồng đều các răng của rotor , và sự đồng bộ của khe hở không khí . Nhà sản xuất có thể đạt được đến 5% một bước chính xác cơ bản : 5% sai số của 1.8° trên một động cơ bước là một cung 65.4’ (I don’t know how to calculate ^^).
Sai số tuyệt đối này thì không đổi cho dù có bao nhiêu bước phụ (microsteps) được thêm vào đi nữa . Các bước phụ làm tăng độ phân giải bước nhưng nó lại làm cho bước không chính xác . Đối với các bước phụ , sai số tuyệt
Fig 1
đối a ±5% sẽ trở thành a ±10% đối với ½ bước và sẽ là a ±160% đối với 1/32 bước . Ở những trường hợp sai số tuyệt đối trên 100% thì bạn sẽ không đảm bảo được rằng động cơ sẽ bước khi nhận được xung .
Đối với trình độ công nghệ ngày nay , số bước phụ vượt qua 32 bước nếu có bất kì cải tiến nào . Nếu bạn thấy một động cơ bước không thỏa mãn về độ chính xác khi có nhiều bước phụ thì hẳn là bạn cũng nhận ra rằng đó là một thiết kế thiếu sót – không phải là một động cơ hay một bộ điều khiển tệ .
Thời gian quá độ của dòng và moment
Nguyên nhân lớn nhất của sự suy giảm moment khi động cơ chạy ở tốc độ cao hơn chính là do thời gian quá độ của xung đưa vào ngắn hơn so với thời gian quá độ của dòng trên pha của động cơ . Điều này có nghĩa là xung kết thúc trước khi dòng pha đạt đến mức có thể cung cấp đủ moment . Một phương trình mắt lưới RL nối tiếp đơn giản minh họa mối quan hệ , trong đó t là
thời gian quá độ của dòng pha .



Để giảm t thì điện áp nguồn cung cấp , V , phải đủ lớn nếu có thể , và điện cảm L , điện trở R trên pha của motor phải nhỏ đến mức có thể . Figure 3a, trong đó t = L/R , chỉ ra dòng điện và thời gian trong mạch RL nối tiếp . Chú ý rằng tại thời điểm t , dòng tăng lên một lượng bằng 1-e–1 ¬¬mức cuối cùng của nó I0 hay 0.63IO , nhưng chỉ còn là 1-e–0.5 IO hay 0.39 IO tại thời điểm t/2.
Moment xuất hiện tại vận tốc 1/t1(Fig. 3b), khi t1 = t ,hay 62% (hay 100% x 0.63IO/0.39IO) thì lớn hơn moment tại vận tốc lớn hơn 1/t2 (Fig. 3c) khi t2 = t/2 . Moment được tối ưu hóa nếu dòng điện pha có thể đạt được mức giống như khi tăng đến thời điểm 2.3t , trong khoảng thời gian này thì dòng điện tăng lên tới 90%I0 .
Moment giữ và moment động
Giả sử dòng tăng lên đủ trong suốt quá trình chuyển pha .Bạn có thể tính toán moment động lớn nhất của động cơ lưỡng cực 2 pha như sau :

Trong đó , T0 là moment giữ cực đại (Fig. 4a).

Figure 3. (a) Motor phase inductance, L, and resistance, R, limit phase-current risetime. For example, application of phase voltage for t/2, t, and 2.3t, respectively, results in peak currents reaching 39%, 63%, and 90% of final value Io. Because torque is approximately proportional to current, motors that operate at (b) lower speeds, which permit longer applications of phase voltage, deliver more torque than those (c) operating at higher speeds.
Nếu bạn cần tiến tới sự lý tưởng , nó đòi hỏi thời gian chuyển mạch hoàn hảo liên quan tới vị trí của động cơ , bạn nên sử dụng một bộ điều khiển vòng kín . Một bộ điều khiển vòng hở sẽ cho bạn moment động thấp nhất là :

Hoặc 63.7% của I¬¬¬¬¬1 (Fig. 4b).
Moment động thực tế là (90% + 63.7%)/2 or 76.8%.




Figure 4. The shaded portions of these curves represent (a) the maximum and (b) the minimum available dynamic torque, averaged between points a and b.
Với một đầu vào nhất định , bạn không thể thay đổi nguồn ngõ ra cụ thể , T(w)dw ( trong đó T(w) là moment tại vận tôc góc w ) . Nếu hướng dẫn của bạn yêu cầu nhiều hơn moment động tại vận tốc góc w , có lẽ bạn lại gặp phải một thiết kế thiếu xót , một thiết bị không tốt . Nếu bạn biết rõ về vận tốc , sự chính xác , độ phân giải , moment cần thiết cho ứng dụng của bạn thì bạn có thể làm việc với nhà thiết kế công ty của bạn để xác định xem liệu một động cơ bước cụ thể có thể cung cấp đủ moment tại vận tốc hoạt động trong những ràng buộc cơ khí của bạn hay không .

http://dientu686.com/ 

[dientu686.com]Sơ đồ nguyên lí robo tự hành


Sơ đồ nguyên lí robo tự hành

Đây là sơ đồ nguyên lý ROBOT tự hành sử dùng VĐK 89S52.
Gồm 6 phần:
1. Bản vẽ mạch in
2. Khối cảm biến
3. Khối gắn 8 cảm biến
4. Khối nguồn và nút bấm chương trình
5. Khối xử lý 89S52
6. Khối PWM và đảo chiều
http://www.mediafire.com/?blpk80u1wo5cc9d

http://dientu686.com/ 

[dientu686.com]Từng bước học VDK


Từng bước học VDK

Nắm vững cấu trúc và nguyên lý lập trình VDK sẽ giúp ích rất nhiều trong những năm chuyên ngành điện tử. Khi học VDK và làm được 1 mạch để cho nó chạy sẽ tăng thêm hứng thú khi học tập. Tuy những năm cuối mói được học VDK nhưng các em năm 2,3 có thể bắt đâu tìm hiều. Mình sẽ viêt loạt bài để giới thiệu về VDK và từng bước học lập trình VDK.
VDK thì có rất nhiều loại, nhiều hãng khác nhau, ở DN thì có 1 số loại phổ biến như sau:
- Họ VDK 8051: 89Cxx, 89Sxx, VDK 8051 của Philip (89V51RB1,89V51RD2,....)
- PIC (Microchip): 16F, 18F, dSPIC,.....
- PSOC: CY27443, CY29466,...
- AVR
- Các VDK họ ARM: như LPC2000 của NXP,....
- ......
Hiện tại VDK 89 vẫn đang được dùng phổ biến. Tuy nhiên các họ VDK khác cũng đang được dùng ngày càng phổ biến hơn nhờ nhiều tính năng vượt trội.
Mình sẽ bắt đầu với VDK 8051
Trước tiên là các kiến thức cần thiết để có thể học VDK:
- Điện tử cơ bản.
- Vi xử lý
- Mạch sô
- ....
Các sách tham khảo:
- Họ VDK 8051 của Tống Văn On
- Cấu trúc và lập trình họ VDK 8051 của thầy Nguyễn Tăng Cường.
- Sách hướng dẫn lập trình VDK của Lê Duy Phi.

http://dientu686.com/