AT89C2051烧写器的制做与调试
AT89C2051烧写器制做经验

AT89C2051烧写器的制做与调试的经验采用的就是上面的图。
E51Pro V2.0宇宙版的软件。
我是分成两块板制作,一块就是MAX232电路,上图左下角。
网上买的贴片SO16 MA232,制板焊接,通电,12V电压端只有几伏,芯片发热,仔细检查电路没有什么问题,换另一块芯片,还是不行,一共换了5块,只有一块能输出12V,但是不稳定,有时行有时不行。
上网查,说是山寨的多,质量不过关。
又从另一家网购的DIP 16直插芯片,重新制板,电容按说明书全换成1UF 50V的独石,还是不行。
网上说电荷泵瞬间电流大,分析电源(手机充电器)可能不好,换另一个电源,又在16脚串联一只2R电阻,总算出来12V 电压了。
+9V、-9V也有了。
做电路其余部分的板子,焊接,按步骤调试。
12V又不对了。
看来MAX 232国产假货太多了。
于是用MC34063升压电路提供12V电压。
重新调试,12V 电压正常,三只三极管切换电路正常。
给AT89S51输入HEX 文件,安装上AT89S51(可用S52、STC89C 52等代替)、AT89C2051,DB9插到电脑串口上,提示找不到器件,检查电路,发现有焊接错的地方,因为为了省板,飞线多。
改正之后,能检测到元件,特征字1E 21 FF ,对了。
试着录入那个点亮LED 的程序的HEX 文件。
校验提示34个错误,反复几次都是如此。
百思不得其解,上网查也得不到答案。
陷入了迷茫------查看上位机软件中的缓存1、2,1是保存录入程序的16进制文件,2是从2051单片机中读出的数据。
最左边是地址,每行8个16进制代码。
发现只有头3个代码是一样的,往下都是FF,一直到0800这个地址,往后就不一样了,1中是源数据,2中则是FF 。
几十个数据都不一样。
本人编程知识有限。
唯有再三分析,上网查找资料,甚至研究了源程序代码,学习了HEX 文件结构,排徐各种可能,在一个安静的清晨,在手机页面上看了一篇文件,说是HEX 转换为BIN 文件有可能变得很大,突然意识到那个0800地址问题。
AT89CX051编程器的设计

AT89CX051编程器的设计摘要本文给大家介绍一个实用的A T89CX051编程电路,编程器电路主要有监控电路、编程方式控制电路、与电脑通讯的接口电路、编程电压(VPP)控制电路和电源电路组成。
文章详细地说明了A T89CX051单片机编程时序,利用AT89C2051单片机和MAX232、74LS164构成了AT89CX051编程器。
关键字A T89C2051,MAX232,74LS164,Keil C51,VB1 概述AT89CX051 单片机体积小,外围引脚仅有20只,功能强,有15只可编程I/O口,价格低廉,零售价格不足十元,应用十分广泛,如现在使用的数字钟就是以它为主CPU。
要使用单片机,必不可少的一件东西,那就是编程器。
许多爱好者由于不具备专业的开发环境和编程器,且面对市场上多则几千元,少则几百元的编程器,很多人望而却步,从而无法进行单片机实验。
虽然现在很多单片机都带有ISP或IAP功能,能实现串行下载编程,但此款单片机没有串行下载编程功能。
本人借鉴其他编程器自制了个AT89CX051专用编程器。
这里给大家介绍一个AT89CX051编程电路,编程器电路主要有监控电路、编程方式控制电路、与电脑通讯的接口电路、编程电压(VPP)控制电路和电源电路组成。
监控芯片A T89C2051程序用C51语言编写,使用Keil开发环境,C语言具有可读性强、移植性好等优点。
电脑程序用VB编写,开发简单,是面向对象的可视编程。
利用A T89C2051单片机和MAX232,74LS164构成的AT89CX051编程器,完全满足要求。
2 硬件电路2.1 系统组成和工作原理此编程器主要有监控电路、编程方式控制电路、与电脑通讯的接口电路、编程电压(VPP)控制电路和电源电路组成。
如图1所示:图1 A T89CX051编程器框图AT89CX051单片机编程时序:1.接通电源(Vcc位+5V),置RST,XLAT1为低电平,延时至少10ms。
AT89C2051简明资料

