C语言程序源代码_第1页
C语言程序源代码_第2页
C语言程序源代码_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、C语言程序源代码#include<REGX51.H>/51寄存器定义#include"intrins.h"#definecontrolP1/P1_0:A相,P1_1:B相,P1_2:C相,P1_3:D相#definediscodeP0/显示代码控制端口#defineucharunsignedchar定义无符号型变量#defineuintunsignedintsbiten_dm=P3A0;显示代码锁存控制sbiten_wk=P3A1;位控锁存控制ucharcodecorotation4=(0x03,0x06,0x0c,0x09;/电机正转ucharcoderoll

2、back4=0x0c,0x06,0x03,0x09;/电机反转ucharcodetab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示字段uintcodeLevspeed5=500,400,300,200,100;/电机速度等级ucharHscan,speedcount;/Hscan行扫描,speedcount速度等级计数uintuu;频率计数uintstep,setstep;/step:电机步伐计数,setstep:手动设置电机步伐uintspeed=500;电机初始速度ucharcount;ucharflag5;ucharbu

3、tcount;按键次数*/flag0正转标志/flag1反转标志/flag2加速标志/flag3减速标志/flag4设置标志/*Delay1mS(unsignedinttt)延时1ms“Delay1mS延时子程序,用循环语句延时。unsignedchari;while(tt-)for(i=113;i>0;i-);keyscan()键盘扫描"keyscarif盘扫描子程序,用于寻找是否有按键按下。P2=0xf0;把oxfe赋值给P2口将按键控制口置于未按键的状态.单片机输出口假设不是按键按下状态.if(P2!=0xf0)如果P2口的值不等于0xfe/检查是否有按键按下.如果有,处

4、理内的事(有按键按下.Delay1mS(150);/调用延时函数有按键按下,避开无效读码值的时间.,或者是脉冲长度Hscan=0xfe;/将Hscan赋值,初始遥控值是要置高电平的.P2=Hscan;/while(Hscan&0x10)!=0)检查X10口是否有键按下。未按下是1,在这显示出你的按键口是P2_4.即检查P2_4是高电平,无键按下,低电平有键按下。(P2=Hscan;if(P2&0xf0)!=0xf0)/检查按键脉冲是否是变化,returnP2;elseHscan=(Hscan<<1)|0x01;这里在存码值,应该是遥控输入。将码值存入Hscan这里是

5、读取码值的关键,如果来的脉冲不管是高电平还是低电平,靠左移一位保存脉冲的状态值.elsereturn0;key_val()按键处理函数这里是读取将存好的码值进行处理.看是什么代码无(ucharkey;key=keyscan();这里是读取码值并存放在key里switch(key)/这里是比照读取的码值(case0xee:/按键7'读取的码值=0xEE,则是按键“确代码/while(P2=0xee);setstep=setstep*10+7;/步伐数这里是输入”setstep+7步伐数比照读取的码值,/setstep原来可能是有数字的。step=setstep;butcount+;计数,

6、看输入拉几个数字if(butcount>=5)输入的数字超过5个就置0,无效(butcount=0;setstep=0;break;case0xde:按键8读版的码值=0xdE,则是按键“明代码其他同”7”/while(P2=0xde);setstep=setstep*10+8;butcount+;step=setstep;if(butcount>=5)(butcount=0;setstep=0;break;case0xbe:/按键9同上”7”/while(P2=0xbe);setstep=setstep*10+9;butcount+;step=setstep;if(butcoun

7、t>=5)(butcount=0;setstep=0;break;case0x7e:/按键正转正转按键识别while(P2=0x7e);/等待按键松开一值按住电机是不转的,放开后才转.有检查/P2口的状态值flag0=0xff;开启正转标志,关闭反转置正转标志.flag1=0x00;活除反转标志.butcount=0;speedcount=0;speed=500;置电机的转速.if(!flag4)step=0;TR0=1;break;case0xed:/按键4'同Zt”7”while(P2=0xed);setstep=setstep*10+4;butcount+;step=set

8、step;if(butcount>=5)(butcount=0;setstep=0;break;case0xdd:按键5同It”7”/while(P2=0xdd);setstep=setstep*10+5;step=setstep;butcount+;if(butcount>=5)butcount=0;setstep=0;break;我上周刚做的这个实验成功拉,给你参考一下吧这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的和ULN2003一样,你把它换成2003就行拉#include<AT89X51.H>unsignedcharcodetable=0xf1,0

9、xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00;unsignedchartemp,temp_old;unsignedcharkey;unsignedchari,j,k,m,s;voiddelay(inti)for(m=i;m>0;m-)for(j=250;j>0;j-)for(k=10;k>0;k-);voidsaomiao()P3=0xff;P3_4=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f)for(i=50;i

10、>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp&0x0f;if(temp!=0x0f)temp=P3;temp=temp&0x0f;switch(temp)case0x0e:key=1;break;case0x0d:key=2;break;case0x0b:key=3;break;case0x07:key=4;break;temp=P3;temp=temp&0x0f;while(temp!=0x0f)(temp=P3;temp=temp&0x0f;P3=0xff;P3_5=0;temp=P3;temp=temp&a

11、mp;0x0f;if(temp!=0x0f)(for(i=50;i>0;i-)for(j=200;j>0;j-);temp=P3;temp=temp&0x0f;if(temp!=0x0f)(temp=P3;temp=temp&0x0f;switch(temp)(case0x0d:key=5;break;case0x0b:key=6;break;case0x07:key=7;break;temp=P3;temp=temp&0x0f;while(temp!=0x0f)(temp=P3;temp=temp&0x0f;voidmain(void)(while

12、(1)(saomiao();if(key=1)(P1=0;P2=0;saomiao();if(key=2)(temp_old=key;for(s=0;s<8;s+)(P2=tables;P1_4=0;delay(13);saomiao();if(key!=temp_old)(P1_4=1;break;if(key=3)(temp_old=key;for(s=0;s<8;s+)(P2=tables;P1_5=0;delay(5);saomiao();if(key!=temp_old)(P1_5=1;break;if(key=4)(temp_old=key;for(s=0;s<8

13、;s+)(P2=tables;P1_6=0;delay(20);saomiao();if(key!=temp_old)(P1_6=1;break;if(key=5)(temp_old=key;for(s=9;s<17;s+)(P2=tables;P1_7=0;delay(13);saomiao();if(key!=temp_old)(P1_7=1;break;if(key=6)(temp_old=key;for(s=9;s<17;s+)(P2=tables;P1_5=0;delay(5);saomiao();if(key!=temp_old)P1_5=1;break;if(key=7)temp_old=key;for(s=9;s<17;s+)P2=tables;P1_6=0;delay(20);saomiao();if(key!=temp_old)

温馨提示

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

最新文档

评论

0/150

提交评论