久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1761|回復: 1
打印 上一主題 下一主題
收起左側

第五屆藍橋杯決賽—門禁系統源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:432876 發表于 2019-5-11 16:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <stc15f2k60s2.h>
#include <iic.h>
#include <ds18b20.h>
#include <ds1302.h>
#include <STDIO.H>
#define uchar unsigned char
#define uint unsigned int

uchar code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0xc6,0x89};
uchar yi,er,san,si,wu,liu,qi,ba;
uchar miao,fen,shi,sec_last;
uchar wendu,shidu,liang;
uchar receive_num,receive;
uchar tx_bufi[]="{20-20%} {23-59-50} {0}\r\n";
bit kaishi,moshi;
uchar jiemian,jiejin;
uchar time,tt,jilu;
uchar ci;
uchar wen_du[5],shi_du[5],shi_[5],fen_[5],miao_[5],time_[5];
void delayms(uint i)
{
uint a;
for(i;i>0;i--)
  for(a=845;a>0;a--);
}
void smg(uchar yi,er,san,si,wu,liu,qi,ba)
{
P2=0XC0;P0=0X01;P2=0XFF;P0=tab[yi];delayms(1);
P2=0XC0;P0=0X02;P2=0XFF;P0=tab[er];delayms(1);
P2=0XC0;P0=0X04;P2=0XFF;P0=tab[san];delayms(1);
P2=0XC0;P0=0X08;P2=0XFF;P0=tab[si];delayms(1);
P2=0XC0;P0=0X10;P2=0XFF;P0=tab[wu];delayms(1);
P2=0XC0;P0=0X20;P2=0XFF;P0=tab[liu];delayms(1);
P2=0XC0;P0=0X40;P2=0XFF;P0=tab[qi];delayms(1);
P2=0XC0;P0=0X80;P2=0XFF;P0=tab[ba];delayms(1);
P2=0XC0;P0=0XFF;P2=0XFF;P0=0XFF;
}
void key()
{
bit s5,s4;
if(P32==0)
{
  delayms(5);
  if(P32==0)
  {
   s5=1;
  }
}
else if(P33==0)
{
  delayms(5);
  if(P33==0)
  {
   s4=1;
  }  
}
if((s4==1)&&(P33==1))
{
  s4=0;
  moshi=~moshi;
}
else if((s5==1)&&(P32==1))
{
  s5=0;
  jiemian++;
  if(jiemian==3)jiemian=0;
}
}
void UartInit(void)  //1200bps@11.0592MHz
{
SCON = 0x50;  //8位數據,可變波特率
AUXR |= 0x40;  //定時器1時鐘為Fosc,即1T
AUXR &= 0xFE;  //串口1選擇定時器1為波特率發生器
TMOD &= 0x0F;  //設定定時器1為16位自動重裝方式
TL1 = 0x00;  //設定定時初值
TH1 = 0xF7;  //設定定時初值
ET1 = 0;  //禁止定時器1中斷
TR1 = 1;  //啟動定時器1
EA=1;ES=1;
}
void Timer0Init(void)  //5毫秒@11.0592MHz
{
AUXR |= 0x80;  //定時器時鐘1T模式
TMOD &= 0xF0;  //設置定時器模式
TL0 = 0x00;  //設置定時初值
TH0 = 0x28;  //設置定時初值
TF0 = 0;  //清除TF0標志
TR0 = 1;  //定時器0開始計時
EA=1;ET0=1;
}

void send (uchar *p)
{
uchar index=0;
do
{
  SBUF=p[index++];
  while(TI==0);
  TI=0;
}
while(p[index]!=0);
}

void smgxianshi()
{
if(jiemian==0)
{
  yi=wendu/10;er=wendu%10;san=12;si=11;wu=11;liu=shidu/10;qi=shidu%10;ba=13;
}
else if(jiemian==1)
{
  yi=shi/10;er=shi%10;
  si=fen/10;wu=fen%10;
  qi=miao/10;ba=miao%10;
  
  if(miao%2==0){san=10;liu=10;}
  else {san=11;liu=11;}  
}
else if(jiemian==2)
{
  yi=11;er=11;san=11;si=10;
  wu=11;liu=11;qi=11;ba=11;
}
}
void main()
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0XFF;P2=0XFF;P0=0XFF;
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
UartInit();
Timer0Init();
Write_Ds1302(0x8e,0x00);
Write_Ds1302(0x84,0x23);
Write_Ds1302(0x82,0x59);
Write_Ds1302(0x80,0x55);
  
