?? 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;
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 + -