搜索
bottom↓
回复: 11

我的设计中双向可控硅不能导通~不知道是程序的问题还是硬

[复制链接]

出0入0汤圆

发表于 2012-4-6 14:16:15 | 显示全部楼层 |阅读模式
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int

sbit rs=P1^0;//H数据,L命令
sbit lcden=P1^1;//高脉冲使能,使能脉宽最小150ns
sbit kong=P1^2;
sbit ok=P1^3;
sbit jia=P1^4;

uchar code table1[]="error!";
uchar code table2[]="0123456789";
uchar code table3[]="SetSpeed:";
uchar code table4[]="  OK!  ";
uchar code table5[]="Return.";
uchar pp=0;
uchar biaozhi=0;
uchar jishu=0;
uchar oksign=0;
uchar anjiang=0;
uchar dingshi=0;
void zhongduan_init(void)
{
        IT0=1;
        EX0=1;
        TMOD=0x02;
        ET0=1;
        TH0=TL0=(256-200);
        //EA=1;
}
void delay(uchar x)//1MS定时
{        uint y;
                        for(;x>0;x--)
         {
                for(y=123;y>0;y--)
                                {};
         }
}
void lcdwrdata(uchar dat)
{        rs=1;//写数据时RS拉高
        lcden=1;
        P2=dat;
        delay(6);
        lcden=0;
        delay(6);
}
void lcdwrcom(uchar cdat)//写指令数据到LCD  
{        rs=0;//写指令时RS拉低
        lcden=1;
    P2=cdat;//
        delay(6);//不加此延时将导致不能写入指令,但能写入显示数据
        lcden=0;
        delay(6);
}
void lcd_init()
{
        lcdwrcom(0x38);//0x38设置显示模式为:16X2 显示,5X7 点阵,8 位数据接口
        lcdwrcom(0x0c);//打开显示光标闪烁
        lcdwrcom(0x06);//
        lcdwrcom(0x01);//
}
void key(void)
{
        jia=1;
        ok=1;
        if(anjiang==0)
        {
                if(jia==0)
                {
                   jia=1;
                        if(jia==0)
                                {
                                        delay(70);
                                        if(jia==0)
                                                jishu++;
                                }       
                }
        }
        if(ok==0)
                {
                   ok=1;
                        if(ok==0)
                                {
                                        delay(70);
                                        if(ok==0)
                                                oksign=1;
                                }       
                }
}

void lcd_dong(uchar aj,uchar ao)
{
                uchar n=0;
                static uchar xiaobiao=0;
                if(jishu>5)
                {
                        lcdwrcom(0x01);
                        lcdwrcom(0x00|0x80);
                        for(n=0;n<6;n++)
                        {
                                lcdwrdata(table1[n]);
                                //delay(30);
                        }
                                lcdwrcom(0x45|0x80);
                                for(n=0;n<7;n++)
                                {
                                        lcdwrdata(table4[n]);
                                //        delay(30);
                                }

                        jishu=0;
                        xiaobiao=1;
                }
        else
        {       
                if(xiaobiao==0)       
                {       
                        lcdwrcom(0x09|0x80);
                        lcdwrdata(table2[aj]);
                        //delay(100);
                        if(anjiang==0)
                        {
                                if(ao==1)
                                {
                               
                                oksign=0;
                                anjiang=1;
                                lcdwrcom(0x45|0x80);
                                for(n=0;n<7;n++)
                                        {
                                                lcdwrdata(table5[n]);
                                        //        delay(30);
                                        }
                                EA=1;
                               
                                }
                        }
                                else if(anjiang==1)
                                {
                                       
                                        if(ao==1)
                                        {
                               
                                        oksign=0;
                                        anjiang=0;
                                        lcdwrcom(0x45|0x80);
                                        for(n=0;n<7;n++)
                                        {
                                                lcdwrdata(table4[n]);
                                        //        delay(30);
                                        }
                                       
                                       
                                        kong=1;
                                        EA=0;
                                        }       
                                }
                }
                        else
                        {
                                jishu=0;
                                        if(ao==1)
                                {
                                        lcdwrcom(0x00|0x80);
                                        for(n=0;n<9;n++)
                                        {
                                                lcdwrdata(table3[n]);
                                        //        delay(30);
                                        }
                                        xiaobiao=0;
                                        oksign=0;
                                }
                               
                        }       
        }               
}
void main()
{        uchar n;
        kong=1;
        jishu=0;
        zhongduan_init();
        delay(200);
        lcden=0;
        lcd_init();
        lcdwrcom(0x00|0x80);
        for(n=0;n<9;n++)
        {
                lcdwrdata(table3[n]);
                delay(100);
        }

        lcdwrcom(0x45|0x80);
        for(n=0;n<7;n++)
        {
                lcdwrdata(table4[n]);
                delay(100);
        }
        while(1)
        {
        /*        if(biaozhi==1)
                {
                        delay(3);
                        if(pp>=1)
                                kong=0;
                }
                delay(3);
                kong=1;
                        biaozhi=0;*/
                lcd_dong(jishu,oksign);
        //        if(anjiang==0)
            key();
               
       
        }
}
        void guoling(void) interrupt 0
        {
                TR0=1;
                kong=1;
                  
                               
                                //delay(10);
                                //kong=0;
                                //delay(9);
                        //kong=1;
                                //delay(1);
                                /*switch (jishu)
                                {
                                case 0: {kong=1;break;}
                                case 1: {delay(4);kong=0;delay(6);kong=1;break;}
                                case 2: {delay(3);kong=0;delay(7);kong=1;break;}
                                case 3: {delay(2);kong=0;delay(8);kong=1;break;}
                                case 4: {delay(1);kong=0;delay(9);kong=1;break;}
                                case 5: {kong=0;delay(10);kong=1;break;}
                                }*/       
        }
                void us(void) interrupt 1  //200us
                {
                        dingshi++;
                        /*        if(dingshi==10)
                                {
                                        kong=1;
                                }*/
                                       
                                        if(dingshi==25)
                                        {

                                                kong=0;
                                        }
                                                if(dingshi==45)
                                                        {
                                                                TR0=0;
                                                                   dingshi=1;
                                                                kong=1;
                                                        }               
                }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-6 14:27:49 | 显示全部楼层
