📄 text1.c
字号:
/**********************************************************************************
* *
* 文 件 名:main.c *
* MCU Type:STC89C51 Fosc:11.0592MHz *
* 功 能:步进电机驱动调速演示 (液晶屏显示工作状态和速度设置值) *
* 创 建 者:宇航工作室 *
* 创建日期:2007-05-03 *
* 其他说明:S1启动/停止,S5正/反转,S9加速,S13减速。 *
* 在YH51-I单片机学习开发板上验证通过 *
* 有什么问题欢迎来我们的学习论坛讨论,祝你成功! *
**********************************************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
bit ring_flag;
bit forward_flag;
bit backward_flag;
uchar speed_set_value;
uint speed_value;
uint local_speed_value;
extern void lcd_init();
extern uchar key_scan();
extern void renew_lcd_disp();
//========= 延时函数 ============
void delay_ms(uint s)
{
uint x;
for(s;s>0;s--)
{
x = 200;
while(x--);
}
}
//========= 系统初始化函数 ============
void sys_init()
{
P0 = 0x00;
TMOD = 0x11;
TH0 = 0xfc; //1ms
TL0 = 0x66;
TR0 = 1;
ET0 = 1;
EA = 1;
}
//========= 定时器0中断服务函数 ============
void time0_int() interrupt 1
{
TR0 = 0;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
if(ring_flag)
{
if(local_speed_value!=0)
{
local_speed_value--;
}
else
{
local_speed_value = speed_value;
if(forward_flag)
{
P0 = _cror_(P0,1);
}
else if(backward_flag)
{
P0 = _crol_(P0,1);
}
}
}
}
//============= 改变速度参数 =================
void change_speed()
{
switch(speed_set_value)
{
case 0: speed_value = local_speed_value = 1000;break;
case 1: speed_value = local_speed_value = 40;break;
case 2: speed_value = local_speed_value = 35;break;
case 3: speed_value = local_speed_value = 30;break;
case 4: speed_value = local_speed_value = 25;break;
case 6: speed_value = local_speed_value = 20;break;
case 7: speed_value = local_speed_value = 15;break;
case 8: speed_value = local_speed_value = 10;break;
case 9: speed_value = local_speed_value = 5;break;
}
}
void main()
{
uchar temp;
sys_init();
lcd_init();
speed_value = 0;
forward_flag = 1;
speed_set_value = 4;
change_speed();
renew_lcd_disp();
while(1)
{
temp = key_scan();
if(temp==1) //启动/停止
{
ring_flag = ~ring_flag;
renew_lcd_disp();
if(ring_flag)
{
P0 = 0x33;
}
else P0 = 0x00;
}
else if(temp==5) //正反转
{
if(ring_flag)
{
forward_flag = ~forward_flag;
backward_flag = ~backward_flag;
renew_lcd_disp();
}
}
else if(temp==9) //加速
{
if(speed_set_value<9)
{
speed_set_value++;
change_speed();
renew_lcd_disp();
}
}
else if(temp==0x13) //减速
{
if(speed_set_value>0)
{
speed_set_value--;
change_speed();
renew_lcd_disp();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -