找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3327|回复: 1
打印 上一主题 下一主题
收起左侧

89c52控制步进电机驱动器的一个程序,加个lcd1602显示一个变量

[复制链接]
跳转到指定楼层
楼主
ID:168040 发表于 2017-3-4 09:24 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2黑币
想在这个程序里面加一个LCD1602显示屏、内容很简单  程序里有个变量 CYCLE  只要在屏幕上显示 CYCLE: XXXXX 5位十进制数值就行


/*************************************************************************************************************
* 测试说明
*1、MCU:STC89C52RC
*2、测试频率:12Mhz
*2、编程语言:C51
*2、编译环境:Keil C
*2、功能:全速正转、全速反转、停止、调速运行
*************************************************************************************************************/ #include <reg52.h> //TB6560输入控制端定义
sbit CLK = P1^0;
sbit ENA = P1^1;
sbit DIR = P1^2; sbit CW = P3^0; //正转运行按键
sbit STOP = P3^1; //停止运行按键
sbit CCW = P3^2; //反转运行按键
sbit ADJ1 = P3^3; //调速运行按键
sbit ADJ2 = P3^4; //调速运行按键
bit Run_Status;
unsigned char Run_Dir;
#define F_DIR 0 //运行状态位标志,
//=0表示电机在停止状态,可以按键正转、反转均可
//=1表示电机在运行状态,不支持正反转按键,只有先停止。防止强行换向带来的电流过大。  //电机运行方向 //正转
#define B_DIR 1  
unsigned int CYCLE;//反转//周期变量 /************************************************************************************************
/** 函数名称: void Delay(unsigned int cnt)
** 功能描述: 简单的延时函数
** 输  入: cnt:0-65535之间的任意整数
** 输  出: 无
*************************************************************************************************/
void Delay(unsigned int cnt)
{
while(--cnt);
}
/************************************************************************************************
** 函数名称: void main(void)
** 功能描述: 主函数
** 输  入: 无
** 输  出: 无
*************************************************************************************************/
void main(void)
{
Run_Status=0; //=0表示电机在停止状态,可以按键正转、反转均可
CLK = 0;
ENA = 0;
while(1)
{
if(!STOP) //任何时候按停止键,电机停止运行
{
Delay(1000); //延时去抖动
if(!STOP)
{
Run_Status=0; //电机正在停止的状态标志
CLK = 0;
ENA = 0;
TR0=0;
}
}
if(!CW&&!Run_Status) //按正转键同时电机不是正在运行时,电机正转运行
{
Delay(1000); //按下延时去抖动
if(!CW&&!Run_Status)
{
Run_Status=1; //电机正在运行的状态标志
DIR = 0; //正转
ENA = 1;
CYCLE=2500; //脉冲频率 定时器设置 10ms in 12M crystal 即100Hz
TMOD |=0x01;
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
IE= 0x82; //打开中断
TR0=1;
Run_Dir=F_DIR; //电机运行方向正转
}
}
if(!CCW&&!Run_Status) //按反转键同时电机不是正在运行时,电机反转运行
{
Delay(1000); //延时去抖动
if(!CCW&&!Run_Status)
{
Run_Status=1; //电机正在运行的状态标志
DIR = 1; //反转
ENA = 1;
CYCLE=2500; //脉冲频率 定时器设置 10ms in 12M crystal 即100Hz
TMOD |=0x01;
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
IE= 0x82; //打开中断
TR0=1;
Run_Dir=B_DIR; //电机运行方向反转
}
}
if(!ADJ1)
{
Delay(5000); //延时去抖动
if(!ADJ1)
{
if(CYCLE<20000) CYCLE+=2000;
else CYCLE=1000;
Run_Status=1;
TR0=1;
}
}
// if(!ADJ2)
// {
// Delay(5000); //延时去抖动
// if(!ADJ2)
// {
// if(CYCLE>2000) CYCLE-=2000;
// Run_Status=1;
// TR0=1;
// }
// }
}
}
/************************************************************************************************
** 函数名称: Timer0_ISR
** 功能描述: 定时器0中断处理函数
** 输  入: 无
** 输  出: 无
*************************************************************************************************/
void Timer0_ISR(void) interrupt 1 using 1
{
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;

CLK = ~CLK;
}
能帮忙解决的  支付宝再奖励100元 联系方式qq149071332

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:151348 发表于 2017-3-4 20:33 | 只看该作者
按照你的意思,增加了显示功能,不知道收到没有
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表