while(1)
{
  shidu=ad_du(0x01);
  
  miao=Read_Ds1302(0x81);
  fen=Read_Ds1302(0x83);
  shi=Read_Ds1302(0x85);
  shi=(shi/16)*10+shi%16;
  fen=(fen/16)*10+fen%16;
  miao=(miao/16)*10+miao%16;
  
  wendu=ds18b20();
   
  liang=ad_du(0x03);
  
  
  smgxianshi();

  if(moshi==0)
  {
   if(liang>30)
   {
    P2=0X80;P0=0XFE;
    jiejin=0;
   }
   else  //1111 1010
   {
    P2=0X80;P0=0XFA;
    jiejin=1;
   }
   
//   if(kaishi==1)
//   {
//    if(sec_last!=miao)
//    {
//     sec_last=miao;
//     sprintf((char*)tx_bufi,"{%bd-%bd%%} {%0.2bd-%0.2bd-%0.2bd} {%bd}\r\n",wendu,shidu,shi,fen,miao,jiejin);
//     send(tx_bufi);   
//    }
//   
//   }
  }
  else if(moshi==1)
  {
   kaishi=0;
   if(liang>30)
   {
    P2=0X80;P0=0XFD;            
    if(jiejin==1) //保存數據
    {
     jiejin=0;
   
     if(ci==0)
     {
      at24c02_xie(20,wendu);delayms(2);
      at24c02_xie(21,shidu);delayms(2);
      at24c02_xie(22,shi);delayms(2);
      at24c02_xie(23,fen);delayms(2);
      at24c02_xie(24,miao);delayms(2);
      at24c02_xie(25,time);delayms(2);
      ci=1;
     }
     else if(ci==1)
     {
      at24c02_xie(30,wendu);delayms(2);
      at24c02_xie(31,shidu);delayms(2);
      at24c02_xie(32,shi);delayms(2);
      at24c02_xie(33,fen);delayms(2);
      at24c02_xie(34,miao);delayms(2);
      at24c02_xie(35,time);delayms(2);
      ci=2;
     }
     else if(ci==2)
     {
      at24c02_xie(40,wendu);delayms(2);
      at24c02_xie(41,shidu);delayms(2);
      at24c02_xie(42,shi);delayms(2);
      at24c02_xie(43,fen);delayms(2);
      at24c02_xie(44,miao);delayms(2);
      at24c02_xie(45,time);delayms(2);
      ci=3;
     }
     else if(ci==3)
     {
      at24c02_xie(50,wendu);delayms(2);
      at24c02_xie(51,shidu);delayms(2);
      at24c02_xie(52,shi);delayms(2);
      at24c02_xie(53,fen);delayms(2);
      at24c02_xie(54,miao);delayms(2);
      at24c02_xie(55,time);delayms(2);
      ci=4;
     }
     else if(ci==4)
     {
      at24c02_xie(60,wendu);delayms(2);
      at24c02_xie(61,shidu);delayms(2);
      at24c02_xie(62,shi);delayms(2);
      at24c02_xie(63,fen);delayms(2);
      at24c02_xie(64,miao);delayms(2);
      at24c02_xie(65,time);delayms(2);
      ci=0;
     }
     
    }        
   }
   else  //1111 1001 接近時間
   {
    P2=0X80;P0=0XF9;
    jiejin=1;
   }
   

   
  }
   if(kaishi==1)
   {
//    if(moshi==0)
//    {
//     if(sec_last!=miao)
//     {
//      sec_last=miao;
//      sprintf((char*)tx_bufi,"{%bd-%bd%%} {%0.2bd-%0.2bd-%0.2bd} {%bd}\r\n",wendu,shidu,shi,fen,miao,jiejin);
//      send(tx_bufi);   
//     }
//    }
    for(ci=0;ci<5;ci++)
    {
     wen_du[ci]=at24c02_du(20+ci*10);
     
    }
     
    sprintf((char*)tx_bufi,"{%bd-%bd%%} {%0.2bd-%0.2bd-%0.2bd} {%bd}\r\n",wendu,shidu,shi,fen,miao,jiejin);
    send(tx_bufi);   
   
   
   }
   
  
  
  
  
  
  
  
  key();
  smg(yi,er,san,si,wu,liu,qi,ba);
}
}
void time0() interrupt 1
{
if(jiejin==1)
{
  tt++;
  if(tt==200)
  {
   tt=0;
   time++;
  }
}
}
void ser() interrupt 4
{
RI=0;
receive=SBUF;
if(receive_num==0)
{
  if(receive=='A')receive_num=1;
  else receive_num=0;
}
else if(receive_num==1)
{
  if(receive=='A')receive_num=2;
  else receive_num=0;
}
else if(receive_num==2)
{
  if(receive=='A')receive_num=3;
  else receive_num=0;
}
else if(receive_num==3)
{
  if(receive=='S')receive_num=4;
  else receive_num=0;
}
else if(receive_num==4)
{
  if(receive=='S')receive_num=5;
  else receive_num=0;
}
else if(receive_num==5)
{
  if(receive=='S')
  {
   receive_num=0;
   kaishi=1;
  }
  else receive_num=0;
}
}

