在本课中,我们要用一个按键来实现跑马灯的 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
基于TMS320F28035芯片为控制核心的空间矢量异步电机变频器 我们设计的异步电机变频调速器以TMS320F28035芯片为控制核心,通过输出三相PWM波控制智能功率模块IPM驱动三相异步电机。我们使用空间矢量SVPWM算法,并对其进行了优化。采用检测反电势的方法省去了昂贵的光电编码器,大大节省了成本。同时开创性的研发了自动根据运行环境调节的自适应变频算法,使我们的变频调速器可以在电网条件恶劣的乡村山区工作,由此该变频器已被一家民用水泵生产企业预订。关键字 变频器 TMS320f28035 IPM SVPWM In our design, the asynchronous machine inverter based on the chip of TMS320F28035 drives the three-Phase asynchronous machine by sending three-phase PWM waves to the IPM, which is short for the Intelligent-Power-Module. The SVPWM (space vector pulse width modulation) strategy is applied to our control algorithm and we optimize it mainly in two aspects. Firstly the inverter detects the speed by measuring the Back EMF instead of installing an expensive photoelectric encoder for costs reduction.
标签: tms320f28035 芯片
上传时间: 2022-05-08
上传用户:zhanglei193
说明: 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
上传用户: