收藏 分销(赏)

微机接口实习报告.doc

上传人:快乐****生活 文档编号:10506541 上传时间:2025-05-31 格式:DOC 页数:7 大小:39.26KB 下载积分:6 金币
下载 相关 举报
微机接口实习报告.doc_第1页
第1页 / 共7页
微机接口实习报告.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
7 微机接口实验报告 姓 名:李 晋 林 班 级:191102-13 学 号:20101002007 指导老师:墙 威 实习时间:2012-12-30 题目:模拟汽车控制系统 一、设计目标 设计一个模拟汽车控制系统,使用接口芯片: …实现用简单逻辑电平控制车的档位(前进 1,前进 2 ,前进 3,后退),用步进电机的转速模拟车的速度(若步进电机不能用,也可以用流水灯的刷新方向和速度,或数码管显示的数值来模拟车的速度),用 A/D 转换器模拟车的油门大小。 二、设计所用仪器和器件 步进电机,A/D转换器,逻辑开关,导线。 三、设计内容 1.设计步进电机的顺时针和逆时针旋转: 2.使用A/D转换器转换模拟信号为数字信号. 3.设计电平开关控制输入,并将输入结果显示出来. 四、设计过程 1. 设计方案: a.电平开关控制档位 根据用户拨动的逻辑电平,用I/O端口读出数值,来判断并决定小车的动作,后退档用步进电机逆时针旋转来模拟,前进挡用步进电机的顺时针旋转模拟,档位的控制用限制Sleep的时间乘以一定速率来实现。即用简单逻辑电平控制车的档位(前进 1,前进 2 ,前进 3,后退)。 unsigned short a= 0x0c860;//读写数据均用此端口号 int i; while(1) { i = _inp(a);//读端口数据 _outp(a, i);//显示数据 if(i==128) back(); //汽车倒档 else if(i==64) move(4); //一档,参数表示休眠的时间所乘以的倍率 else if(i==32) move(2); //二档 else if(i==16) move(1); //三档 else stop(); } b.步进电机的转速模拟车的速度 具体根据限制CUP的Sleep即休眠时间,达到控制速度的效果。Sleep的时间越短,速度越快,Sleep的时间越长,速度越慢 。 步进电机顺时针旋转相序表的加电代码顺序: 05H 15H 14H 54H 50H 51H 41H 45H 步进电机顺时针旋转相序表的加电代码顺序: 45H 41H 51H 50H 54H 14H 15H 05H 即刚好与顺时针的顺序相反。 c.A/D 转换器转换的数值模拟车的油门大小 数值越高,Sleep的时间越短,速度越快。 unsigned short b=0x0c880;//AD转换端口号 int t; _outp(b,1); t=_inp(b); Sleep(t); 开始 逻辑框图 显示数值 拨动电平开关 停 止 三 档 二 档 一 档 后 退 结束 程序流程图 Main() a= 0x0c860; i = _inp(a); i=128 后退 一档 i=64 二档 i=32 i=16 停车 三档 结束 三档 三档 i=其他 2. 所设计系统的硬件连接图 用四根导线分别将步进电机的四个接口线分别连上A0,A2,A4,A6。 五、分析与讨论 实验结果: 拨动电平开关左边起第一个,步进电机逆时针旋转;拨动第二,第三,第四个开关,步进电机顺时针旋转,并且速度依次递增.同时,旋转A/D转换的旋钮,步进电机的速度增大或者减小. 结果分析: 实验结果与预期效果相符合,达到步进电机模拟小车系统的档位,油门的效果. 问题及解决方案: 实验过程中发现没有达到效果,可能的原因如下: 1. 实验台和电脑没有连上线 2. 实验台子时坏的,由于实验室设备已经使用时间过长,加之步进电机本身不允许长时间通电,有时可能由于操作时间过长或者操作不当,步进电机已经烧坏了. 3. 步进电机的四根导线没有连接好. 4. 由于电平开关只用到前面四个,所以其他开关需要调到闭合状态,否则会影响实验结果. 六.实验心得: 这次的实验被安排在2012年的最后几天,总体来说完成得很顺利,没有想象中那样可怕,因为前面的几次的上机课已经做过每个模块,这次的小车系统无非是将前几次的实验综合一下,形成一个完善的系统。以致于做实验去的时候倒腾了一上午就完成并验收了。 微机接口是软件硬件相结合的一门课程,实验设备也只有机房才有,所以实践起来的机会不是很多,但是真的很有意思,也容易激起学习的兴趣,这次实验更加深了我对本学期所学课本上的基本知识的认识和理解,同时也明白,理论和实践不是可以等同的。只有掌握了基本知识,实践起来才有思路,而实践就没有基本知识那么复杂,但是只有真正实践才体会到知识的运用。在实验过程中也遇到一定的问题,我们几个同学就一起讨论,研究,相互合作,锻炼了我们各方面的能力。 通过这次实验,更加理解了微机接口这门课程,同时更加深了学习它的兴趣,特别以硬件的角度去理解各种电子设备的工作原理,我相信对于以后的学习和工作将有很大帮助。 七.程序源代码: #include "conio.h" #include "stdio.h" #include "windows.h" void back(); //步进电机逆转,模拟小车倒退 void move(int j);//步进电机正转,模拟小车前进 void stop(); //空函数,小车停止 void main() { unsigned short a= 0x0c860;//读写数据均用此端口号 int i; while(1) { i = _inp(a);//读端口数据 _outp(a, i);//显示数据 if(i==128) back(); //汽车倒档 else if(i==64) move(4); //一档 else if(i==32) move(2); //二档 else if(i==16) move(1); //三档 else stop(); } } void back() //步进电机逆转,模拟小车倒退 { unsigned short a=0x0c800;//步进电机PA口地址 unsigned short b=0x0c880;//AD转换端口号 int t;//存储A/D转换来的数字信号 _outp(a,0x05); _outp(b,1); t=_inp(b); Sleep(t); _outp(a,0x15); t=_outp(b,1); Sleep(t); _outp(a,0x14); t=_outp(b,1); Sleep(t); _outp(a,0x54); t=_outp(b,1); Sleep(t); _outp(a,0x50); t=_outp(b,1); Sleep(t); _outp(a,0x51); t=_outp(b,1); Sleep(t); _outp(a,0x41); t=_outp(b,1); Sleep(t); _outp(a,0x45); t=_outp(b,1); Sleep(t); } void move(int j) { unsigned short a=0x0c800;//步进电机端口 unsigned short b=0x0c880;//AD转换端口号 int t; //存储A/D转换来的数字信号 _outp(a,0x45); _outp(b,1); t=_inp(b); Sleep(t*j); _outp(a,0x41); t=_outp(b,1); Sleep(t*j); _outp(a,0x51); t=_outp(b,1); Sleep(t*j); _outp(a,0x50); t=_outp(b,1); Sleep(t*j); _outp(a,0x54); t=_outp(b,1); Sleep(t*j); _outp(a,0x14); t=_outp(b,1); Sleep(t*j); _outp(a,0x15); t=_outp(b,1); Sleep(t*j); _outp(a,0x05); t=_outp(b,1); Sleep(t*j); } void stop() { } 7
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服