////////////////////////////////////////////////////////////////////////////////////
/*
  程序說明: IIC總線驅動程序
  軟件環境: Keil uVision 4.10
  硬件環境: CT107單片機綜合實訓平臺 8051,12MHz
  日    期: 2011-8-9
*/
#include "reg52.h"
#include "intrins.h"
#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}   

#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1
//總線引腳定義
sbit SDA = P2^1;  /* 數據線 */
sbit SCL = P2^0;  /* 時鐘線 */

//總線啟動條件
void IIC_Start(void)
{
SDA = 1;
SCL = 1;
somenop;
SDA = 0;
somenop;
SCL = 0;
}
//總線停止條件
void IIC_Stop(void)
{
SDA = 0;
SCL = 1;
somenop;
SDA = 1;
}
//應答位控制
void IIC_Ack(bit ackbit)
{
if(ackbit)
{
  SDA = 0;
}
else
{
  SDA = 1;
}
somenop;
SCL = 1;
somenop;
SCL = 0;
SDA = 1;
somenop;
}
//等待應答
bit IIC_WaitAck(void)
{
SDA = 1;
somenop;
SCL = 1;
somenop;
if(SDA)   
{   
  SCL = 0;
  IIC_Stop();
  return 0;
}
else  
{
  SCL = 0;
  return 1;
}
}
//通過I2C總線發送數據
void IIC_SendByte(unsigned char byt)
{
unsigned char i;
for(i=0;i<8;i++)
{   
  if(byt&0x80)
  {
   SDA = 1;
  }
  else
  {
   SDA = 0;
  }
  somenop;
  SCL = 1;
  byt <<= 1;
  somenop;
  SCL = 0;
}
}
//從I2C總線上接收數據
unsigned char IIC_RecByte(void)
{
unsigned char da;
unsigned char i;

for(i=0;i<8;i++)
{   
  SCL = 1;
  somenop;
  da <<= 1;
  if(SDA)
  da |= 0x01;
  SCL = 0;
  somenop;
}
return da;
}
unsigned char iic_du(unsigned char add)
{
unsigned char num;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
num=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
return num;

}
void iic_xie(unsigned add,dat)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();

}

///////////////////////////////////////////////////////////////////////////////////
/*
  程序說明: DS1302驅動程序
  軟件環境: Keil uVision 4.10
  硬件環境: CT107單片機綜合實訓平臺 8051,12MHz
  日    期: 2011-8-9
*/
#include <reg52.h>
#include <intrins.h>
sbit SCK=P1^7;  
sbit SDA=P2^3;  
sbit RST = P1^3;   // DS1302復位            
void Write_Ds1302_Byte(unsigned  char temp)
{
unsigned char i;
for (i=0;i<8;i++)      
{
  SCK=0;
  SDA=temp&0x01;
  temp>>=1;
  SCK=1;
}
}   
void Write_Ds1302( unsigned char address,unsigned char dat )     
{
  RST=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  SCK=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  RST=1;
    _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  Write_Ds1302_Byte(address);
  Write_Ds1302_Byte(dat);  
  RST=0;
}
unsigned char Read_Ds1302 ( unsigned char address )
{
  unsigned char i,temp=0x00;
  RST=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  SCK=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  RST=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  Write_Ds1302_Byte(address);
  for (i=0;i<8;i++)  
  {  
  SCK=0;
  temp>>=1;
   if(SDA)
   temp|=0x80;
   SCK=1;
}
  RST=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  RST=0;
SCK=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCK=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
return (temp);   
}



第三節,門禁系統.zip

57.21 KB, 下載次數: 17, 下載積分: 黑幣 -5

評分

參與人數 2黑幣 +60 收起 理由
zkele + 10 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:432876 發表于 2019-5-11 17:12 | 只看該作者
發錯啦,,程序 是第五屆的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人网站国产 | 我要看免费一级毛片 | 亚洲xx在线| 欧美日韩精品一区二区三区四区 | 亚洲国产欧美在线 | 精品无码久久久久久国产 | a级片www| 国产一级特黄视频 | 国户精品久久久久久久久久久不卡 | 国产激情自拍视频 | 国产婷婷在线视频 | 日韩中文字幕一区 | 精品福利视频一区二区三区 | 国产一区二区三区四区五区加勒比 | 亚洲精选久久 | 久久激情网 | 一区二区精品 | 日韩中文字幕免费在线 | 亚洲在线电影 | 欧美久久久久久 | 中文在线一区二区 | 久久亚洲国产精品 | 欧美一区二区三区在线观看 | av在线播放免费 | 日韩精品一区二区三区老鸭窝 | 羞羞色在线观看 | 成人久草 | 欧美极品视频在线观看 | 亚洲第一视频网 | www.久久 | 午夜视频在线 | 国产精品国产三级国产aⅴ入口 | 日韩欧美一区二区三区免费看 | 色资源在线观看 | 伊人久久免费视频 | aaa国产大片| 久久大 | 国产成人精品一区二 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 欧美jizzhd精品欧美巨大免费 | 午夜在线精品 |