学了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++;
}
#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