導航:首頁 > 操作系統 > 單片機軟體防盜

單片機軟體防盜

發布時間:2023-01-01 00:36:07

① 求 單片機控制的防盜系統設計

單片機防盜,需要怎麼防盜,這需要說明具體情況,不然無法具體實現功能。
防盜用在哪一個方面等等。
望採納,謝謝!

② 如何防止單片機解密

單片機(MCU)一般都有內部EEPROM/FLASH供用戶存放程序和工作數據。為了防止未經授權訪問或拷貝單片機的機內程序,大部分單片機都帶有加密鎖定位或者加密位元組,以保護片內程序。如果在編程時加密鎖定位被使能(鎖定),就無法用普通編程器直接讀取單片機內的程序,這就叫單片機加密。單片機攻擊者藉助專用設備或者自製設備,利用單片機晶元設計上的漏洞或軟體缺陷,通過多種技術手段,就可以從晶元中提取關鍵信息,獲取單片機內程序這就叫單片機解密。
任何一款單片機從理論上講,攻擊者均可利用足夠的投資和時間使用以上方法來攻破。這是系統設計者應該始終牢記的基本原則。因此,作為電子產品的設計工程師非常有必要了解當前單片機攻擊的最新技術,做到知己知彼,心中有數,才能有效防止自己花費大量金錢和時間辛辛苦苦設計出來的產品被人家一夜之間仿冒的事情發生。我們根據滬生電子的解密實踐提出下面建議:

(1)在選定加密晶元前,要充分調研,了解單片機破解技術的新進展,包括哪些單片機是已經確認可以破解的。盡量不選用已可破解或同系列、同型號的晶元選擇採用新工藝、新結構、上市時間較短的單片機,如可以使用ATMEGA88/ATMEGA88V,這種國內目前破解的費用一需要6K左右,另外目前相對難解密的有ST12系列,DSPPIC等;其他也可以和CPLD結合加密,這樣解密費用很高,解密一般的CPLD也要1萬左右。

(2)盡量不要選用MCS51系列單片機,因為該單片機在國內的普及程度最高,被研究得也最透。

(3)產品的原創者,一般具有產量大的特點,所以可選用比較生僻、偏冷門的單片機來加大仿冒者采購的難度,選用一些生僻的單片機,比如ATTINY2313,AT89C51RD2,AT89C51RC2,motorola單片機等比較難解密的晶元,目前國內會開發使用熟悉motorola單片機的人很少,所以破解的費用也相當高,從3000~3萬左右。

(4)在設計成本許可的條件下,應選用具有硬體自毀功能的智能卡晶元,以有效對付物理攻擊;另外程序設計的時候,加入時間到計時功能,比如使用到1年,自動停止所有功能的運行,這樣會增加破解者的成本。

(5)如果條件許可,可採用兩片不同型號單片機互為備份,相互驗證,從而增加破解成本。

(6)打磨掉晶元型號等信息或者重新印上其它的型號,以假亂真(注意,反面有LOGO的也要抹掉,很多晶元,解密者可以從反面判斷出型號,比如51,WINBOND,MDT等)。
(7)可以利用單片機未公開,未被利用的標志位或單元,作為軟體標志位。
(8)利用MCS-51中A5指令加密,其實世界上所有資料,包括英文資料都沒有講這條指令,其實這是很好的加密指令,A5功能是二位元組空操作指令加密方法在A5後加一個二位元組或三位元組操作碼,因為所有反匯編軟體都不會反匯編A5指令,造成正常程序反匯編亂套,執行程序無問題仿製者就不能改變你的源程序。
(9)你應在程序區寫上你的大名單位開發時間及仿製必究的說法,以備獲得法律保護;另外寫上你的大名的時候,可以是隨機的,也就是說,採用某種演算法,外部不同條件下,你的名字不同,比如wwwhusooncom1011、wwwhusooncn1012等,這樣比較難反匯編修改。
(10)採用高檔的編程器,燒斷內部的部分管腳,還可以採用自製的設備燒斷金線,這個目前國內幾乎不能解密,即使解密,也需要上萬的費用,需要多個母片。
(11)採用保密硅膠(環氧樹脂灌封膠)封住整個電路板,PCB上多一些沒有用途的焊盤,在硅膠中還可以摻雜一些沒有用途的元件,同時把MCU周圍電路的電子元件盡量抹掉型號。
(12)對SyncMos,Winbond單片機,將把要燒錄的文件轉成HEX文件,這樣燒錄到晶元內部的程序空位自動添00,如果你習慣BIN文件,也可以用編程器把空白區域中的FF改成00,這樣一般解密器也就找不到晶元中的空位,也就無法執行以後的解密操作。

當然,要想從根本上防止單片機被解密,那是不可能的,加密技術不斷發展,解密技術也不斷發展,現在不管哪個單片機,只要有人肯出錢去做,基本都可以做出來,只不過代價高低和周期長短的問題,編程者還可以從法律的途徑對自己的開發作出保護(比如專利)。

③ 單片機防盜報警程序

