-
基于單片機的紅外門進控制系統(tǒng)設計與制作:我們所做的創(chuàng)新實驗項目“基于單片機的紅外門控系統(tǒng)”已基本完成,現(xiàn)將其工作原理簡要說明。該系統(tǒng)主要分為兩大部分:一是紅外傳感器部分。二是單片機計數(shù)顯示控制部分。基本電路圖如下:其中紅外傳感器部分我們采用紅外對管實現(xiàn),紅外對管平行放置,平常處于接收狀態(tài),經(jīng)比較器輸出低電平,當有人經(jīng)過時,紅外線被擋住,接收管接收不到紅外線,經(jīng)比較器輸出高電平。這樣,當有人經(jīng)過時便會產(chǎn)生一個電平的跳變。單片機控制部分主要是通過外部兩個中斷判斷是否有人經(jīng)過,如果有人經(jīng)過,由于電平跳變的產(chǎn)生,進入中斷服務程序,這里我們采用了兩對紅外傳感器接到兩個外部中斷口,中斷0作為入口,實現(xiàn)加1操作,中斷1作為出口,實現(xiàn)減1操作。另外,我們通過P0口控制室內(nèi)燈的亮暗,當寄存器計數(shù)值為0時,熄燈,不為0時,燈亮。顯示部分,采用兩位數(shù)碼管動態(tài)顯示,如有必要,可以很方便的擴展為四位計數(shù)。精益求精!在實驗過程中,我們走了非常多的彎路,做出來的東西根本不是自己想要的,我們本想做成室內(nèi)只有一個門的進出計數(shù),原理已清楚,即在門的兩邊放置兩對紅外對管,進出時,擋住兩對對管的順序不同,因此,可判斷是進入還是出去,從而實現(xiàn)加減計數(shù),編程時,可分別在兩個中斷服務程序的入口置標志位,根據(jù)標志位判斷進出,詳細內(nèi)容在程序部分。理論如此,但在實際過程中,還是發(fā)現(xiàn)實現(xiàn)不了上述功能,我們初步判定認為是程序掌握得不夠好,相信隨著自己對單片機了解的深入,應該會做出更好的 (因為我們是臨時學的單片機),程序的具體內(nèi)容如下:
$MOD52 ORG 0000H LJMP MAIN ORG 0003H LJMP 0100H ORG 0013H LJMP 0150H ORG 0050HMAIN: CLR A MOV 30H , A ;初始化緩存區(qū) MOV 31H , A MOV 32H , A MOV 33H , A MOV R6 , A MOV R7 , A SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB PX1NEXT1: ACALL HEXTOBCDD ;調(diào)用數(shù)制轉(zhuǎn)換子程序 ACALL DISPLAY ;調(diào)用顯示子程序 LJMP NEXT1
ORG 0100H ;中斷0服務程序 LCALL DELY mov 70h,#2 djnz 70h,next JBC F0,NEXT SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 MOV A , R7 add A , #1 MOV R7, A MOV A , R6 addC A , #0 MOV R6 , A CJNE R6 , #07H , NEXT CLR A MOV R6 , A MOV R7 , ANEXT: RETI ORG 0150H ;中斷1服務程序 LCALL DELY mov 70h,#2 djnz 70h,next2 JBC F0,NEXT2 SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 CLR C MOV A , R7 SUBB A , #1 MOV R7, A MOV A , R6 SUBB A , #0 MOV R6 , A CJNE R6 , #07H , NEXT2 CLR A MOV R6 , A MOV R7 , ANEXT2: RETI
ORG 0200HHEXTOBCDD:MOV A , R6 ;由十六進制轉(zhuǎn)化為十進制 PUSH ACC MOV A , R7 PUSH ACC MOV A , R2 PUSH ACC CLR A MOV R3 , A MOV R4 , A MOV R5 , A MOV R2 , #10HHB3: MOV A , R7 ;將十六進制中最高位移入進位位中 RLC A MOV R7 , A MOV A , R6 RLC A MOV R6 , A MOV A , R5 ;每位數(shù)加上本身相當于將這個數(shù)乘以2 addC A , R5 DA A MOV R5 , A MOV A , R4 addC A , R4 DA A ;十進制調(diào)整 MOV R4 , A MOV A , R3 addC A , R3 DJNZ R2 , HB3 POP ACC MOV R2 , A POP ACC MOV R7 , A POP ACC MOV R6 , A RET ORG 0250HDISPLAY:
MOV R0 , #30H MOV A , R5 ANL A , #0FH MOV @R0 , A MOV A , R5 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV R0 , #30H MOV R2 , #11111110BAGAIN: MOV A , R2 MOV P2 , A MOV A , @R0 MOV DPTR , #TAB MOVC A , @A+DPTR MOV P1 , A ACALL DELAY INC R0 MOV A , R2 RL A MOV R2 , A JB ACC.4 , AGAIN
RETTAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段碼表DELY: MOV R1,#80D1: MOV R2,#100 DJNZ R2,$ DJNZ R1,D1 RET DELAY: MOV TMOD , #01H ;延時子程序 MOV TL0 , #0FEH MOV TH0 , #0FEH SETB TR0WAIT: JNB TF0 , WAIT CLR TF0 CLR TR0 RETDELY0: MOV R1, #200D3: MOV R2,#250 DJNZ R2,$ DJNZ R1,D3 RET END 該系統(tǒng)實際應用廣泛。可用在生產(chǎn)線上產(chǎn)品數(shù)量統(tǒng)計、公交車智能計數(shù)問候(需添加語音芯片)、超市內(nèi)人數(shù)統(tǒng)計等公共場合。另外,添加串口通信部分便可實現(xiàn)與PC數(shù)據(jù)交換的功能。 由于,實驗簡化了,剩下不少零件和資金,所以我們又做了兩項其他的實驗。
標簽:
單片機
紅外
控制系統(tǒng)設計
原理圖
上傳時間:
2013-12-22
上傳用戶:tangsiyun
-
;片內(nèi)RAM初始化子程序
IBCLR :MOV A,R0 MOV R1,A CLR AIBC1 :MOV @R1,A INC R1 DJNZ R7,IBC1 RET
;片外RAM初始化子程序
EBCLR1 :MOV A,addPL MOV DPL,A MOV A,addPH MOV DPH,A CLR CEBC11 :MOVX @DPTR,A INC DPTR DJNZ R7,EBC11 RET
;片外RAM初始化子程序(雙字節(jié)個單元)
EBCLR2 :MOV A,addPL MOV DPL,A MOV A,addPH MOV DPH,A MOV A,R7 JZ EBC21 INC R6EBC21 :CLR A MOVX @DPTR,A INC DPTR DJNZ R7,EBC21 DJNZ R6,EBC21 RET
;內(nèi)部RAM數(shù)據(jù)復制程序;入口 :R0,R7;占用資源:A;堆棧需求:2字節(jié);出口 :R1
IBMOV :MOV A,R0 add A,R7 MOV R0,A MOV A,R1 add A,R7 MOV R1,AIBM1 :DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R7,IBM1 RET
;外部RAM數(shù)據(jù)復制程序;入口 :addPH,addPL,R7;占用資源:ACC;堆棧需求:2字節(jié);出口 :R0,R1
EBMOV1 :MOV A,addPL add A,R7 MOV DPL,A CLR A addC A,addPH MOV DPH,A MOV A,R7 add A,R1 XCH A,R0 addC A,#00H MOV P2,AEBM11 :DEC R0 CJNE R0,#0FFH,EBM12 DEC P2EBM12 :DEC DPL MOV A,DPL CJNE A,#0FFH,EBM13 DEC DPHEBM13 :MOVX A,@R0 MOVX @DPTR,A DJNZ R7,EBM11 RET
;外部RAM數(shù)據(jù)復制程序
標簽:
程序庫
常用程序
上傳時間:
2013-10-30
上傳用戶:bs2005
-
//遙控解碼子程序,LC7461,用戶碼為11C//external interrupt0void isr_4(){
unsigned char r_count;//定義解碼的個數(shù) unsigned long use_data=0;//定義16位的用戶碼,只用到13位 unsigned long use_code=0;//定義16位的用戶反碼,只用到13位 unsigned long data=0;//定義16位數(shù)據(jù)碼,包括8位數(shù)據(jù)碼和反碼 unsigned char data_h=0;//數(shù)據(jù)反碼 unsigned char data_l=0;//數(shù)據(jù)碼 _clrwdt();// _delay(7000);//7461解碼,延時7000// _delay(7000);//7461解碼,延時7000//_delay(7000);//7461解碼,延時7000 if(remote==1) goto error; while(remote==0);//wait to high //_delay(9744);count_delay=0; while(count_delay<143); if(remote==1) goto error; /////用戶碼解碼use_data//////////add////////////////////////// for(r_count=13;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&use_data); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&use_data); } _nop(); //if(remote==1) //_delay(1680);//wait to low while(remote==1);//wait to low _nop(); ////////用戶碼解碼finish/////////add/////////add//////// /////用戶碼反碼解碼use_code//////////add////////////////////////// for(r_count=13;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&use_code); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&use_code); } _nop(); //if(remote==1) // _delay(1680);//wait to low while(remote==1);//wait to low _nop(); ////////用戶碼反碼解碼finish/////////add/////////add//////// ////數(shù)據(jù)碼解碼開始////data_l為用戶碼,data_h為數(shù)據(jù)碼反碼//////////// for(r_count=16;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&data); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&data); } ////數(shù)據(jù)碼解碼結束//////////////////////////////////////////////// data_l=data; data_h=data>>8; ///用戶碼////// use_data>>=3; use_code>>=3; use_code=~use_code; //////// ////如果用戶碼等與0x11c并且數(shù)據(jù)碼和數(shù)據(jù)反碼都校驗一致,解碼成功 //if((~data_h==data_l)&&use_data==0x11c)//使用用戶碼 //跳過用戶碼 if(~data_h==data_l)//如果數(shù)據(jù)碼和數(shù)據(jù)反碼(取反后)相等,解碼正確 { _nop(); r_data=data_l;//r_data為解出的最終數(shù)據(jù)碼 } //否則解碼不成功 _nop(); _nop();error: //r_data=nocode; _nop(); _nop(); _nop();}
標簽:
7461
LC
遙控
解碼
上傳時間:
2014-03-27
上傳用戶:shenlan
-
4位八段數(shù)碼管的十進制加計數(shù)仿真實驗,程序采用匯編語言編寫。此程序在仿真軟件上與EDN-51實驗板上均通過。仿真圖中的數(shù)碼管位驅(qū)動采用74HC04,如按EDN-51板上用想同的PNP三極管驅(qū)動在仿真軟件上則無法正常顯示。程序共分5塊,STAR0為數(shù)據(jù)初始化,STAR2為計數(shù)子程序,STAR3為4位數(shù)碼管動態(tài)顯示子程序,STAR4為按鍵掃描子程序,STS00是延時子程序。由于EDN-51實驗板上沒裝BCD譯碼器,所以編寫程序比較煩瑣。
程序如下:
ORG 0000H LJMP STAR0 ;轉(zhuǎn)程序 SRAR0ORG 0200H ;程序地址 0200HSTAR0: CLR 00 ;位 00 清 0 MOV P1,#0FFH ;#0FFH-->P1 MOV P2,#0FH ;#0FH-->P2 MOV P0,#0FFH ;#0FFH-->P0 MOV 30H,#00H ;#00H-->30H MOV 31H,#00H ;#00H-->30H MOV 32H,#00H ;#00H-->30H MOV 33H,#00H ;#00H-->30H LJMP STAR3 ;轉(zhuǎn)程序 SRAR3STAR2: MOV A,#0AH ;#0AH-->A INC 30H ;30H+1 CJNE A,30H,STJE ;30H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 30H,#00H ;#00H-->30H INC 31H ;31H+1 CJNE A,31H,STJE ;31H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 31H,#00H ;#00H-->31H INC 32H ;32H+1 CJNE A,32H,STJE ;32H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 32H,#00H ;#00H-->32H INC 33H ;33H+1 CJNE A,33H,STJE ;33H 與 A 比較,不等轉(zhuǎn)移 STJE MOV 33H,#00H ;#00H-->33H MOV 32H,#00H ;#00H-->32H MOV 31H,#00H ;#00H-->31H MOV 30H,#00H ;#00H-->30HSTJE: RET ;子程序調(diào)用返回STAR3: MOV R0,#30H ;#30H-->R0 MOV R6,#0F7H ;#0F7H-->R6SMG0: MOV P1,#0FFH ;#0FFH-->P1 MOV A,R6 ;R6-->A MOV P1,A ;A-->P1 RR A ;A向右移一位 MOV R6,A ;A-->R6 MOV A,@R0 ;@R0-->A add A,#04H ;#04H-->A MOVC A,@A+PC ;A+PC--> MOV P0,A ;A-->P0 AJMP SMG1 ;轉(zhuǎn)程序 SMG1SDATA: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H SMG1: LCALL STAR4 ;轉(zhuǎn)子程序 SRAR4 LCALL STS00 ;轉(zhuǎn)子程序 STS00 INC R0 ;R0+1 CJNE R6,#07FH,SMG0 ;#07FH 與 R6 比較,不等轉(zhuǎn)移 SMG0 AJMP STAR3 ;轉(zhuǎn)程序 SRAR3STAR4: JNB P2.0,ST1 ;P2.0=0 轉(zhuǎn) ST1 CLR 00 ;位 00 清 0 SJMP ST3 ;轉(zhuǎn)ST3ST1: JNB 00,ST2 ;位 00=0 轉(zhuǎn) ST2 SJMP ST3 ;轉(zhuǎn) ST3ST2: LCALL STAR2 ;調(diào)子程序 STAR2 SETB 00 ;位 00 置 1ST3: RET ;子程序調(diào)用返回ORG 0100H ;地址 0100HSTS00: MOV 60H,#003H ;#003H-->60H (211)DE001: MOV 61H,#0FFH ;#0FFH-->61H (255)DE002: DJNZ 61H,DE002 ;61H 減 1 不等于 0 轉(zhuǎn) DE002 DJNZ 60H,DE001 ;60H 減 1 不等于 0 轉(zhuǎn) DE001 RET ;子程序調(diào)用返回 END ;結束
上次的程序共有293句,經(jīng)小組成員建議,本人經(jīng)幾天的研究寫了下面的這個程序,現(xiàn)在的程序用了63句,精簡了230句。功能沒有減。如誰有更簡練的程序,請發(fā)上來,大家一起學習。
4位八段數(shù)碼管的十進制加計數(shù)仿真實驗(含電路圖和仿真文件)
標簽:
數(shù)碼管
十進制
仿真實驗
仿真
上傳時間:
2013-10-11
上傳用戶:sssl
-
This application note describes how to retrieve user-defined data from Xilinx configurationPROMs (XC18V00 and Platform Flash devices) after the same PROM has configured theFPGA. The method to add user-defined data to the configuration PROM file is also discussed.The reference design described in this application note can be used in any of the followingXilinx FPGA architectures: Spartan™-II, Spartan-IIE, Spartan-3, Virtex™, Virtex-E, Virtex-II,and Virtex-II Pro.
標簽:
XAPP
PROM
694
讀取
上傳時間:
2013-11-11
上傳用戶:zhouli
-
With the Altera Nios II embedded processor, you as the system designercan accelerate time-critical software algorithms by adding custominstructions to the Nios II processor instruction set. Using custominstructions, you can reduce a complex sequence of standard instructionsto a single instruction implemented in hardware. You can use this featurefor a variety of applications, for example, to optimize software innerloops for digital signal processing (DSP), packet header processing, andcomputation-intensive applications. The Nios II configuration wizard,part of the Quartus® II software’s SOPC Builder, provides a graphicaluser interface (GUI) used to add up to 256 custom instructions to theNios II processor
標簽:
NIOSII
用戶
定制
指令
上傳時間:
2013-11-07
上傳用戶:swing
-
Altium Designer 10是由Altium公司推出的一款開發(fā)軟件,Altium Designer 10綜合了電子產(chǎn)品一體化開發(fā)所需的所有必須技術和功能。Altium Designer 在單一設計環(huán)境中集成板級和FPGA系統(tǒng)設計、基于FPGA和分立處理器的嵌入式軟件開發(fā)以及PCB版圖設計、編輯和制造。并集成了現(xiàn)代設計數(shù)據(jù)管理功能,使得Altium Designer成為電子產(chǎn)品開發(fā)的完整解決方案-一個既滿足當前,也滿足未來開發(fā)需求的解決方案。
Altium Designer10 為您帶來了一個全新的管理元 Altium Designer release 10器件的方法。其中包括新的用途系統(tǒng)、修改管理、新的生命周期和審批制度、實時供應鏈管理等更多的新功能!
Altium Designer 10安裝流程:
安裝完后復制 AD10.Crack 文件夾下文件到安裝目錄。
1.運行AD10KeyGen,點擊“打開模板”,加載license.ini,如想修改注冊名,只需修改:TransactorName=Your Name,其中Your Name用你自己的名字替換,其它參數(shù)在單機版的情況下無需修改;
2.點擊“生成協(xié)議”,保存生成的alf文件(文件名任意,如“jack ”),并將其放到你的安裝目錄下;
3.將patch.exe放到你的安裝目錄下,運行patch,對安裝目錄下的dxp.exe文件補丁,注意運行破解時軟件沒有運行;
4.啟動DXP,運行菜單DXP->My Account,點擊add Standalone License file,加載前面生成的license(.alf)文件后即能正常使用了。
資源是.bin格式的鏡像文件,到網(wǎng)上下一個UltraISO打開后另存為iso或isz格式,用DAEMON Tools Lite虛擬光驅(qū)打開就能安裝了。(或者安裝一個快壓打開)
安裝提醒:
安裝時有兩個路徑選擇,第一個是安裝主程序的;第二個是放置設計樣例、元器件庫文件、模板文件的,共3.3GB。如果你的C盤留的不夠大,建議將3GB多的東西和主程序安裝在一塊兒。
安裝完成后界面可能是英文的,如果想調(diào)出中文界面,則可以:DXP-->Preferences-->System-->General-->Localization--選中Use localized resources,保存設置后重新啟動程序就有中文菜單了。
Altium Designer 10破解方法:
安裝包里已經(jīng)帶有破解文件了,但沒有AD10KeyGen這個文件,所以要把注冊名改成自己的名字不方便。
1.運行AD10KeyGen,點擊“打開模板”,加載license.ini,如想修改注冊名,只需修改:
TransactorName=Your Name
其中Your Name用你自己的名字替換,其它參數(shù)在單機版的情況下無需修改;
2.點擊“生成協(xié)議”,保存生成的alf文件(文件名任意,如“jack ”),并將其放到你的安裝目錄下;
3.將patch.exe放到你的安裝目錄下,運行patch,對安裝目錄下的dxp.exe文件補丁,注意運行破解時軟件沒有運行;
4.啟動DXP,運行菜單DXP->My Account,點擊add Standalone License file,加載前面生成的license(.alf)文件后即能正常使用了。
注意:
1.局域網(wǎng)內(nèi)用同一license不再提示沖突
2.僅供學習研究使用,勿用于非法用途。
相關資料:altium designer 10 破解教程
標簽:
designer
altium
10
破解版
上傳時間:
2013-11-10
上傳用戶:葉立炫95
-
附件為:pdf轉(zhuǎn)cad軟件最新版 PDF Fly V7.1安裝文件。還附有自制的Crack,把我的文件 貼到裝好的目錄下就行了!沒有30天限制。
附pdf轉(zhuǎn)cad軟件使用教程:
1、pdf轉(zhuǎn)cad軟件的界面比較簡單的,如下圖,點擊add添加你要轉(zhuǎn)換的PDF文件,然后下一步
2、選擇DXF格式,然后在右邊的option里面還可以進行相關的設置
3、然后再下一步。step 3頁面只要點最下面的 convert 就可以了
轉(zhuǎn)完以后同樣線條沒有什么大問題的,只是文字肯定是被打碎的,你自己需要刪除后重新輸入要重新輸入。
標簽:
cad
軟件
教程
上傳時間:
2013-10-22
上傳用戶:ardager
-
Nios II定制指令用戶指南:With the Altera Nios II embedded processor, you as the system designer can accelerate time-critical software algorithms by adding custom instructions to the Nios II processor instruction set. Using custom
instructions, you can reduce a complex sequence of standard instructions to a single instruction implemented in hardware. You can use this feature for a variety of applications, for example, to optimize software inner
loops for digital signal processing (DSP), packet header processing, and computation-intensive applications. The Nios II configuration wizard,part of the Quartus® II software’s SOPC Builder, provides a graphical user interface (GUI) used to add up to 256 custom instructions to the Nios II processor.
The custom instruction logic connects directly to the Nios II arithmetic logic unit (ALU) as shown in Figure 1–1.
標簽:
Nios
定制
指令
用戶
上傳時間:
2013-10-12
上傳用戶:kang1923
-
This application note describes how to retrieve user-defined data from Xilinx configurationPROMs (XC18V00 and Platform Flash devices) after the same PROM has configured theFPGA. The method to add user-defined data to the configuration PROM file is also discussed.The reference design described in this application note can be used in any of the followingXilinx FPGA architectures: Spartan™-II, Spartan-IIE, Spartan-3, Virtex™, Virtex-E, Virtex-II,and Virtex-II Pro.
標簽:
XAPP
PROM
694
讀取
上傳時間:
2013-10-09
上傳用戶:guojin_0704