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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機+RC522的闖紅燈檢測源碼

[復制鏈接]
跳轉到指定樓層
樓主
    系統采用51單片機為主控,rc522為檢測裝置,主要是模擬,紅綠燈通過定時器控制,原理就是邏輯判斷,在紅燈時有車(卡)掃過,就會存儲下車牌號,通過液晶顯示車牌,以及紅燈信息,有闖紅燈信息。代碼如下。

單片機源程序如下:
  1. #include "common.h"
  2. #include "RC522.h"
  3. #include "stdio.h"
  4. #include "12864.h"

  5. #define uchar unsigned char
  6. #define uint unsigned int


  7. char serNum[5];
  8. char Old_serNum[5]=0,Card_serNum[20][5]=0,buf[9];
  9. char str[MAX_LEN];
  10. char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
  11. int num,flag,i,j,num1=0;
  12. char temp=29,flag0=0,flag1=0,flag2,flag3,aa;
  13. char temp1=1;
  14. void T1_time1(void) interrupt 1
  15. {
  16.         TH0=(65536-50000)/256;
  17.         TL0=(65536-50000)%256;
  18.         aa++;
  19.                        
  20.         if(aa==20)
  21.         {               
  22.                 aa=0;
  23.                 temp--;
  24.         }
  25.                
  26.         if(flag1==0)
  27.         {
  28.                 if((temp>0)&&(temp<30)) {RED=0;YELLOW=1;GREEN=1;flag=1;}
  29.         }
  30.         if(flag0==0)
  31.         {
  32.                 if(temp==0)
  33.                 {
  34.                         temp=29;
  35.                         flag1=1;
  36.                 }
  37.         }
  38.                
  39.         if(flag1==1)
  40.         {
  41.                 if((temp>5)&&(temp<30))  {RED=1;YELLOW=1;GREEN=0;flag=0;}
  42.                 if((temp<=5)&&(temp>=0)) {RED=1;YELLOW=0;GREEN=1;flag=0;}
  43.                 flag0=1;
  44.                 if(temp==0)
  45.                 {
  46.                         temp=29;
  47.                         flag1=0;
  48.                         flag0=0;
  49.                 }       
  50.         }
  51. }


  52. void ShowCard_Id()
  53. {
  54.         int i;
  55.   char *ptr=buf;

  56.         for(i=0; i<4; i++,ptr+=2)
  57.         {
  58.                 sprintf(ptr,"%02x",Card_serNum[num1][i]);
  59.                 buf[8]='\0';
  60.                 Lcd_Display(1,5,buf);
  61.         }       
  62. }
  63. void show_card()
  64. {
  65.         char card;
  66. card=Card_serNum[num1][0];
  67.                 switch(card)
  68. {                        case 0x25:
  69.                 Lcd_Display(3,4,"吉A 88888");
  70.                 break;
  71.                         case 0x63:
  72.                 Lcd_Display(3,4,"吉B 66J67");
  73.                         break;
  74.                         case 0x96:
  75.                 Lcd_Display(3,4,"吉C 98889");
  76.                         break;
  77.                         case 0x80:
  78.                 Lcd_Display(3,4,"吉A YIJ88");
  79.                         break;
  80.                 case 0x00:
  81.                 Lcd_Display(3,4,"00 00000  ");
  82.                 break;
  83. }
  84. }
  85. void InoutHandle()
  86. {
  87.         unsigned char state;
  88.         unsigned char readBuf[16];
  89.        
  90.                 state = PcdRequest(PICC_REQIDL, str);
  91.                 if(state != MI_OK)  return;
  92.        
  93.                 state = PcdAnticoll(serNum);
  94.                 if(state != MI_OK)  return;

  95.                 state = PcdSelect(serNum);
  96.                 if(state != MI_OK)  return;

  97.                 state = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey , serNum);
  98.                 if(state != MI_OK)  return;

  99.                 state = PcdRead(1, readBuf);
  100.                 if(state != MI_OK)  return;

  101.                 for(j=0;j<5;j++)
  102.                 {
  103.                                 if(Old_serNum[j]!=serNum[j])
  104.                                 {
  105.                                                 flag2=1;
  106.                                 }
  107.                 }
  108.                 if(flag2==1)
  109.                 {               
  110.                                 for(j=0;j<5;j++)
  111.                                 {
  112.                                         Old_serNum[j]=serNum[j];
  113.                                 }       
  114.                                 Card_serNum[temp1][0]=Old_serNum[0];
  115.                                 Card_serNum[temp1][1]=Old_serNum[1];
  116.                                 Card_serNum[temp1][2]=Old_serNum[2];
  117.                                 Card_serNum[temp1][3]=Old_serNum[3];
  118.                                 temp1++;
  119.                                 if(temp1==20)
  120.                                                 {
  121.                                                         temp1=0;
  122.                                                 }
  123.                                 flag2=0;
  124.                 }
  125.                 PcdHalt();               

  126. }
  127. void key_stck()
  128. {
  129.         key0 = 1;
  130.         key1 = 1;
  131.         key2 = 1;
  132.         key3 = 1;

  133.         if( key0 == 0 )
  134.         {
  135.                 delay_10ms(5);
  136.                     if( key0 == 0 )
  137.                         {
  138.                                 while(!key0);
  139.                                 if(num1!=0)                num1--;
  140.                                 else                                   num1=0;
  141.                         }
  142.         }
  143.         if( key1 == 0 )
  144.         {
  145.                 delay_10ms(5);
  146.                     if( key1 == 0 )
  147.                         {
  148.                                 while(!key1);
  149.                                 num1++;
  150.                                 if(num1==20)
  151.                                 {
  152.                                                 num1=0;
  153.                                 }
  154.                         }
  155.         }
  156.         if( key2 == 0 )
  157.         {
  158.                 delay_10ms(5);
  159.                     if( key2 == 0 )
  160.                         {
  161.                                 while(!key2);

  162.                
  163.                         }
  164.         }
  165.         if( key3 == 0 )
  166.         {
  167.                 delay_10ms(5);
  168.                     if( key3 == 0 )
  169.                         {
  170.                                 while(!key3);
  171.                         }
  172.         }

  173. Lcd_Num_Display(4,1,num1);
  174. Lcd_Display(3,1,"車牌:");
  175. Lcd_Display(2,1,"違章車輛:  臺");
  176. Lcd_Num_Display(2,6,temp1-1);
  177.         if(Card_serNum[1][0]!=0)
  178.         {                       
  179.                 Lcd_Display(1,1,"有違章");       
  180.         }
  181.         if(Card_serNum[1][0]==0)
  182.         {                       
  183.                 Lcd_Display(1,1,"無違章");       
  184.         }
  185.         show_card();
  186. }