;TC35部分,無法發送超過10000字的回復,郵件和我聯系,把程序通過郵件發給你

;[email protected]

;採用AT89C2051單片機,晶振11.0592MHZ,通訊速率19200,採用TTL串口通訊
;手機號碼緩存在28H-33H的內存中
;簡訊內容緩存在48H-57H的內存中

;簡訊中心的號碼存放在58H-63H的內存中
;密碼"車輛報警"存放在64H-73H的內存中
;手機號碼存放在74H-7F的內存中
;P1.0為手機開關機控制端
;P1.1為串口接收模塊數據OK
;P1.2為解防/設防控制端
;P1.3
;P1.4
;P1.5
;P1.6
;P1.7
;P3.0串列接收端(RXD)
;P3.1串列發射端(TXD)
;P3.2
;P3.3
;P3.4
;P3.5
;P3.7

ORG 0000H
AJMP MAIN;轉入主程序

ORG 0003H ;外部中斷P3.2腳INT0入口地址
NOP
NOP
NOP
NOP
NOP
NOP
RETI
ORG 000BH;中斷陷阱
NOP
NOP
NOP
NOP
NOP
NOP
RETI
ORG 0013H;中斷陷阱
NOP
NOP
NOP
NOP
NOP
NOP
RETI
ORG 001BH;中斷陷阱
NOP
NOP
NOP
NOP
NOP
NOP
RETI
ORG 0023H
NOP
NOP
NOP
NOP
RETI

FOK EQU P1.0;定義為串口接收模塊數據OK
KGJ EQU P1.1;定義手機開關機控制端
SX EQU P1.2;定義手機模塊上線狀態
JSF EQU P1.3;定義解防/設防控制端(解防 0 設防1)
TC EQU P1.4;定義
ZK EQU P1.5;定義中控控制端
;EQU P1.6;定義
KK EQU P1.7;定義
BJ EQU P3.2;定義報警觸發控制端
DY EQU P3.3;定義電源斷線控制端
CM EQU P3.4;定義車門控制端
XL EQU P3.5;定義行李廂
JJ EQU P3.6;定義緊急
DD EQU P3.7;定義低電壓報告

MAIN:

;以下為主程序進行CPU中斷方式設置
SETB IT0 ;設定INT0的觸發方式為脈沖負邊沿觸發
MOV SCON,#50H;設置成串口1方式
MOV TMOD,#20H;波特率發生器T1工作在模式2上
MOV TH1,#0FDH;預置初值(按照波特率9600BPS預置初值)
MOV TL1,#0FDH;預置初值(按照波特率9600BPS預置初值)
SETB TR1;啟動定時器T1
MOV PCON,#10000000B;設定SMOD為1,波特率翻倍!
;以上完成串口19200通訊初始化設置

LCALL YUSJ;開機清除接收短消息手機號碼
CLR KGJ;打開手機
MOV DPTR,#1000;延時1秒
LCALL DELAYXMS;開機延時
SETB KGJ;復位手機控制

;MOV DPTR,#10000;延時10秒
;LCALL DelayXmS;開機延時

LCALL ATEOK;開機發送ATE指令!
LCALL CNMI ;發送(AT+CNMI=1,1,0,0,1),簡訊到達TE
LCALL SCQBDX;調用刪除SIM卡中所有簡訊的子程序

;完成和手機通信握手,和SIM卡刪除所有短消息初始化

START:
LCALL XRDXZX;調用詢問手機SIM卡中簡訊中心號碼子程序
LCALL XRSJ;讀出授權電話號碼及密碼,寫入內存中
LCALL MJCS
LCALL MJCS

CLR SX;模塊上線

;**********************************************
KKS:

JB RI,UARTI;檢測到RI變1就退出
JNB BJ,BAOJIN
JB RI,UARTI;檢測到RI變1就退出
JNB DY,DYBJ
JB RI,UARTI;檢測到RI變1就退出
JNB CM,CMBJ
JB RI,UARTI;檢測到RI變1就退出
JNB XL,XLBJ
JB RI,UARTI;檢測到RI變1就退出
JNB JJ,JJBJ

AJMP KKS

;**********************************************
DYBJ:
LCALL FDYBJ
AJMP KKS

CMBJ:
LCALL FCMBJ
AJMP KKS

XLBJ:
LCALL FXLBJ
AJMP KKS

JJBJ:
LCALL FJJBJ
AJMP KKS

;報警程序
BAOJIN:

LCALL CPAS;調用模塊狀態報告子程序

MOV A,25H
CJNE A,#34H,BAOJIN1;判斷串口數據
AJMP BAOJIN3;如果模塊正在呼出或通話,就退出

BAOJIN1:
LCALL CPAS
MOV A,25H
CJNE A,#34H,BAOJIN2
AJMP BAOJIN3

BAOJIN2:

LCALL ATH;調用串口發送ATH掛機子程序

LCALL PDOK;判斷手機是否回答OK?
JZ BAOJIN2;如果沒有檢測到OK,重復發

LCALL FBJDX

MOV DPTR,#5000;延時5秒
LCALL DelayXmS

