找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2401|回复: 0
打印 上一主题 下一主题
收起左侧

基于STC12C5A60S2单片机设计的立体车库计数器报警程序

[复制链接]
跳转到指定楼层
楼主
/********************************************************************
                          立体车库程序
*********************************************************************/
#include<reg52.h>                 //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型

/********************************************************************
                            初始定义
*********************************************************************/

sbit P20=P2^0; //定义
sbit P21=P2^1; //定义
sbit P22=P2^2; //定义
sbit P23=P2^3; //定义
sbit P24=P2^4; //定义
sbit P25=P2^5; //定义
sbit P26=P2^6; //定义
sbit P27=P2^7; //定义

sbit P30=P3^0; //定义
sbit P31=P3^1; //定义
sbit P32=P3^2; //定义
sbit P33=P3^3; //定义
sbit P34=P3^4; //定义
sbit P35=P3^5; //定义
sbit P36=P3^6; //定义
sbit P37=P3^7; //定义

sbit P10=P1^0; //定义
sbit P11=P1^1; //定义
sbit P12=P1^2; //定义
sbit P13=P1^3; //定义
sbit P14=P1^4; //定义
sbit P15=P1^5; //定义
sbit P16=P1^6; //定义
sbit P17=P1^7; //定义

uchar k=40;
uchar ge=0;
uchar shi=0;
uchar bai=0;
uchar qian=0;
uint date=0;
bit bz1=0;
bit bz2=0;
bit bz3=0;
bit bz4=0;
bit bz5=0;
bit bz6=0;
bit bz7=0;
bit bz8=0;
bit bz9=0;
bit bz10=0;
bit bz11=0;
bit bz12=0;
bit bz13=0;
bit bz14=0;
bit bz15=0;
bit bz16=0;
uchar jsj=0;
/********************************************************************
                            初始定义
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟

/********************************************************************
                            初始定义
*********************************************************************/
uchar sec; //定义计数值,每过1/10 秒,sec 加一
uint tcnt; //键值判断
uchar k;
bit bzw1=0;
bit bzw2=0;
/********************************************************************
                            延时函数
*********************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
            for(j=13;j>0;j--);
         { ;
         }
   }
}

/********************************************************************
                             汽车移除函数
*********************************************************************/
void key()
{
if((P30==0)&&(bz1==0)){bz1=1;date++;}if((P30==1)&&(bz1==1)){bz1=0;delay(k);}
if((P31==0)&&(bz2==0)){bz2=1;date++;}if((P31==1)&&(bz2==1)){bz2=0;delay(k);}
if((P32==0)&&(bz3==0)){bz3=1;date++;}if((P32==1)&&(bz3==1)){bz3=0;delay(k);}
if((P33==0)&&(bz4==0)){bz4=1;date++;}if((P33==1)&&(bz4==1)){bz4=0;delay(k);}

if((P34==0)&&(bz5==0)){bz5=1;date++;}if((P34==1)&&(bz5==1)){bz5=0;delay(k);}
if((P35==0)&&(bz6==0)){bz6=1;date++;}if((P35==1)&&(bz6==1)){bz6=0;delay(k);}
if((P36==0)&&(bz7==0)){bz7=1;date++;}if((P36==1)&&(bz7==1)){bz7=0;delay(k);}
if((P37==0)&&(bz8==0)){bz8=1;date++;}if((P37==1)&&(bz8==1)){bz8=0;delay(k);}

if((P14==0)&&(bz9==0)){bz9=1;date++;}if((P14==1)&&(bz9==1)){bz9=0;delay(k);}
if((P15==0)&&(bz10==0)){bz10=1;date++;}if((P15==1)&&(bz10==1)){bz10=0;delay(k);}
if((P16==0)&&(bz11==0)){bz11=1;date++;}if((P16==1)&&(bz11==1)){bz11=0;delay(k);}
if((P17==0)&&(bz12==0)){bz12=1;date++;}if((P17==1)&&(bz12==1)){bz12=0;delay(k);}

if((P20==0)&&(bz13==0)){bz13=1;date=0;}if((P20==1)&&(bz13==1)){bz13=0;delay(k);}
if((P21==0)&&(bz14==0)){bz14=1;date++;}if((P21==1)&&(bz14==1)){bz14=0;delay(k);}

}


/********************************************************************
              功能:串口初始化,波特率9600,方式1
*********************************************************************/
void initTimer(void)
{
TMOD=0x2;
TH0=0x1b;
TL0=0x1b;
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
initTimer();
TR0=1;
ET0=1;
EA=1;
        while(1)
        {
         KEY();
        }
}

/********************************************************************
                            定时中断服务函数
*********************************************************************/
void t0(void) interrupt 1 using 0 //定时中断服务函数
{

  qian=date/1000;                         //求千位
  bai=date%1000/100;                 //求百位
  shi=date%100/10;                 //求十位
  ge=date%10;                         //求个位
      tcnt++;
          if(date>=100){P12=P11=0;}
          switch(tcnt)
          {
          case 1:P23=1;P24=1;P25=1;P26=1;P0=seg7code[qian];P23=0;break;
          case 2:P23=1;P24=1;P25=1;P26=1;P0=seg7code[bai];P24=0;break;
          case 3:P23=1;P24=1;P25=1;P26=1;P0=seg7code[shi];P25=0;break;
          case 4:P23=1;P24=1;P25=1;P26=1;P0=seg7code[ge];P26=0;break;
          default:  tcnt=0; break;          
          }
}       
/********************************************************************
                              结束
*********************************************************************/


DSC_0034.JPG (166.85 KB, 下载次数: 65)

DSC_0034.JPG

CX001_计数器报警程序.rar

32.28 KB, 下载次数: 19, 下载积分: 黑币 -5

原理图及PCB图.rar

307.34 KB, 下载次数: 23, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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