AT89C2051简明资料片内ROM------RAM------I/O口线-------中断源-------定时/计数器(个)2k(Flash)------128-----------15--------------5------------------2片内ROM寿命为1000次擦写周期,数据保存期达10年,宽电压工作范为2.7V-6V;全静态工作方式:0Hz-24MHz;两级程序存储器锁定位;128×8位片内RAM;15个可编程I/O口线;两个16位的定时/计数器;5个中断源;可编程串行通道;直接LED驱动输出;片内模拟量比较器;低功耗闲置与掉电保护模式。
信号引脚功能AT89C2051是一种20引脚的双列直插式IC芯片,引脚是单片机的硬件外特性,用户通过引脚连接外部器件就能组建单片机系统。
(1) P1口:它是8位双向口线,即P1.0-P1.7。
口引脚P1.0(12脚)和1.1(13脚)用于外部接口工作时,要求配置外部的上拉电阻;P1.2-P1.7内部设有上拉电阻,用于外部接口工作时由外部负载工作方式决定上否配置上拉电阻。
P1口带有输出缓冲器,可吸收20mA的电流并能直接驱动LED显示。
P1口的功能之一是在闪速编程和程序校验期间接收代码数据(即编程的数据输入口)。
(2) P3口:它是带有内部上拉电阻的7位双向口线,即P3.0-P3.5和P3.7。
P3.6因内部功能的需要,它虽是通用的I/O口引脚但不可访问。
P3口的其它特性与P1口相同,此外P3口还具有第二功能。
(3) 复位端RST(1脚):当1脚加“H”高电平时芯片内部的功能电路复位,此时I/O口引脚复位到“1”电平。
(4) XTAL1(5脚):振荡器外接晶振,内部时钟发生器输入。
(5) XTAL2(4脚):振荡器外接晶振、反向放大器输出。
(6) 电源端20脚(+2.7-6V)和10脚(地端)。
引脚的复用功能由上述对AT89C2051引脚介绍可见:P1口和P3口共占15个引脚,外加复位、振荡(时钟)和电源端等已把芯片的引脚全部占完。
AT89单片机烧写使用说明

AT89单片机烧写软件使用说明请注意:这是烧写AT系列的单片机说明,如果你要烧写STC系列单片机,请参考另外一个说明。
首先:确认编程器板上的红色拨码开关,4位应该全部断开状态(出厂默认设置)。
第二:把编程器的两个接口都接到电脑上。
可以看见红灯亮(如果不亮,请检查)第三:接着安装软件“AT89单片机烧写软件”,本软件支持Win9x/me/2000/XP,标准Window 操作界面。
安装软件后,回到桌面,运行其中的Easy 51Pro程序即可。
第四、软件使用程序启动后,会自动检测硬件及连接,状态框中显示“就绪”字样,表示编程器连接和设置均正常。
否则请检查硬件连接和端口设置。
可以按照下面设置端口,这里的端口一定要和你所连接的COM口对应。
(别的参数不要改变)意,如果编程器上的红灯亮了,表示芯片方向放置正确;否则请检查方向是否反了!!!)芯片放好后,就可以对芯片进行读写操作了,读写操作按下面的步骤进行:1、程序运行,请先选择器件(点下选框),再点检测,运气好的话可以检测到器件。
如果运气不好,可能检测不到器件,原因可能是●您的单片机特征字有点问题,可能性95%(只是有问题,并没有说坏)●编程器有问题,可能性5%检测不到也没关系,可以忽略这个功能。
请直接按照下面的说明操作,对芯片擦除、读、校验等操作。
2、用“打开文件”选择打开要编写的.HEX和.BIN文件3、用“保存文件”可以保存读出来的文件4、用“擦除器件”擦除芯片5、用“写器件”编程6、用“读器件”读取芯片中的程序,加密的读不出来7、用“校验数据”检查编程的正确与否8、用“自动完成”自动执行以上各步骤9、用“加密”选择加密的级数。
at89c2051编程器制作