LCALL ATD;調用串口發送13906079959子程序

BAOJIN3:
AJMP KKS

;**********************************************
;**********************************************
;進入串口中斷方式接收
UARTI:
CLR RI;清楚串口中斷標志

LCALL PDDA;調用串口接收0D/0A數據子程序

LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#2BH,PDRD;判斷串口數據+PDR
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#43H,EXITT1;判斷串口數據C
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據

;+CMTI: "SM",7簡訊到達存放位置

MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#4DH,EXITT1;判斷串口數據M
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#54H,EXITT1;判斷串口數據T
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#49H,EXITT1;判斷串口數據I
CLR RI;軟體清除串口中斷標記
;檢測到"CMTI"的ASCII碼--------

;跳過7個內存(: "SM",)
MOV R3,#7;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

;簡訊位置,存放在26H中
MOV R0,#26H;數據在內存的存放位置
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A

MOV @R0,A
INC R0;內存單元地址0

;跳過8個內存
MOV R3,#8;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

LCALL DXNR;解析簡訊內容

EXITT1:LJMP EXITT

PDRD:LCALL RING;電話呼入提示

EXITT:
CLR RI;軟體清除串口中斷標記,退出串口中斷

AJMP KKS

;**********************************************
RING:;電話呼入提示

CLR RI;清楚串口中斷標志
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#52H,RING1;判斷串口數據R
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#49H,RING1;判斷串口數據I
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#4EH,RING1;判斷串口數據N
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#47H,RING1;判斷串口數據G
CLR RI;軟體清除串口中斷標記
LCALL PDDA;調用串口接收0D/0A數據子程序

MOV DPTR,#100;延時0.1秒
LCALL DelayXmS

;發送AT+CLCC
LCALL CLCC;調用來電顯示指令子程序

