导航:首页 > 操作系统 > 单片机软件防盗

单片机软件防盗

发布时间: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:

阅读全文

与单片机软件防盗相关的资料

热点内容
js如何运行时编译 浏览:915
引力app在哪里下载 浏览:607
编写app如何得到钱 浏览:800
吉利汽车软件放哪个文件夹安装 浏览:223
多文件编译c 浏览:541
头顶加密后为什么反而更稀疏 浏览:793
离心机压缩机扬程高 浏览:658
xshell连接linux命令 浏览:5
把多个文件夹的内容合并在一起 浏览:483
基于单片机的浇花系统设计ppt 浏览:685
卷积码编译码及纠错性能验证实验 浏览:354
请在删除驱动器之前暂停加密什么意思 浏览:787
光催化pdf 浏览:98
java字符串包含某字符 浏览:528
ssm身份认证源码 浏览:466
预排序遍历树算法 浏览:671
加密装置如何打开ping功能 浏览:478
python下载372 浏览:902
u盘子文件夹隐藏 浏览:296
本地误删svn文件夹 浏览:687