Em vừa mới chân ướt chân ráo nhận đồ án. Em làm mạch đo và hiển thị(LED) tốc độ động cơ DC. Sử dụng Vi xử lý 8051+encoder. Nhưng e không biết mạch nguyên lý, sơ đồ khối, cần những con IC nào và bắt đầu từ đâu hết? Mong các anh và chị cho em chút tư vấn và tài liệu! xin cảm ơn. Nếu chủ đề này có trùng mong các anh chị đừng xóa và chỉ đường link dùm em!
Mạch đo và hiển thị động cơ DC!
Collapse
X
-
Tags: None
-
Code hiển thị led 7 đoạn. bạn tham khảoCode:#include <REGX51.H> sbit A1 = P1^0; sbit A2 = P1^1; sbit A3 = P1^2; sbit A4 = P1^3; sbit TANG=P1^4; sbit GIAM=P1^5; unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned long xung,i; unsigned int k; unsigned char dem,tocdo; /////////////////////////////////////// void delay(int time) // ham delay phuc vu quet led {int n; for(n=0;n<time;n++) { ; } } ////////////////////////////////////// void quetled7() // ham quet led 7 { //////////////// hang nghin A1 = 1; P2 = so[i/1000]; delay(50); A1 = 0; P2=0xff; ////////////////////////// hang tram A2=1; P2=so[(i/100)%10]; delay(50); A2=0; P2=0xff; ///////////////////////////////// hang chuc A3=1; P2=so[(i/10)%10]; delay(50); A3=0; P2=0xff; //////////////////////////////// hang don vi A4=1; P2=so[i%10]; delay(50); A4=0; P2=0xff; } ///////////////////////////////////// void khoitaotimer() // { TMOD = 0x21; // timer0 che do 1 IE = 0x8A; TH0 = 0xC3; // tre 50us TL0 = 0x50; ET0 = 1; TR0 = 1; TH1 = -100; TL1 = -100; ET1 = 1; TR1 = 1; } //////////////////////////// void khoitaongatngoai() { EA=0; EX0=1; IT0=1; EA=1; } /////////////////////////////////////////// void isr_timer0() interrupt 1 { TF0=0; TR0=0; quetled7(); k++; TH0=0xC3; // gia tri nap lai TL0=0x50; if(k==20) // lay mau 1s { i=((xung*60)/32); // vong/phut encoder dung loai 32x k=0; xung=0; } TR0=1; } ///////////////////////////////////////// void isr_timer1() interrupt 3 { TF1=0; TR1=0; dem++; if(dem>100) dem=0; if(dem<tocdo) P1_6=1; else P1_6=0; TR1=1; } /////////////////////// phim nhan void phimnhan() { ////////////////////////// if((TANG==0)&&(GIAM==1)) { while(!TANG); tocdo=tocdo+10; if(tocdo==110)tocdo=100; } //////////////////////////////// if((GIAM==0)&&(TANG==1)) {while(!GIAM); tocdo=tocdo-10; if(tocdo==-10)tocdo=0; } } /////////////////////////////////// ham ngat ngoai void isr_ex0() interrupt 0 { xung++; } ////////////////////////////////////// ham chinh void main() {P1_6=1; khoitaotimer(); khoitaongatngoai(); while(1) {phimnhan(); } }Nguyễn Huy Biên - 01649 802 694
gmail :
Comment
-
Mình cũng vây lính mới vào bắt thiết kế ngay bài này bằng Proteus. Bạn có giúp mình vẽ mạch trên proteus với
Comment
-
Mấy bạn cứ xin đồ ăn sẵn vậy.
nếu không yêu cầu hiển thị chiều quay thì bạn cho đầu ra từ encoder vào chân nhắt của vdk đếm số xung trong 1 khoảng thời gian xác định nào đó rồi suy ra tốc độ thôi. nếu encoder có 2 đầu ra thì bạn có thể dùng chế độ x2 x4 số xung để tăng độ chính xác
còn việc hiển thị bạn có thể dùng các mạch chốt, ghi dịch để giữ trang thái của đèn, hoặc trực tiếp để cho vdk liên tục quét qua các led để hiển thị
Comment
-
Nguyên văn bởi youaremylife Xem bài viếtMấy bạn cứ xin đồ ăn sẵn vậy.
nếu không yêu cầu hiển thị chiều quay thì bạn cho đầu ra từ encoder vào chân nhắt của vdk đếm số xung trong 1 khoảng thời gian xác định nào đó rồi suy ra tốc độ thôi. nếu encoder có 2 đầu ra thì bạn có thể dùng chế độ x2 x4 số xung để tăng độ chính xác
còn việc hiển thị bạn có thể dùng các mạch chốt, ghi dịch để giữ trang thái của đèn, hoặc trực tiếp để cho vdk liên tục quét qua các led để hiển thị
anh ơi tư vấn giúp e với
Comment
-
Nguyên văn bởi bienhou Xem bài viếtCode hiển thị led 7 đoạn. bạn tham khảoCode:#include <REGX51.H> sbit A1 = P1^0; sbit A2 = P1^1; sbit A3 = P1^2; sbit A4 = P1^3; sbit TANG=P1^4; sbit GIAM=P1^5; unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned long xung,i; unsigned int k; unsigned char dem,tocdo; /////////////////////////////////////// void delay(int time) // ham delay phuc vu quet led {int n; for(n=0;n<time;n++) { ; } } ////////////////////////////////////// void quetled7() // ham quet led 7 { //////////////// hang nghin A1 = 1; P2 = so[i/1000]; delay(50); A1 = 0; P2=0xff; ////////////////////////// hang tram A2=1; P2=so[(i/100)%10]; delay(50); A2=0; P2=0xff; ///////////////////////////////// hang chuc A3=1; P2=so[(i/10)%10]; delay(50); A3=0; P2=0xff; //////////////////////////////// hang don vi A4=1; P2=so[i%10]; delay(50); A4=0; P2=0xff; } ///////////////////////////////////// void khoitaotimer() // { TMOD = 0x21; // timer0 che do 1 IE = 0x8A; TH0 = 0xC3; // tre 50us TL0 = 0x50; ET0 = 1; TR0 = 1; TH1 = -100; TL1 = -100; ET1 = 1; TR1 = 1; } //////////////////////////// void khoitaongatngoai() { EA=0; EX0=1; IT0=1; EA=1; } /////////////////////////////////////////// void isr_timer0() interrupt 1 { TF0=0; TR0=0; quetled7(); k++; TH0=0xC3; // gia tri nap lai TL0=0x50; if(k==20) // lay mau 1s { i=((xung*60)/32); // vong/phut encoder dung loai 32x k=0; xung=0; } TR0=1; } ///////////////////////////////////////// void isr_timer1() interrupt 3 { TF1=0; TR1=0; dem++; if(dem>100) dem=0; if(dem<tocdo) P1_6=1; else P1_6=0; TR1=1; } /////////////////////// phim nhan void phimnhan() { ////////////////////////// if((TANG==0)&&(GIAM==1)) { while(!TANG); tocdo=tocdo+10; if(tocdo==110)tocdo=100; } //////////////////////////////// if((GIAM==0)&&(TANG==1)) {while(!GIAM); tocdo=tocdo-10; if(tocdo==-10)tocdo=0; } } /////////////////////////////////// ham ngat ngoai void isr_ex0() interrupt 0 { xung++; } ////////////////////////////////////// ham chinh void main() {P1_6=1; khoitaotimer(); khoitaongatngoai(); while(1) {phimnhan(); } }
bạn có thể post sơ đồ nguyên lý lên được không
Comment
-
Cảm ơn thuật toán của bạn mình cũng đang có một đề tài cần dùng đến đo tốc độ động cơ đọc qua qua chưa hiểu gì. Nhờ code của bạn giờ hiểu hơn rồi. Thanks...Nguyên văn bởi bienhou Xem bài viếtCode hiển thị led 7 đoạn. bạn tham khảoCode:#include <REGX51.H> sbit A1 = P1^0; sbit A2 = P1^1; sbit A3 = P1^2; sbit A4 = P1^3; sbit TANG=P1^4; sbit GIAM=P1^5; unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned long xung,i; unsigned int k; unsigned char dem,tocdo; /////////////////////////////////////// void delay(int time) // ham delay phuc vu quet led {int n; for(n=0;n<time;n++) { ; } } ////////////////////////////////////// void quetled7() // ham quet led 7 { //////////////// hang nghin A1 = 1; P2 = so[i/1000]; delay(50); A1 = 0; P2=0xff; ////////////////////////// hang tram A2=1; P2=so[(i/100)%10]; delay(50); A2=0; P2=0xff; ///////////////////////////////// hang chuc A3=1; P2=so[(i/10)%10]; delay(50); A3=0; P2=0xff; //////////////////////////////// hang don vi A4=1; P2=so[i%10]; delay(50); A4=0; P2=0xff; } ///////////////////////////////////// void khoitaotimer() // { TMOD = 0x21; // timer0 che do 1 IE = 0x8A; TH0 = 0xC3; // tre 50us TL0 = 0x50; ET0 = 1; TR0 = 1; TH1 = -100; TL1 = -100; ET1 = 1; TR1 = 1; } //////////////////////////// void khoitaongatngoai() { EA=0; EX0=1; IT0=1; EA=1; } /////////////////////////////////////////// void isr_timer0() interrupt 1 { TF0=0; TR0=0; quetled7(); k++; TH0=0xC3; // gia tri nap lai TL0=0x50; if(k==20) // lay mau 1s { i=((xung*60)/32); // vong/phut encoder dung loai 32x k=0; xung=0; } TR0=1; } ///////////////////////////////////////// void isr_timer1() interrupt 3 { TF1=0; TR1=0; dem++; if(dem>100) dem=0; if(dem<tocdo) P1_6=1; else P1_6=0; TR1=1; } /////////////////////// phim nhan void phimnhan() { ////////////////////////// if((TANG==0)&&(GIAM==1)) { while(!TANG); tocdo=tocdo+10; if(tocdo==110)tocdo=100; } //////////////////////////////// if((GIAM==0)&&(TANG==1)) {while(!GIAM); tocdo=tocdo-10; if(tocdo==-10)tocdo=0; } } /////////////////////////////////// ham ngat ngoai void isr_ex0() interrupt 0 { xung++; } ////////////////////////////////////// ham chinh void main() {P1_6=1; khoitaotimer(); khoitaongatngoai(); while(1) {phimnhan(); } }
Let's go!!!
Comment
Bài viết mới nhất
Collapse
-
bởi mèomướp1. Tìm hiểu đc thì càng tốt, bận thì thôi. Ko cần quá quan trọng
2. Số tự động cho đơn giản, kiểu như đi xe ga ấy ạ
3. Học lý thuyết tử tế ok
4.ok
5.có. đủ số km, tgian cầm lái là đc
6.đi ăn tập thể,...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 16:34 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnE nhớ bác Vivanpham làm bên điện tử y sinh, có lần đó cái sơ đồ máy chụp x quang sao có mấy con thryristor làm gì mà ko ai trả lới đúng cả
...
-
Channel: Tâm tình dân kỹ thuật
07-08-2026, 09:17 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnBác kiểm tra lại đường mạch, mối hàn xem có bị hở hoặc dẫn không tốt không?
Thay cầu diode lớn hơn càng tốt không vấn đề gì cả....-
Channel: Điện thanh
07-08-2026, 09:12 -
-
bởi LantheChào bạn.
Trục đầu ra của hộp số hành tinh xoắn ốc được kết nối với mặt bích của khách hàng thông qua một trục răng trong. Sau chưa đầy sáu tháng hoạt động, nó phát ra tiếng kêu lách cách và độ rơ lớn đáng báo động.
Việc...-
Channel: Thiết bị điện tử cá nhân
06-08-2026, 13:05 -
-
bởi ittcChào các anh em nhé, mình dự định sắp tới sẽ đi học lái xe Ôtô, thi lấy bằng lái. Cụ thể mình sẽ học và thi lấy giấy phép lái xe hạng B. Thật sự mình là người chưa có kiến thức hiểu biết gì về Ôtô cả ? tất nhiên mình sẽ phải...-
Channel: Tâm tình dân kỹ thuật
-
-
Trả lời cho Amply bị rò DC 22 voltbởi trung30000Theo sự hướng dẫn của bác, sau khi em kiểm tra tầng Vi sai sử dụng cặp c1815, tiếp đến là 1 con a1013, và cặp thúc sử dụng mje304g và mje305g, em đã tiến hành thay cặp Vi sai c1815 sau đó mở máy lên đo ngõ công suất DC 0,2V hai giây sau máy đo...-
Channel: Điện thanh
05-08-2026, 20:09 -

Comment