標(biāo)題:
在家無聊自己給家里做個(gè)門禁
[打印本頁(yè)]
作者:
heicc
時(shí)間:
2015-1-5 14:08
標(biāo)題:
在家無聊自己給家里做個(gè)門禁
由于上個(gè)月丟了家鑰匙,今天無聊中沒啥事兒,就想自己動(dòng)手設(shè)計(jì)個(gè)自己用的門禁來玩,至少鑰匙丟了也不愁了,還可以一卡通。由于基本上目前沒硬件來設(shè)計(jì),那就先用軟件來模擬一下吧,到時(shí)感覺不錯(cuò)再買元器件。
今天估計(jì)也做不了什么,就大概分析下機(jī)器的一些東東吧。
首先考慮使用的卡的類型,是使用id卡還是ic卡還是二代身份證呢?身份證嘛怕丟,不能老是隨身帶。id卡和ic卡都行,不過ic卡的讀頭要貴很多又不方便自做,所以最后決定用id卡吧,就算自己做也沒什么,大不了買個(gè)芯片讀曼徹斯特*碼也應(yīng)該容易,況且讀卡器,卡片也便宜嘛。
id讀卡器到時(shí)買最便宜的就行了,不用多想什么了,只要記得到時(shí)搞清楚到手的參數(shù)就行,不要拿個(gè)維根32的當(dāng)成維根26的來用,就可能走很多彎路了。
主控芯片就用89s52吧,二個(gè)外部中斷,二個(gè)定時(shí)中斷,32個(gè)I/O應(yīng)該夠用了。
存儲(chǔ)器的話只存開門卡號(hào)和密碼等數(shù)據(jù),不用太大,就用24c02夠了,幾十個(gè)用戶容量夠家里用了。
其他的配件都是小件散件,用到時(shí)再考慮吧。
用電腦做上位機(jī)進(jìn)行聯(lián)網(wǎng)遠(yuǎn)程開門,加卡刪卡等操作,電腦軟件以后做好下位機(jī)后再寫了,唉,英語(yǔ)不行,VB,DP等流行軟件都不能用,看來只能用易語(yǔ)言了。
現(xiàn)在到晚上了,今天白天已經(jīng)畫好了proteus圖,大概說一一分布:1,電源12v輸入12v/5v輸出。2,主控P3口控制繼電器蜂鳴器LED輸出和曼碼,IIC,中斷(讀卡器輸入)輸入和串口通訊。P2,P1口留做讀卡器輸入(用查詢法來讀數(shù)據(jù))和信號(hào)輸出。P0口做鍵盤輸入了。主控就暫時(shí)就樣分布到時(shí)需要時(shí)再改吧。
今天就先做到就里,任務(wù)才剛剛開始,單片機(jī)程序估計(jì)要幾天才能寫好吧。
作者:
heicc
時(shí)間:
2015-1-5 14:08
今天開始寫下位機(jī)也就是89s52的程序。一個(gè)早上才搞定鍵盤掃描程序,程序基本上正確,只是明明加了松開檢測(cè)了,怎么有時(shí)在按下時(shí)會(huì)發(fā)送呢。實(shí)在是檢查不出哪兒的問題,也許是模擬軟件的問題吧。
現(xiàn)在突然想到怎么先寫鍵盤程序呢,應(yīng)該寫重要的先才對(duì)啊,不然到最后重要的部分沒寫成那不是浪費(fèi)很多精力?但是沒有實(shí)際硬件做起來費(fèi)勁,串口通訊不知怎么用軟件模擬,也就是因?yàn)檫@樣早上的鍵盤程序都是靠軟件調(diào)試和蜂鳴器來提示來叛斷是否正確,所以做起來很慢。如果有終端來顯示那就方便多了。不想買液晶顯示,雖然1602液晶應(yīng)該沒多少錢但是怕以后用不到還是用電腦來做顯示吧,接上串口來通訊就行。但問題是現(xiàn)在要有芯片,數(shù)據(jù)線,基本外圍元件和洞洞板等等才行。家里街上和工業(yè)城市不一樣,東西應(yīng)該不好買,到市區(qū)里去看看吧,不行再淘寶了,馬上去了……
貼上我的鍵盤程序:
/*////////////////////////////////////
函數(shù)原型: uchar key(void)
函數(shù)說明:鍵盤掃描
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
uchar key(void)
{
uchar temp,number;
P0=0x0f;
if(P0!=0x0f)
{
P0=0xfe;
if(P0!=0xfe)
{
temp=P0;
switch (temp)
{ //11110000
case 0xee: //01111110
number=4;
break;
case 0xde:
number=3;
break;
case 0xbe:
number=2;
break;
case 0x7e:
number=1;
break;
}
while(P0!=0xfe);
sound(1);
return number;
}
P0=0xfd;
if(P0!=0xfd)
{
temp=P0;
switch (temp)
{
case 0xed:
number=8;
break;
case 0xdd:
number=7;
break;
case 0xbd:
number=6;
break;
case 0x7d:
number=5;
break;
}
while(P0!=0xfd);
sound(1);
return number;
}
P0=0xfb;
//temp=P0;
//temp=temp|0xf0;
if(P0!=0xfb)
{
temp=P0;
switch (temp)
{
case 0xeb:
number=12;
break;
case 0xdb:
number=11;
break;
case 0xbb:
number=10;
break;
case 0x7b:
number=9;
break;
}
while(P0!=0xfb);
sound(1);
return number;
}
P0=0xf7;
//temp=P0;
//temp=temp|0xf0;
if(P0!=0xf7)
{
temp=P0;
switch (temp)
{
case 0xe7:
number=16;
break;
case 0xd7:
number=15;
break;
case 0xb7:
number=14;
break;
case 0x77:
number=13;
break;
}
while(P0!=0xf7);
sound(1);
return number;
}
}return 0;
}
作者:
heicc
時(shí)間:
2015-1-5 14:09
終于完成了韋根26查詢法的程序了,IIC和串口通詢昨天改好,因?yàn)楝F(xiàn)在沒做到聯(lián)網(wǎng)部分,所以沒做聯(lián)網(wǎng)方面的通訊協(xié)議和程序。
串口通訊程序
void Init(void)
{
TMOD|=0x21;//定時(shí)器1為方式2,定時(shí)器0方式1
TL1=0xfd; //初始值設(shè)置波特率為9600 //
TH1=0xfd;
ET0=1;
TR1=1; //開定時(shí)器1
REN=1; //允許接收數(shù)據(jù)//
SM0=0;
SM1=1;
EA=1; //開所有中斷
ES=1;
}
void SEND(unsigned char *a)
{
uchar b;
for(b=0;b<8;b++)
{
SBUF=*a;
while(TI==0);
TI=0;
a=a+1;
}
}
IIC總線24cxx讀寫通用程序
#include<config.h>
//#include<delay.h>
#ifndef MCU_MODEL
#define MCU_MODEL 51 //<----在此設(shè)定mcu類型, 51代表51系列; avr代表avr系列
#endif
//-----------------------51類MCU-------------------------------------------
#if MCU_MODEL==51
// #include<reg51.h> //在此設(shè)定51類MCU的頭文件
// #include<intrins.h> //_nop_()函數(shù)需要
// #include"xd.h"
// #include"xdprj.h"
//---------定義I2總線端口, 可根據(jù)實(shí)際使用改變-----------
sbit SCL=P2^0; //I2總線時(shí)鐘線
sbit SDA=P2^1; //I2總線數(shù)據(jù)線
#define SCL_L SCL=0
#define SCL_H SCL=1
#define SDA_L SDA=0
#define SDA_H SDA=1
#define SDA_TO_IN //為配合avr共用次程序而空定義的宏
#define SDA_TO_OUT //為配合avr共用次程序而空定義的宏
#define SDA_IF_L SDA==0 //如果sda為低
#define SDA_IF_H SDA==1 //如果sda為高
//------------------------------------------------------
#define DELAY_us _nop_(); _nop_(); _nop_(); _nop_(); _nop_() //延時(shí)用,如果要加長(zhǎng)延時(shí),可增加或減少 _nop_();
//------------------------avr類MCU-----------------------------------------
#elif MCU_MODEL==avr
#include<iom16v.h> //在此設(shè)定avr類MCU的頭文件
#include<macros.h>
// #include"xd.h"
// #include"xdprj.h"
//-----定義I2總線端口, 可根據(jù)實(shí)際使用改變----
#define SCL_L PORTC&=~BIT(0) //I2總線時(shí)鐘線
#define SCL_H PORTC|=BIT(0)
#define SDA_L PORTC&=~BIT(1) //I2總線數(shù)據(jù)線
#define SDA_H PORTC|=BIT(1)
#define SDA_TO_IN DDRC&=~BIT(1); _NOP() //設(shè)數(shù)據(jù)線位輸入
#define SDA_TO_OUT DDRC|=BIT(1); _NOP() //設(shè)數(shù)據(jù)線位輸出
#define SDA_IF_L (PINC&BIT(1))==0 //如果sda為低
#define SDA_IF_H (PINC&BIT(1))==BIT(1) //如果sda為高
//-------------------------------------------
#define DELAY_us tus(7) //avr單片機(jī)在晶振為8MHz時(shí),延時(shí)5us, 可根據(jù)實(shí)際情況改變
#endif
//---------------------------------------------------------------------------
//------在此設(shè)定芯片型號(hào)------
#define e2prom 2 // <---在此設(shè)定芯片型號(hào), 1代表24C01; 16代表24C16; 512代表24C512
#if e2prom==1
#define PAGE_SIZE 8 //芯片頁(yè)寫緩沖器大小,單位:字節(jié)/
#define SIZE 0x007f // 芯片內(nèi)含有多少個(gè)8位的字節(jié)/
#elif e2prom==2
#define PAGE_SIZE 8
#define SIZE 0x00ff
#elif e2prom==4
#define PAGE_SIZE 16
#define SIZE 0x01ff
#elif e2prom==8
#define PAGE_SIZE 16
#define SIZE 0x03ff
#elif e2prom==16
#define PAGE_SIZE 16
#define SIZE 0x07ff
#elif e2prom==32
#define PAGE_SIZE 32
#define SIZE 0x0fff
#elif e2prom==64
#define PAGE_SIZE 32
#define SIZE 0x1fff
#elif e2prom==128
#define PAGE_SIZE 64
#define SIZE 0x3fff
#elif e2prom==256
#define PAGE_SIZE 64
#define SIZE 0x7fff
#elif e2prom==512
#define PAGE_SIZE 128
#define SIZE 0xffff
#endif
//--------------------------
//--------在此設(shè)定芯片地址-------
#define W_ADD_COM 0xa0 //寫字節(jié)命令及器件地址(根據(jù)地址實(shí)際情況改變), 1010 A2 A1 A0 0
#define R_ADD_COM 0xa1 //讀命令字節(jié)及器件地址(根據(jù)地址實(shí)際情況改變), 1010 A2 A1 A0 1
//-------------------------------
//-----在此改變預(yù)置錯(cuò)誤號(hào)-----
//#define I2C_ERR ERR_10 //寫字節(jié)命令及器件地址錯(cuò), 在此也就是讀寫器件錯(cuò)!!
//---------------------------
//-------------------------------以下為其它I2總線器件可調(diào)用的函數(shù)--------------------------
//起始信號(hào)
void i2cstart(void)
{
//SCL_L;
//DELAY_us;
SDA_H; //發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
DELAY_us;
SCL_H;
DELAY_us; //起始條件建立時(shí)間大于4.7us,延時(shí)*/
SDA_L; //發(fā)送起始信號(hào)*/
DELAY_us; //起始條件鎖定時(shí)間大于4μs*
SCL_L; //鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)/
DELAY_us;
}
//停止信號(hào) /
void i2cstop(void)
{
//SCL_L;
//DELAY_us;
SDA_L; //發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*
DELAY_us;
SCL_H;
DELAY_us; // 結(jié)束條件建立時(shí)間大于4μs
SDA_H; // 發(fā)送I2C總線結(jié)束信號(hào)*
DELAY_us;
}
//等待從器件應(yīng)答/
void i2cask()
{
uchar i;
SCL_H;
DELAY_us;
while((SDA==1)&&(i<250))i++;
SCL_L;
DELAY_us;
}
/*/MCU應(yīng)答信號(hào)/
void i2cack()
{
SDA_L;
DELAY_us;
SCL_H;
DELAY_us;
SCL_L;
DELAY_us;
} */
//i2c讀要調(diào)用的函數(shù)
//從器件讀出一個(gè)字節(jié)
uchar i2crd(void)
{ uchar i,temp;
//i2c讀要調(diào)用的函數(shù)
//從器件讀出一個(gè)字節(jié)
uchar i2crd(void)
{ uchar i,temp;
SCL_L; DELAY_us; // 準(zhǔn)備接收數(shù)據(jù)位*時(shí)鐘低電平周期大于4.7μs
SDA_H; DELAY_us; //置數(shù)據(jù)線接上內(nèi)部上拉(數(shù)據(jù)輸入方式),此為必須/
for(i=0;i<8;i++)
{
SCL_H; // 置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效/
DELAY_us;
temp<<=1;
SDA_TO_IN; //如果是avr單片機(jī),就設(shè)SDA引腳位輸入狀態(tài)
if(SDA_IF_H)
temp=temp+1; //讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入temp中;
SCL_L;
DELAY_us;
SDA_TO_OUT; //如果是avr單片機(jī),就設(shè)SDA引腳位輸出狀態(tài)
}
// SCL_L;
// DELAY_us; //主器件應(yīng)答脈沖
// SDA_L; DELAY_us;
// SCL_H; DELAY_us;
return(temp);
}//把一個(gè)字節(jié)數(shù)據(jù)輸入器件,并以收到應(yīng)答信號(hào)為止/
//寫入成功返回1,失敗返回0
uchar i2cwt(uchar a)
{ uchar i;
for(i=0;i<8;i++) //要寫入的數(shù)據(jù)長(zhǎng)度為8位*
{
SCL_L;
DELAY_us;
if((a<<i)&0x80) // 判斷發(fā)送位(按位與,只要最高位為1則真)
SDA_H;
else
SDA_L;
DELAY_us;
SCL_H; //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位*
DELAY_us; //保證時(shí)鐘高電平周期大于4μs*
}
SCL_L;
DELAY_us;
SDA_H; // 8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*
DELAY_us;
SCL_H;
DELAY_us;
SDA_TO_IN; //如果是avr單片機(jī),就設(shè)SDA引腳位輸入狀態(tài)/
if(SDA_IF_L) //測(cè)試有無應(yīng)答/
{ SDA_TO_OUT;
return(1); //有應(yīng)答返回1
}
else
{ SDA_TO_OUT;
return(0); //無應(yīng)答
}
}
void wt24c(uchar address,uchar date)
{
i2cstart();
i2cwt(0xa0);
i2cask();
i2cwt(address);
i2cask();
i2cwt(date);
i2cask();
i2cstop();
}
uchar rd24c(uchar address)
{
uchar temp;
i2cstart();
i2cwt(0xa0);
i2cask();
i2cwt(address);
i2cask();
i2cstart();
i2cwt(0xa1);
i2cask();
temp=i2crd();
return temp;
i2cstop();
}
查詢法讀韋根26程序
idata unsigned char WGDATA[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//接收韋根數(shù)據(jù)26位
idata unsigned char WG[8]={0xaa,0xbb,0,0,0,0,0xcc,0xdd};//存韋根ID卡卡號(hào)的HID和PID碼,其中HID碼為8位即一字節(jié),PID碼16位兩字節(jié)
uchar a,x,j,LL,II,YY;
void ys100us(uint u)
{ uint y;
uchar x;
for(y=u;y>0;y--)
{
for(x=20;x>0;x--)
_nop_();
}
}
void DATA(void)
{
if(DATA0!=DATA1)
{
if(DATA0==0)
{
WGDATA[Cnt]=0;
if(Cnt==25)
a=1;
Cnt++;
ys100us(15);
}
if(DATA1==0)
{
WGDATA[Cnt]=1;
if(Cnt==25)
a=1;
Cnt++;
ys100us(15);
}
}
}
bit re(void)
{
if(Read_Card())
{
WG[3]=WGDATA[1];
WG[4]=WGDATA[2];
WG[5]=WGDATA[3];
return 1;
// SEND(&WG[0]);
}
DATA();
if(a==1)
{
EA=0; //關(guān)中斷以免外部中斷的干擾
a=0;
Cnt=0;
// rd24c(ptr,0,10);
// WG[0]=*ptr;
for(x=1;x<9;x++)
LL=(LL<<1)|WGDATA[x];
for(x=9;x<17;x++)
II=(II<<1)|WGDATA[x];
for(x=17;x<25;x++)
YY=(YY<<1)|WGDATA[x];
//WG[0]=rd24c(0);
//ysms(100);
WG[3]=LL;
WG[4]=II;
WG[5]=YY;
EA=1;
// SEND(&WG[0]);
return 1;
}
return 0;
}
作者:
heicc
時(shí)間:
2015-1-5 14:10
寫好的部分程序
累!腦力勞動(dòng)比體力勞動(dòng)要累多了!寫得并調(diào)式好幾個(gè)程序花了我不少精力,打字都嫌累了,貼上幾個(gè)程序:
/*////////////////////////////////////
函數(shù)原型:
函數(shù)說明:串口接收中斷
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void ser() interrupt 4
{
RI=0;
z=SBUF;
ai=1;
}
/*////////////////////////////////////
函數(shù)原型:void sound(uchar a)
函數(shù)說明:蜂鳴器發(fā)聲,a為需要發(fā)出多少次DIDI音
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void sound(uchar a)
{
uchar x,y;
for(;a>0;a--)
{
for(x=255;x>0;x--)
{
beep=0;
for(y=150;y>0;y--)
beep=1;
beep=0;
}
ysms(500);
}
}
void ysms(unsigned int x)
{
unsigned int a;
unsigned int b;
for(a=x;a>0;a--)
{
for(b=50;b>0;b--);
}
}
/*////////////////////////////////////
函數(shù)原型:void inscard(void)
函數(shù)說明:存入卡號(hào)到EEPROM
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void inscard(void)
{
while(1)
{
if(re())
{
if(iscard()==0)//如果沒有這卡號(hào)/
{
uchar a,b;
b=ckdz(); //查找空置/
for(a=3;a<6;a++)
{
wt24c(b,WG[a]);
ys100us(1000);
b++;
}
// wt24c(0,b);
ys100us(1000);
sound(1);
break;
}
sound(2);
break;
}
if(key()==12)
{
sound(1);
break;
}
}
}
/*////////////////////////////////////
函數(shù)原型:void delcard(void)
函數(shù)說明:從EEPROM中刪除卡號(hào)
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void delcard(void)
{
while(1)
{
if(re())
{
if(iscard()!=0) //如果有這張卡號(hào)/
{
uchar a,b;
b=iscard(); //查找空置/
for(a=0;a<3;a++)
{
wt24c(b,0xff);
ys100us(1000);
b=b+1;
}
// wt24c(0,b);
ys100us(1000);
sound(1);
break;
}
sound(2);
break;
}
if(key()==12)
{
sound(2);
break;
}
}
}
/*////////////////////////////////////
函數(shù)原型:uchar iscard(void)
函數(shù)說明:查找是否有此卡
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
uchar iscard(void)
{
uchar a,b;
for(a=8;a<128;a++)
{
if(rd24c(a)==WG[3])
{
a++;
if(rd24c(a)==WG[4])
{
a++;
if(rd24c(a)==WG[5])
{
b=a-2;
return b;
}
}
}
if(a==127)return 0;
}
}
/*////////////////////////////////////
函數(shù)原型:uchar ckdz(void)
函數(shù)說明:查找EEPROM的空白位置地址
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
uchar ckdz(void)//查空地址/
{
uchar a,b,c;
for(a=2;a<126;a++)
{
c=a;
c++;
if(rd24c(a)==0xff)
{
a++;
if(rd24c(a)==0xff)
{
a++;
if(rd24c(a)==0xff)
{
b=a-2;
return b;
}
}
}
if(c==126)return 0xff;
}
}
/*////////////////////////////////////
函數(shù)原型:void readcard(void)
函數(shù)說明:讀卡正確
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void readcard(void)
{
if(re())
{
if(iscard()!=0)
{
SEND(&WG[0]);
open();
}sound(2);
}
}
/*////////////////////////////////////
函數(shù)原型:void open(void)
函數(shù)說明:打開
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void open(void)
{
//out=0;
SEND(&WG[0]);
sound(1);
ysms(10000);
//out=1;
}
作者:
heicc
時(shí)間:
2015-1-5 14:10
完成按鍵操作
昨天晚上終于完成了按鍵操作,由于太晚沒上傳,大部分功能已經(jīng)完成,一個(gè)簡(jiǎn)單(功能相對(duì)于專業(yè)門禁來說簡(jiǎn)單,制作對(duì)我來說相當(dāng)復(fù)雜,但也是體現(xiàn)我的單片機(jī)和電子技術(shù)水平又有提高)的門禁可以使用了,目前的功能有:讀卡開門,密碼開門,加卡,刪卡,更改密碼,系統(tǒng)初始化。后期要加上:遠(yuǎn)程控制開門,加卡,刪卡,監(jiān)控等。下面是程序:
/*////////////////////////////////////
函數(shù)原型:void psw(void)
函數(shù)說明:密碼寫入EEPROM中
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void psw(void)
{
uchar a=0,b=2,c,d,x=0;
timer=0;
while(1)
{
c=key();
if(c==12)
{
sound(1);
break;
}
if(ex==1)
{
sound(1);
ex=0;
break;
}
if(c!=0)
{
if(a<6)
{
keybuff[a]=c;
a++;
if(a==6)sound(2);
}
else if(a>6,a<13)
{
if(c!=keybuff[x])
{
sound(20);
x=0;
a=0;
break;
}
a++;
x++;
if(a==12)
{
a=0;
x=0;
b=2;
for(d=0;d<6;d++)
{
wt24c(b,keybuff[d]);
ys100us(1000);
b++;
}
SEND(&keybuff[0]);
break;
}
}
}
}
}
/*////////////////////////////////////
函數(shù)原型:bit keyscan(void)
函數(shù)說明:鍵盤操作掃描
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
bit keyscan(void)
{
uchar a=1,c,d;
scan=key();
if(scan!=0)
{
if(scan!=11)
{
d=scan;
timer=0;
keybuff[0]=scan;
scan=0;
while(1)
{
if(d==12)
{
sound(1);
break;
}
c=key();
if(c==12)
{
sound(1);
break;
}
else if(ex==1)
{
sound(1);
ex=0;
break;
}
else if(c!=0)
{
keybuff[a]=c;
a++;
if(a==6)
{
a=0;
SEND(&keybuff[0]);
return 1;
break;
}
}
}
}
}
return 0;
}
/*////////////////////////////////////
函數(shù)原型:void password(void)
函數(shù)說明:確認(rèn)密碼
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
bit password(void)
{
uchar a,b;
if(keyscan())
{
b=2;
for(a=0;a<6;a++)
{
if(keybuff[a]!=rd24c(b))
{
break;
}
b++;
if(b==8)return 1;
}
if(b!=8)
{
sound(5);
// LED=0;
return 0;
}
}
}
/*////////////////////////////////////
函數(shù)原型:void systeminit(void)
函數(shù)說明:系統(tǒng)初始化
版本:V1.0.0
程序員:LIY12586
////////////////////////////////////*/
void systeminit(void)
{
uchar a;
wt24c(0,0x02);
ys100us(1000);
wt24c(1,0xab);
ys100us(1000);
wt24c(2,0x01);
ys100us(1000);
wt24c(3,0x02);
ys100us(1000);
wt24c(4,0x03);
ys100us(1000);
wt24c(5,0x04);
ys100us(1000);
wt24c(6,0x05);
ys100us(1000);
wt24c(7,0x06);
ys100us(1000);
for(a=8;a<128;a++)
{
if(rd24c(a)!=0xff)
{
//ysms(100)
wt24c(a,0xff);
ys100us(1000);
}
}
sound(5);
}
復(fù)制代碼
作者:
塵世精靈
時(shí)間:
2015-1-20 22:42
xuexixia ding
作者:
huzi
時(shí)間:
2015-5-14 21:45
樓主你好!。∽霎厴I(yè)設(shè)計(jì),,,需要這樣的,,,系統(tǒng),,,求分享,,,proteus圖等,,,謝謝。
1138279190@QQ.com
作者:
yzl
時(shí)間:
2015-6-10 06:34
單片機(jī)是怎樣看門把關(guān)的能教教別人嗎
作者:
清唱96
時(shí)間:
2015-9-26 14:04
樓主你好 求分享proteus圖 硬軟件設(shè)計(jì) 萬分感謝 謝謝,謝謝
364640663@qq.com
作者:
great058
時(shí)間:
2017-5-29 22:27
你好!能不能把門禁的代碼給我參考一下?
作者:
great058
時(shí)間:
2017-5-29 22:28
你好!能不能把門禁的代碼給我參考一下?
liuwei058@163.com
作者:
harly2200
時(shí)間:
2017-12-17 23:58
做個(gè)記號(hào),以后學(xué)習(xí)使用 謝謝樓主
作者:
tieq1952
時(shí)間:
2017-12-19 15:05
等待分享樓主的成果
作者:
zdmjjp
時(shí)間:
2018-10-6 20:00
想學(xué)習(xí)一下,請(qǐng)多幫助,謝謝!
作者:
鳳的情緒
時(shí)間:
2018-11-30 22:59
好強(qiáng)呀,有實(shí)物圖嗎樓主?
作者:
cancan1993
時(shí)間:
2020-1-12 23:54
大師就是牛x
作者:
赤子之心
時(shí)間:
2020-4-5 22:11
樓主你好 求分享軟、硬件設(shè)計(jì) 萬分感謝 謝謝,謝謝
739004020@qq.com
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1