找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

我是菜鸟,想请教高手一些问题。

[复制链接]
admin 发表于 2012-9-2 05:43:06 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

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

×
以下,为抽油烟机程序。还不是好完美,但可以使用,想请高手帮忙,用正规的方法写一下,另外在延时的时候,能不能显示倒数时间,比如显示器显示为3秒(当启动延时功能时,显示器会从3-2-1-0关机)
现在按键排列为,灯-1档(显示“1”)-2档(显示“2”)--3档(显示“3”)--延时。无档位和平时显示“0”。先谢过!

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint t1,y,k;
uchar t0,w;
sbit led1=P1^0;//照明灯指示
sbit led2=P1^1;//电机1档指示
sbit led3=P1^2;//电机2档指示
sbit led4=P1^3;//电机3档指示
sbit led5=P1^7;//延时键指示
sbit beep=P2^3;
sbit ley1=P3^4;//照明灯指示按键
sbit ley2=P3^5;//电机1档指示按键
sbit ley3=P3^6;//电机2档指示按键
sbit ley4=P3^7;//电机3档指示按键
sbit ley5=P2^0;//延时键指示按键
sbit dula=P2^6;//段选
sbit wela=P2^7;//位选
void delay(uint z)//延时
{
for(t1=z;t1>0;t1--)
for(y=200;y>0;y--);
}
void init();
void dipdy();
void main()
{
P1=0xff;
P2=0xff;
P3=0xff;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
while(1)

{

dipdy();

if(!ley1)//照明灯按键操作
{
delay(10);
if(!ley1)
{
beep=0;
delay(20);
beep=1;
led1=~led1;
}
while(!ley1);
delay(10);
while(!ley1);
}


if(!ley2)//电机一档按键操作
{
delay(10);
if(!ley2)
{
beep=0;
delay(20);
beep=1;
led3=1;
led4=1;
led2=~led2;
if(led2==0)
k=0x06;
if(led2==1)
k=0x3f;
}
while(!ley2);
delay(10);
while(!ley2);
}

if(!ley3)//电机二档按键操作
{
delay(10);
if(!ley3)
{
beep=0;
delay(20);
beep=1;
led2=1;
led4=1;
led3=~led3;
if(led3==0)
k=0x5b;
if(led3==1)
k=0x3f;
}
while(!ley3);
delay(10);
while(!ley3);
}

if(!ley4)//电机三档按键操作
{
delay(10);
if(!ley4)
{
beep=0;
delay(20);
beep=1;
led2=1;
led3=1;
led4=~led4;
if(led4==0)
k=0x4f;
if(led4==1)
k=0x3f;
}
while(!ley4);
delay(10);
while(!ley4);
}
if(P1!=0xff)//延时用
{
if(!ley5)
{
delay(10);
if(!ley5)
{
beep=0;
delay(20);
beep=1;
led5=~led5;
if(led5==0)
TR0=1;
if(led5==1)
TR0=0;
}
while(!ley5);
delay(10);
while(!ley5);

}
}

}
}
void timer0() interrupt 1 //T0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==100)
{
t0=0;
led1=1;
led2=1;
led3=1;
led4=1;
led5=1;
TR0=0;
beep=0;
delay(20);
beep=1;
k=0x3f;
}

}


void dipdy()//显示
{
P0=k;
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;

}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 01:49 , Processed in 0.058127 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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