亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? locker_with_lcd_and_clock.txt

?? 本程序用到4x4按鍵中斷掃描法
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

程序說明:
        本程序用到4x4按鍵中斷掃描法,用lcd顯示,開機時候顯示一個數字鐘(時間不可設,稍后加入該功能),鐘正常走
  如果按下開鎖鍵,進入以請輸入密碼界面,輸入密碼,如果密碼正確,顯示歡迎使用,密碼錯誤蜂鳴器報警
   且LCD顯示密碼錯誤,請重新輸入。
 注:數字時鐘用的是DS1302實現,由于本人也才學單片機一個多月,所以注釋非常詳細,初學者很容易看懂。

**************************************************************************************************************/


#include <reg52.h>
#include <intrins.h>


sbit SPK=P3^4;  //SPK定義為P3口的第4位,就是驅動蜂鳴器的那個腳
sbit JDQ=P3^5;  //JDQ定義為P3口的第5位,就是驅動繼電器的那個腳
sbit lcdrs  =  P1^0;   //數據命令選擇端 (H/L)
sbit lcdrw  =  P1^1;   //讀寫選擇端 (H/L)
sbit lcde   =  P1^2;   //使能信號
sbit OK     =  P0^5; //密碼輸入確認鍵
sbit H      =  P0^4;//獨立按鍵定義位
sbit take   =  P0^6;//開鎖鍵
sbit SCL2   =  P1^3;  //SCL2定義為P1口的第3位腳,連接DS1302SCL和ADC0831SCL腳
sbit SDA2   =  P1^4;  //SDA2定義為P1口的第4位腳,連接DS1302SCL和ADC0831SDA腳 
sbit RST    =  P1^5;   // DS1302片選腳

#define LCD_Data  P2
#define Busy     0x80 //用于檢測LCD狀態字中的Busy標識
#define uchar unsigned char
#define uint unsigned int

code unsigned char table[]=
   {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
   0x77,0x7c,0x39,0x5e,0x79,0x71};
   //共陰數碼管 0-9 a-f 表

code unsigned char key_tab[10]={0xed,0x7e,0x7d,0x7b,
        0xbe,0xbd,0xbb,0xde,
        0xdd,0xdb,};//0x77,0xb7,
       // 0xee,0xd7,0xeb,0xe7,0XFF};//========================此數組為鍵盤編碼,
               //本人采用類式類似電話按鍵的編碼方式,方便以后設計
          // 1 2 3 a     0x01 0x02 0x03 0x0a
          // 4 5 6 b 對應16進制碼:  0x04 0x05 0x06 0x0b
          // 7 8 9 e     0x07 0x08 0x09 0x0e
          // * 0 # f     0x0c 0x00 0x0e 0x0f
          //打個比方,如果你按下0鍵,P0口讀到數據為0xed
          //如果你按下2鍵,P0口讀到數據為0x7d,按下9鍵為0xdb,
          //我們將讀到的P0口數據經過查表法就能得到相應的16進制碼
     
          //鍵盤的讀取,我們采用中斷法,電路用一個4與門(74HC21)接入
          //中斷口(INT0),利用中斷來掃描鍵盤矩陣,讀取數據

unsigned char l_tmpdate1[4]={0,0,0,0};//定義數組變量
uchar table_password[4]={1,2,3,4}; //密碼
code uchar table_right[]="welcome use!";
code uchar table_num[]="input password:";
code uchar table_error[]="input error!";
code uchar table_error1[]="Pls try again!";
unsigned char l_key=0;     //定義變量,存放鍵值 
unsigned char l_keyold=0xFF; //做為按鍵松開否的憑證    
uchar buzyc,flag=0,mima;
uchar funtion_flag=0,temp_num;
char shi,fen,miao,nian,yue,ri,xin;

unsigned char l_tmpdate[8]={0x00,59,12,19,2,8,2};//顯示初值
unsigned char l_tmpdisplay[8]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0};//待顯示的數
code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}; //1302寫入地址
code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};//1302讀出地址
//code unsigned char table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//共陰數碼管 0-9  '-' '熄滅‘表
uchar date1[]="MON";
uchar date2[]="TUE";
uchar date3[]="WED";
uchar date4[]="THU";
uchar date5[]="FRI";
uchar date6[]="SAT";
uchar date7[]="SUN"; 



