单片机红外遥控+步进电机+1602液晶显示c语言源程序
作者:jdzj868 来源:机电之家下载站 录入:jdzj868 更新时间:2009-10-30 14:56:24 点击数:0
【字体: 】
这是我做的红外遥控控制的1602显示转速和转向的步进电机c语言原程序,已经调试成功!有些模块是以前做其他实验时做的
,现在是直接调用的,包括1602液晶显示技术,TC9012红外解码,然后就是四相步进电机的控制程序了,我是把这些东西结合起来。对这个东西有兴趣的或者要做毕业设计的可以看看啊,不懂的请上单片机论坛http://www.51hei.com/bbs/ 公开讨论,我会给大家做出详细的解答。
#include <AT89X51.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
static unsigned int count; //计数
unsigned int hour,minute,second,count;
sbit RS = P2^3;//Pin4
sbit RW = P2^2; //Pin5
sbit E = P2^4;//Pin6
#define Data P0 //数据端口
static int step_index; //步进索引数,值为0-7
bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效
uchar n=0; //用来控制外部中断
static bit turn; //步进电机转动方向
static bit stop_flag; //步进电机停止标志
static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快
static int spcount; //步进电机转速参数计数
void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒
void gorun(); //步进电机控制步进函数
uchar data date[4]; //date数组为存放地址原码,反码,数据原码,反码
char data Test1[]=" ";
#define IR_RE P3_2
void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1;/* Crystal frequency in 12MHz*/
while(--uscnt);
}
/******************************************************************/
void DelayMs(unsigned char ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void WriteCommand(unsigned char c)
{
DelayMs(5);//short delay before operation
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}