概述:
运用常用的AVR单片机ATmega16制造的高压解锁器,能够解开一切芯片锁死的状况(除非芯片损坏、焚毁)。制造著作经试验验证,解开了山东大学物理学院AVR单片机试验室一切近40片锁死的单片机以及许多同学锁死的单片机。制造办法简略,确保你一小时之内做完。
所需元件很少(如电路图所示):仅一只三极管、一片7805,三支电阻、一只LED、三个小电容,一片可用的单片机,一个12V电源。
程序与电路衔接可便利的移植到其它类型单片机上(凡支撑高压编程的,都能够)。
期望能对初学单片机的同学有所协助,特别是咱们校园暑假参与电子规划竞赛的同学。
制造布景(常见芯片锁死状况与高压解锁介绍):
AVR单片机是咱们校园同学常常运用的单片机,尤其是中高档单片机ATMEGA16。
单片机在运用的时分,常常出现由于装备熔丝位的失误或电路的失误而形成单片机锁死的状况,锁死之后,便无法再对单片机进行编程。
常见的锁死的状况以及常用的解决办法:
1,时钟挑选过错(可经过有源晶振合作ISP或JTAG下载器、高压编程器进行解锁)
2,ISP被禁(可经过JTAG下载器、高压编程器进行解锁)
3,JTAG被禁(可经过ISP下载器、高压编程器进行解锁)
4,锁定位加密(可经过单片机设定答应的办法进行单片机擦除)
5,以上状况的组合:
1+2(可经过有源晶振合作JTAG、高压编程器进行解锁)
1+3(可经过有源晶振合作ISP、高压编程器进行解锁)
1+4(可经过有源晶振合作单片机设定答应的办法进行单片机擦除)
2+3(只能经过高压编程器进行解锁)
2+4(可经过JTAG下载器、高压编程器进行单片机擦除)
3+4(可经过ISP下载器、高压编程器进行单片机擦除)
1+2+3(只能经过高压编程器进行解锁)
1+2+4(可经过有源晶振合作JTAG下载器、高压编程器进行单片机擦除)
1+3+4(可经过有源晶振合作ISP下载器、高压编程器进行单片机擦除)
2+3+4(只能经过高压编程器进行单片机擦除)
1+2+3+4(只能经过高压编程器进行单片机擦除)
6,其他锁死状况(可经过某些办法或高压编程器进行解锁)
能够看出,高压编程器是解锁功用最强的、不需求有源晶振合作的解锁东西。可是,与现在常用的编程下载器比较,高压编程器有许多缺陷:
A,编程速度慢
并行编程脉冲宽度需求大于250ns,如果是高压并行编程器,则烧写速度不会超越4Mbit/s,如果是高压串行编程器,则速度更慢。
B, 占用引脚多。
不管高压并行编程器仍是高压串行编程器,需求占用的方针单片机的引脚数都在16以上。
C, 需求12V的DC电压,而且电压规模窄(RESET:11.5~12.5V,VCC:4.5~5.5V)
因此,现在很少有人用高压编程器对单片机进行编程,大都都用ISP或JTAG编程办法。因此专门的高压编程器价格也不低,简易的高压编程器价格在100以内,可是只能适用于某一种或两种单片机类型,而且需求专门的程序下载软件及驱动。
可是由于它在对单片机进行解锁方面的功用,使的高压编程器并未彻底被筛选。
因此运用高压编程器时便会感觉很对立:
1,编程器的主要功用是给单片机编程,可是现在ISP或JTAG办法编程速度高、占用引脚少,而且相应的软件也十分完善,单就对单片机编程而言,彻底不会运用高压编程的办法来对单片机编程。
2,不运用高压编程器,许多时分单片机锁身后很难解开。可是仅为给单片机解锁而专门买个高压编程器,而且还要合作专门的软件运用,既不值又费事。
经过查阅数据手册中高压编程的内容,运用常用的ATMEGA16单片机,能够规划制造一个不需求PC端软件、不顺便编程功用、专门对单片机解锁的AVR高压解锁器。
制造办法:
下面以对锁死的MEGA16单片机进行解锁为例,与咱们共享制造办法与源程序。关于其它类型的单片机,只需具有高压编程接口,只需求查阅数据手册,将对应引脚接好即可。
这些引脚都是用于高压编程的:DATA;RDY_BSY;_OE;_WR;BS1;XA0;XA1;PAGEL;BS2;RST;XTAL1;VCC
电路图:
注:出于某些考虑,线路直接以连线衔接,未运用任何NetLabel。图中的电容也可省掉,一般没问题。
源程序:
//主单片机AVCC接VCC,运用AREF引脚操控锁死的单片机的VCC(5V电源电压能到达4.9V);
//主单片机的I/0寄存器ADMUX 操控AREF与AVCC的开关;
//三级管(9014)B极电阻100K,C极电阻1K,E极接GND(12.2V电源电压,能到达11.9V)
//锁死的单片机的RESET与VCC有必要简直一起加电压,不能有显着时刻差;
//主单片机的熔丝位:禁用JTAG(因运用PORTC);1M内部时钟;
//Chip: ATmega16
//char is unsigned: Yes
//CodeVision AVR
#include
#include
//引脚界说
#define DATAPORTA//锁死芯片的PORTB
#define RDY_BSYPINC.4//锁死芯片的PD1
#define _OEPORTC.3//锁死芯片的PD2一直为1
#define _WRPORTC.2//锁死芯片的PD3
#define BS1PORTC.1//锁死芯片的PD4
#define XA0PORTC.0//锁死芯片的PD5
#define XA1PORTD.7//锁死芯片的PD6
#define PAGELPORTD.6//锁死芯片的PD7
#define BS2PORTB.0//锁死芯片的PA0
#define RSTPORTD.2//9014的B极电阻
#define XTAL1PORTC.6//XTAL1
#define LEDPORTB.1//LED
#define DDR_LEDDDRB.1//
#define VCC_ONADMUX=0x40//锁死芯片的VCC
#define VCC_OFFADMUX=0x00
//进入编程状况
#define PROG_ENABLEBS1=0;XA0=0;XA1=0;PAGEL=0;
//初始化
void iniTIal(void)
{
DDRB=0xFF;
DDRC=0xFF;DDRC.4=0;PORTC.4=1;
DDRD=0xFF;
DDRA=0xFF;
_OE=1;
_WR=1;
XA0=1;
XA1=1;
PAGEL=0;
BS2=0;
BS1=0;
RST=1;
XTAL1=0;
LED=0;
VCC_OFF;
DATA=0x00;
}
//芯片擦除
void chip_erase(void)
{
XA1=1;XA0=0;
BS1=0;
DATA=0x80;
XTAL1=1;XTAL1=0;
_WR=0;_WR=1;
while(RDY_BSY==0);
}
//重写熔丝位
void write_fuse(char LB,char HB)
{
XA1=1;XA0=0;
BS1=0;
DATA=0x40;
XTAL1=1;XTAL1=0;
XA1=0;XA0=1;
DATA=LB;//熔丝低位
XTAL1=1;XTAL1=0;
BS1=0;BS2=0;
_WR=0;_WR=1;
while(RDY_BSY==0);
XA1=1;XA0=0;
BS1=0;
DATA=0x40;
XTAL1=1;XTAL1=0;
XA1=0;XA0=1;
DATA=HB;//熔丝高位
XTAL1=1;XTAL1=0;
BS1=1;BS2=0;
_WR=0;_WR=1;
while(RDY_BSY==0);
}
//高压康复
void recover_fuse(void)
{
PROG_ENABLE;
RST=0,VCC_ON;//最要害的时序问题
chip_erase(); //擦除
write_fuse(0xE1,0x19); //康复熔丝为默许(也可自己设定为其他值)
}
//完毕状况
void finish(void)
{
DDRB=0x00;PORTB=0x00;
DDRC=0x00;PORTC=0x00;
DDRD=0x00;PORTD=0x00;
DDRA=0x00;PORTA=0x00;
DDR_LED=1;LED=1;
VCC_OFF;
}
void main(void)
{
iniTIal();
delay_ms(200);
recover_fuse();
finish();
}
功用与运用办法:
功用:
将单片机锁定位与存储器擦除,而且将一切熔丝们都康复为出厂默许(也能够改为自己想要的值)。
运用办法:
按下按键1秒钟以上时刻,若看到LED指示灯亮,阐明解锁成功。若测验数次仍不见LED指示灯亮,阐明芯片非锁死,而是损坏了。
特色:
1,不需求PC端软件,彻底脱离电脑作业
2,专门用来康复熔丝,解锁单片机,不附加负担功用
3,运用便利,整个进程不到1秒时刻
4,可经过预留插针,将高压编程所需引脚引出,对其它类型单片机只需把对应引脚相连,即可解锁;
5,制造简略,本钱低价。
PS:虽然市面上的高压编程器是用比ATMEGA16等级低的ATMEGA8作为主单片机,可是咱们底子不需求专门的单片机作为主单片机,只需保存程序和电路板,就能够用任一块未锁的单片机来解锁其他单片机。而且现在ATMEGA8的价格与ATMEGA16的价格现已相差不多。
平常一般不必这个东西,能够放到一边去,当芯片被锁时才拿出来运用,百试百灵。
来历;21ic