;跳過20個內存(: 1,1,4,0,0,")
MOV R3,#20;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

LCALL DHHM;判斷來電號碼
JZ GJ

;跳過13個內存
MOV R3,#13;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

MOV DPTR,#100;延時0.1秒
LCALL DelayXmS

;檢查是否繼續呼入
;等待第二次RING電話呼入提示

CLR RI;軟體清除串口中斷標記
LCALL PDDXRI;5秒內檢測串口是否有數據返回?
JNC RING1;如果5秒內沒檢查到鈴音,就退出

;震鈴2次後關機,解防/設防
;震鈴5次後進入通話狀態

;跳過8個內存
MOV R3,#8;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

;**********************************************

PDLYT:
;發送AT+CPAS,模塊狀態報告

MOV R2,#30
ZLYKK1:

MOV DPTR,#500;延時0.5秒
LCALL DelayXmS

LCALL CPAS;調用模塊狀態報告子程序
MOV A,25H
CJNE A,#30H,ZL1

AJMP ZLYK;如果沒有檢測到呼入,就進入振鈴遙控

ZL1:
DJNZ R2,ZLYKK1

MOV R2,#15
ZLYKK2:

MOV DPTR,#500;延時0.5秒
LCALL DelayXmS

LCALL CPAS;調用模塊狀態報告子程序
MOV A,25H
CJNE A,#30H,ZL2
AJMP RING2;如果沒有檢測到呼入,就退出
ZL2:

DJNZ R2,ZLYKK2

;**********************************************

LCALL ATA;應答

RING1:AJMP RING2

GJ:
MOV DPTR,#500;延時1秒
LCALL DelayXmS
LCALL ATH;調用串口發送ATH掛機子程序
AJMP RING2

ZLYK:

MOV DPTR,#500;延時0.5秒
LCALL DelayXmS

LCALL CPAS;調用模塊狀態報告子程序
MOV A,25H
CJNE A,#30H,ZLYKK1;如果沒有檢測到呼入,就退出

JB JSF,ZLYK1
SETB JSF;設防
AJMP RING2
ZLYK1:CLR JSF;解防

RING2:

RET
;**********************************************
;**********************************************

DXNR:;信息內容檢測
MOV DPTR,#1000
LCALL DELAYXMS

LCALL CMGR;調用讀簡訊子程序

MOV R3,#42;跳過42個數據
LCALL TGSJ;調用跳過串口數據子程序

LCALL DXJC;檢測電話號碼

JZ DPDSQ;如果電話號碼是默認值,就檢測信息內容

;跳過20個內存(含0 4)
MOV R3,#20;定義接收數據的總長度
LCALL TGSJ;調用接收串口數據子程序

;**********************************************

PDCX:;查詢信息

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#36H,PDJF;判斷串口數據6
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#37H,PDJF;判斷串口數據7
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#45H,PDJF;判斷串口數據E
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#35H,PDJF;判斷串口數據5
CLR RI;軟體清除串口中斷標記

LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#38H,PDJF;判斷串口數據8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#42H,PDJF;判斷串口數據B
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#45H,PDJF;判斷串口數據E
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#32H,PDJF;判斷串口數據2
CLR RI;軟體清除串口中斷標記

MOV R3,#8;跳過8個數據
LCALL TGSJ;調用跳過串口數據子程序

JB JSF,DFASF
LCALL FAJF;調用發送"解防"子程序

AJMP SCC

DFASF:LCALL FASF;調用發送"設防"子程序

AJMP SCC

;**********************************************

DPDSQ:LCALL PDSQ

;**********************************************
;檢測"(解)防",PDU碼--0489E39632
;30 34 38 (39 45 33) 39 36 33 32
PDJF:
MOV DPTR,#1000;延時1秒
LCALL DelayXmS

LCALL CMGR;再次調用讀簡訊子程序

MOV R3,#74;跳過74個數據
LCALL TGSJ;調用跳過串口數據子程序

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#38H,PDSQ;判斷串口數據8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#39H,SHEFAN;判斷串口數據9
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#45H,PDSQ;判斷串口數據E
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#33H,PDSQ;判斷串口數據3
CLR RI;軟體清除串口中斷標記
LCALL FANG;調用(防)接收串口數據子程序
JZ SC
CLR JSF;解防
AJMP SCC

;**********************************************

;檢測"(設)防",PDU碼--048BBE9632
;30 34 38 (42 42 45) 39 36 33 32
SHEFAN:;(設)
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#42H,PDSQ;判斷串口數據B
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#42H,PDSQ;判斷串口數據B
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,#45H,PDSQ;判斷串口數據E
CLR RI;軟體清除串口中斷標記
LCALL FANG;調用(防)接收串口數據子程序
JZ SC
SETB JSF;設防
SC:AJMP SCC

;**********************************************

;**********************************************

PDSQ:;簡訊授權檢測
;如果電話號碼不是默認值,就檢測信息內容

MOV DPTR,#1000
LCALL DelayXmS

LCALL CMGR;再次調用讀簡訊子程序

MOV R3,#74;跳過74個數據
LCALL TGSJ;調用跳過串口數據子程序

;校驗存放在64H-73H的內存中密碼"車輛報警"

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,64H,SC;判斷串口數據8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,65H,SC;判斷串口數據F
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,66H,SC;判斷串口數據 6
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,67H,SC;判斷串口數據 6

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,68H,SC;判斷串口數據8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,69H,SC;判斷串口數據F
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6AH,SC;判斷串口數據 8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6BH,SC;判斷串口數據 6

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6CH,SCC;判斷串口數據 6
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6DH,SCC;判斷串口數據2
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6EH,SCC;判斷串口數據A
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,6FH,SCC;判斷串口數據 5

CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,70H,SCC;判斷串口數據 8
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,71H,SCC;判斷串口數據B
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,72H,SCC;判斷串口數據6
CLR RI;軟體清除串口中斷標記
LCALL PDRI;等待下一個串口數據
MOV A,SBUF;將串口寄存器中接收到的數據給A
CJNE A,73H,SCC;判斷串口數據 6

④ 基於單片機防盜報警系統的設計的畢業論文

第1章 緒 論
隨著經濟的發展,人們對防盜、防劫、防火保安設備的需求量大大增加。針對偷盜、搶劫、火災、煤氣泄漏等事故進行檢測和報警的系統,其需求也越來越高。本設計運用單片機技術設計了一新穎紅外線防盜報警器。而本設計中的輸入部分主要是各種各樣的感測器。不同類型的探測器用不同的手段探測各種入侵行為;不同作用的感測器,也可檢測出不同類型的情況。
本章節主要介紹了本設計的選題背景、課題介紹、本文主要工作、方案論證。
1.1選題背景
單片機現在已越來越廣泛地應用於智能儀表、工業控制、日常生活等很多領域,可以說單片機的應用已滲透到人類的生活、工作的每一個角落,這說明它和我們每個人的工作、生活密切相關,也說明我們每個人都有可能和有機會利用單片機去改造你身邊的儀器、產品、工作與生活環境。
紅外技術已經成為先進科學技術的重要組成部分,他在各領域都得到廣泛的應用。由於他是不可見光,因此用他做防盜報警監控器,具有良好的隱蔽性,白天黑夜均可使用,而且抗干擾能力強。這種監控報警裝置廣泛應用與博物館、單位要害部門和家庭的防護[1]。
通常紅外線發射電路都是採用脈沖調制式。紅外接收電路首先將接收到的紅外光轉換為電信號,並進行放大和解調出用於無線發射電路的調制信號。當無人遮擋紅外光時,鎖相環輸出低電平,報警處於監控狀態;一旦有人闖入便遮擋了紅外光,則鎖相環失鎖,輸出高電平,驅動繼電器接通無線發射電路,監控室便可接收到無線報警信號,並可區分報警地點[2]。
當我們考慮的范圍廣一點:若是在小區每一住戶內安裝防盜報警裝置。當住戶家中無人時,可把家庭內的防盜報警系統設置為布防狀態,當竊賊闖入時,報警系統自動發出警報並向小區安保中心報警[3]。周界報警系統:在小區的圍牆上設置主動紅外對射式探測器,防止罪犯由圍牆翻入小區作案,保證小區內居民的生活安全[4]。

目 錄
第1章 緒 論 3
1.1選題背景 3
1.2課題介紹 4
1.3本文主要工作 5
1.4方案選擇論證 5
1.4.1單片機的選擇 5
1.4.2顯示器工作原理及其選擇 6
1.4.3液晶顯示和數碼顯示 6
1.4.4 防盜報警選擇感測器的選擇 7
2.1硬體系統總體設計 8
2.2 AT89C51晶元的介紹 9
2.2.1引腳功能 9
2.2.2 結構原理 11
2.2.3 AT89C51定時器/計數器相關的控制寄存器介紹 12
2.2.4 MAX708晶元介紹 13
2.3 單片機復位設置 14
2.4 8255A晶元介紹 14
2.4.1 8255A的引腳和結構 15
2.4.2 8255的工作方式 16
2.4.3 8255的控制字 18
2.5 AT89C51與8255的介面電路 19
2.6 顯示部分 20
2.6.1七段顯示解碼器 20
2.6.2 7448解碼驅動 21
2.6.3 單片機與7448解碼驅動器及LED的連接 23
2.6.4外部地址鎖存器 23
第3章 檢測信號放大電路設計 24
3.1 熱釋紅外線感測器典型電路 25
3.2 紅外光敏二極體警燈電路 26
3.2.1 光敏二極體控制電路 27
3.3紅外線探測信號放大電路設計 28
3.3.1光電耦合器驅動介面 30
3.3.2 集成電路運算放大器 31
3.3.3 精密多功能運算放大器INA105 31
3.3.4 低功耗、雙運算放大器LM358 34
第4章 電源設計 35
4.1 單片機系統電源 35
4.2檢測部分電源 35
5.1 主程序設計 37
5.2 核對子程序設計 38
5.3 中斷子程序設計 38
5.4 讀數子程序設計 39
5.5 程序設計說明 40
5.6 程序清單 41
第6章 調試 45
6.1安裝調試 45
6.2音響(和繼電器)驅動線路具體連接 45
6.3 程序修改 46
6.4 程序執行過程 47
結論 48
參考文獻 49
致謝 51
原理圖 52

基於單片機控制的紅外防盜報警器的設計

[摘要]:隨著社會的不斷進步和科學技術、經濟的不斷發展,人們生活水
平得到很大的提高,對私有財產的保護意識在不斷的增強,因而對防盜措施提
出了新的要求。 本設計就是為了滿足現代住宅防盜的需要而設計的家庭式電子
防盜系統。
目前市面上裝備主要有壓力觸發式防盜報警器、開關電子防盜報警器和壓力遮光觸發式防盜報警器等各種報警器,但這幾種比較常見的報警器都存在一些缺點。本系統採用了熱釋電紅外感測器,它的製作簡單、成本低,安裝比較方便,而且防盜性能比較穩定,抗干擾能力強、靈敏度高、安全可靠。這種防盜器安裝隱蔽,不易被盜賊發現。同時它的信號經過單片機系統處理後方便和PC機通信,便於多用戶統一管理。
本設計包括硬體和軟體設計兩個部分。硬體部分包括單片機控制電路、紅外探頭電路、驅動執行報警電路、LED控制電路等部分組成。處理器採用51系列單片機AT89S51。整個系統是在系統軟體控制下工作的。系統程序可以劃分為以下幾個模塊: 數據採集、鍵盤控制、報警和顯示等子函數。

[關鍵詞]:單片機、紅外感測器、數據採集、報警電路。

Infrared burglar alarm design controls which based
on the monolithicintegrated circuit
Abstract :Along with society's unceasing progress and science and technology,economical unceasing development, the people living standard obtainsthe very big enhancement, to private property protection consciousnessin unceasing enhancement, thus set the new request to the securitymeasure. This design is for satisfy the family type electron securitysystem which the modern housing security needs to design.
At present in the market condition equips mainly has the pressure totouch the hair style burglar alarm, the switch electron burglar alarmand the pressure shields light the hair style burglar alarmand so on each kind of alarm apparatus, but these kind of quite commonalarm apparatuses all have some shortcomings. This system used hashotly released the electricity infrared sensor, its manufacturesimple, cost low, installm the antijamming ability strong, thesensitivity high, safe was reliable. This kind of security installmenthiding, was not easily discovered by the bandits and thieves.Simultaneously its signal after monolithic integrated circuit systemprocessing the convenience and P the C machine correspondence, isadvantageous for the multiuser unification management.
This design designs two parts including the hardware and software. Thehardware partially including the monolithic integrated circuit controlcircuit, infrared pokes head in the electric circuit, the actuationexecution alarm circuit, the LED control circuit and so on the partialcompositions. The processor uses 51 series monolithic integratedcircuits AT89S51, the overall system is works under the systemsoftware control. The system program may divide into following severalmoles: The data acquisition, the keyboard control, reports to thepolice with the demonstration small steelyard function.

Key words: AT89S51 monolithic integrated circuit, infrared sensor,data acquisition, alarm circuit.

目 錄
1. 緒論 1 1.1 前言 1

1.2 設計任務與要求 1
2. 熱釋電紅外感測器概述 2
2.1 PIR感測器簡單介紹 2
2.2 PIR 的原理特性 2
2.3 PIR 結構特性 3
3. AT89S51單片機概述 6
3.1 AT89S51單片機的結構 6
3.1.1管腳說明 8
3.1.2 主要特性 11
3.1.3 振盪器特性 11
3.2 AT89S51單片機的工作周期 12
3.3 AT89S51單片機的工作過程和工作方式 13
3.4 AT89S51的指令系統 16
4. 方案設計 18
4.1 系統概述 18
4.2 總體設計 19
4.3 系統硬體選擇 19
4.4 硬體電路實現 20
4.5 軟體的程序實現 21
5. 結論概述 27
5.1 主要結論 27
5.2 結束語 27
致謝 28
參考文獻 29

⑤ 單片機原理的加密方法

科研成果保護是每一個科研人員最關心的事情,加密方法有軟體加密,硬體加密,軟硬體綜合加密,時間加密,錯誤引導加密,專利保護等措施有矛就有盾,有盾就有矛,有矛有盾,才促進矛盾質量水平的提高加密只講盾,也希望網友提供更新的加密思路,現先講一個軟體加密:利用MCS-51 中A5 指令加密,其實世界上所有資料,包括英文資料都沒有講這條指令,其實這是很好的加密指令A5 功能是二位元組空操作指令加密方法在A5 後加一個二位元組或三位元組操作碼,因為所有反匯編軟體都不會反匯編A5 指令,造成正常程序反匯編亂套,執行程序無問題仿製者就不能改變你的源程序。
硬體加密:8031/8052單片機就是8031/8052掩模產品中的不合格產品,內部有ROM,可以把8031/8052 當8751/8752 來用,再擴展外部程序器,然後調用8031 內部子程序當然你所選的同批8031晶元的首地址及所需用的中斷入口均應轉到外部程序區。
硬體加密
用高電壓或激光燒斷某條引腳,使其讀不到內部程序,用高電壓會造成一些器件損壞重要RAM 數據採用電池(大電容,街機採用的辦法)保護,拔出晶元數據失去機器不能起動,或能初始化,但不能運行。
用真假方法加密
擦除晶元標識
把8X52單片機,標成8X51 單片機,並用到後128B的RAM 等方法,把AT90S8252 當AT89C52,初始化後程序段中並用到EEPROM 內容,你再去聯想吧!
用激光(或絲印)打上其它標識如有的單片機引腳兼容,有的又不是同一種單片機,可張冠李戴,只能意會了,這要求你知識面廣一點 。
用最新出廠編號的單片機,如2000 年後的AT89C 就難解密,或新的單片機品種,如AVR 單片機。
DIP 封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定製ASIC,或軟封裝,用不需外晶振的單片機工作(如AVR 單片機中的AT90S1200),使用更復雜的單片機,FPGA+AVR+SRAM=AT40K系列。
硬體加密與軟體加密只是為敘說方便而分開來講,其實它們是分不開的,互相支撐,互相依存的軟體加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以………….....
利用單片機未公開,未被利用的標志位或單元,作為軟體標志位,如8031/8051有一個用戶標志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二位元組或三位元組操作碼,在無程序的空單元也加上程序機器碼,最好要加巧妙一點用大容量晶元,用市場上模擬器不能模擬的晶元,如內部程序為64KB 或大於64KB 的器件,如:AVR 單片機中ATmega103 的Flash 程序存儲器為128KBAT89S8252/AT89S53中有EEPROM,關鍵數據存放在EEPROM 中,或程序初始化時把密碼寫到EEPROM 中,程序執行時再查密碼正確與否,盡量不讓人家讀懂程序。關於單片機加密,講到這里,就算拋磚引玉。

⑥ 單片機系統軟體抗干擾方法

在提高硬體系統抗干擾能力的同時 軟體抗干擾以其設計靈活 節省硬體資源 可靠性好越來越受到重視 下面以MCS 單片機系統為例 對微機系統軟體抗干擾方法進行研究

軟體抗干擾方法的研究

在工程實踐中 軟體抗干擾研究的內容主要是 一 消除模擬輸入信號的嗓聲(如數字濾波技術) 二 程序運行混亂時使程序重入正軌的方法 本文針對後者提出了幾種有效的軟體抗干擾方法

指令冗餘

CPU取指令過程是先取操作碼 再取操作數 當PC受干擾出現錯誤 程序便脫離正常軌道 亂飛 當亂飛到某雙位元組指令 若取指令時刻落在操作數上 誤將操作數當作操作碼 程序將出錯 若 飛 到了三位元組指令 出錯機率更大

在關鍵地方人為插入一些單位元組指令 或將有效單位元組指令重寫稱為指令冗餘 通常是在雙位元組指令和三位元組指令後插入兩個位元組以上的NOP 這樣即使亂飛程序飛到操作數上 由於空操作指令NOP的存在 避免了後面的指令被當作操作數執行 程序自動納入正軌

此外 對系統流向起重要作用的指令如RET RETI LCALL LJMP JC等指令之前插入兩條NOP 也可將亂飛程序納入正軌 確保這些重要指令的執行

攔截技術

所謂攔截 是指將亂飛的程序引向指定位置 再進行出錯處理 通常用軟體陷阱來攔截亂飛的程序 因此先要合理設計陷阱 其次要將陷阱安排在適當的位置

軟體陷阱的設計

當亂飛程序進入非程序區 冗餘指令便無法起作用 通過軟體陷阱 攔截亂飛程序 將其引向指定位置 再進行出錯處理 軟體陷阱是指用來將捕獲的亂飛程序引向復位入口地址 H的指令 通常在EPROM中非程序區填入以下指令作為軟體陷阱

NOP

NOP

LJMP H

其機器碼為

陷阱的安排

通常在程序中未使用的EPROM空間填 最後一條應填入 當亂飛程序落到此區 即可自動入軌 在用戶程序區各模塊之間的空餘單元也可填入陷阱指令 當使用的中斷因干擾而開放時 在對應的中斷服務程序中設置軟體陷阱 能及時捕獲錯誤的中斷 如某應用系統雖未用到外部中斷 外部中斷 的中斷服務程序可為如下形式

NOP

NOP

RETI

返回指令可用 RETI 也可用 LJMP H 如果故障診斷程序與系統自恢復程序的設計可靠 完善 用 LJMP H 作返回指令可直接進入故障診斷程序 盡早地處理故障並恢復程序的運行

考慮到程序存貯器的容量 軟體陷阱一般 K空間有 個就可以進行有效攔截

軟體 看門狗 技術

若失控的程序進入 死循環 通常採用 看門狗 技術使程序脫離 死循環 通過不斷檢測程序循環運行時間 若發現程序循環時間超過最大循環運行時間 則認為系統陷入 死循環 需進行出錯處理

看門狗 技術可由硬體實現 也可由軟體實現 在工業應用中 嚴重的干擾有時會破壞中斷方式控制字 關閉中斷 則系統無法定時 喂狗 硬體看門狗電路失效 而軟體看門狗可有效地解決這類問題

筆者在實際應用中 採用環形中斷監視系統 用定時器T 監視定時器T 用定時器T 監視主程序 主程序監視定時器T 採用這種環形結構的軟體 看門狗 具有良好的抗干擾性能 大大提高了系統可靠性 對於需經常使用T 定時器進行串口通訊的測控系統 則定時器T 不能進行中斷 可改由串口中斷進行監控(如果用的是MCS 系列單片機 也可用T 代替T 進行監視) 這種軟體 看門狗 監視原理是 在主程序 T 中斷服務程序 T 中斷服務程序中各設一運行觀測變數 假設為MWatch T Watch T Watch 主程序每循環一次 MWatch加1 同樣T T 中斷服務程序執行一次 T Watch T Watch加1 在T 中斷服務程序中通過檢測T Watch的變化情況判定T 運行是否正常 在T 中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行 在主程序中通過檢測T Watch的變化情況判別T 是否正常工作 若檢測到某觀測變數變化不正常 比如應當加 而未加 則轉到出錯處理程序作排除故障處理 當然 對主程序最大循環周期 定時器T 和T 定時周期應予以全盤合理考慮 限於篇幅不贅述

系統故障處理 自恢復程序的設計

單片機系統因干擾復位或掉電後復位均屬非正常復位 應進行故障診斷並能自動恢復非正常復位前的狀態

非正常復位的識別

程序的執行總是從 H開始 導致程序從 H開始執行有四種可能 一 系統開機上電復位 二 軟體故障復位 三 看門狗超時未喂狗硬體復位 四 任務正在執行中掉電後來電復位 四種情況中除第一種情況外均屬非正常復位 需加以識別

硬體復位與軟體復位的識別

此處硬體復位指開機復位與看門狗復位 硬體復位對寄存器有影響 如復位後PC= H SP= H PSW= H等 而軟體復位則對SP SPW無影響 故對於微機測控系統 當程序正常運行時 將SP設置地址大於 H 或者將PSW的第 位用戶標志位在系統正常運行時設為 那麼系統復位時只需檢測PSW 標志位或SP值便可判此是否硬體復位 圖 是採用PSW 作上電標志位判別硬 軟體復位的程序流程圖

圖 硬 軟體復位識別流程圖

此外 由於硬體復位時片內RAM狀態是隨機的 而軟體復位片內RAM則可保持復位前狀態 因此可選取片內某一個或兩個單元作為上電標志 設 H用來做上電標志 上電標志字為 H 若系統復位後 H單元內容不等於 H 則認為是硬體復位 否則認為是軟體復位 轉向出錯處理 若用兩個單元作上電標志 則這種判別方法的可靠性更高

開機復位與看門狗故障復位的識別

開機復位與看門狗故障復位因同屬硬體復位 所以要想予以正確識別 一般要藉助非易失性RAM或者EEROM 當系統正常運行時 設置一可掉電保護的觀測單元 當系統正常運行時 在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH) 而在主程中將該單元清零 因觀測單元掉電可保護 則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位