void ReadKey(void)      //讀鍵盤值
{
 unsigned char i,j,key,n;
 j=0xfe;
 key=0xff;//設定初值
 for (i=0;i<3;i++)
 {  
  P0=j;    //P0口低4位循環輸出0,掃描鍵盤
  if ((P0&0xf0)!=0xf0)
  { //如果有鍵按下,P0口高4位不會為1,         
   key=P0;      //讀取P0口,退出循環,否則循環下次 
   break;  
  }
  j=_crol_(j,1);   //此函數功能為左循環移位
 }
 if (key==0xff)
 {    //如果讀取不到P0口的值,比如是干擾,我們不做鍵值處理,返回
  l_keyold=0xff;
  P0=0xf0;   //恢復P0口,等待按鍵按下
  EX0=1;     //返回之前,開啟外中斷
  SPK=1;
  return;
 }
 SPK=0;     //有鍵按下,我們驅動蜂鳴器響
 if(l_keyold==key)
 {  //檢測按鍵放開否,如果一樣表明沒放開,
  TH0=0X2E;   //我們繼續啟動定時器,檢測按鍵松開否
  TL0=0;
  TR0=1;
   
     return;
 }  
 TH0=0X2E;   
 TL0=0;
 TR0=1;     //我們繼續啟動定時器,檢測按鍵松開否

 l_keyold=key;   //獲取鍵碼做為放開的憑證

 for(i=0;i<10;i++)
 {   //查表獲得相應的16進制值存放l_key變量中
  if (key==key_tab[i])
  {
   l_key=i;

   l_tmpdate1[n]=l_key;//將獲得的數裝入一個新的數組
   n++;
   if(n==4) //裝滿四位就從新裝入
   n=0;
   //判斷被按下去的數字與設定密碼是否相符
   if(l_tmpdate1[0]==table_password[0]&l_tmpdate1[1]==table_password[1]&l_tmpdate1[2]==table_password[2]&l_tmpdate1[3]==table_password[3])
   mima=1;
   break;
  }
 }
   //程序運行到這里,就表明有鍵值被讀取存放于l_key變量中,主程序就可以檢測此變量做相應外理,
   //此時我們回到主程序
}  
 

//延時函數
void delay(uint z)  //延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
{     //delay(500);大約延時500ms.
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--); 
}


//讀狀態,忙檢測處理函數
unsigned char ReadStatusLCD(void)
{
 LCD_Data = 0xFF; 
 lcdrs = 0;
 lcdrw = 1;
 lcde = 0;
 lcde = 0;
 lcde = 1;
 while ((LCD_Data & Busy)==Busy); //檢測忙信號
 return(LCD_Data); 
}

//寫命令子函數
void write_com(uchar com,buzyc)
{
 if(buzyc)
 ReadStatusLCD();//忙檢測
 lcdrw=0;
 lcdrs=0;
 P2=com;
 delay(3);
 lcde=1;
 delay(6);
 lcde=0; 
}


//寫數據子函數
void write_date(uchar date)
{
 ReadStatusLCD();//忙檢測
 lcdrw=0;
 lcdrs=1;
 P2=date;
 delay(3);
 lcde=1;
 delay(6);
 lcde=0; 
}


//初始化函數
void init()
{
 H=0;
 lcde=0;
 delay(15);
 write_com(0x38,0);
 delay(5);
 write_com(0x38,0);
 delay(5);
 write_com(0x38,0);
 write_com(0x38,1); //設置led為16×2顯示,5×7點陣,8位數據口
  write_com(0x0f,1); //開顯示,顯示光標,光標閃爍
 write_com(0x06,1); //光標自動移動,整屏不動
 write_com(0x01,1); //顯示清屏,數據指針和地址指針全部清零
 write_com(0x80,1); //設置數據指針到屏幕的最開始端

}


/*****************************************************************************************************
字節寫入子函數:
  將要寫入的數字先右移一位,是最低位溢出,然后在scl2的一個上升沿數據被寫入DS1302,注意
  數據的寫入時從低位到高位
*****************************************************************************************************/

