基于proteus的步进电机电机仿真_实验设计报告(3)

2019-01-27 10:36

{ while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

/********************************************************/ /* /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /* /********************************************************/

void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

/********************************************************/ /* /* LCD初始化设定

/* /********************************************************/

void lcd_init() {

delay(30);

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据 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); //清除LCD的显示内容 delay(5); }

/********************************************************/

/* /* 设定显示位置 /* /********************************************************/

void lcd_pos(uchar pos) {

lcd_wcmd(pos | 0x80); //数据指针=80+地址变量 }

/********************************************************/ /*

/* LCD1602初始显示子程序 /* /********************************************************/

void LCD_init_DIS() {

delay(10); //延时

lcd_init(); //初始化LCD

lcd_pos(0); //设置显示位置为第一行的第1个字符 m = 0;

while(cdis1[m] != '\\0')

{ // lcd_wdat(cdis1[m]); m++; }

lcd_pos(0x40); // m = 0;

while(cdis2[m] != '\\0') {

lcd_wdat(cdis2[m]); // m++; }

delay(3000); //

lcd_pos(0); // m = 0;

while(cdis3[m] != '\\0')

{ // lcd_wdat(cdis3[m]); m++; }

lcd_pos(0x40); // m = 0;

while(cdis4[m] != '\\0') {

lcd_wdat(cdis4[m]); // m++; }

显示字符 设置显示位置为第二行第1个字符 显示字符 延时 设置显示位置为第一行的第1个字符 显示字符 设置显示位置为第二行第1个字符 显示字符

for(m=0;m<2;m++) {

lcd_pos(0x0c+m); //显示方向符号 lcd_wdat(0x3e); } }

/********************************************************/ /*

/*数据转换子程序 /*

/********************************************************/ void data_conv() {

data_temP0=data_temp/10; //高位 if(data_temP0==0)

{data_temP0=0x20;} //高位为0不显示 else

{data_temP0=data_temP0+0x30;}

data_temp2=data_temp; //低位 data_temp2=data_temp2+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); //显示方向符号 lcd_wdat(0x3e); } } else

{ for(m=0;m<2;m++) //反转方向标志 {

lcd_pos(0x0c+m); //显示方向符号 lcd_wdat(0x3c); } } }

/******************************************************** /*

/* 显示运行状态 /*

/********************************************************/ void motor_RUN() {

if(on_off==1)


基于proteus的步进电机电机仿真_实验设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016尔雅当代中国经济课后练习答案(1.31-1.61)-分章节

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: