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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1327|回復(fù): 1
收起左側(cè)

小車

[復(fù)制鏈接]
ID:323264 發(fā)表于 2018-5-26 20:19 | 顯示全部樓層 |閱讀模式
  • #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義  
  •   
  •   
  • #define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換  
  • #define KeyPort P1  
  • sbit LATCH1=P2^2;//定義鎖存使能端口 段鎖存  
  • sbit LATCH2=P2^3;//                 位鎖存  
  •   
  • unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,  
  •                                      0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F  
  • unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應(yīng)相應(yīng)的數(shù)碼管點亮,即位碼  
  • unsigned char TempData[10]; //存儲顯示值的全局變量  
  • unsigned char code password[8]={1,2,3,4,5,6,7,8};  
  • //可以更改此密碼做多組測試  
  •   
  • void DelayUs2x(unsigned char t);//us級延時函數(shù)聲明   
  • void DelayMs(unsigned char t); //ms級延時  
  • void Display(unsigned char FirstBit,unsigned char Num);//數(shù)碼管顯示函數(shù)  
  • unsigned char KeyScan(void);//鍵盤掃描  
  • unsigned char KeyPro(void);  
  • void Init_Timer0(void);//定時器初始化  
  •   
  • void main (void)  
  • {  
  • unsigned char num,i,j;                    
  • unsigned char temp[8];  
  • bit Flag;  
  • Init_Timer0();  
  •   
  • while (1)         //主循環(huán)  
  •   {  
  •   
  •   
  • num=KeyPro();  
  • if(num!=0xff)  
  •    {  
  •    if(i==0)  
  •     {  
  •      for(j=0;j<8;j++)//清屏  
  •          TempData[j]=0;  
  •     }  
  •    if(i<8)  
  •      {  
  •       temp=dofly_DuanMa[num];//把按鍵值輸入到臨時數(shù)組中  
  •       for(j=0;j<=i;j++)         //通過一定順序把臨時數(shù)組中  
  •                       //的值賦值到顯示緩沖區(qū),從右往左輸入  
  •          TempData[7-i+j]=temp[j];   
  •       }  
  •     i++;   //輸入數(shù)值累加  
  •     if(i==9)//正常等于8即可,由于我們需要空一個用于清屏,  
  •             //清屏?xí)r的按鍵不做輸入值  
  •       {  
  •       i=0;  
  •       Flag=1;//先把比較位置1  
  •       for(j=0;j<8;j++)//循環(huán)比較8個數(shù)值,  
  •                       //如果有一個不等 則最終Flag值為0  
  •          Flag=Flag&&(temp[j]==dofly_DuanMa[password[j]]);  
  •          //比較輸入值和已有密碼  
  •       for(j=0;j<8;j++)//清屏  
  •          TempData[j]=0;  
  •       if(Flag)//如果比較全部相同,標志位置1  
  •        {  
  •          TempData[0]=0x3f; // "o"  
  •          TempData[1]=0x73; // "p"  
  •          TempData[2]=0x79; // "E"  
  •          TempData[3]=0x54; // "n"  
  •          //說明密碼正確,輸入對應(yīng)操作 顯示"open"  
  •         }  
  •       else   
  •         {  
  •          TempData[0]=0x79; // "E"  
  •          TempData[1]=0x50; // "r"  
  •          TempData[2]=0x50; // "r"  
  •          //否則顯示"Err"  
  •         }  
  •   
  •       }  
  •     }     
  •   }  
  • }  
  •   
  • void DelayUs2x(unsigned char t)  
  • {     
  • while(--t);  
  • }  
  •   
  • void DelayMs(unsigned char t)  
  • {  
  •       
  • while(t--)  
  • {  
  •      //大致延時1mS  
  •      DelayUs2x(245);  
  •      DelayUs2x(245);  
  • }  
  • }  
  •   
  • void Display(unsigned char FirstBit,unsigned char Num)  
  • {  
  •       static unsigned char i=0;  
  •         
  •   
  •        DataPort=0;   //清空數(shù)據(jù),防止有交替重影  
  •        LATCH1=1;     //段鎖存  
  •        LATCH1=0;  
  •   
  •        DataPort=dofly_WeiMa[i+FirstBit]; //取位碼   
  •        LATCH2=1;     //位鎖存  
  •        LATCH2=0;  
  •   
  •        DataPort=TempData; //取顯示數(shù)據(jù),段碼  
  •        LATCH1=1;     //段鎖存  
  •        LATCH1=0;  
  •          
  •        i++;  
  •        if(i==Num)  
  •           i=0;  
  •   
  •   
  • }  
  •   
  • void Init_Timer0(void)  
  • {  
  • TMOD |= 0x01;    //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響            
  • //TH0=0x00;          //給定初值  
  • //TL0=0x00;  
  • EA=1;            //總中斷打開  
  • ET0=1;           //定時器中斷打開  
  • TR0=1;           //定時器開關(guān)打開  
  • }  
  •   
  • void Timer0_isr(void) interrupt 1   
  • {  
  • TH0=(65536-2000)/256;        //重新賦值 2ms  
  • TL0=(65536-2000)%256;  
  •    
  • Display(0,8);       // 調(diào)用數(shù)碼管掃描  
  •   
  • }  
  •   
  •   
  • unsigned char KeyScan(void)  //鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法  
  • {  
  • unsigned char cord_h,cord_l;//行列值中間變量  
  • KeyPort=0x0f;            //行線輸出全為0  
  • cord_h=KeyPort&0x0f;     //讀入列線值  
  • if(cord_h!=0x0f)    //先檢測有無按鍵按下  
  • {  
  •   DelayMs(10);        //去抖  
  •   if((KeyPort&0x0f)!=0x0f)  
  •   {  
  •     cord_h=KeyPort&0x0f;  //讀入列線值  
  •     KeyPort=cord_h|0xf0;  //輸出當前列線值  
  •     cord_l=KeyPort&0xf0;  //讀入行線值  
  •   
  •     while((KeyPort&0xf0)!=0xf0);//等待松開并輸出  
  •   
  •     return(cord_h+cord_l);//鍵盤最后組合碼值  
  •    }  
  •   }return(0xff);     //返回該值  
  • }  
  •   
  • unsigned char KeyPro(void)  
  • {  
  • switch(KeyScan())  
  • {  
  •   case 0x7e:return 0;break;//0 按下相應(yīng)的鍵顯示相對應(yīng)的碼值  
  •   case 0x7d:return 1;break;//1  
  •   case 0x7b:return 2;break;//2  
  •   case 0x77:return 3;break;//3  
  •   case 0xbe:return 4;break;//4  
  •   case 0xbd:return 5;break;//5  
  •   case 0xbb:return 6;break;//6  
  •   case 0xb7:return 7;break;//7  
  •   case 0xde:return 8;break;//8  
  •   case 0xdd:return 9;break;//9  
  •   case 0xdb:return 10;break;//a  
  •   case 0xd7:return 11;break;//b  
  •   case 0xee:return 12;break;//c  
  •   case 0xed:return 13;break;//d  
  •   case 0xeb:return 14;break;//e  
  •   case 0xe7:return 15;break;//f  
  •   default:return 0xff;break;  
  • }  
  • }  

