我要搜客合作机构>

山东正苗启德青少年特训学校

欢迎您!

400-960-5068

全国统一学习专线 9:00-21:00

您当前的位置: 首页 » 动态 » spwm课程设计实验总结、ssm课程设计报告

spwm课程设计实验总结、ssm课程设计报告

日期:2023-05-16     浏览:75    来源:山东正苗启德青少年特训学校

单片机课程设计以89C51为基础设计SPWM波发生器

FileName : main.c

Author :9long

Date :2010.5.11

Target : STC89C51

Crystal :12M

模块功能:用定时中断调试PWM可调模块,可以接在直流电机上调速

/

include

/-----宏定义----/

define NOKEY 0

define KEY1128

define KEY2129

define KEY3131

define KEY4135

define KEY564

define KEY665

define KEY767

define KEY871

define KEY932

define KEY1033

define KEY1135

define KEY1239

define KEY1316

define KEY1417

define KEY1519

define KEY1623

define DIG00xfe

define DIG10xfd

define DIG20xfb

define DIG30xf7

define DIG40xef

define DIG50xdf

define DIG60xbf

define DIG70x7f

define CODE00xc0

define CODE10xf9

define CODE20xa4

define CODE30xb0

define CODE40x99

define CODE50x92

define CODE60x82

define CODE70xf8

define CODE80x80

define CODE90x90

define CODEA 0x88

define CODEB 0x83

define CODEC 0xc6

define CODED 0xa1

define CODEE 0x86

define CODEF 0x8e

define CODEH 0x89

define CODEP 0x8c

define POINT 0x7f

define CODE_0xf7

define CODENO 0xff

sbit LED = P1^2;

/---变量定义----/

code const unsigned char NUMBER_CODE10=

{CODE0,CODE1,CODE2,CODE3,CODE4,CODE5,CODE6,CODE7,CODE8,CODE9};

code const unsigned char LED_DIG8=

{DIG0,DIG1,DIG2,DIG3,DIG4,DIG5,DIG6,DIG7};

unsigned char last_key =0;

unsigned char key =0;

/

函数名称:Delay1ms()

函数功能:延时count1ms

输入参数:count,无符号整型,最多计65535ms count

输出参数:无

全局变量:无

/

void Delay1ms(unsigned int count)

{

unsigned int i=0;

unsigned int j=0;

for(i=0;i

for(j=0;j<120;j++);

}

/

函数名称:DisplayCode()

函数功能:数码管显示缓冲,送段驱动

输入参数:x,无符号整型,最多显示65535

输出参数:无

全局变量:LED_SEGi,NUMBER_CODEi

/

void DisplayCode(unsigned int x)

{

unsigned char m=0;

LED_SEG7=CODEF;

LED_SEG6=CODE_;

LED_SEG5=CODE_;

while(x>=10000){x=x-10000;m++;}LED_SEG4=NUMBER_CODEm;m=0;

while(x>=1000){x=x-1000;m++;} LED_SEG3=NUMBER_CODEm;m=0;

while(x>=100){x=x-100;m++;} LED_SEG2=NUMBER_CODEm;m=0;

while(x>=10){x=x-10;m++;} LED_SEG1=NUMBER_CODEm;m=0;

while(x>=1){x=x-1;m++;} LED_SEG0=NUMBER_CODEm;m=0;

}

/

函数名称:ReadKey()

函数功能:读取44矩阵按键的键值

输入参数:无

输出参数:按键的键值

全局变量:无

/

unsigned char ReadKey(void)

{

unsigned char cord_y=0;

if(cord_x 0x0f)

{

}

}

/

函数名称:Play()

函数功能:每10ms刷新显示和扫描按键

输入参数:无

输出参数:无

全局变量:flag_10ms,last_key,key,LED_DIGi,LED_SEGi

/

void Play(void)

{

unsigned char i=0;

{

}

P0=0xff;

}

/

函数名称:Timer1()

函数功能:定时器0定时0.1ms

输入参数:无

输出参数:无

全局变量:PWM_ON为占空比,PWM_CYCLE为周期

/

void timer1(void) interrupt 3

{

static unsigned char pwm=0;

pwm++;

if(pwmPWM_ON)

if(pwmPWM_CYCLE)

{

pwm=0;

if(PWM_ON!=0)

}

}

/

函数名称:Timer0()

函数功能:定时器0定时10ms

输入参数:无

输出参数:无

全局变量:flag_10ms

/

void Timer0(void) interrupt 1

{

TL0=0xf0;

}

/

函数名称:main()

函数功能:主函数

输入参数:无

输出参数:无

全局变量:last_key,key,PWM_ON为占空比,PWM_CYCLE为周期

/

void main (void)

{

TL1=0x9c;

P2=0x00;/ULN2003有反向作用,ULN2003输出为高电平/

for(;;)

{

Play();

DisplayCode(PWM_ON);

if((last_key NOKEY)(key KEY1))

{

PWM_ON++;

if(PWM_ON>=10)

}

}

}