freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c語言stc89c52單片機電子密碼鎖設(shè)計與仿真(編輯修改稿)

2025-07-20 01:35 本頁面
 

【文章內(nèi)容簡介】 如上矩陣按鍵圖。當(dāng)3好鍵被按下時,與此相連的行線電平將有與此鍵相連的列線電平?jīng)Q定,而行線電平在無按鍵按下時處于高電平狀態(tài)。如果所有的列線都處于高電平狀態(tài),那么按鍵是否按下,不會引起行線電平狀態(tài)的變化,行線始終為高電平。所以,讓所有的列線處于高電平是沒有辦法識別按鍵的。現(xiàn)在反過來,讓所有的列線處于低電平,很明顯,按鍵所在行電平將被接成低電平,根據(jù)此行電平的變化,便能判斷此行一定有鍵按下。但不能確定按下的鍵是3,因為,如果是將1或0之一按下,也會產(chǎn)生相同的結(jié)果。所以,讓所有列線處于低電平只能得出某行有鍵被按下的結(jié)論。為了進一步判斷到底是哪一列的鍵被按下,可在某一時刻只讓一條列線處于低電平,而其余所有列線都處于高電平狀態(tài)。當(dāng)?shù)谝涣袨榈碗娖?,其余的各列都為高電平時,因為是3鍵被按下,所以第1行仍處于高電平狀態(tài);當(dāng)?shù)?列為低電平,其余的各列為高電平時,同樣發(fā)現(xiàn)第1行仍處于高電平狀態(tài)。直到讓第4列為低電平時因為是3號鍵被按下,所以第1行的電平將由高電平轉(zhuǎn)換到第4列所處的低電平,因此,確定第1行第4列交叉點處的鍵即3號鍵被按下。傳統(tǒng)的單片機外圍電路擴展通常使用并行方式,即單片機與外圍電路器件用8根數(shù)據(jù)線進行數(shù)據(jù)交換,再加上一些地址、控制線,占用了單片機大量的引腳,這往往不能接受。C總線[9]是一種用于IC之間連接的總線。它通過SDA和SCL兩根線與連接到總線上的器件之間傳送信息??偩€上每個節(jié)點都有一個固定的節(jié)點地址,根據(jù)地址識別每個器件,可以方便地構(gòu)成多機系統(tǒng)和外圍電路的擴展。它的傳輸速率為100kb/ s總線的驅(qū)動能力為400pF. C總線工作原理C總線進行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。 起始和終止信號 :SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。數(shù)據(jù)傳送格式:每一個字節(jié)必須保證是8位長度。數(shù)據(jù)傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。如果一段時間內(nèi)沒有收到從機的應(yīng)答信號,則自動認(rèn)為從機已正確接收到數(shù)據(jù)。 EEPROM AT24C021.AT24C02引腳功能AT24C02引腳各引腳功能:1,2,3(A0、AA2)——可編程地址輸入端。4(GND)——電源地。5(SDA)——串行數(shù)據(jù)輸入/輸出端。6(SCL)——串行時鐘輸入端。7(WP)——寫保護輸入端,用于硬件數(shù)據(jù)保護。該引腳為低電平時,可以對整個存儲器進行正常的讀和寫操作;當(dāng)為高電平時,存儲器只有讀操作功能,不能對改存儲器進行寫操作。8(Vcc)——電源正端。存儲結(jié)構(gòu)與尋址 AT24C02的存儲器容量為2KB,內(nèi)部分為32頁,每頁8B,操作時有兩種尋址方式:芯片尋址和片內(nèi)子地址尋址。(1) 芯片尋址。AT24C02的芯片地址為1010,其他的控制字格式為1010A2A1A0R/。其中A2,A1,A0為可編程地址選擇位。A2,A1,A0引腳接高、低電平后得到確定的三位編碼,與1010形成7位編碼。R/為芯片讀寫控制位,該位為0,表示對芯片進行寫操作;該位為1表示對芯片進行讀操作。(2) 片內(nèi)子地址尋址。芯片尋址可對內(nèi)部256B中的任意一個進行讀寫操作。4 程序分析include define uchar unsigned char //宏定義define uint unsigned intuchar code table[]=WELCOME 。uchar data table1[]=PUT IN CODES 。 uchar data table3[]=STE CODES 。void write_(uchar)。 uchar a0,a1,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5。sbit p1_4=P1^4。 //位聲明sbit p1_3=P1^3。sbit RS=P2^4。 sbit RW=P2^5。 sbit sda=P1^2。sbit scl=P1^1。sbit wp=P1^0。sbit E=P2^6。char count1=0。uint numb,i。 //定義uchar number, a,j,m,k,time=0。/*******************函數(shù)聲明**************************/void delay(uint)。 void write_dat(uchar)。uchar keyscan(void)。int consure()。int besure()。/**************eeprom函數(shù)聲明************************/void delay1()。void start()。void stop()。void respons() 。void init()。void write_byte(uchar date)。uchar read_byte()。uchar read_add(uchar address)。void write_add(uchar address,uchar date)。void delay2(uchar x)。/********************主函數(shù)*************************/ void main() { uint key,ket,kot。 int i。 init()。loop://返回位置/*******************eeprom讀取************************/b0=read_add(1)。delay2(100)。b1=read_add(11)。delay2(100)。b2=read_add(21)。delay2(100)。b3=read_add(31)。delay2(100)。b4=read_add(41)。delay2(100)。b5=read_add(51)。delay2(100)。 i=0。P1=0xff。EA=0。 //關(guān)閉總中斷ET0=0。//關(guān)閉定時器中斷0TR0=0。//關(guān)閉定時器0if(time==3) p1_3=0。/****************寫命令*****************************/ write_(0x38)。//設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)接口 write_(0x09)。 //開顯示并光標(biāo)閃爍 write_(0x0c)。//開顯示光標(biāo)不顯示并光標(biāo)不閃爍 write_(0x01)。//清零 write_(0x80+0x05)。 for(number=0。number7。number++) { write_dat(table[number])。 delay(10)。 } while(1) { key=keyscan()。//調(diào)用鍵盤掃描 /******************密碼控制*****************************/ if(key==0xe7) { write_(0x80+0x42)。 for(number=0。number16。number++) { write_dat(table1[number])。 delay(5)。 } delay(3000)。 key=keyscan()。 if(key!=0xe7) { write_(0x38)。//設(shè)置16*2顯示,5*7點陣 write_(0x09)。 //開顯示并光標(biāo)閃爍 write_(0x0c)。//開顯示光標(biāo)不顯示并光標(biāo)不閃爍 //write_(0x80)。 write_(0x01)。//顯示清屏 */ /**************初始化中斷系統(tǒng)*********************/ TMOD=0x00。//設(shè)置定時器0為工作方式0(00000000) TH0=(81924607)/32。 TL0=(81924607)%32。//賦初值 EA=1。 //開總中斷 ET0=1。//開定時器中斷0
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1