《小直流电机调速控制设计》由会员分享,可在线阅读,更多相关《小直流电机调速控制设计(5页珍藏版)》请在金锄头文库上搜索。
1、小直流电机调速控制1实验目的:掌握用单片机数控直流电机的速度。2实验内容利用 DAC0832 芯片进行数/模控制,输出的电压经放大后驱动小直流电机的速度进行数 字量调节。3. 实验接线图:DA0832-u 1 2 III D D DCSKFERILEVCC3 4 5 III D D D_bIDBKF电机4实验步骤:(1) CS5 接 FF80H, AOUT 接 DJ;( 2)运行程序,数码管上显示 DJ-XX ,数码管最后二位上显示的数字量不断加大或减 小,电机速度也随之不断加快或减慢。5程序清单:( 1) 汇编代码程序( E:DJ51598K5ASMHW21.ASM )ORG 0000HLJ
2、MP SE13ORG 05E0HSE13:MOV SP,#53HMOV P2,#0ffhMOV A,#81HMOV DPTR,#0FF23HMOVX DPTR,AMOV 7EH,#0DHMOV 7DH,#14HMOV 7CH,#15HMOV 7BH,#15HLO20:MOV R6,#20HLO21:MOV DPTR,#0FF80HMOV A,R6MOVX DPTR,AMOV R0,#79HLCALL PTDSLCALL SSEEMOV R2,#08HLCALL DELYAINC R6CJNE R6,#0FFH,LO21LO22:MOV DPTR,#0FF80HDEC R6MOV A,R6MOV
3、X DPTR,AMOV R0,#79HLCALL PTDSLCALL SSEEMOV R2,#08HLCALL DELYACJNE R6,#20H,LO22SJMP LO20ORG 0650HPTDS:MOV R1,ALCALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV R0,AINC R0RETORG 0D50HSSEE:SETB RS1MOV R5,#05HSSE2:MOV 30H,#20HMOV 31H,#7EHMOV R7,#06HSSE1:MOV R1,#20HMOV A,30HCPL AMOVX R1,AMOV R0,31HMOV A,R0MO
4、V DPTR,#DDFFMOVC A,A+DPTRMOV R1,#21HMOVX R1,AMOV A,30HRR AMOV 30H,ADEC 31HMOV A,#0FFHMOVX R1,ADJNZ R7,SSE1DJNZ R5,SSE2CLR RS1RETDDFF:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH,0F1H,0BFH DELYA:PUSH 02HDELYB:PUSH 02HDELYC:PUSH 02HDELYD:DJNZ R2,DELYDLC
5、ALL SSEEPOP 02HDJNZ R2,DELYCPOP 02HDJNZ R2,DELYBPOP 02HDJNZ R2,DELYARETEND(2) C 代码程序(E:DJ5151CHW21.C)#include#include #include #define uchar unsigned char#define com8255 XBYTE0xff23#define pa8255 XBYTE0xff20#define pb8255 XBYTE0xff21#define da0832 XBYTE0xff80Uchar code table20=0xC0,0xF9,0xA4,0xB0,0x
6、99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF,0x0C,0xF1,0xBF; void delay(unsigned int i)unsigned int j,k;for(k=0;ki;k+)for(j=0;j100;j+);void display(uchar idata *p) uchar d=2; com8255=0x81;while(d-) uchar x=6,y=0x20;y=y; for(x=0;x6;x+) /led display pb8255=table*(p+x); pa8255=y;dela
7、y(2); y=_cror_(y,1);void main(void) uchar idata disbuf6=0x0d,0x12,0x13,0x13,0x05,0x05; uchar m,n,temp,t=0x0f;while(1) for(m=20;m4;/high 4 bitdisbuf4=n; display(disbuf); display(disbuf); display(disbuf);/delay(2); m=temp; for(m=255;m=20;m-)/5 0.1vwhile(m-)da0832=m; temp=m; n=m; m=m&t; /low 4 bit disbuf5=m;n=n4; /high 4 bit disbuf4=n;display(disbuf);display(disbuf); display(disbuf); delay(2); m=temp;