正常開機復位與非正常開機復位的識別

識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位 對於過程式控制制系統尤為重要 如某以時間為控制標準的測控系統 完成一次測控任務需 小時 在已執行測控 分鍾的情況下 系統電壓異常引起復位 此時若系統復位後又從頭開始進行測控則會造成不必要的時間消耗 因此可通過一監測單元對當前系統的運行狀態 系統時間予以監控 將控制過程分解為若干步或若干時間段 每執行完一步或每運行一個時間段則對監測單元置為關機允許值 不同的任務或任務的不同階段有不同的值 若系統正在進行測控任務或正在執某時間段 則將監測單元置為非正常關機值 那麼系統復位後可據此單元判系統原來的運行狀態 並跳到出錯處理程序中恢復系統原運行狀態

非正常復位後系統自恢復運行的程序設計

對順序要求嚴格的一些過程式控制制系統 系統非正常復位否 一般都要求從失控的那一個模塊或任務恢復運行 所以測控系統要作好重要數據單元 參數的備份 如系統運行狀態 系統的進程值 當前輸入 輸出的值 當前時鍾值 觀測單元值等 這些數據既要定時備份 同時若有修改也應立即予以備份

當在已判別出系統非正常復位的情況下 先要恢復一些必要的系統數據 如顯示模塊的初始化 片外擴展晶元的初始化等 其次再對測控系統的系統狀態 運行參數等予以恢復 包括顯示界面等的恢復 之後再把復位前的任務 參數 運行時間等恢復 再進入系統運行狀態

