Bác nào có code đo tốc độ động cơ Encoder dùng VDK 89s52 hiển thị lên 4 LED 7 đoạn post lên cho em tham khảo với. Em đang làm đồ án môn VDK đánh máy cái code mà nó toàn sai hoài... Thank các bác.
Thông báo
Collapse
No announcement yet.
Code đo tốc độ động cơ Encoder....
Collapse
X
-
Bạn tham khảo code này xem:
#include <16F877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//================================================== ==========================
#use fast_io(c)
#use fast_io(d)
#use fast_io(b)
#include<lcd.c>
//================================================== ==========================
float sovong,v;
float xung =200;
#int_ext
void ngat_ngoai(){
v=v+1;//nhan so xung vao
}
//================================================== ==========================
void main()
{
set_tris_d(0x00);
set_tris_b(0x01);
set_tris_c(0x00);
enable_interrupts(INT_EXT);
EXT_INT_EDGE(H_TO_L);
while(1)
{
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"Toc_do=%f",sovong);
lcd_gotoxy(14,1);
printf(lcd_putc,"V/P");
enable_interrupts(GlOBAL);
delay_ms(100);//t1
disable_interrupts(GlOBAL);
sovong=(v/xung)*600;//t=t1*600=100*600=60000ms=60s=1phut ( van toc = vong/phut)
lcd_gotoxy(9,1);
printf(lcd_putc,"%f",sovong);
v=0;
enable_interrupts(GlOBAL);
}
}Quang Nhat
---------------------------------------
Yahoo :quangnhat85ls
Mail :
Nhận thiết kế và ép nhựa cho đồ điện tử
Comment
-
Nguyên văn bởi IloveMyjob Xem bài viếtBác cũng pro thật đấy.Em nó đang hỏi code 8051 bác send cho 1 lố code PIC vàoQuang Nhat
---------------------------------------
Yahoo :quangnhat85ls
Mail :
Nhận thiết kế và ép nhựa cho đồ điện tử
Comment
-
tớ vẫn chưa hiểu điêu khiển động cơ dùng ecoder như thế nào ?
giả sử tớ có một động cơ có gắn ecoder
nếu muốn động cơ đó quay 10 vòng và dừng lại thì làm như thế nào ??
mình vẫn chưa hiều cần số xung làm j ?? và làm thế nào để 10 vòng thì nó dừng lại nhỉ
tớ rất muốn hiểu được phần này ! mọi người có thể giảng cho mình đươc kho thank you rất nhiều
Comment
-
Nguyên văn bởi 121388th Xem bài viếttớ vẫn chưa hiểu điêu khiển động cơ dùng ecoder như thế nào ?
giả sử tớ có một động cơ có gắn ecoder
nếu muốn động cơ đó quay 10 vòng và dừng lại thì làm như thế nào ??
mình vẫn chưa hiều cần số xung làm j ?? và làm thế nào để 10 vòng thì nó dừng lại nhỉ
tớ rất muốn hiểu được phần này ! mọi người có thể giảng cho mình đươc kho thank you rất nhiều
Chẳng hạn encoder 400ppr thì 10 vòng cần 4000 xung, khi nào đếm đủ 4000 xung là ta biết động cơ quay được 10 vòng.
Comment
-
Xin chào Quangnhat. Mình đang làm bài tập lớn về encoder để điều khiển tốc độ động cơ. Sử dụng VĐk Pic. Vậy Quangnhat co thể cho mình xin file đó mình tham khảo được ko? rất mong được sự giúp đỡ. Nếu được cho gửi vào mail cho mình với: Hoangvatdh@gmail.com.
Comment
-
Mong mọi ngưởi chỉ giáo
em làm đồ án dùng 89c51 đo và hiển thị tốc độ động cơ bằng encoder có độ phân giải 100 xung/vòng
1 nút start
1 nút stop dừng đo và lưu lại kết quả cuối
hiển thị tốc độ bằng led 7 thanh có khoảng từ 0-2500 vòng/phút
em tính đi tính lại rồi vẫn sai ở T\C2
(T\C2 dùng ngắt tràn để sau mỗi 20ms lại cập nhật tốc độ mới 1 lần)
code viết bằng asm ạ Mong mọi người chỉ giáo với
;============================================
org 00h ;power on, reset vector
ljmp init
org 03h ;interrupt 0 vector
reti
org 0bh ;timer 0 interrupt vector
reti
org 13h ;interrupt 1 vector
reti
org 1bh ;timer 1 interrupt vector
reti
org 23H ;serial port interrupt vector
reti
org 2bh ;timer 2 interrupt vector
ljmp INT_T2 ;chuong trinh con phuc vu ngat
;================================================= ==========================================
;khai bao bien so
;================================================= ==============================================
D0 equ 50h
D1 equ 51h
D2 equ 52h
D3 equ 53h
D4 equ 54h
NxH equ 55h
NxL equ 56h
Tic equ 60h
digit equ 61h
Dnum equ 62h
;================================================= =============================================
;khai bao kieu bit
;================================================= ================================================== ====
ZOV equ 00h
;================================================= ================================================== ====
;cac bien cho truong trinh con
;================================================= =====================================
X0 equ 70h
X1 equ 71h
X2 equ 72h
X3 equ 73h
Y0 equ 74h
Y1 equ 75h
Y2 equ 76h
Y3 equ 77h
Z0 equ 78h
Z1 equ 79h
Z2 equ 7ah
Z3 equ 7bh
XL equ X0
XH equ X1
YL equ Y0
YH equ Y1
ZL equ Z0
ZH equ Z1
;================================================= ==================
;chuong trinh khoi tao
;================================================= ================================================== ===
org 100
init:
clr EA ;cam tat ca cac ngat
mov SP,#2h ;khoi tao ngan xep(bat dau 30h)
clr P3.0
mov TMOD,#00100101B; khoi tao timer 0 lam viec o che do la bo dem 16 bit, timer 1 lam viec o che do auto_reload
mov TH0,#0
mov TL0,TH0
mov T2CON,#02H ;T2 lam viec o che do autoreload
mov TH2,#0ECH
mov TL2,#77H
mov RCAP2H,TH2
mov RCAP2L,TL2
setb TR2
setb TR0 ;cho phep timer 0 chay
setb TR1
nop
setb IE.5 ;cho phep timer 2 ngat
;================================================= ================================================== ===========
mov Tic,#0h
mov digit,#0FFh
mov Dnum,#4
;================================================= ================================================== ===========
setb EA ;cho phep cac ngat
here:
sjmp here ;doi ngat
;================================================= =========================================
;Interrupt INT_T2
;FCT :do va hien thi toc do dong co
;Input none
;Output none
;================================================= ========================================
INT_T2:
clr TF2 ;xoa co tran
inc Tic
mov a,Tic
cjne a,#4,CDoc ;td=20ms?
mov Tic,#0
clr TR0
mov NxL,TL0 ;doc so lieu do
mov NxH,TH0
mov TL0,#0
mov TH0,#0 ;xoa bo dem
setb TR0
;================================================= ==============
mov XL,NxL ;tinh toan ket qua do
mov XH,NxH
mov YL,#0FAh
mov YH,#0
lcall mul16
mov XL,Z0
mov XH,Z1
mov YL,#3
mov YH,#0
lcall div16
mov XL,Z2
mov XH,Z3
;================================================= ==================================
lcall hextodec ;chuyen doi hex sang dec
CDoc:
lcall display ;hien thi toc do dong co(vong/phut)
reti
;================================================= ========================
;subrotine display
;FCT :hien thi toc do dong co len led 7 thanh
;Input: D3, D2,D1, D0
;Output: none
;================================================= ================================
display:
mov a,@r0
mov dptr,#bayth
movc a,@a+dptr ;tra ra 7 thanh
mov P0,a
inc r0
mov P2,digit
mov a,digit
rl a
mov digit,a
djnz Dnum,KT
mov r0,#D0
mov Dnum,#4
mov digit,#0FEh
KT:
ret
;================================================= ================================================== =================
;subrotine hextodec
;FCT bien doi tu do hex sang so BCD
;Input XH,XL
;Output D4,D3,D2,D1,D0
;================================================= ================================================== =================
hextodec:
mov YH,#00h
mov YL,#0ah
lcall div16 ;chia so can doi cho 10
mov D0,Z0
mov XH,Z3
mov XL,Z2
lcall div16 ;chia so can doi cho 10
mov D1,Z0
mov XH,Z3
mov XL,Z2
lcall div16 ;chia so can doi cho 10
mov D2,Z0
mov XH,Z3
mov XL,Z2
lcall div16 ;chia so can doi cho 10
mov D3,Z0
mov XH,Z3
mov XL,Z2
lcall div16 ;chia so can doi cho 10
mov D4,Z0
ret
;================================================= ================================================== ======================
;subrotine div16
; Z=X/Y
;Input X=(XH,XL); Y=(YH,YL)
;output Z3,Z2
; :quotient
;Z1,Z0
;ZOV Y=0, i,e., ket qua duoc suat ra
;range
;calls: sub16
;destroys: a, r0, r1, r2, r3, r4, r7, flags
;================================================= ================================================== ========================
div16:
push 0
mov a,YH ;gan byte cao
orl a,YL
jnz div_ok
setb ZOV
ret
div_ok:
mov r1,XH
mov r0,XL
mov XH,#0
mov XL,#0
mov r3,#0
mov r2,#0
mov r7,#16
div_loop:
clr c
mov a,r0
rlc a
mov r0,a
mov a,r1
rlc a
mov r1,a
mov a,XL
rlc a
mov XL,a
mov a,XH
rlc a
mov XH,a
lcall subb16
mov c,ZOV
cpl c
jnc div_1
mov XH,ZH
mov XL,ZL
div_1:
mov a,r2
rlc a
mov r2,a
mov a,r3
rlc a
mov r3,a
djnz r7,div_loop
mov Z3,r3
mov Z2,r2
mov Z1,XH
mov Z0,XL
clr ZOV
pop 0
ret
;================================================= ================================================== =====================
;subrotine subb16
; Z(ZH,ZL)= X(XH,XL) - Y(YH,YL)
; if (Y>X) then ZOV=1
;Input X(XH,XL), Y(YH,YL)
;Output Z(ZH,ZL)
;================================================= ================================================== ===
subb16:
push acc
mov a,XL ;load X low byte into
;accumulator
clr c ; clear carry flag
subb a,YL ;subract Y low byte
mov ZL,a ;put result in Z low byte
mov a,XH ;load X high byte into
;accumulator
subb a,YH ; subtract Y high byte
;with the borrow. ..
; ... from low byte
;operation
mov ZH,a ; save result in Z hgh
;byte
mov ZOV,c ;set ZOV id an external
;borrow is produced
pop acc
ret
;================================================= ================================================== ==============
; subroutine MUL8_16
; Z=X*Y
;byte multipled by 16 bit word
;input: X(XL); Y(YH,YL)
;output: Z2, Z1, Z0: Z2 is the most byte, Z0 is the least byte
;================================================= ================================================== =================
MUL8_16:
mov a,XL
mov b,YL
mul ab
mov Z0,a
push b
mov a,XL
mov b,YH
mul ab
pop 0
add a,r0
mov Z1,a
clr a
addc a,b
mov Z2,a
ret
;================================================= ================================================== =====================
;subrotine MUL16
;Multiply two 16_bit unsigned Word
;input :X(XH,XL); Y(YH,YL)
;output :Z3, Z2, Z1, Z0. Z3 is the most byte, Z0 is the least
;================================================= ================================================== =====================
MUL16:
lcall MUL8_16
mov a,Z2
push acc
mov a,Z1
push acc
mov c,Z0
push acc
mov XL,XH
lcall MUL8_16
mov b,Z0
pop Z0
pop acc
add a,b
mov b,Z1
mov Z1,a
pop acc
addc a,b
mov b,Z2
mov Z2,a
clr a
addc a,b
mov Z3,a
ret
;================================================= ================================================== ==========================
bayth: ;bang ma bay thanh
db 0C0h, 0F9h, 0A4h, 0B0h, 99h, 92h, 82h, 0F8h, 80h,90h
; 0 1 2 3 4 5 6 7 8 9
;=================================================Last edited by vanlunava; 09-12-2012, 17:59.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi bqvietThiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.20-02-2025, 17:22
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.
Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 11:52 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi vi van phamUống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?
Cái khó bó cái...19-02-2025, 23:05 -
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.
Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.
Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...-
Channel: Tâm tình dân kỹ thuật
19-02-2025, 21:27 -
-
bởi xenopus123Cần hỗ trợ mạch đồng hồ vạn niên 89c52 ds1302 ds18b20 dùng 16 led 7 đoạn
-
Channel: Hỗ trợ học tập
19-02-2025, 21:24 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Nhìn kỹ hàng đi cu. Chứ ra đường cứ thấy đàn bà rồi bảo:
- Tôi cũng có vợ như thế....
Đảm bảo cu nát người luôn....-
Channel: Điện tử dành cho người mới bắt đầu
19-02-2025, 21:04 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi matnetgia99Ồ, cái này mình cũng có nè, có ai mua không, đồ cũ dùng từ năm 2008, hư 1 2 giai gì đấy bỏ xó hơn năm nay...
-
Channel: Điện tử dành cho người mới bắt đầu
17-02-2025, 14:40 -
Comment