ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:140.98KB ,
资源ID:11660648      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11660648.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(控制步进电机LCD显示.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

控制步进电机LCD显示.docx

1、控制步进电机LCD显示2011 - 2012 学年 第 1 学期学生课程实习报告 环节名称计算机控制技术课程实习所属课程计算机控制技术学生姓名冼燎刚学号200811631128所在班级电气1081成绩评语指导教师签名一、设计题目: 控制步进电机LCD显示二、设计要求: 设计一个单片机三相步进电机控制系统,要求系统具有以下功能。(1)用K0-K2作为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍。(2)K3-K4作为启动和方向控制。(3)正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿灯亮。(4)可通过键盘设定步进电机步数给定值。(5)用三位LED数码管显示剩余工作步数三、系统总体框

2、图与原理说明 系统的整体框图四、硬件电路图 五、程序流程图六、仿真说明 输入一个三位数 按下DIRECTION 选择方向 相应的灯会亮 选择不同的工作方式 按下START按钮,倒数开始,电机按剩余步数转动。 倒数完毕,显示OVER,绿灯亮。七、心得体会通过自己几天的辛勤努力并查阅诸多资料,终于完成了本次课程设计。从系统框图到程序,自己逐一完成。程序虽然很长,但通过分成不同的H文件,有序地把它们分割成几部分。不仅对于自己,还对查看程序的人有不少的帮助。设计的思路按照对于仿真的步骤编程。从按下第一个按键开始,就已经进入到设计者的程序当中。程序有较强的逻辑性,这些都依赖于平时的练习及老师的教导。 附

3、录:程序清单 /*程序的总体文件*/#include #include #include #include void initial(); un i,motor_step=0,time_control=0;uc keyscan();uc loop124=0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01; /A B C Duc loop224=0x03,0x06,0x0C,0x09,0x09,0x0C,0x06,0x03; /AB BC CD DAuc loop328=0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x0A,0x0A,0x08

4、,0x0C,0x04,0x06,0x02,0x03,0x01; /A AB B BC C CD D DA void initial_show(); /函数申明 void clr(); void wirte_com(uc com);void wirte_data(uc date);void delay(unsigned int z); void input_keycode() ;void output_key(); void count(); void swith();void test(); void main() /主函数 initial(); /初始化 initial_show(); cl

5、r(); while(1) input_keycode(); output_key(); TMOD=0x01; / fangshi yi TL1=0xB0; TH1=0x3C; ET0=1; /yun xu TO zhongduan TR0=1; EA=1; while(1); /*中断服务函数*/void T0_time() interrupt 1/ TL1=0xB0; TH1=0x3C; time_control+; if(a0) if(time_control=2) swith(); else red=1;green=0;yellow=1; wirte_com(0xc0+10); for

6、(i=0;i4;i+) / over wirte_data(table6i); void count() t=a/100; f=a%100/10; g=a%10; wirte_com(0xC0+10); /rewrite step wirte_data(tablet); wirte_data(tablef); wirte_data(tableg); void swith() switch(motor1) case 0: if(motor_step4) P3=loop1fanzhuanmotor_step ; else motor_step=0; P3=loop1fanzhuanmotor_st

7、ep ; motor_step+; break; case 1: if(motor_step4) P3=loop2fanzhuanmotor_step ; else motor_step=0; P3=loop2fanzhuanmotor_step ; motor_step+; break; case 2: if(motor_step8) P3=loop3fanzhuanmotor_step ; else motor_step=0; P3=loop3fanzhuanmotor_step ; motor_step+; break; count(); time_control=0; a-; /zon

8、g bu shu/*键盘扫描电路*/uc temp,ge,shi,bb,num; uc keyscan() /键盘扫描子程序 while(1) P1=0xfe; temp=P1; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P1; /重新赋值 bb=P1; /保留值 temp=temp&0xf0; /去抖动 if(temp!=0xf0) temp=P1; switch(temp) case 0xee:num=0;break; case 0xde:num=1;break; case 0xbe:num=2;break; case 0x7e:num=

9、3;break; default:break; while(P1=bb); / 等待放手 delay(10); while(P1=bb); P1=0xfd; temp=P1; bb=P1; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xed:num=4;break; case 0xdd:num=5;break; case 0xbd:num=6;break; case 0x7d:num=7;break; default:b

10、reak; while(P1=bb); delay(10); while(P1=bb); P1=0xfb; temp=P1; bb=P1; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xeb:num=8;break; case 0xdb:num=9;break; case 0xbb:num=10;break; case 0x7b:num=11;break; default:break; while(P1=bb); del

11、ay(10); while(P1=bb); P1=0xf7; temp=P1; bb=P1; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P1; temp=temp&0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xe7:num=12;break; case 0xd7:num=13;break; case 0xb7:num=14;break; case 0x77:num=15;break; default:break; while(P1=bb); delay(10); while(P1=bb);

12、 if(num!=99) return(num); /*LCD显示电路*/#define uc unsigned char #define un unsigned int unsigned int i; sbit rs=P20; /位申明sbit rw=P21;sbit e=P22; uc code table2=designed by xlg; uc code table3=setting:;uc code table4=remaining:;uc code table5= ;uc code table6=over:;void wirte_com(uc com);void wirte_dat

13、a(uc date);void delay(un z); void initial() /初始化子函数 rs=1; rw=1; e=1; wirte_com(0x01); / 显示清零 delay(10); wirte_com(0x38); /16*2显示 ;5*7点阵;八位数据接口 delay(10); wirte_com(0x0f); / 1 开显示,有光标 光标闪手 (1 1 1) delay(10); wirte_com(0x06); /000001NS (N=1时右移) (S=0时整屏不移动) delay(10); wirte_com(0x80); /初始化指针 delay(10);

14、void initial_show() for(i=0;i16;i+) wirte_data(table2i); delay(100); wirte_com(0x01); wirte_com(0x80); for(i=0;i8;i+) wirte_data(table3i); wirte_com(0xC0); for(i=0;i10;i+) wirte_data(table4i); void clr() wirte_com(0x80+10); for(i=0;i0;x-) for(y=110;y0;y-);/*键盘电路读取*/sbit start=P23 ; sbit red=P24 ; sb

15、it green=P25 ; sbit yellow=P26 ; un a,b,c,d,t,f,g,fanzhuan=1,motor1=0,output_type;uc code table=0123456789ABCDEF; /定义表格 void input_keycode() num=99; keyscan(); while (tablenum!=A) while (tablenum=0&tablenum=9 ) wirte_com(0x80+10); t=tablenum; wirte_data(t); /bai位数 abc tfg a=tablenum-48; num=99; /shi

16、位数 keyscan(); b=tablenum-48; a=a*10+b; f=tablenum ; wirte_data(f); num=99; /ge位数 输入的数据存在A keyscan(); c=tablenum-48; a=a*10+c; g=tablenum ; wirte_data(g); wirte_com(0x0c); wirte_com(0x80+10); num=99; keyscan(); while (tablenum=C) wirte_com(0x80+15); if(fanzhuan=1) fanzhuan=0; wirte_data(a); red=0;gre

17、en=1;yellow=1; else fanzhuan=1; wirte_data(b); red=1;green=1;yellow=0; wirte_com(0x80+15); num=99; keyscan(); while (tablenum=D|tablenum=E|tablenum=F) switch(tablenum) case D: motor1=0; wirte_com(0xC0+15); wirte_data(1); /类型 a/b wirte_com(0xC0+15); break; case E: motor1=1; wirte_com(0xC0+15); wirte_data(2); /类型 a/b wirte_com(0xC0+15); break; case F: motor1=2; wirte_com(0xC0+15); wirte_data(3); /类型 a/b wirte_com(0xC0+15); break; num=99; keyscan(); if (tablenum=B) clr(); num=99; keyscan(); void output_key() wirte_com(0xC0+10); wirte_data(t); wirte_data(f); wirte_data(g); wirte_com(0xC0+10);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1