應當說明的是 真實地恢復系統的運行狀態需 要極為細致地對系統的重要數據予以備份 並加以數據可靠性檢查 以保證恢復的數據的可靠性

其次 對多任務 多進程測控系統 數據的恢復需考慮恢復的次序問題 筆者實際應用的數據恢復過程流程圖如圖 所示

圖 系統自恢復程序流程圖

圖中恢復系統基本數據是指取出備份的數據覆蓋當前的系統數據 系統基本初始化是指對晶元 顯示 輸入輸出方式等進行初始化 要注意輸入輸出的初始化不應造成誤動作 而復位前任務的初始化是指任務的執行狀態 運行時間等

結束語

lishixin/Article/program/qrs/201311/11074

⑦ PIC單片機怎麼樣用軟體加密,不被別人破解

調用APIGetAdaptersInfo獲取本機適配器信息
名稱,IP地址,子網掩碼,MAC地址

要載入庫文件:Iphlpapi.lib

#defineWIN32_LEAN_AND_MEAN

#include<windows.h>
#include<winsock2.h>
#include<ws2tcpip.h>
#include<Iphlpapi.h>
#include<ntddndis.h>
#include<string>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#defineMALLOC(x)HeapAlloc(GetProcessHeap(),0,(x))
#defineFREE(x)HeapFree(GetProcessHeap(),0,(x))