void Write_Ds1302_Byte(unsigned  char date) 
{
 uchar j,temp;
 temp=date;
 for(j=0;j<8;j++)
 {
  temp=temp>>1; //將數據右移一位使最低位溢出
  SDA2=CY; //將待寫入數據最低位寫入數據緩沖
  SCL2=0;
  SCL2=1;  //在scl的上升延寫入數據
 }
}  


/*****************************************************************************************************
字節讀出子函數:
   分8次讀出數據,將讀出的數據存入temp:在時鐘信號的下降沿讀出一個字節的數據
   數據讀出也是從低位到高位的
*****************************************************************************************************/
uchar Read_Ds1302_Byte()
{
 uchar j,temp;
 for(j=0;j<8;j++)
 {
  temp=temp>>1; //將temp右移一位使最高位變為次高位,最高為為0
  SDA2=1;
  SCL2=1;
  SCL2=0; //在scl2的一個下降沿數據讀出
  if(SDA2==1)//如果讀出的數據為1,即在temp的最高位寫入1,為0的時候則寫入0
  temp=temp|0x80;
  temp=temp|0x00;  
 }
 return temp;
}


/***************************************************************************************************************
數據寫入DS1302函數:
   在指定地址寫入指定數據,在rst為低scl2為低的情況下將rst置高,即允許數據寫入
   先寫入地址
   然后寫入數據
   最后將rst拉低結束數據寫入
****************************************************************************************************************/
void Write_Ds1302( unsigned char address,unsigned char dat )     
{
  RST=0;
 _nop_();_nop_();_nop_();_nop_();_nop_();
 SCL2=0;
 _nop_();_nop_();_nop_();_nop_();_nop_();
  RST=1; 
    _nop_();_nop_();_nop_();_nop_();_nop_();   //開啟,寫入數據地址,這是本串口協議的開始,加入延時防止干擾
  Write_Ds1302_Byte(address); //發送地址
  Write_Ds1302_Byte(dat);  //發送數據
  RST=0;    //恢復
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合在线| 爽爽淫人综合网网站| 欧美视频日韩视频在线观看| 爽爽淫人综合网网站| 国产精品网站在线观看| 欧美亚洲日本国产| 福利电影一区二区三区| 亚洲一区二区av在线| 精品国产露脸精彩对白| 91美女片黄在线| 国产美女主播视频一区| 亚洲国产一区二区在线播放| 国产欧美日韩在线视频| 日韩欧美亚洲国产另类| 欧美熟乱第一页| 91在线视频18| 成人永久aaa| 精品在线播放免费| 日本午夜一本久久久综合| 自拍偷自拍亚洲精品播放| 久久色在线观看| 日韩精品一区二| 欧美三级日韩三级国产三级| 国产.欧美.日韩| 国产麻豆精品在线观看| 日本系列欧美系列| 日本免费在线视频不卡一不卡二| 亚洲日穴在线视频| 亚洲视频免费在线| 国产日韩av一区二区| 欧美一区二区三区视频免费播放 | 欧美猛男gaygay网站| 成人av集中营| 国产成人av电影在线| 美腿丝袜亚洲综合| 青青草原综合久久大伊人精品 | 91视频国产观看| 波多野结衣亚洲| 成人免费视频一区| 成人性生交大片免费看在线播放| 国产一区二区三区精品视频| 久久99精品国产麻豆婷婷| 天堂在线亚洲视频| 日韩电影在线免费| 美女诱惑一区二区| 精品一区二区三区久久久| 日产国产欧美视频一区精品| 日韩av一二三| 久久99精品国产麻豆婷婷| 国产一区二区三区免费看 | 欧美无砖专区一中文字| 色综合久久99| 欧美片在线播放| 精品国产不卡一区二区三区| 久久蜜臀精品av| 国产精品久久夜| 亚洲一区影音先锋| 天天综合天天综合色| 日韩一区欧美二区| 精品一区二区免费视频| 极品少妇xxxx精品少妇| 国产综合久久久久影院| 成人免费毛片片v| 在线免费不卡视频| 这里是久久伊人| 久久夜色精品一区| 国产精品不卡一区| 午夜国产精品一区| 精品一二线国产| 风间由美一区二区av101| av成人免费在线| 欧美日韩国产免费| 久久先锋影音av| 中文字幕亚洲不卡| 午夜精品福利久久久| 精品一区二区免费在线观看| av资源网一区| 在线不卡的av| 国产亚洲成年网址在线观看| 亚洲欧美中日韩| 免费观看日韩av| 97超碰欧美中文字幕| 欧美日韩免费电影| 日本一区二区成人在线| 亚洲一区二区三区影院| 国内精品视频一区二区三区八戒| 91蜜桃视频在线| 日韩美女在线视频| 亚洲精品久久久久久国产精华液| 蜜臀久久99精品久久久画质超高清| 国产精品亚洲一区二区三区妖精| 91福利资源站| 国产亚洲欧美日韩俺去了| 一区二区三区欧美激情| 国内成人免费视频| 欧美日韩国产大片| 国产精品国产三级国产普通话99 | 亚洲国产精品天堂| 韩国精品久久久| 欧美电影在线免费观看| 国产三级三级三级精品8ⅰ区| 亚洲一区二区三区国产| 免费观看在线综合| 日本伦理一区二区| 中国av一区二区三区| 六月丁香婷婷色狠狠久久| 色综合天天综合在线视频| 久久久久久久久久久久电影| 亚洲国产你懂的| av一区二区三区| 久久久久久久久久久久久久久99| 婷婷开心久久网| 91视频精品在这里| 最新欧美精品一区二区三区| 国产一区二区三区久久久 | 99久久精品免费看国产| 欧美大黄免费观看| 亚洲一区二区三区国产| 99久久国产综合精品女不卡| 久久久91精品国产一区二区三区| 美女在线观看视频一区二区| 欧美裸体bbwbbwbbw| 亚洲乱码中文字幕| 97久久精品人人爽人人爽蜜臀| 久久精品视频网| 国产精品99久久久| 久久亚洲精品国产精品紫薇 | 91麻豆免费观看| 国产精品欧美一区二区三区| 黄一区二区三区| 欧美精品一区视频| 国产一区二区三区香蕉| 日韩午夜电影av| 午夜伦理一区二区| 欧美日韩www| 亚洲第一av色| 在线成人高清不卡| 久久国产精品第一页| 欧美一区二区三区系列电影| 日韩激情在线观看| 日韩欧美一二三| 国产综合久久久久影院| 久久久国产精品麻豆| 国产精品综合二区| 欧美激情在线观看视频免费| 高清日韩电视剧大全免费| 欧美韩国日本一区| 91丝袜美腿高跟国产极品老师| 亚洲人精品午夜| 欧美视频精品在线观看| 日日摸夜夜添夜夜添精品视频 | 欧美日韩精品欧美日韩精品| 亚洲综合色区另类av| 欧美三级电影在线观看| 天天免费综合色| 欧美电影免费观看完整版| 国内外精品视频| 1024精品合集| 欧美日韩精品是欧美日韩精品| 日韩黄色片在线观看| 精品美女被调教视频大全网站| 国产精品99久久久久久似苏梦涵| 久久久国产一区二区三区四区小说| 不卡区在线中文字幕| 国产精品乱码一区二区三区软件 | 成人一区二区三区在线观看| 久久久国产精品不卡| 91麻豆免费看片| 美女任你摸久久| 国产亚洲污的网站| 色欧美片视频在线观看在线视频| 视频在线观看国产精品| 久久久久久日产精品| 色偷偷成人一区二区三区91| 日本va欧美va精品| 国产精品区一区二区三区| 欧美综合一区二区三区| 男人的天堂久久精品| 久久网这里都是精品| 色哟哟国产精品| 极品美女销魂一区二区三区免费| 成人免费在线观看入口| 欧美一区二区美女| 成人精品gif动图一区| 亚洲成人av中文| 欧美经典一区二区三区| 欧美日韩精品欧美日韩精品一| 高清在线观看日韩| 琪琪久久久久日韩精品| 国产精品成人午夜| 欧美白人最猛性xxxxx69交| 91在线免费看| 国产成人在线视频免费播放| 亚洲最大的成人av| 国产日韩欧美综合一区| 欧美三级电影网| 丁香婷婷深情五月亚洲| 人人超碰91尤物精品国产| 亚洲色大成网站www久久九九| xvideos.蜜桃一区二区|