精选优质文档-----倾情为你奉上/***********************************************************************//***********************************************************************//*************************** ****************************//*************************** 电子兴趣小组 ****************************//***********************************************************************//************************** ***************************//************************** 单片机组 ***************************//************************** ***************************//***********************************************************************//***********************************************************************//************************ ************************//************************ 直流电动机控制 C语言程序 ********** *****//************************ ************************//***********************************************************************//***********************************************************************//*****************************************************************************************************************************功能:运行速度设置为40转/秒,经过若干秒后,直流电机转速慢慢下降 到运行速度,以设定的速度运行。
接线:1、把7279阵列式键盘的J9四只短路帽打在上方,J10打在VCC处2, 用8P排线将JD7和八位动态数码显示的JD11相连,JD8和JD12相连 2、最小系统的1.0口接电机单元的Control口,最小系统的T1接 电机单元的PulseOut/#include //头文件定义#define uint unsigned int //宏定义#define uchar unsigned char#define Pwm CCAP1H sbit HD7279_cs=P2^7; // 7279片选脚sbit HD7279_clk=P1^6; // 7279时钟脚sbit HD7279_dat=P1^7; // 7279数据脚sbit Control =P1^0;uchar Time0_num; // 记录定时器0中断次数uint Hz; // 保存频率变量bit Time0_bit; // 显示频率标示uchar i,Str[2] ; // 显示频率中间变量/******************************************函数名称:delayms;函数功能:延时z毫秒;形 参:z (延时时间参数)*******************************************/void Delayms(int z){ uint x,y; for(x=z;x>0;x--) for(y=11;y>0;y--);}/******************************************函数名称:Delay;函数功能:延时函数;形 参:z (延时时间参数)*******************************************/void Delay(uint z) {while(z--);}/******************************************函数名称:Write_Com_7279函数功能:向7279芯片写一条纯指令形 参:com 写进7279芯片的指令*******************************************/void Write_Com_7279(uchar com) { uchar i; HD7279_cs=0; HD7279_clk=0; for(i=0;i<8;i++) { com<<=1; HD7279_dat=CY; HD7279_clk=1; Delay(15); HD7279_clk=0; Delay(15); }}/******************************************函数名称:Write_Dis_7279函数功能:向7279芯片写一条带数据指令形 参:com 写进7279芯片的指令 dat 数据*******************************************/void Write_Dis_7279(uchar com,uchar dat) { Write_Com_7279(com); Write_Com_7279(dat); HD7279_cs=1;}/******************************************函数名称:Read_Byte_7279函数功能:从7279芯片读出一个字节,将数据返回*******************************************/uchar Read_Byte_7279(){ uchar i,temp; for(i=0;i<8;i++) { HD7279_clk=1; Delay(15); temp<<=1; temp|=HD7279_dat; HD7279_clk=0; Delay(15); } return temp;}/******************************************函数名称:Read_Key_7279函数功能:从7279芯片读出按键值,将数据返回*******************************************/uchar Read_Key_7279() { uchar temp; Write_Com_7279(0x15); temp=Read_Byte_7279(); HD7279_cs=1; return temp;}/******************************************函数名称:Time_init函数功能:初始化两个定时器形 参:*******************************************/void Time_init(void){ EA=1; // 开中断 EX0=1; IT0=1; ET0=1; // 开定制器0中断 TMOD=0X51; // 定时器0,做定时器工作与方式1;定时器1做计数器 TR0=1; TR1=1; // 定时器,计数器启动 CCON=0X40; CCAPM1=0X42;}uchar Key_num;uchar Key_bit;uchar Set_num;uchar ZS;float Kp; float a1; float a2; float a3; char e1; char e2; char e3;uchar PWM;void main(void){ Delayms(10); ZS=20; Kp=1; Time_init(); PWM=0; a1=1.5;a2=0.8;a3=0.5; Write_Com_7279(0xa4); Write_Dis_7279(0x82,0x0e); // 转速显示 while(1) { Delayms(255-PWM); Control=0; Delayms(PWM); Control=1; }}/*void PID_P(void){ if(Hz>ZS) { Pwm+=(Hz-ZS)*Kp; } if(Hz255) num=255; if(num<0) num=0; Pwm=num; PWM=num; e2=e1;e3=e2; for(i=0;i<2;i++) // 。