已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*程序功能:通过遥控控制步进电机转动的圈数作 者:Sun制作日期:2011年7月16日相关说明:采用uPD6121G芯片发射码格式,用单片机AT89S52实现解码 晶振频率:11.0592MHz,步进电机为28BYJ-48 在数码管上同步显示当前转动的圈数*/#include /51芯片管脚定义头文件#include /内部包含延时函数 _nop_()#define uchar unsigned char#define uint unsigned intuchar code FFW8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; /正转相序编码uchar code REV8=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01; /反转相序编码uchar code YK_code=0xfc, 0xf8, 0xf4, 0xf0, 0xec, 0xe8, 0xe4, 0xe0, 0xdc, 0xd8;/遥控器解码对应的编码“0-9”uchar code s816=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/数码管显示“0-9”uchar code PM2=0xff,0xbf; /数码管显示正反转uchar code SW2=0xbf,0x7f; /数码管位显示sbit IR=P32; /定义红外接收器控制端口sbit BEEP = P36; /定义蜂鸣器控制端口uint LowTime, HighTime; /储存高低电平宽度uchar a4; /储存四位用户码和数据码uchar key=10; /储存检测到的键值,预先置为无效位uchar count=1; /数码管显示转动圈数的计数标识位bit flag=0; /正转反转的标志位bit wbs=0; /数码管显示位的标识位/*函数功能:实现n毫秒延时入口参数:n*/void delaynms(uint i)uchar j;while(i-)for(j=0; j114; j+) /1ms基准延时程序; /*函数功能:蜂鸣器发出响声*/void beep(void)uchar i;for(i=0; i80; i+)BEEP=BEEP;delaynms(1); /延时BEEP=1; /关闭蜂鸣器/*函数功能:步进电机正转并在数码管上显示出来*/void motor_ffw(void)uchar i, j;for(j=0; j8; j+) /内部转轴转一圈if(wbs=0) /控制数码管显示P0=PMflag;elseP0=s8count;P2=SWwbs;wbs=wbs;for(i=0; i8; i+) /一个周期转四十五度P1=FFWi; /取数据delaynms(1); /调整速度P2=0xff;/*函数功能:步进电机反转并在数码管上显示出来*/void motor_rev(void)uchar i, j;for(j=0; j8; j+) /内部转轴转一圈if(wbs=0) /控制数码管显示P0=PMflag;elseP0=s8count;P2=SWwbs;wbs=wbs;for(i=0; i8; i+) /一个周期转四十五度P1=REVi; /取数据delaynms(1); /调整速度P2=0xff;/*函数功能:驱动步进电机运行*/void drivemotor(void)uchar i, j;if(flag=0) /正转标志位成立for(i=0; ikey; i+)for(j=0; j64; j+)motor_ffw(); /步进电机正转count+;if(flag=1) /反转标志位成立for(i=0; ikey; i+)for(j=0; j64; j+)motor_rev(); /步进电机反转count+;wbs=0;count=1;P1=0xf0;/*函数功能:对四个字节的用户码和数据码进行解码说明:解码正确返回1,解码错误返回0*/bit Decode(void)uchar i, j;uchar temp; /储存解码出的数据for(i=0; i4; i+) /连续读取四个用户码和数据码 for(j=0; j=1; /temp中的数据右移一位,因为是先读出的是地位数据TH0=0; /将定时器T0的高八位清零TL0=0; /将定时器T0的低八位清零TR0=1; /打开定时器T0while(IR=0); /如果是低电平就等待,对低电平计时TR0=0; /关闭定时器T0LowTime=TH0*256+TL0; /计算低电平持续时间TH0=0; /将定时器T0的高八位清零TL0=0; /将定时器T0的低八位清零TR0=1; /打开定时器T0while(IR=1); /如果是高电平就等待,对高电平计时TR0=0; /关闭定时器T0HighTime=TH0*256+TL0; /计算高电平持续时间if(LowTime670)return 0; /如果低电平长度不在合理范围,则认为出错,停止解码if(HighTime420)&(HighTime1300)&(HighTime1800) /如果高电平时间在1680微秒左右,即计数16801.0851548次temp=temp|0x80; /(1550-250=1300,1550+250=1800),则该位是1ai=temp; /将解码出的字节值储存在aiif(a2=a3) /验证键数据码和其反码是否相等,一般情况下不必验证用户码return 1; /解码正确,返回1/*函数功能:检测按下哪个按键*/void check(void)uchar i;for(i=0; i7800)&(LowTime3600)&(HighTime4700)/如果是引导码就进行解码,否则放弃if(Decode()=1)/执行遥控解码功能beep();/蜂鸣器响一声 提示解码成功chec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议报告与总结撰写制度
- 兰州大学口腔医院2026年招聘备考题库及参考答案详解1套
- 2026年鹤山镇中心卫生院医学检验科招聘备考题库及参考答案详解
- 中学学生社团活动经费监管职责制度
- 中学社团指导教师职责制度
- 2026年昭通市第三人民医院总务科综合岗位招聘备考题库附答案详解
- 2026年菜园坝街道社区卫生服务中心招聘放射技师1名备考题库附答案详解
- 2026年秦皇岛市九龙山医院第二批公开选聘工作人员备考题库有答案详解
- 2026年长春黄金设计院有限公司招聘备考题库带答案详解
- 2026年皮山县人民医院招聘备考题库及一套答案详解
- 2024年地下储气库行业现状分析:全球地下储气库数量增至679座
- GB/T 6003.2-2024试验筛技术要求和检验第2部分:金属穿孔板试验筛
- 离婚协议标准版(有两小孩)
- 浙江省台州市路桥区2023-2024学年七年级上学期1月期末考试语文试题(含答案)
- 假体隆胸后查房课件
- 2023年互联网新兴设计人才白皮书
- DB52-T 785-2023 长顺绿壳蛋鸡
- 关于地方储备粮轮换业务会计核算处理办法的探讨
- GB/T 29319-2012光伏发电系统接入配电网技术规定
- GB/T 1773-2008片状银粉
- GB/T 12007.4-1989环氧树脂粘度测定方法
评论
0/150
提交评论