微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 学了5天。写了个简单的电磁炉程序

学了5天。写了个简单的电磁炉程序

时间:10-02 整理:3721RD 点击:
今天学了键盘的输入操作,;写了个简单的电磁炉的控制程序,只是用Kiel 简单的仿真,跟大家交流交流。/24MHZ晶振,P2-2 输出 20KHZ的方波 通过电流放大电路后。给IGBT。P2-0 接一个按键在接地,调节 P2-2输出方波的占空比--,P2-1 接一个按键在接地,调节 P2-2输出方波的占空比++,作用是,通过调IGBT的占空比。达到调节功率的效果。 4个8的数码管显示,从最小到大:300.600.900.1200.1500.1800.2100  W ,对应 占空比:10% 20% 30% 40% 50% 60% 70%                                                                                                                                                                                                                                                                                                                         //简单的电磁炉控制程序py237238009
#include <REGX52.H>
#define A unsigned char //全局变量<A的值在0-255>
sbit pwm=P2^2;  //声明一个输出口的赋值<IGBT振荡源>
sbit l=P2^0;   //功率-
sbit h=P2^1;   //功率+
A code ab[]={
0x3f,0x06,0x5b,0x06,
0x7f,0x6d,0x5b,0x6f,
0x7d,0x4f};
A code ac[]={
0xfe,0xfd,0xfb,0xf7};
A a,n,x,y;
void main() //主函数
{
  
  TMOD=0x01;//选择定时器为第一个。=0x11 就是开2个。=0x10 就是第二个。
  TH0=(65536-2)/256;//给定时器高8位给个初值。
  TL0=(65536-2)%256;//给低8位个初值。
  EA=1;//开总冲断。
  ET0=1;//开定时器1冲断。
  TR0=1;//启动定时器1。=0时,停止定时。
  
  n=9;//初始 占空比是10%
  while(1)
  {
     if (a>=n) //如果,《调占空比》
       pwm==1;
     else      //上面不成立,那么,
       pwm==0;
     
  
     P1=ac[0];
  if (n<=4)
    if (n==3)
      P0=ab[2];
    else
      P0=ab[1];
     else
      P0=ab[0];     //8888功率显示/
     P1=ac[1];
  P0=ab[n];
  P1=ac[2];
  P0=ab[0];
  P1=ac[3];
  P0=ab[0];  
   if (a==10)  //20KHZ的输出 50ns一周
    a=0;
//--------------------------   
  
  if (h==0)
    if (x==1)
    {
      x=0;
      if (n>2)
        n--;
    }     
  else
    x=1;         //《占空比+》
  
  if (l==0)
    if (x==1)
    {
      x=0;
      if (n<9)
        n++;
    }         //《占空比-
  else
    x=1;
               
  }
}
void timer0() interrupt 1  //定时器1 函数(),冲断方式1。《0为外部冲断,1为定时器冲断》冲断函数不用在前面声明。
{
  TH0=(65536-2)/256; //重新初值。(24MHZ时,=5us)
  TL0=(65536-2)%256;
  a++;
}

为什么用那么大的晶振
这里好像有点问题
可以用protuse仿真
if (n<=4)
    if (n==3)
      P0=ab[2];
    else
      P0=ab[1];
     else
      P0=ab[0];     //8888功率显示/
     P1=ac[1];
  P0=ab[n];
  P1=ac[2];
  P0=ab[0];
  P1=ac[3];
  P0=ab[0];  
   if (a==10)  //20KHZ的输出 50ns一周
    a=0;
//--------------------------   

学习下,

在那里学的  求 资料。软件 是用那个写。芯片是那一中点入手比较好。最好有视频教学

各种verilog实例,应有尽有,无所不有,很好很全! 绝对能满足需求,找到你所想要的

在那里学的  求 资料。软件 是用那个写。芯片是那一中点入手比较好。最好有视频教学

求电磁炉普通功能的程序

你好,我需要学开发电磁炉IC,共同探讨,我电话15036111546

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top