回復(fù)

使用道具 舉報

ID:322405 發(fā)表于 2018-5-27 11:51 | 顯示全部樓層
請問和小車有什么關(guān)系
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av色站 | 亚洲欧美日韩电影 | 国产欧美日韩一区 | 亚洲国产一区二区在线 | 国产在线视频一区二区 | 黄在线免费观看 | 国内av在线 | 国产高清精品一区 | 国产精品综合久久 | 日本精品在线播放 | 国产精品久久av | 久久久123 | 日日干夜夜草 | 国产成人99久久亚洲综合精品 | 成人在线视频免费看 | 国产福利在线小视频 | 久久亚 | 欧美日韩视频在线第一区 | 在线视频99| 久久毛片 | 亚洲成人高清 | 欧美大片一区 | av在线黄 | 中文字幕在线观看www | 日韩精品| 国产成人一区二区三区精 | 综合久久综合久久 | 精品国产一区二区三区日日嗨 | 欧美日韩高清一区 | 国产高清视频在线观看 | 亚洲成人一区二区 | 国产乱码精品一区二区三区忘忧草 | 精品国产乱码久久久久久闺蜜 | 欧美国产视频 | 四虎影| 国产一区二区三区 | 一区二区福利视频 | 九九久久久 | 午夜视频在线 | 日日人人 | 美女二区 |