C语言程序源代码文档格式.docx
- 文档编号:18564187
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:12
- 大小:21.38KB
C语言程序源代码文档格式.docx
《C语言程序源代码文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序源代码文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
//显示字段
uintcodeLevspeed[5]={500,400,300,200,100};
//电机速度等级
ucharHscan,speedcount;
//Hscan行扫描,speedcount速度等级计数
uintuu;
//频率计数
uintstep,setstep;
//step:
电机步伐计数,setstep:
手动设置电机步伐
uintspeed=500;
//电机初始速度
ucharcount;
ucharflag[5];
ucharbutcount;
//按键次数
//****************************************
//flag[0]正转标志
//flag[1]反转标志
//flag[2]加速标志
//flag[3]减速标志
//flag[4]设置标志
Delay1mS(unsignedinttt)//延时1ms“Delay1mS”延时子程序,用循环语句延时。
{
unsignedchari;
while(tt--)
for(i=113;
i>
0;
i--);
}
keyscan()//键盘扫描“keyscan”键盘扫描子程序,用于寻找是否有按键按下。
P2=0xf0;
//把oxfe赋值给P2口//将按键控制口置于未按键的状态.单片机输出//口假设不是按键按下状态.
if(P2!
=0xf0)//如果P2口的值不等于0xfe//检查是否有按键按下.如果有,处理{}内的事
{//有按键按下.
Delay1mS(150);
//调用延时函数//有按键按下,避开无效读码值的时间.,或者是脉冲长度
Hscan=0xfe;
//将Hscan赋值,初始遥控值是要置高电平的.
P2=Hscan;
//
while((Hscan&
0x10)!
=0)//检查X10口是否有键按下。
未按下是1,
//在这显示出你的按键口是P2_4.即检查P2_4是高电平,无//键按下,低电平有键按下。
{
if((P2&
0xf0)!
=0xf0)//检查按键脉冲是否是变化,
returnP2;
elseHscan=(Hscan<
<
1)|0x01;
//这里在存码值,应该是遥控输入。
将码值存入Hscan
//这里是读取码值的关键,如果来的脉冲不管是高电平//还是低电平,靠左移一位保存脉冲的状态值.
}
elsereturn0;
key_val()//按键处理函数//这里是读取将存好的码值进行处理.看是什么代码值
{
ucharkey;
key=keyscan();
//这里是读取码值并存放在key里
switch(key)//这里是对比读取的码值
case0xee:
//按键‘7’//读取的码值=0xEE,则是按键“7”的代码
//while(P2==0xee);
setstep=setstep*10+7;
//步伐数//这里是输入”setstep+7”步伐数对比读取的码值,//setstep原来可能是有数字的。
step=setstep;
butcount++;
//计数,看输入拉几个数字
if(butcount>
=5)//输入的数字超过5个就置0,无效
butcount=0;
setstep=0;
}
break;
case0xde:
//按键‘8’//读取的码值=0xdE,则是按键“8”的代码
//其他同”7”
//while(P2==0xde);
setstep=setstep*10+8;
=5)
case0xbe:
//按键‘9’//同上”7”
//while(P2==0xbe);
setstep=setstep*10+9;
case0x7e:
//按键‘正转//正转按键识别
while(P2==0x7e);
//等待按键松开//一值按住电机是不转的,放开后才转.有检查//P2口的状态值
flag[0]=0xff;
//开启正转标志,关闭反转//置正转标志.
flag[1]=0x00;
//清除反转标志.
speedcount=0;
speed=500;
//置电机的转速.
if(!
flag[4])step=0;
TR0=1;
case0xed:
//按键‘4’//同上”7”
while(P2==0xed);
setstep=setstep*10+4;
case0xdd:
//按键‘5’//同上”7”
//while(P2==0xdd);
setstep=setstep*10+5;
我上周刚做的这个实验成功拉,给你参考一下吧这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的和ULN2003一样,你把它换成2003就行拉
AT89X51.H>
unsignedcharcodetable[]={0xf1,0xf3,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>
m--)
for(j=250;
j>
j--)
for(k=10;
k>
k--);
voidsaomiao()
P3=0xff;
P3_4=0;
temp=P3;
temp=temp&
0x0f;
if(temp!
=0x0f)
for(i=50;
i--)
for(j=200;
j--);
switch(temp)
case0x0e:
key=1;
case0x0d:
key=2;
case0x0b:
key=3;
case0x07:
key=4;
while(temp!
P3_5=0;
{
key=5;
key=6;
key=7;
voidmain(void)
while
(1)
saomiao();
if(key==1)
{P1=0;
P2=0;
if(key==2)
temp_old=key;
for(s=0;
s<
8;
s++)
{P2=table[s];
P1_4=0;
delay(13);
if(key!
=temp_old)
P1_4=1;
if(key==3)
P1_5=0;
delay(5);
P1_5=1;
if(key==4)
P1_6=0;
delay(20);
P1_6=1;
if(key==5)
for(s=9;
17;
P1_7=0;
P1_7=1;
if(key==6)
if(key==7)
#include<
reg52.h>
voiddelay()
{intx,y;
for(x=0;
x<
40;
x++)
for(y=0;
y<
10;
y++);
main()
{while
(1)
{P1=0x3f;
delay();
P1=0x6f;
P1=0xcf;
P1=0x9f;
正反转改P1的值,速度改delay的值。
我默认步进电机是由P1口驱动的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 源代码