0x55,数据
数据
上位机首次发送0x55,数据,控制单片机收到数据后并传送给编程单片机,读取后发给上位机,由上位机判断两数据是否相同,不同循环此步
0x56,数据
数据
上位机对比两此数据后,发现数据正确,于是发送0x56,程序数据,控制单片机收到后立马写入数据并给一个脉冲给编程单片机的XTAL1引脚,让程序ROM地址加一,等待下一步的执行
首先写一段指令如下
MOV P1,#55H
MOV P1,#F0H
我们通过查指令表可以知道指令码为:75H 90H 55H 75H 90H F0H
我们将其编译,然后下载到单片机内,那么程序存储器ROM内存放的数据如下图所示:
第一步:单片机上电复位后PC指向0000H并取出75H(MOV)指令,由译码器分析这条指令是干嘛?有几个字节?发现这条75H(MOV)指令是传送指令,占用3个字节单元然就计算出PC下一步取指令的地方,0000H+3,并将指针放到那,然后继续执行传送指令的功能
date[0]=0x00;//清控数据
date[1]=0x00;//清控数据
}
if(date[0]==0x66&date[1]==0x44)//判断是否为芯片擦除命令
{
date_biaozhi=0;
date[0]=0x00;//清控数据
date[1]=0x00;//清控数据
write_end();//编程结束
第二步:由于编译器已经知道要干嘛了,它就自动的将0001H地址的数据55H取出,然后送到0002H地址内的RAM地址码90H(P0),第一步指令就完成了
第三步:由于PC指针指向了0000H+3,然后重复第一步的操作了,如此周而复始执行者指令
AT89C2051数字电子钟的设计

AT89C2051数字电子钟的设计一、设计任务与要求1.通过单片机技术使 LED 数码管输出显示时间。
2. 可通过按键设置闹钟功能,且停闹无须手工操作。
3. 提高计时精度,使计时误差最小。
4. 通过键盘 2 个键,从左到右依次标名为 SET,DOWN,UP,ENTER, 用来修改和设置系统时钟。
二、方案设计与论证其主要设计思想是:整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。
时钟芯片产生时钟信号,利用单片机的 I/O 口传给单片机;并通过 I/O 口实现 LCD 的显示。
系统设有 4 个按键可以对时间星期年月日进行调整,还可以设置闹钟。
本电路以一片AT89C2051 单片机为主体,其显示数据从P3.0-P3.7 口输出,P1 口输出对应的六位位选信号。
电子钟程序设计时使用了 T0 作为计时,T1 为调整时显示用。
只要对程序稍加更改,可以很容易的实现 8 路定时功能。
电子钟只用一个轻触式按键来完成所有的设置。
为了使闹钟音量足够大,采用了 PNP 型三极管 8550 来驱动蜂鸣器,驱动电阻用 1K 的,蜂鸣器为 5V 小型蜂鸣器。
若用 NPN 来驱动蜂鸣器音量要小一点。
LED 数码管位驱动用8850,电子钟采用自制的 3A 开关电源供电。
AT89C205 是一个低电压,高性能 CMOS 8 位单片机,片内含 2k bytes 的可反复擦写的只读 Flash 程序存储器和 128 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,功能强大。
但它只有 20 个引脚,15 个双向输入/输出(I/O)端口,其中 P1 是一个完整的 8 位双向 I/O 口,两个外中断口,两个 16 位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。
AT89C2051组成的时钟电路制作

课时授课计划讲授新课我们以P0口作为LED的字段位驱动输出,秒的“进位”采用分值闪烁提示,亮0.5秒,熄0.5秒。
,P3.1—P3.3用于位驱动,使用动态扫描方式显示,每位LED的显示时间10—25ms之间均可,扫描频率不能太高,否则每位LED显示的时间过短,亮度太低,不易于观看,以肉眼不感觉到LED闪烁为宜。
为了直观,我们的驱动输出没有采用集成电路,而是使用了分立元件—三极管,但工作原理却是一致的。
这个电路结构决定LED采用共阳极的数码管,可以采用LQ5101BS普通的发光二极管,驱动三极管可采用易得的2SA1015和2SC1815等型号,当然也可使用象S9012,S9013,S9014,2N5401,2N5555等小功率三极管,其它器件没有特殊要求。
为便于实验,单片机AT89C2051可采用DIP20P插座,程序编制好后,调试无错,即可烧写到AT89C2051中,值得一提的是,AT89C2051是Flash程序存储器,程序可反复擦写,对于做实验是非常方便的。
二、全套元件讲授新课三、套件元件包(配电路图及说明)1、电路原理图:S1复位键,S2功能键,S3置数键。
接通电源,时钟显示0.00,秒点闪动,开始计时。
2、系统时钟电路振荡电路用于产生单片机工作所需要的时钟信号。
单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2 。
在芯片的外部有XTAL1和XTAL2之间跨接的晶体振荡器和微调电容,共同构成了一个稳定的自激振荡器。
图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,应正确选择参数(30±10 pF),并保证其对称性。
实验表明,这2个电容元件对闹钟的±走时误差有较大关系。
讲授新课AT89C2051管脚图:安装好的成品套件本课小结对AT89C205时钟电路制作过程写出体会,并写出实习小结。
课后作业写出程序并调试电路,实现电路功能。
AT89C2051制电子钟时钟源程序

AT89C2051制电子钟时钟源程序本程序来自于互联网,站长尚没试验,但是,该程序给出了详细的说明,相信对大家很有帮助!因此,站长向原作者表示真诚谢意!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AT89C2051时钟程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,; P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 中断入口程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口RETI ;外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址RETI ;串行中断程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 主程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;CLEARDISP: MOV @R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50MS×20)START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1SETMM1: LJMP SETMM ;转到时间调整程序SETMM; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1秒计时程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0MOV R0,#79H ;指向小时计时单元(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 闪动调时程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 加1子程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADD1: MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,@R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV @R0,A ;数据放入当削地址单元中RET ;子程序返回; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 清零程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;对计时单元复零用CLR0: CLR A ;清累加器MOV @R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV @R0,A ;前一地址单元清0RET ;子程序返回; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 时钟调整程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0LCALL DL1S ;调用1秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("hello World!\n"); } } 这个程序就是打开单片机 S51 的串口,不断的送出字符串“hello World"。编译 成 HEX 文件,再用 ISP 将程序写进 S51 片内。然后插到 2051 烧写板上。将串口 线接到 PC 上。打开 PC,运行串口调试器:
将红圈画出位置的波特率设为 19200。确认为 COM1 口。然后将 2051 烧写器的电 源给上,我的 PC 串口调试器上立即就出现了“hello World”。
上图是可以烧写很多器件的电 路,它的 PCB 板在网上也很容易找。 但因为是实验制做,没用 PCB,就用 万用板吧。由于宽体的器件都有支持 ISP 的器件,所以我去掉了 40 脚宽体 IC 座,只留了个 20 脚窄体 IC 座用来 烧写 C2051,修改电路后电路图如下:
元件清单如下:
1/8w 4.7k 6 (一共 6 个)
16pin ic 座 1 插入 max232 芯片
usb 座
1 供电用
串口电缆 1 通信用
usb 电缆 1 供电用
At89s51 1 用于监控
max232cpe 1 通信用集成电路
pcb
1 电路板
实际板子今天已做好,先秀一下吧。接着再讲详细调试方法和步骤:
这个电路对于初学者可能复杂了一点,它分为几个部分,如果你先将电路板 规划好,然后把元件一次都焊上,再进行调试,成功的概率很小。那应该怎么做 呢?先规划一下元件的位置布局,然后分几个单元,一个单元做好后进行调试,
104
2 用于电源滤波
22p
2 用于晶体电路
11.0592 1 晶体
2n5401
1 注意看型号和插入的方向, 不要错!
2n5551
2
发光管
2 3mm 白发红(用于电源指示和通信指示)(注意方向)
9
1 串口头
20pin 卡座 1 烧写 2051 等用
40pin ic 座 1 插入监控用 89s51
正常后再进行下一个单元的制做调试。我的规划如下,先是电源部分包括那个电 源指示 LED:
先将 USB 座焊上,确认无短路后插上 USB 电源,用万用表找出 A、B 两点中 哪个是 5v 的正极,哪个是地。然后去掉电源将剩下的几个电容、电阻和 LED 焊 上,再确认无短路后接上电源,LED 应亮起。我是将 LED 的限流电阻改为了 2K, 因为我看它已够亮了。电流 1.5 毫安。实物如右边红色圈出的图。
这样,与 PC 的串口通讯就调试成功了。如果你没有出现正确结果,而上面几步 的调试又是正常的,那就是从 PC 串口端到你 S51 的接线有错误了。仔细检查你 的接线,会找到错误的。
上面几步都正常后,就是将这几步调试正常的电路整合了。将 12v 烧写控制 端 VPP 接到 2051 的第 1 脚,VO13、VO14 分别接到 S51 的第 13、14 脚。S51 的第 15 脚 VST 接到 2051 的第 9 脚。S51 的第 1 脚(P1.0)接到 2051 的第 11 脚。S51 的 5、6、7、8 分别接到 2051 的第 5、6、7、8 脚。S51 的 P0 口(第 32-39 脚) 分别接到 2051 座的第 12-19 脚。别忘了将 2051 座的电源,地接上。
下面就是 S51 部分的电路,如下图:
这部分电路包括 P0 口的上拉排阻和那个接收指示 LED 接在 S51 的 10 脚。别忘了 将 S51 的第 31 脚(EA / VP)也接电源+5v。先确认将 MAX232 的第 9 脚与 S51 第 10 脚的连接断开(因为 MAX232 在调试正常后 9 脚就输出+5v 高平会点亮接收指 示 LED,妨碍 S51 工作性能的检查)。检查电路无误后插上 S51 片子接上电源, 静态电流应在 9-12mA 左右。好!打开 KEIL 写个测试程序: #include <AT89X51.H> #define uchar unsigned char main(void) { uchar i,j,k; while(1)
S51 电路正常后,我们就要将刚才断开的 MAX232 的第 9 脚和 S51 的第 10 脚 焊上。这时我们再编个测试程序: #include<at89x51.h> #include<stdio.h>
void main(void) { SCON=0x50; TMOD=0x20; PCON=0x80; TCON=0x40; TH1=0xfd;//比特率 19200 TL1=0xfd; TI=1; TR1=1; while(1) {
AT89C2051 烧写器的制做与调试
现在都用 S52 了,还用 C2051 干嘛!价格也差不多。但是 C2051 的体积要比 S51、S52 小很多,而且引脚只有 20 只,在一些简单 的控制中,这些引脚已足够了,小的体积更具有优势些。但目前好像还没有支持在线编程(ISP)的 S2051。因此试着做个 C2051 的编 程器,更主要的是与大家分享一下在电路制做过程中硬件、软件的除错技巧,尽量做到一次成功的经验和方法。
{ for(i=0;i<1;i++) { for(j=0;j<255;j++) for(k=0;k<255;k++); } P3_0=~P3_0;
} }
这个程序就是让 S51 第 10 脚(P3.0)接的那个 LED 闪烁。能闪烁就说明晶 振起振,S51 电路工作正常了,编译,然后用 ISP 将这个程序写进 S51 片内,再 插到我们做好的 2051 烧写器上。接上电源,我的电路立即就正常工作了,LED 在闪烁。如果 LED 无反应,你就得检查你的 S51 电路是否连接正常,晶振是否焊 接正确等。
第二部分是 MAX232,包括那个+12v 电压稳压电路。MAX232 是 TTL 转 RS232 专用 IC。它内部提供了一个正 10v,和负 10v 的升压电路。我们正是利用了它的 升压电路又获得了个+12v 的电源。
我们先将 9 针串口焊上,但不接上 MAX232。在你规划的 MAX232 区,按上图 左侧电路将 MAX232 座和四个电容焊好。检查无短路后,插上 MAX232,接上电源, 在 A 点应能测到+9v-+10v 的电压。在 B 点应有-9v--10v 的电压,将 10 脚接地, 那 7 脚就应该是+10V。若 10 脚接+5v,那么 7 脚就变成-10v。这样 MAX232 就正 常了。将串口的 2 脚接 MAX232 的 7 脚。串口的 3 脚接 MAX232 的 8 脚。接上电将 MAX232 的 10 脚分别接地和+5v 看看串口的 2 脚是否跟刚才一样变化。以上的调 试正确后,将上图右边的 12V 稳压电路焊上。如下图:
好!检查无误后,接上电源再试一次串口通讯是否正常(以防在焊接后焊错 使 S51 不工作)后。拔下 S51,用 ISP 将那个 E51Pro.HEX 的驱动固件写进 S51,
再将它插到 40 脚 S51 座上,在 20 脚 IC 座上插上 AT89C2051,连好 PC 串口,PC 上运行那个 Easy 51Pro V2.0,然后将 2051 烧写器给上电源。在 PC 软件上先择 AT89C2051,点击检测器件,我的,1e 21 FF。然后试着打开一个 HEX 文件,点自 动完成,它就一路完成器件的检测、擦除、写入,校验等工作,如下图:
如果你的器件没找到,但前面的串口通迅等调试是正常的,那么你最后一步 的那些接线可能有误。仔细检查你的接线,及 C2051 座的电源、接地是否正常。
好了,掸一掸尘土,大功告成。终于可以闪到一边喝口茶凉快会儿去了!也 给点掌声啊!容易嘛?我。。。!
总结:养成逐步调试的习惯,对电路的一次成功是非常有益的。有了问题对
560r
3 (一共 3 个)
2k2
1
4.7 欧姆 1 串联于供电电路起保护作用
10k 排阻 1 用于 cpu p0 口上拉
1n4148
2 用于 vpp 高压供给 (注意 4148 的一头是黑色的)
12v
1 用于 vpp 高压供给 (注意 12V 的一头是白色的不要搞混)
4.7uf/50v 8 所有的电解都用同一个型号的, 注意方向哦
用万用表在稳压管两端应测得稳定的+12V 电压。这样你的这个串口转换和 12v 电源电路就调试正常了。
第三部分是 12V 烧写控制部分:电路和实物图如下:
这部分电路焊好后,接上第二部分调试正常的+12v 和电源+5V。先测量电路上+12v 接入点和电源电压+5v 是否正常确。再测量上图的 A 点也应该是+5v。然后你把 VO13 用导线接+5V,那么 A 点是+9v-+11v 就对了。好!断开 VO13,再将 V014 用导线接+5v,A 点应该是接近 0。这样 12V 烧写控制电路也调试正确了。