数字阀的步进电机驱动控制系统设计_第1页
数字阀的步进电机驱动控制系统设计_第2页
数字阀的步进电机驱动控制系统设计_第3页
数字阀的步进电机驱动控制系统设计_第4页
数字阀的步进电机驱动控制系统设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include #define uchar unsigned char#define uint unsigned intunsigned char code FFW8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; / 正转unsigned char code REV8=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01; / 反转sbit k1=P32; / 运行与停止sbit k2=P33; / 设定圈数sbit k3=P31; / 方向转换sbit k4=P30; / 速度调整sbit LCD_RS=P25

2、;sbit LCD_RW=P26;sbit LCD_EN=P27;bit on_off=0; / 运行与停止标志bit direction=1; /方向标志bit rate_dr=1; / 速度标志bit snum_dr=1; / 圈数标志uchar code cdis1="welcome"uchar code cdis2="2015/3/12"uchar code cdis3=" STOP "uchar code cdis4="NUM: RATE: "uchar code cdis5="RUNNING&

3、quot;uchar m,v=0,q=0;uchar number=0,number1=0; uchar snum=20,snum1=20; /预设圈数uchar rate=3; /预设速率uchar data_temp,data_temP0, data_temp2;/延时t msvoid delay(uint t/延时约1ms,时钟11.0592MHZuchar k;while(t-for(k=0;k<120;k+void delayB(uchar x/x*0.14Msuchar i;while(x-for(i=0;i<13;i+bit LCD_busy(/检查LCD忙状态bit

4、 result;LCD_RS=0;LCD_RW=1;LCD_EN=1;delay(5;result=(bit(P0&0x80;LCD_EN=0;return(result;void lcd_wcmd(uchar cmd/写指令数据到LCDwhile(lcd_busy(;LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_(;_nop_(;P0=cmd;delay(5;LCD_EN=0;void lcd_wdat(uchar dat/写显示数据到LCDwhile(lcd_busy(;LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delay(5;LCD_E

5、N=1;delay(5;LCD_EN=0;void lcd_init( /LCD初始化设定delay(30;lcd_wcmd(0x38;/16*2显示,5*7点阵,delay(5;lcd_wcmd(0x38;delay(5;lcd_wcmd(0x38;delay(5;lcd_wcmd(0x0c;/显示开,光标关delay(5;lcd_wcmd(0x06;/移动光标delay(5;lcd_wcmd(0x01;/清屏delay(5;void lcd_pos(uchar pos/设置显示位置lcd_wcmd(pos| 0x80;/数据指针=80+地址变量void LCD_init_DIS( /LCD

6、1602初始显示子程序delay(10;lcd_init(; /初始化LCDlcd_pos(0; /设置显示位置为第一行的第1个字符m=0;while(cdis1m!='0' /显示字符lcd_wdat(cdis1m;m+;lcd_pos(0x40; /设置显示位置为第二行的第1个字符m=0;while(cdis2m!='0'lcd_wdat(cdis2m;m+;delay(3000;lcd_pos(0; /设置显示位置为第一行的第1个字符m=0;while(cdis3m!='0' /显示字符lcd_wdat(cdis3m;m+;lcd_pos(

7、0x40; /设置显示位置为第二行的第1个字符m=0;while(cdis4m!='0'lcd_wdat(cdis4m; / 显示字符m+;for(m=0;m<2;m+lcd_pos(0x0c+m;/显示方向符号lcd_wdat(0x3e;void data_conv( /数据转换子程序data_temP0=data_temp/10; /高位if(data_temP0=0data_temP0=0x20; /高位为0不显示elsedata_temP0=data_temP0+0x30;data_temp2+data_temp%10;/低位data_temp2=data_tem

8、p2+0x30;void data_dis(/数据显示程序data_temp=snum;/显示圈数data_conv(;lcd_pos(0x44;lcd_wdat(data_temP0;lcd_pos(0x45;lcd_wdat(data_temp2;data_temp=rate;/显示速度data_conv(;lcd_pos(0x4d;lcd_wdat(data_temP0;lcd_pos(0x4e;lcd_wdat(data_temp2;void motor_DR(/显示运行方向符号if(direction=1/正转方向标志for(m=0;m<2;m+lcd_pos(0x0c+m;/

9、 显示方向符号lcd_wdat(0x3e;elsefor(m=0;m<2;m+lcd_pos(0x0c+m;/ 显示方向符号 ?lcd_wdat(0x3c; /?void motor_RUN( /显示运行状态if(on_off=1TR0=1;lcd_pos(0;/设置显示位置为第一行的第一个字符m=0;while(cdis5m!='0'lcd_wdat(cdis5m; / 显示字符 RUNNINGm+;motor_DR(;elseTR0=0;P0=0x0f;lcd_pos(0; /设置显示位置为第一行的第一个字符m=0;while(cdis3m!='0'l

10、cd_wdat(cdis3m; / 显示字符 STOPm+;motor_DR(;snum=snum1;number1=0;/清空圈数计数器void main(LCD_init_DIS(;TMOD=0x01;/T0计时方式1TL0=0x33; /?TH0=0xf5; /?EA=1;ET0=1;while(1if(k1=0/读取键盘1delay(10;if(k1=0on_off=on_off;motor_RUN(;if(k2=0/读取键盘2delay(10;if(k2=0if(snum_dr=1snum+;snum1=snum;if(snum=0x14snum_dr=snum_dr;elsesnu

11、m-;snum1=snum;if(snum=0x01snum_dr=snum_dr;if(k3=0 /读取键盘3delay(10;if(k3=0direction=direction ;motor_DR(;if(k4=0 /读取键盘4delay(10;if(k4=0if(rate_dr=1rate+;if(rate=0x10rate_dr=rate_dr;elserate-;if(rate=0x01rate_dr=rate_dr;if(number1=snum1 /检查是否与设定的圈数相等number1=0;on_off=0;TR0=0;snum=snum1;P1=0x0f;motor_RUN(;data_dis(;void motor_onoff( interrupt 1TL0=0x33;TH0=0xf5;q+;if(q return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论