这样试试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-6 15:23:48 | 显示全部楼层
ihyni2004 发表于 2012-4-6 14:27
这样试试

改了一下貌似还是不行~

出0入0汤圆

发表于 2012-4-6 15:33:24 | 显示全部楼层
fengtianzhifeng 发表于 2012-4-6 15:23
改了一下貌似还是不行~

开关合上导通

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-6 16:40:10 | 显示全部楼层
本帖最后由 fengtianzhifeng 于 2012-4-6 16:41 编辑
ihyni2004 发表于 2012-4-6 15:33
开关合上导通


额~这个是可以的~如果我给的是低电平的话~是可以转动的~就是现在我调节触发角的时候他不转啊~

图中黄色为检测到的过零脉冲~
蓝色为我单片机给的过零脉冲

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-6 16:54:28 | 显示全部楼层
这个MOC3031应该是过零触发的光藕可控硅,当然不能调节触发角触发,改用MOC3021的吧~

出0入0汤圆

 楼主| 发表于 2012-4-6 17:04:30 | 显示全部楼层
NFotxb 发表于 2012-4-6 16:54
这个MOC3031应该是过零触发的光藕可控硅,当然不能调节触发角触发,改用MOC3021的吧~ ...

不会吧~技术资料上是可以的啊~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-6 17:08:58 | 显示全部楼层
NFotxb 发表于 2012-4-6 16:54
这个MOC3031应该是过零触发的光藕可控硅,当然不能调节触发角触发,改用MOC3021的吧~ ...

我觉的可能是程序上的问题~因为我把P1^2脚给低电平以后是可以完全导通的

出0入0汤圆

发表于 2012-4-6 17:14:26 | 显示全部楼层
fengtianzhifeng 发表于 2012-4-6 17:04
不会吧~技术资料上是可以的啊~

楼主给的图太小了还看错了型号^-^,刚查了一下MOC3081是过零触发的光耦可控硅,是不能调导通角的,要用非过零触发的才行,MOC3021就是非过零触发的,当然其他非过零触发的光耦也可以~

出0入0汤圆

 楼主| 发表于 2012-4-6 17:18:13 | 显示全部楼层
NFotxb 发表于 2012-4-6 17:14
楼主给的图太小了还看错了型号^-^,刚查了一下MOC3081是过零触发的光耦可控硅,是不能调导通角的,要用非 ...

额现值我把3081换成了21了~
可是还是不能导通啊~是不是程序问题呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-6 17:28:12 | 显示全部楼层
NFotxb 发表于 2012-4-6 17:14
楼主给的图太小了还看错了型号^-^,刚查了一下MOC3081是过零触发的光耦可控硅,是不能调导通角的,要用非 ...

额~我刚刚改了下光耦输入端的限流电阻~可以导通了~但是有个问题就是他只能触发正弦波的上班周期,下半周期不起作用啊~

图中第二条线为可控硅上端的波形

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-6 18:23:28 | 显示全部楼层
NFotxb 发表于 2012-4-6 17:14
楼主给的图太小了还看错了型号^-^,刚查了一下MOC3081是过零触发的光耦可控硅,是不能调导通角的,要用非 ...

额~您说的是对的~我用的光耦是错的~谢谢~过零的光耦只能改变周期~不能斩波~现在知道啦~刚刚的那个斩了半个波是因为我给的交流电只有半个周期所以才会出现那种情况的~再次感谢您~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 02:33

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

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