intGetAdapters(void);

intmain()
{

GetAdapters();
getch();
}

intGetAdapters(void)
{
PIP_ADAPTER_INFOpAdapterInfo;
PIP_ADAPTER_INFOpAdapter=NULL;
DWORDdwRetVal=0;
UINTi;
charszbuffer[500];
charszmacbuffer[10];

charbuffer[32];

ULONGulOutBufLen=sizeof(IP_ADAPTER_INFO);
pAdapterInfo=(IP_ADAPTER_INFO*)MALLOC(sizeof(IP_ADAPTER_INFO));
if(pAdapterInfo==NULL)
{
return1;
}

if(GetAdaptersInfo(pAdapterInfo,&ulOutBufLen)==ERROR_BUFFER_OVERFLOW)
{
FREE(pAdapterInfo);
pAdapterInfo=(IP_ADAPTER_INFO*)MALLOC(ulOutBufLen);
if(pAdapterInfo==NULL)
{
return1;
}
}

if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR)
{
pAdapter=pAdapterInfo;

while(pAdapter!=NULL)
{
//printf(" ComboIndex: 5d ",pAdapter->ComboIndex);
//printf(" AdapterName: %s ",pAdapter->AdapterName);
printf("AdapterName:%s ",pAdapter->Description);

printf("Type:");
switch(pAdapter->Type)
{
caseMIB_IF_TYPE_OTHER:

閱讀全文

與單片機軟體防盜相關的資料

熱點內容
vr怎麼看視頻演算法 瀏覽:84
手機app如何申報個人所得稅零申報 瀏覽:690
如何截獲手機app連接的ip 瀏覽:330
冰箱壓縮機是否需要電容 瀏覽:344
python列表每一行數據求和 瀏覽:274
自己有一台伺服器可以玩什麼 瀏覽:656
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:758
pdf怎麼單獨設置文件夾 瀏覽:474
業務邏輯程序員 瀏覽:659
addto新建文件夾什麼意思 瀏覽:160
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:464
java線程安全的方法 瀏覽:952
重復命令畫梯形 瀏覽:166