多级线圈炮程序简化版1.1
轻音与二次元2014/12/20电磁炮 IP:浙江
上次的帖沉了。。。重发一帖。。。。
现在对上次我编的延时程序做了一点简化,编译器编译一下没错误,不知道能不能正常运行
(高一党菜比,大家多多包涵)

#include<reg51.h>
#define unchar unsigned char
#define unint unsigned int
unint mum,a,b,eec;
sbit C1=P0^0;
sbit C2=P0^1;
sbit C3=P0^2;
sbit C4=P0^3;
sbit C5=P0^4;
sbit C6=P0^5;
sbit C7=P0^6;
sbit C8=P0^7;
sbit S1=P1^0;
void delayus(unchar);
void main()
{
while(1)//大循环
{
mum=0;
eec=0;
while(S1); //触发按键检测开始
for(a=10;a>0;a--) //延时10ms
for(b=120;b>0;b--);
while(S1); //触发按键检测结束
TMOD=0x01; //开始初始化定时计数器
TH0=(65536-10000)/256; //赋初值(注:10000不是工作值,填填上去而已)
TL0=(65536-10000)%256;
EA=1;
ET0=1; //初始化完毕
TR0=1; //定时计数器开始运行
mum++;               //进入定时计数器中断的次数+1,下同
while(eec!=1);     //限制程序执行步数,方便控制中断,这里根据eec的值来确定能不能跳过对应的while语句执行后面的“进入中断次数+1”
mum++;
while(eec!=2);
mum++;
while(eec!=3);
mum++;
while(eec!=4);
mum++;
while(eec!=5);
mum++;
while(eec!=6);
mum++;
while(eec!=7);
mum++;
while(eec!=8);
mum++;
while(eec!=9);
mum++;
while(eec!=10);
mum++;
while(eec!=11);
mum++;
while(eec!=12);
mum++;
while(eec!=13);
mum++;
while(eec!=14);
mum++;
while(eec!=15);
mum++;
while(eec!=16);
TR0=0;                          //把定时器计数器关掉,准备又一次循环,即发射
}
}
void DCP()interrupt 1    //中断程序
{
while(mum==1)
{
delayus(10000);  //调用子函数,下同
C1=0;                  //触发对应级,下同
}
while(mum==2)
{
delayus(10000);
C1=1;
}
while(mum==3)
{
delayus(10000);
C2=0;
}
while(mum==4)
{
delayus(10000);
C2=1;
}
while(mum==5)
{
delayus(10000);
C3=0;
}
while(mum==6)
{
delayus(10000);
C3=1;
}
while(mum==7)
{
delayus(10000);
C4=0;
}
while(mum==8)
{
delayus(10000);
C4=1;
}
while(mum==9)
{
delayus(10000);
C5=0;
}
while(mum==10)
{
delayus(10000);
C5=1;
}
while(mum==11)
{
delayus(10000);
C6=0;
}
while(mum==12)
{
delayus(10000);
C6=1;
}
while(mum==13)
{
delayus(10000);
C7=0;
}
while(mum==14)
{
delayus(10000);
C7=1;
}
while(mum==15)
{
delayus(10000);
C8=0;
}
while(mum==16)
{
C8=1;//最后一次执行中断程序,不赋定时器初值
eec++;
}
}
void delayus(unchar sj)  //用来赋值的子函数
{
TH0=(65536-sj)/256;
TL0=(65536-sj)%256;
eec++;
来自:物理高能技术 / 电磁炮
13
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
轻音与二次元 作者
10年0个月前 IP:浙江
736230
引用 fanwen6607:
要是用这个程序跟AT89C2051单片机做触发,控制电路部分就会很简单了,最好在发射后面再加一个测速,三个数码管显示就好
也就是说能用这个程序咯!!我用的是最基础的89C51,应该可以胜任的,后级测速我会补上的,谢谢!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
轻音与二次元作者
10年0个月前 IP:浙江
736488
引用 秋青峰:
看到很多人用单片机控制时间,和光电开关比哪个更精确?
。。。。。和单片机比,光电开关实在是比较辣鸡。。。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
轻音与二次元作者
10年0个月前 IP:浙江
736811
引用 秋青峰:
是因为光电开关反应速度不行吗?
因为光电开关可调性太差,做出来的东西不但在理论的计算上存在疑问,而且一旦调试过就会变得很脏乱,难看
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
轻音与二次元作者
10年0个月前 IP:浙江
737002
引用 wjd_213:
我用的也是单片机。用的是中断触发,但一直被困在单片机中断开关的电路问题上。
???电路???外部电路怎么会有疑问呢???
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
轻音与二次元作者
10年0个月前 IP:浙江
737774
引用 wjd_213:
一两句话说不清。主要就是加了中断开关电路后。合上开关后驱动IC就无视单片机的信号。让场效应管一直处于导通。。。结果烧掉了我的线圈和MOS管。你要是方便有时间可以帮我一下吗?
第一,确定你的电压没有问题。第二,N沟道MOSFET的G级高电平使其打开,但由于结电容的关系,打开后要给一个低电平才能关断!如果单纯撤掉信号是不能关断的,注意这点。其他的原因我 不能想到了,不好意思(高一知识有限)
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

轻音与二次元
笔友
文章
16
回复
95
学术分
0
2014/01/11注册,6年11个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}