基于LPC2114 用PWM调节直流电机转速
上传时间: 2016-10-22
上传用户:453895276
在本课中,我们要用一个按键来实现跑马灯的 10 级调速。这又会涉及到键的去抖的问 题。 本课的试验结果是,每按一次按键,跑马速度就降低一级,共 10 级。 这里我们又增加了一个变量 speedlever,来保存当前的速度档次。 在按键里的处理中,多了当前档次的延时值的设置。 请看程序: ―――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个 52 标准内核的头文件 sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //长定时溢出标记,预置是 0 uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度 uchar speedlever=0; //保存当前的速度档次 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 //一个按键控制的 10 级变速跑马灯试验 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值 uchar ledi; //用来指示显示顺序 uint n; RCAP2H =0x10; //赋 T2 的预置值 0x1000,溢出 30 次就是 1 秒钟 RCAP2L =0x00; TR2=1; //启动定时器 ET2=1; //打开定时器 2 中断 EA=1; //打开总中断 while(1) //主程序循环 { if(ldelay) //发现有时间溢出标记,进入处理 { ldelay=0; //清除标记 P1=ledp[ledi]; //读出一个值送到 P1 口 ledi++; //指向下一个 if(ledi==4) { ledi=0; //到了最后一个灯就换到第一个 } } if(!K1) //如果读到 K1 为 0 { for(n=0;n<1000;n++); //等待按键稳定 while(!K1); //等待按键松开 for(n=0;n<1000;n++); //等待按键稳定松开 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出 不规则的法则 } } } //定时器 2 中断 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速 度为 1 秒 { t=0; ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理 } } ―――――――――――――――――――――― 请打开 lesson11 目录的工程,编译,运行,看结果: 按 K1,速度则降低一次,总共 10 个档次。
上传时间: 2017-11-06
上传用户:szcyclone
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
通过单片机设计步进电机控制现调速,快速启停,正反转控制及制动等
上传时间: 2018-10-21
上传用户:18351330226
通过仿真,熟悉直流电动机的原理和运行特性;并同时达到熟练运用matlab和提高自学能力的目的。
上传时间: 2020-06-01
上传用户:fhdjdjdhj
51单片机PID控制直流电机,可调速,显示占空比
上传时间: 2021-11-05
上传用户:小仙女的师哥
电子电路单片机设计毕业设计论文资料软硬件设计50例资料合集资料0652、14093组成的脉宽调制器电路(电机调速).rar0653、CMOS单通道调制电路.rar0654、DC-AC变换器.rar0655、DC-AC变换器LCD显示电子温度计.rar0656、DC-AC变换器PWM控制式电机速度控制电路.rar0657、DC-AC变换器TC4069UB组成的方波振荡器.rar0658、DC-AC变换器按钮型游戏基准电路.rar0659、DC-AC变换器变形多谐振荡器.rar0660、DC-AC变换器标准多谐振荡器.rar0661、不规则变换循环LED闪烁电路.rar0662、采用3524的PWM式电机速度控制电路.rar0663、超声波鱼缸加氧器.rar0664、车辆转向灯电路.rar0665、出租车空车灯LED环形闪烁电路.rar0666、触摸调光灯.rar0667、触摸开关.rar0668、触摸控制定时器.rar0669、触摸控制转换开关.rar0670、串联式多谐振荡器.rar0671、串入式声控延时开关.rar0672、单结晶体管多谐振荡器.rar0673、单脉冲控制转换开关.rar0674、单脉冲控制转换开关基本电路.rar0675、单稳态多谐振荡器.rar0676、单稳态多谐振荡器组成的定时器电路.rar0677、单轴操纵杆接口电路.rar0678、低电平输出光控电路.rar0679、第三刹车灯电路.rar0680、电场与漏电检测器.rar0681、电动车充电自动控制电路.rar0682、电话机检修测试仪.rar0683、电话检修仪.rar0684、电子节拍器.rar0685、电子锁.rar0686、电子音乐门铃.rar0687、短波无线监听发射器1(100MHz).rar0688、短波无线监听发射器2(100MHz).rar0689、短路检测式报警电路.rar0690、断线检测式报警电路.rar0691、断线式防贼报警电路.rar0692、断续音报警信号发生器.rar0693、多功能密码锁.rar0694、多谐—张弛振荡器.rar0695、发射极耦合式多谐振荡器.rar0696、方波发生器.rar0697、非对称多谐振荡器.rar0698、峰谷用电定时器.rar0699、改进型发射极耦合式多谐振荡器.rar0700、改进型模拟PUT(可编程单结晶体管)器件振荡器.rar
上传时间: 2021-12-10
上传用户:
本程序调试通过。由STC51单片机1T系列运行,通过检测外部3路比较器的换相信号完成换相,硬件驱动设计好,理论可以驱动任何没有霍尔元件的无感无刷电机,比如硬盘,航模的无刷电机等,通过程序的修改可以完成慢启动,pwm调速,改变转向等功能,另外附有一张纸质手绘原理图的照片。
标签: 无刷电机
上传时间: 2022-03-20
上传用户:
本书概述了MATLAB软件及其图形仿真界面Simulink的基础应用知识,详细介绍了用于电力电子仿真的SimPowerSystems中的各模块库,然后列举了DC-DC变换、DC-AC变换、AC-DC变换、直流调速、交流调速等方面的应用;通过大量实例介绍了电力电子应用技术的仿真方法和技巧。
上传时间: 2022-04-01
上传用户:jiabin
说明: 51单片机控制智能温控风扇,多档调节,pwd调速。包含源码和电路图(51 single chip computer control intelligent temperature control fan, multi-stage adjustment, PWD speed regulation. Contains source code and circuit diagrams)
上传时间: 2022-05-17
上传用户: