久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
關于單片機電子密碼鎖的程序有警告,新手求助
[打印本頁]
作者:
czw233
時間:
2019-6-10 10:13
標題:
關于單片機電子密碼鎖的程序有警告,新手求助
求教以下程序有13處警告 , 新手求解, 關于電子密碼鎖的,警告在最后
#include <reg51.h>
#include <string.h>
#define uchar unsigned char
#define unit unsigned int
uchar Pre_KeyNo = 16, KeyNo = 16;
uchar code Title_Text[] = "Your Password...";
uchar DSY_BUFFER[10] = " ";
uchar UserPassword[10] = " ";
void LCD_Init();
void Display_String(uchar * str,uchar LineNo);
void IIC_24C04_Init();
void Beep();
uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N);
uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N);
uchar Keys_Scan();
sbit LED_OPEN = P2^7;
sbit BEEP = P3^7;
void DelayMS(int x )
{
uchar i;
while (x--) for (i = 0;i<120;i++);
}
void Beep()
{
uchar i;
for (i=0;i<100;i++)
{
DelayMS(1);BEEP= ~BEEP;
}
BEEP=0;
}
void Clear_Password()
{
UserPassword[0] = '\0';
DSY_BUFFER[0] = '\0';
}
void main()
{
uchar i = 0;
uchar IIC_Password[10];
uchar IS_Valid_User = 0;
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
TMOD = 0x02; //T0設置為8位自動重裝模式
TH0 = 175;
TL0 = 175;
TR0 = 1; //啟動T0
DelayMS(10);
LCD_Init(); //初始化LCD
IIC_24C04_Init(); //初始化24C04
Display_String(Title_Text,0x00); //在第1行顯示標題
//24C04的內容已由初始化BIN文件導入
//將24C04中預先寫入的密碼讀入pass
RecString(0xa0, 0 , IIC_Password, 6);
IIC_Password[6] = '\0';
while(1)
{
P1 = 0xF0;
if(P1 != 0xF0) KeyNo = Keys_Scan(); //掃描鍵盤獲取鍵序號KeyNo
switch ( KeyNo )
{
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
if ( i<= 5 ) //密碼限制在6位以內
{
//如果i為0則執行一次清屏
if (i ==0) Display_String(" ",0x40);
UserPassword[i] = KeyNo + '0';
UserPassword[i+1] = '\0';
DSY_BUFFER[i] = '*';
DSY_BUFFER[i+1] = '\0';
Display_String(DSY_BUFFER,0x40);
i++;
}
break;
case 10: //按A鍵開鎖
if (strcmp(UserPassword,IIC_Password) == 0)
{
LED_OPEN = 0; //點亮LED
Clear_Password();
Display_String("Unlock OK! ",0x40);
IS_Valid_User = 1;
}
else
{
LED_OPEN =1; //關閉LED
Clear_Password();
Display_String("ERROR ! ",0x40);
IS_Valid_User = 0;
}
i = 0;
break;
case 11: //按B鍵上鎖
LED_OPEN =1;
Clear_Password();
Display_String(Title_Text,0x00);
Display_String(" ",0x40);
i = 0;
IS_Valid_User = 0;
break;
case 12: //按C鍵設置新密碼
//如果是合法用戶則提示輸入新密碼
if ( !IS_Valid_User ) Display_String("No rights !",0x40);
else
{
i = 0;
Display_String("New Password: ",0x00);
Display_String(" ",0x40);
}
break;
case 13: //按D鍵保存新密碼
if ( !IS_Valid_User ) Display_String("No rights !",0x40);
else
{
SendString(0xa0, 0 , UserPassword, 6);
//重新讀入剛寫的密碼
RecString(0xa0, 0 , IIC_Password, 6);
IIC_Password[6] = '\0';
i = 0;
Display_String(Title_Text,0x00);
Display_String("Password Saved! ",0x40);
}
break;
case 14: //按E鍵消除所有輸入
i = 0;
Clear_Password();
Display_String(" ",0x40);
}
Beep();
DelayMS(100);
P1= 0xF0;
while (P1 != 0xF0); //如果有鍵未釋放則等待
while (P1 == 0xF0); //如果沒有再次按下按鍵則等待
}
}
復制代碼
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define unit unsigned int
#define Delay4us(); {_nop_();_nop_(); _nop_();_nop_();}
sbit SCL = P3^2;
sbit SDA = P3^3;
void Start()
{
SDA = 1;SCL = 1;Delay4us();SDA = 0;Delay4us();SCL = 0;
}
void Stop()
{
SDA =0;SCL =1;Delay4us();SDA = 1;Delay4us();SCL=0;
}
void IIC_24C04_Init()
{
SCL = 0; Stop();
}
void ACK()
{
SDA =0;SCL =1;Delay4us();SCL = 0;SDA=1;
}
void No_ACK()
{
SDA =1;SCL =1;Delay4us();SCL = 0;SDA=0;
}
uchar RecByte()
{
uchar i,rd;
rd = 0x00;
SDA = 1;
for(i=0;i<8;i++)
{
SCL =1 ;rd<<=1; rd |=SDA;Delay4us();SCL = 0;Delay4us();
}
SCL=0;
Delay4us();
return rd;
}
uchar SendByte(uchar wd)
{
uchar i;
bit ack0;
for(i=0;i<8;i++)
{
SDA=(bit)(wd & 0x80);
_nop_();_nop_();SCL = 1;Delay4us();SCL = 0;wd<<=1;
}
Delay4us();
SDA = 1;
SCL = 1;
Delay4us();
ack0 = !SDA;
SCL = 0;
Delay4us();
return ack0;
}
uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)
{
uchar i;
Start();
if(!SendByte(Slave)) return 0;
if(!SendByte(Subaddr)) return 0;
for(i=0;i<N;i++)
{
if (!SendByte(Buffer[i])) return 0;
}
Stop();
return 1;
}
uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)
{
uchar i;
Start();
if(!SendByte(Slave)) return 0;
if(!SendByte(Subaddr)) return 0;
Start();
if(!SendByte(Slave+1)) return 0;
for(i=0;i<N-1;i++)
{
Buffer[i] = RecByte();
ACK();
}
Buffer[N-1] = RecByte();
No_ACK();
Stop();
return 1;
}
#include <reg51.h>
#define uchar unsigned char
#define unit unsigned int
void DelayMs(unit x);
uchar Keys_Scan()
{
uchar Tmp,KeyNo = 0;
P1=0x0F;
DelayMs(1);
Tmp = P1 ^ 0x0F;
switch (Tmp)
{
case 1: KeyNo = 0;break;
case 2: KeyNo = 1;break;
case 4: KeyNo = 2;break;
case 8: KeyNo = 3;break;
default: KeyNo = 16;
}
P1 = 0X0F;
DelayMs(1);
Tmp = P1 >> 4 ^ 0x0F;
switch (Tmp)
{
case 1: KeyNo += 0; break;
case 2: KeyNo += 4; break;
case 4: KeyNo += 8; break;
case 8: KeyNo += 12;
}
return KeyNo;
}
復制代碼
警告
WDR19YWP33X%)U5T$AE6F4X.png
(25.71 KB, 下載次數: 38)
下載附件
2019-6-10 10:12 上傳
作者:
xianfajushi
時間:
2019-6-10 10:40
什么意思?三個文件每個文件單獨檢查告警進行處理即可.
把告警的函數全部注釋掉試看
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品www
|
国产精品高潮呻吟久久
|
超碰在线97国产
|
日韩在线免费
|
日日骚网
|
精品国产一区二区三区久久
|
久久国产婷婷国产香蕉
|
亚洲一区二区三
|
成人免费视频
|
男人天堂午夜
|
精品美女
|
亚洲成人毛片
|
久久专区
|
亚洲国产欧美日韩
|
欧美日韩网站
|
国产一级电影在线观看
|
欧美久久久久
|
国产成人精品免费视频大全最热
|
日韩波多野结衣
|
91av在线电影
|
国产女人与拘做受免费视频
|
亚洲毛片在线观看
|
国产欧美一区二区三区在线看
|
激情欧美一区二区三区中文字幕
|
国产精品日韩欧美一区二区
|
精品国产99
|
久久久国产精品一区
|
蜜桃毛片
|
国产精品久久9
|
日本午夜在线视频
|
天堂一区二区三区
|
精品亚洲一区二区
|
亚洲精品一区二区另类图片
|
亚洲欧美在线一区
|
国产精品美女久久久久aⅴ国产馆
|
日本国产高清
|
久久亚洲综合
|
99婷婷
|
日韩精品一区二区三区四区
|
男人的天堂中文字幕
|
午夜精品在线观看
|