復制代碼



所有資料51hei提供下載:
RFID闖紅燈檢測.zip (166.88 KB, 下載次數: 26)


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

使用道具 舉報

沙發
ID:1 發表于 2018-10-22 21:25 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:489394 發表于 2023-4-7 10:16 | 只看該作者
沒有原理圖或者仿真圖嗎
回復

使用道具 舉報

地板
ID:240656 發表于 2023-4-9 14:19 | 只看該作者
啥有用的信息都沒有
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 全免费a级毛片免费看视频免 | 国产高清免费在线 | 人人九九精 | 国产91九色 | 一区二区三区四区电影视频在线观看 | 国产美女黄色片 | 91亚洲国产亚洲国产 | 国产亚洲www | 欧美精品一区三区 | 亚洲欧美日韩网站 | 天堂一区二区三区 | 日本网站免费在线观看 | 四虎影视1304t| 日韩精品一区二区三区在线播放 | 亚洲电影第三页 | 日韩综合色| 九九热在线观看视频 | 日日操夜夜操天天操 | 四虎影院在线观看免费视频 | 成人免费看片又大又黄 | 亚洲高清视频一区 | 九九热在线免费视频 | 久久伊人亚洲 | 亚洲福利一区 | 精品无码久久久久久久动漫 | 精品综合久久 | 欧美黄在线观看 | 亚洲精品视频在线播放 | 亚洲在线观看视频 | 精品久久久久久久 | 91亚洲国产成人久久精品网站 | 欧美日韩在线免费 | 日韩中文字幕在线视频 | 亚洲一区二区三区在线播放 | 韩三级在线观看 | 亚洲一区二区视频 | 男女网站免费观看 | 精品久久久久久久久久久久久久久久久 | 欧美日韩福利视频 | 1区2区3区视频 | 中文字幕亚洲欧美日韩在线不卡 |