资源简介
该程序实现键盘对四相步进电机的控制,12864显示,利用ST188传感器测量步进电机转速。

代码片段和文件信息
#include
#include“12864.h“
#include“KeyScan.h“
//-----------------------------------------
#define Max_Frequency 135 // 最大转速
#define Step 0.5 // 步进转速
#define Pulses_Per_R 1
#define SYSCLK 1000000
#define START_TMR2 T2CON |= 0x04
#define STOP_TMR2 T2CON &=~ 0x04
#define SINGLEFOUR 0
#define DOUBLEFOUR 2
#define SDEIGHT 4
//-----------------------------------------
sfr16 RCAP2 = 0xca; //==定时器2捕捉/重载寄存器
sfr16 TMR2 = 0xcc; //==定时器2寄存器
unsigned char TH0regTL0regT0FullTH0LastTL0Last;
bit OverFlow=0;
float fFrequency=50fFrequencyBack=0.0;
unsigned char Mode=SINGLEFOUR;
unsigned char code SingleFour[8]={0x1e0x2e0x4e0x8e0x1e0x2e0x4e0x8e}; // A-B-C-D A-B-C-D
unsigned char code DoubleFour[8]={0x3e0x6e0xce0x9e0x3e0x6e0xce0x9e}; // AB-BC-CD-DA AB-BC-CD-DA
unsigned char code SDEight[8] ={0x1e0x3e0x2e0x6e0x4e0xce0x8e0x9e}; // A-AB-B-BC-C-CD-D-DA
unsigned char code rSingleFour[8]={0x8e0x4e0x2e0x1e0x8e0x4e0x2e0x1e};
unsigned char code rDoubleFour[8]={0x9e0xce0x6e0x3e0x9e0xce0x6e0x3e};
unsigned char code rSDEight[8] ={0x9e0x8e0xce0x4e0x6e0x2e0x3e0x1e};
unsigned char code* code Pointers[]={SingleFourrSingleFourDoubleFourrDoubleFourSDEightrSDEight};
unsigned char index=0;
unsigned char code* pData=SingleFour;
unsigned char code* Modes[]={“ 单四拍 “
“ 反转单四拍 “
“ 双四拍 “
“ 反转双四拍 “
“ 单双八拍 “
“ 反转单双八拍“};
unsigned int T2_Capture_lastT2_Capture_new ;
bit T2_flag=0;
unsigned int T2_Full=0;
//-----------------------------------------
void Init_Device();
void Set_Stepper();
bit KeyScan_Act();
void Measure();
//-----------------------------------------
void main(void){
// 变量
unsigned int i=0;
// 初始化
Init_Device();
while(1){
// 设置电机
Set_Stepper();
// 等待键盘
while(!KeyScan_Act()){
if( fFrequency>=20 && ET0 && (i++)%1000==0 )
Measure();
}
}
}
//-----------------------------------------
void Init_Device(){
InitLCD();
// 初始化定时器和中断
T2CON=0x0D; // 外部使能,捕获方式
ET2=1;
EA=1;
TMOD=0x01;
ET0=1;
// 显示界面
LCD_Printn_Ch(“步进电机“114);
LCD_Printn_Ch(“模式0 “163);
LCD_Printn_Ch(“转速: “313);
LCD_Printn_En(“ R/M“374);
LCD_Printn_Float(fFrequency3416);
LCD_Printn_Ch(Modes[Mode]217);
LCD_Printn_Ch(“测量: “413);
LCD_Printn_En(“ R/M“474);
LCD_Printn_Float(fFrequencyBack4426);
}
//-----------------------------------------
void Set_Stepper(){
unsigned char Num=0;
unsigned long Count=0;
if (Mode<4)
Num=4;
else
Num=8;
TR0=0;
Count=SYSCLK*60/fFrequency/Num/12;
if(Count<=65536){
OverFlow=0;
Count=Count-20; //补偿
TH0=TH0reg=(65536-Count)/256;
TL0=TL0reg=65536-Count;
}
else{
OverFlow=1;
T0Full=Count/65536;
Count=Count-16*T0Full-35; //补偿
TH0Last=(65536-Count%65536)/256;
TL0Last=65536-Count%65536;
TH0=TH0reg
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2221 2011-07-13 15:15 12864.h
文件 25127 2011-07-14 14:01 BuJin
文件 15444 2011-07-14 14:01 BuJin.hex
文件 57 2011-07-14 14:01 BuJin.lnp
文件 30949 2011-07-14 14:01 BuJin.M51
文件 1950 2011-07-14 14:38 BuJin.plg
文件 59085 2011-07-14 14:38 BuJin.uvopt
文件 13392 2011-07-12 19:46 BuJin.uvproj
文件 59091 2011-07-14 12:18 BuJin_uvopt.bak
文件 13393 2011-07-11 17:43 BuJin_uvproj.bak
文件 1034 2011-07-13 20:17 KeyScan.h
文件 5708 2011-07-14 14:01 main.c
文件 12786 2011-07-14 14:01 main.LST
文件 27425 2011-07-14 14:01 main.OBJ
文件 6376 2009-05-07 14:37 STARTUP.A51
文件 14062 2011-07-14 14:01 STARTUP.LST
文件 749 2011-07-14 14:01 STARTUP.OBJ
- 上一篇:O型圈密封槽设计计算工具
- 下一篇:MCGS嵌入版帮助系统
相关资源
- 基于STM32RCT6的步进电机驱动程序
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 步进电机课程设计(个人设计)
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- FPGA在步进电机驱动上的应用实例及代
- 步进电机protues仿真
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 单片机控制的步进电机正反转和加速
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 6相12拍步进电机控制器
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
评论
共有 条评论