搜索
bottom↓
回复: 11

最简单数字点火器系统 请大家指点C语言程序怎么编

[复制链接]

出0入0汤圆

发表于 2010-3-19 13:20:35 | 显示全部楼层 |阅读模式
--------------------------------------------------------------------------------

最简单数字点火器系统 磁电机只有一个触发信号,通过对此信号的 处理来确定点火时刻
点击此处下载 ourdev_539440.doc(文件大小:41K) (原文件名:最简单数字点火器系统.doc)

出0入0汤圆

发表于 2010-3-19 13:47:24 | 显示全部楼层
你这个电路用在什么地方?

出0入0汤圆

 楼主| 发表于 2010-3-19 14:05:05 | 显示全部楼层
回复【1楼】guopingsh
-----------------------------------------------------------------------

摩托车上

出0入0汤圆

发表于 2010-3-19 14:09:11 | 显示全部楼层
这个应该不用单片机吧,用门电路或者运放搭一个就可以吧

出0入0汤圆

发表于 2010-3-19 14:11:05 | 显示全部楼层
看不懂~等高手来解释一下~

出0入0汤圆

 楼主| 发表于 2010-3-19 14:18:20 | 显示全部楼层
回复【4楼】mcukiller
-----------------------------------------------------------------------

单片机RA2检测磁电机触发,计算出此刻的 转速,转速范围决定了 点火时刻,RC0发出点火指令点火

出0入0汤圆

发表于 2010-3-19 14:41:17 | 显示全部楼层
给个思路,也不知对不:

while(RA2==1);
TMR0=0;
while(RA2==0);    //此处注意计数器不要溢出,必要时开中断
temp=TMR0;
if(temp<FIRETIMER)
RC0=FIRE;

出0入0汤圆

发表于 2010-3-22 10:31:55 | 显示全部楼层
ddd~

出0入0汤圆

 楼主| 发表于 2010-3-22 14:10:44 | 显示全部楼层
/*==================================================================================
  最简单数字点火系统,630的11脚(RA2)检测触发脉冲计算转速(判断触发脉冲高低电平持续时间),
  10脚RC0触发可控硅点火;
  发动机旋转一圈出现一个触发脉冲,一个触发脉冲包括一个高电平和一个低电平
=================================================================================*/

#include <pic.h>
#include <pic16630.h>

__CONFIG( WDTDIS  & PWRTEN & INTOSCIO & MCLRDIS);

#define uchar unsigned char
#define uint  unsigned int

#define        in1          RA2  //11脚触发信号
#define       out          RC0    //10脚输出
//#define        in2          RC1  //9脚触发


const uchar Cs@0x3ff;
uchar tmp1;                                  
uchar tmp2;
uchar tmp3;

                                  
uchar tlow;  //触发脉冲高电平                                 
uchar thigh;  //触发脉冲低电平      
uchar jg;        
uchar zhouqi1;
uchar jg1;

uchar  cishu;
uchar  lable;


bit            stop;
bit            run;
bit                speed1;//发动机转速低于1200转/分钟标志
bit                speed2; //发动机转速低于于2400转/分钟标志           
bit           speed3;//高于2400




void interrupt ISR (void)
{
        if(T0IF)   //time0 50us中断0.05ms
                {
                        T0IF=0;
                        TMR0=196;
                        if(!in2)//发动机开始旋转
                          {
                         if((tlow>=2 && tlow>=4)&&(thigh>=20 && thigh<=50))//1200转以下
                           {
                             speed1=1;
                            }
                          else if((tlow>=1 && tlow>=3)&&(thigh>=50 && thigh<=80))//2400转以下
                           {
                             speed2=1;
                            }
                           else
                            {
                          speed3=1;
                             }
                        
                        }

                /*  if(run)
                                {
                                        out=1;   
                                        tmp1++;
                                        if(tmp1==20)   
                                                {
                                                    tmp1=0;
                                              tmp2++;
                                             if(tmp2==30)
                                              {
                                               tmp2=0;
                                                    out=0;
                                                    run=0;
                                               }         
                                                }
                                               
                                }          


                }*/
       
        if(TMR1IF)  //10脚输出脉冲宽度
                {
                        TMR1IF=0;
                        TMR1H=0xcf;
                        TMR1L=0x2b;                        //timer1 0.1s定时100ms       
                        if(run)
                                {
                                        out=1;   
                                        tmp1++;
                                        if(tmp1==2)   
                                                {
                                                    tmp1=0;
                                                    out=0;
                                                    run=0;         
                                                }
                                               
                                }                                       
                               
                               
                         
                                       
                }  */
               
}


void main(void)
{

      OSCCAL=Cs;
      PORTC=0X20;
      PORTA=0X00;
      CMCON=0X07;
      TRISA=0X3F;
      TRISC=0X0A;
      WPUA=0X35;
      IOCA=0X04;
      OPTION=0X0E;
       
  

        TMR0=196;
        INTCON=0xe0;      //使能timer0;
       T0IF=0;
        T0IE=1;                        //使能timer0;
       

         if(in2==1)
        {stop=1;}
         
         
        TMR1H=0xcf;
        TMR1L=0x2b;                                //time1 0.025s*8预分频定时
        //T1CON=0x30;                                //关闭Timer1 设置1:8预分频
        PIE1=0x01;                                //使能time1定时中断
        TMR1IF=0;
        TMR1ON=1;                          //启动timer1  
       
        while(1)
        {
                if(!in1)  
                        {
                         if(speed1 && !speed2)//判断转速决定点火时刻
                             run=1;
                        if
                   .......................         
                        }
               else  {run=0;}

       }
}

不知这样编写对不。请高手指点
(原文件名:数字.jpg)

出0入0汤圆

发表于 2010-3-26 17:35:25 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-3-28 10:00:59 | 显示全部楼层
回复【楼主位】zxcv12345
-----------------------------------------------------------------------

去年的时候做过这个东西,电路没什么难的,主要还是程序。既然用了单片机,就不会是普通点火器这么简单。主要是为了做限速用,这样子的吧,程序就麻烦了,我搞了一个多月还是没搞好。

出0入0汤圆

 楼主| 发表于 2010-3-29 13:28:02 | 显示全部楼层
回复【10楼】xjzxl
-----------------------------------------------------------------------

我们;来交流,我的 QQ:365763128
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 00:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表