单片机控制电路开关程序完整程序
附录2
主程序
#include<reg52.h>
    #define uchar unsigned char
    #define uint  unsigned int
    sbit KEYON =P2^0;                // 开始键
    sbit KEYOFF=P2^1;                // 关闭键
sbit KEYSET=P2^2;                // 预约键
sbit KEYINC=P2^3;                //加1键
sbit KEYDEC=P2^4;                // 减1键
sbit KEYFREE=P2^5;              //预留键
sbit POWER=P3^6;                //电源开关指示灯
sbit LED=P3^3 ;                  //按键指示灯
uchar code dispcode[]={0x3f,0x06,0x05b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40};    //0-9的字型码
uchar data disbuf[]={0,0,0,0};                            //显示缓冲区
uchar hour,min ;                                            //小时、分变量
bit Onflag,flag;
uchar Setflag;
void delay(uchar);            //延时子函数
void init(void);                //定时器初始化子函数
uchar GetKeyNum();              //求按键号
void Keyprocess(uchar);        //按键处理子函数
新年短信大全void calculate();              //计时子函数
void display();                //显示子函数
  //--------------------主函数-------------------------
void main(void)
{
init();
  P1=0x00;
while(1)
  display();
}
  //-------------定时器TO、T1初始化,外部中断0初始化子函数-----
我只在乎你 歌词void init()
{
  TMOD=0x11;                        //TO、T1作定时器、工作方式1
  TH0=(65536-50000)/256 ;            //定时50ms
  TL0=(65536-50000)%256;
        TH1=(65536-50000)/256;             
      TL1=(65536-50000)%256;
      IT0=1;                  //选择外部中断0为下降沿触发方式
        EX0=1;                  //开外部中断0
      ET1=1;                  //开定时器1
        ET0=1;                  //开定时器0
        EA =1;                  //开总中断
        TR0=1;                 
}
小敏家的人物关系图          //----------显示子函数--------------------------
void display()
{
  uchar i,j=0x08;
  if((Setflag==0)&&!(min|hour))      //数码管显示“- - - -”

{
    for(i=0;i<4;i++)  disbuf[i]=dispcode[10];
}
else                                      //    正常显示时间
{
  disbuf[0] = dispcode[min%10];        //分个位
  disbuf[1] = dispcode[min/10];        //分十位
  disbuf[2] = dispcode[hour%10]+0x80;  //小时个位
  disbuf[3] = dispcode[hour/10];      //小时十位
}
if((Setflag!=0)&flag)                      //如果调时,数码管闪烁显示
{
着多音字组词和拼音  for(i=0;i<4;i++)
  {
    if((disbuf[i]==0x3f)&&(i>2))      //不显示前面的0
            P0=0;
  else
            P0=disbuf[i];
    if(Setflag==1)    P1=j&0xfc;              //调时,关断前两位位码
    else  P1=j & 0xf3;                        //调分,关断后两位位码
    delay(5);                                //延时2.5ms
卫生洁具十大品牌
    P1=0x00;
      j=j>>1;
}
}
else                                                      //数码管正常显示
      {
          for(i=0;i<4;i++)
          {
            if((disbuf[i]==0x3f)&&(i>2))  P0=0;    //不显示前面的0
            else P0=disbuf[i];
            P1=j;                                //位选通
              delay(5);                            //延时2.5ms
              P1=0X00;
              j=j>>1;
          }
        }
  }
//--------------外部中断0中断函数---------------------------------
  void  int0()interrupt  0  using  0
  {
港澳通行证网上办理    uchar keynum;
    display();                                //动态显示程序作为去抖动
    if(INT0==0)                                //判断是否有按键按下
  {
    keynum=GetKeyNum();                    //有效键,获取键值
    while(INT0==0);                        //等待按键释放
      Keyprocess(keynum);                    //按键处理
  }
}
//-----------------定时器0中断子函数----------------------------
void time0() interrupt  1                //处理调时、显示器闪烁
{
  static uchar ledcnt,num;              //设置静态变量
  TH0=(65536-50000)/256;                //定时50ms

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。