使用MPLAB烧写PIC单片机程序步骤

使用MPLAB烧写PIC单片机程序步骤
使用MPLAB烧写PIC单片机程序步骤

步骤:加载文件------选择单片机型号-------选择烧写器--------连接器件--------烧写程序

1、加载文件

选择软件界面左上角“File”选项;

弹出下拉选项框,选择“Import”选项,弹出对话框;

在“查找范围”中选择要烧写文件的路径,然后选择要烧写的后缀为.hex的文件,再点击右下角“打开”按钮

2、选择单片机

选择软件界面第一行第八个“Configure”选项;

弹出下拉选项框,选择“Select Device”选项,弹出对话框,在Device选项的下拉框中选择所要烧写的单片机型号;如:Pic16f628a

3、选择烧写器

选择软件界面第一行第六个“Programmer”选项;

弹出下拉选项框,选择“Select programmer”选项,弹出右拉选项框,选择第4项“PICkit_3”;

硬件连接好后,继续操作以下步骤:

4、连接器件

再次选择软件界面第一行第六个“Programmer”选项;

在此次下拉框中点击“Reconnect”选项

5、

烧写程序

点击第一个图标

51单片机实验程序

3 3 3 用查表方式编写y=x1 +x2 +x3 。(x 为0~9 的整数) #include void main() { int code a[10]={0,1,8,27,64,125,216,343,512,729}; //将0~9 对应的每位数字的三次方的值存入code中,code为程序存储器,当所存的值在0~255 或-128~+127 之间的话就用char ,而现在的值明显超过这个范围,用int 较合适。int 的范围是0~65535 或-32768~32767 。 int y,x1,x2,x3; //此处定义根据习惯,也可写成char x1,x2,x3 但是变量y 一定要用int 来定义。 x1=2; x2=4; x3=9; //x1,x2,x3 三个的值是自定的,只要是0~9 当中的数值皆可,也可重复。 y=a[x1]+a[x2]+a[x3]; while(1); //单片机的程序不能停,这步就相当于无限循环的指令,循环的内容为空白。 } //结果的查询在Keilvision 软件内部,在仿真界面点击右下角(一般初始位置是右下角)的watch 的框架内双击“double-click or F2 to add”文字输入y 后按回车,右侧会显示其16 进制数值如0x34,鼠标右键该十六进制,选择第一行的decimal,可查看对应的10 进制数。 1、有10 个8 位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的 数据(1 的个数为偶数)都要存到内RAM50H 开始的数据区中。试编写有关程序。 #include void main() { int a[10]={0,1,5,20,24,54,64,88,101,105}; // 将所要处理的值存入RAM 中,这些可以根据个人随意设定,但建议不要超过0~255 的范围。 char i; // 定义一个变量 char *q=0x50; // 定义一个指针*q 指向内部0x50 这个地址。 for(i=9;i>=0;i--) //9~0 循环,共十次,也可以用for(i=0;i<10;i++) { ACC=a[i]; //将a[i] 的值赋给累加器ACC if (P==0) //PSW0 位上的奇偶校验位,如果累加器ACC 内数值1 的个数为偶数那么P 为0,若为奇数,P 为1。这里的P 是大写的。 { *q=a[i]; q++; // 每赋一个值,指针挪一个位置指向下一个。 } } while(1); //同实验一,程序不能停。 }

自制单片机烧写器

像我们这样搞电子的人,要的就是动手的乐趣。下面我们来介绍近期在网络上非常流行的USBasp下载线,因为现在的笔记本包括台式机都渐渐地舍弃了并口、串口;所以之前的并口或串口下载线已经不能再使用了,应该说是做个USBasp下载线是势在必行的,下面我们来介绍其制作的全过程。 图(1) 图1为原作者设计的原理图,为了便于制作我修改过某部分电路如图2,其功能一样。

图(2) 在制作之前首先要搞清楚几点: 第一、这个USB下载线本身就是一块AVR单片机,在制作过程中也必需对其进行程序下载才能运行。 第二、先得大概了解一下这个AVR单机机ATmega8的基本资料。这样才能对电路有个了解,从而便于调试。第三COM1是PC机与USB相接的端口,我们在焊接时一定要区分GND、VCC、D+、D-,下面图(3)是对应本次制作的USB端口的引脚功能。在焊接的之前务必搞清楚,否则会造成PC机端口的USB或下载给的ATmega8烧毁。

图(3)USB端口引脚功能 第四﹑最后我们来了解一下电路的结构。对应图2,其中JP1是选择下载时的速度是快速或慢速,当JP1接地时选择低速,否则为高速。对于选择快速还是慢是相对于被下载的单片机晶振时钟而言的。一般来讲,目标单片机与USBasp的ATmega8的时钟不能相差太远。而JP2是电源的选择,当短接时被下载的单片机选择USBasp供电,则否选择独立供电。切记:两者只能任选其一。LED2为ATmega8程序运行的指示灯,当其点亮时就证明USBasp运行正常。LED1为下载程序时的工作指示灯,当接收到上位机信号

时,此灯就会闪动。 图(4)制作的全部元器件 图(5_a)与图2对应的PCB板顶层

51单片机考试常见试题简答 题

简答题部分 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5) OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片 内程序存储器中,程序写入后不能再改写。这种芯片的价 格也较低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

51单片机DIY做PLC编程精编版

51单片机DIY做PLC编程 有朋友想定制一个净水机控制器,有一些独特的功能要增加,但是商品控制板没有这样的功能,问我能否做一个,我觉得单片机完全能满足这种简单的控制需要,上手开始编程序时候突然感到,用PLC逻辑编这种功能是非常简单轻松的,而如果用汇编或C编却感觉有点棘手,编程效率不高,所以想为何不在单片机上实现PLC的逻辑呢? 上网搜索尝试看能否找到合适的程序下载来稍微改改就能用的呢?方案几年前就有了,实际上是利用三菱的低档PLC编程软件编辑好梯形图,存盘后用专用的格式转换工具转换成HEX单片机烧写文件烧进去,尝试下载三菱PLC工具软件,但是在我的WIN7-64位系统上不能正常工作,好容易换了系统装好开发工具,但是初次上手这款开发工具,界面挺复杂的,懒得研究各个按钮的使用,由于是单片机的硬件,对于程序的编制和转换有很多限制条件,否则是转换不成功的,嫌麻烦,放弃! 某宝倒是有百元PLC板出售,但是为了这么个简单的东西专门买个全功能板子有点浪费,而且其编程软件仍然是三菱的盗版软件,算了,再想办法把。 由于工作中经常接触PLC程序,对其工作原理也略知一二,网上也有相关的说明介绍,其实就是三个主要步骤,第一步扫描IO输入,第二步执行逻辑,第三步输出逻辑到IO,很简单的,最早PLC也是用单片机实现的,我为何不用汇编在51上搭建一个架构,简单的逻辑编制进去就能运转呢? 其中逻辑执行步骤还是有点意思的,需要把PLC逻辑翻译成单片机的汇编语言执行,这块开始也没有把握,后来搜索到一篇百度文章,介绍了一下三菱PLC逻辑是如何翻译成汇编的,我看了下估计其实是利用反汇编工具把HEX反编译成的ASM代码,并不清晰明了,而且还带着反汇编时候的行号,仅供参考了。 搜索结果中也有几篇论文,涉及到在51单片机上实现PLC逻辑的内容,但是那些论文都是充数的,仅仅几个IO逻辑,没有什么定时器,计数器功能的体现,哎!仅供参考! 看来这个PLC系统还是需要自己写了!OK!既然决定自己重写,那就开工吧!利用春节休假时间,编制了如下ASM51汇编PLC代码: 代码主要架构如下: 1、IO定义部分:根据所使用的单片机IO口数量,任意指定多少个I多少个O,那几个脚是I,哪几个是O都可以任意指定,在这个51系统里面设计了最大32个I,32个O,占用64个位寻址区域,其实用不到那么多,也可以分配给其它需要的标志位用,因为51系统总可位寻址地址只有128位,需要仔细分配.

单片机如何运行程序

单片机如何运行程序 知道了单片机通过I/O口与外设打交道,也知道了单片机的程序与数据如何保存,到底单片机是如何运行程序的?原来单片机和其他微机一样,也拥有一个中央处理器(CPU),它是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。它在单片机中的核心地位见图2.10所示。它通过单片机的内部总线,将单片机内部的各个部分:程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等联系在一起,内部总线有三种:数据总线,专门用来传送数据信息,地址总线专门用来传送地址信息,选中各操作单元,控制总线专门用来传送CPU各种控制命令,以便CPU统一指挥协调工作。完成程序所要执行的各种功能。CPU执行程序一般包括两个主要过程:第一,就是从程序存储器中取出指令,指令的地址由PC指针提供,在前面我们已经知道,PC指针在CPU取指后会自动加一,所以PC指针总是指向下一个将要取出的指令代码或操作数。这样,就能保证程序源源不断往下执行。第二,就是执指过程,取出的指令代码首先被送到CPU中控制器中的指令寄存器,再通过指令译码器译码变成各种电信号,从而实现指令的各种功能。 4.怎样保证CPU工作? 现在我们知道了单片机怎样取指、执指,即怎样运行程序了。那么怎样才能保证CPU有序的工作?这就必须提到单片机的两个非常重要的外围电路:单片机的时钟电路和复位电路。在单片机上面有两个引脚,分别是它的第18、19脚,其功能如下。

Pin19:时钟XTAL1脚,片内振荡电路的输入端。 Pin18:时钟XTAL2脚,片内振荡电路的输出端。 89S51的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体和振荡电容,振荡电容的值一般取10p~30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。如图2.11 当时钟电路起振后,产生一定频率的时钟信号,单片机的CPU在时钟信号的控制下,就能一步一步完成自己的工作。通常我们必须了解以下几种周期。 【振荡周期】:单片机外接石英晶体振荡器的周期。如外接石英晶体的频率若为12MHz,这其振荡周期就是1/12微秒。 【状态周期】:单片机完成一个最基本的动作所需的时间周期。如扫描一次定时器T0引脚状态所需要的时间。一个状态周期=2个振荡周期。 【机器周期】:单片机完成一次完整的具有一定功能的动作所需的时间周期。如一次完整的读操作或写操作对应的时间。一个机器周期=6个状态周期。 【指令周期】:执行完某条指令所需要的时间周期,一般需要1~4个机器周期,如MUL AB指令是四机器周期指令。一个指令周期=1~4个机器周期。 单片机工作时,除了需要时钟支持外,还必须有一个初始状态,即单片机的复位状态。在单片机外部引脚第9脚,就是专门给单片机提供复位脉冲的。 Pin9:RESET/Vpd复位信号复用脚,当89S51通电,时钟电路开始工作,在RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。

自制PIC单片机烧写器

此主题相关图片如下:

此主题相关图片如下: ========================================================================= ===== 测试JDM烧录器 用RS232延长线将JDM烧录器与你的电脑连线,开启IC-PROG程式。选JDM programmer,再依你的连线选COM1或COM2,其他的不动。如不知道是COM1或COM2,就一个一个试吧。 此主题相关图片如下:

此主题相关图片如下: OK后再选Hardware Check,把Enable MCLR打勾`,拿电表量(什么?你没有!!那...那...)IC 插座第4脚对第5脚应有13.3V,把Enable MCLR勾拿掉,应为0V或0.3V以下,这是Vpp 烧录电压。 此主题相关图片如下: Enable Data Out打勾则第13,17脚对第5脚都是5V,同时Data in会自动打勾。 Enable Clock打勾则第12,16脚对第5脚都是5V。 Enable VCC打勾则第1,3,10,14脚对第5脚都是5V。 如果都对,那恭喜你,烧录器做好了。否则...

Do(去抽根烟、喝杯水,再回来检查一遍)" Loop until OK ============================================================== 插上PIC16F84A...........烧............. 先把IC选为PIC16F84A,现在可以把PIC16F84A插上读读看,如果是空白IC就会全是'3FFF'。不是的话可以按清除键,全部清除。 去下载个现成的16F84A的HEX档来烧看看。将ZIP档解开,存到桌面。Open file读入RC_84A.HEX,然后照下图社设定WDT enable,PWRT enable,Oscillator XT。...........烧.............数秒钟后就知道了!! 再次恭喜你,哦?失败?IC是好的吗? 此主题相关图片如下: OK!! =========================================================================组译程式MPASMWIN ASM档写好后,需组译成.HEX档才能烧录。MPASMWIN的使用很简单,下载一个ASM档来试试。 依PIC的型号设定Processor即可,其他不动,用Default,按Assemble就会产生.HEX,及.ERR档。 此主题相关图片如下:

自制51编程器

自制51编程器 作者:佚名来源:不详录入:Admin更新时间:2008-7-26 19:46:23点击数:3 【字体: 】 AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性。一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。由于单片机编程时序不同,这一款编程器仅仅支持ATMEL公司的AT89C51, AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。 对于很多像我这样一些不算太年轻的从80年代组装7管半导体收音机入门的电子爱好者来说,面对单片机似乎显得有点怯场,但是事实上我以为他甚至比组装一个收音机更简单:以下是它的硬件电路图,稍微有一点耐心,完全可以用面包板搭焊。 为了方便大家制作,我把电路简化设计了一下:

Q2, Q4以及周围的几个元件构成了电平转换电路,这样节省了1片max 232芯片,在要求不高的场合,这个电路在单片机通信中可以取代MAX232。 Q1, R2,R4,DW2,4个元件为编程器提供烧写用12V电压,其中,R4, R2构成了分压电路;平时,监控芯片89C51第13脚(P3.3)输出高电平,Q1导通,R2(1K)将DW2(12V)拉低,此时DW2电压由R4,R2 分压,大约3-5V 之间;当写程序时,监控芯片第13脚(P3.3)输出低电平,Q1截止,DW2(12V)直接送到被烧芯片的31脚,从而提供烧写电压。ATMEL官方网站提供的编程器器烧写电压是用LM317调整得到的,并且用到了两个高精度电阻,电路复杂且成本高,该电路经过本人数百台的实验证明非常稳定可靠.

自制STC自动烧录器

自制STC自动烧录器 一直在网上找自动烧录器的资料,就是不用冷启动的那种。冷启动说来也没什么,就是很反感它。找不到,东西并不复杂。不知道为什么没人上传。这证明了懒人多。 后来想到,直接把学习板上的电路照着做就是了,那个就是免冷启动的,还找什么。于是动手。先把原图摆出来。 电路很简单。元件极少。为省事,电源开关不要,电源指示灯不要,4个插短路帽的座子也不要。注意一下,图上的8550画错了,画的是个8050。制作的时候,8550的e接电源VIN1,c接继电器。芯片的15,16脚通过27Ω电阻接USB公头,第1脚接个二极管再接单片机第10脚RXD,第5脚接单片机第11脚TXD。单片机的供电(VCC)由继电器提供。就这样完事了,简单得要死。手头刚好有两片芯片,于是动手。 说起来几句话就完事,动手来才知道难度。这PL2303是SSOP封装,长约1CM,宽大概0.8CM,上面挤满了28个脚。这东西,圆头烙铁别碰它,最好是用特尖特细的那种。 至于PCB,有条件自己做印刷板的就简单。我的打印机做不了那么精细的胶片,想想元件也不多,干脆不要线路板了。先把它乌龟翻身仰天放,用双面胶粘在板子上。然后照着图纸焊接元件。因为脚太细密,0603的电阻不好用,就在废手机板上找的电阻。然后……(充满痛苦的1000字)…….. 终于做成了!!!可是那难看的样子实在让人高兴不起来。

从没做过这么难看的东西。 插上电脑,居然一次就通过。可想而知,给我的鼓励是巨大的!! 于是继续,开工做第二个。继电器,电解电容,晶振。三极管。都要换成小型的。三极管换

成贴片的,电容在手机上拆贴片的,晶振找个小圆柱的。继电器有点难办,再小也小不到哪里去,干脆不要吧,用个贴片8550代替。(其实,用一个8050的就可以了,不用2个管) 2个小时后,第二个烧录器做成,虽然还是不怎么好看,但是小了很多了。 下面就简单了,用热熔胶厚厚的封起来,固定那些脆弱的线路,兼顾遮丑。 好了,哥俩合个照。

51单片机多任务运行

51单片机多任务运行 最近发现有的幺弟在对系统的内核感兴趣,加上我也是部分内核的初学者,突然来兴,便用了两天写了一个简单的内核。这个内核简单得不能再简单了,加上空格行、大括号和详细的注解只有246行,还带了4个点亮LED的任务。至今为止我所见最简单的内核~~~ 就跟这个内核取个“多任务分时处理内核”吧!这个内核和ucos系统思想有很大的差异,但是能够帮助我们学习理解ucos系统,能够帮我们了解51的内部结构,以及大多数的单片机运行处理数据的原理~~~ 好废话就不说啦!希望我们能互相学习共同进步 1、先来讲讲原理: 首先,我们看书时会知道51单片机在执行中断的时候,会有以下几个步骤和几种情况。 根据KEIL的编译惯例(这个编译惯例你可以在编完程序后点仿真,里面有个后缀为.src 的文件,这个文件里面是一句C对应一句汇编,你就可以知道你编译的C代码它是怎么处理的,能帮助你学习汇编哦~~~),通常把进入中断后的所使用的通用寄存器组根据情况选择压栈。也就是说,中断前后使用的寄存器组可能不一样,中断前可能使用0,中断中可能使用1。如果使用的同一组寄存器,为了保存现场,KEIL就PUSH现场数据,然后POP 就行啦。但是keil很多时候不是你想象中那样,你叫它怎样他就怎样编译。所以在程序中嵌入了少量的汇编。 其实,嵌入汇编是很简单的事情。 只要在C代码中加入#pragma asm 和#pragma endasm并在他俩的中间加入汇编就行。别忘了还要在工程文件中添加C51S.LIB,这个文件在KEIL/C51/LIB中,这个文件也很重要,不然编译会出现警告,记得把文件类型选择为全部文件,不然看不见它。 接下来说说KEIL的中断汇编。在C51中,中断到来时,CPU响应中断保存当前PC 指针地址压栈SP所指地址。然后将PC指针指向中断向量地址,在中断向量地址中只有一句汇编程序:LJMP XX 意思是跳转到某地址。因为中断后只有8个寄存器,但是你的代码量远远不只有8个寄存器能装下的。这也就是说,响应中断后,先跳转到硬件规定的地址,再由那个地址跳转到中断程序入口。 然后,PC指针跳转到中断程序地址,开始从SP所指地址压栈ACC,B,DPH,DPL,PSW,按理说还需要压栈R0~R7,但KEIL一般是通过换通用寄存器来实现的(也就是改变RS1和RS0来实现的)。也就说KEIL根本不压栈R0~R7。 这个怎么能行,当然不行!不保存我们就不能完全的返回先前压栈的任务啦!好吧,那我们就只有手动保存压栈,这样不就行了,简单吧! 所以我们来帮它。已经通过前面知道它在进入中断的时候已经把中断前的PC指针压栈到中断前SP所指的地址了,所以进入中断后,实际在SP中断前所指地址中已经按顺序压栈了PC低8位,PC高8位,ACC,B,DPH,DPL,PSW总共7个数据,SP是向上增长的,也就是说每压一次堆栈SP+1。然后再把我们的R0~R7寄存器压入堆栈,这不就行啦,就保护现场所需的全部数据,就算有时R0~R7寄存器用不上我们也得加进去,为了为了保证正确的返回现场。 因此我们保存一次数据就需要7+8=15字节的堆栈,每个任务的起始地址保存一次,中间临时要保存一次,共需要15+15=30字节的堆栈。所以定义程序空间为现场保存空间为 0~29。名字叫:unsigned char TASK_STACK[TASK_MAX][30];//程序现场保存数组。TASK_MAX是程序个数,因为每一个程序都需要保存两次,每次15个变量来保存现场,并且51是8位的单片机所以用unsigned char。 然后就是程序现场保存数组的初始化使每个数据都是0。 首先,根据响应中断后的压栈顺序,知道了数组0位和1位保存的是中断前程序的地

简单方便自制的几个AVR51 ISP编程器(下载线)

简单方便自制的几个AVR/51 ISP编程器(下载线) 2009-06-06 11:17 AVR单片机有许多优点,我也是个忠实支持者,是从51过度到AVR的,中途还学PIC,初学51时买了学习板,液晶屏等不少东西,有经验后,学AVR时就从自制的下载线开始了,注意,这只是个开始,简单的东西总存在着一些局限性,但对于初学者来说,这可是个非常有用的东西,有了它就可以开始学习AVR 单片机,甚至是一些开发了,这些编程器都是出自网上流传的,虽然我也不是很清楚出自那位高人,但感谢原作者.以下分享我的自制经验. 1.由于AVR的编程方式有并行高压和串行ISP (In System Program 在系统编程)方式,高压并行编程能修复一些错误的配置位,但这并不常用,因为并行通信其布线会较多,不便于在成品中预留编程接口,也不便自制,而串行的ISP是基于SPI(Serial Peripheral interface)通信方式的,SPI通信时只需三根数据线, 分别是SCK,MISO,MOSI,再加上VCC,GND,Reset共需6根线,而VCC是可选的,用于向目标芯片供电,或由目标板反供电给编程器. 那么设计目标板时,最少只要保留6根线,以后就可随时烧写,升级芯片上的程序了.而无需将芯片取下.这是ISP方式的最大特点,具体6根线连到那个引脚,不同型号不一样,要看芯片引脚定义图,例如ATtiny2313引脚定义如下: 至于编程接头,尽可能以官方的10针接口为准,也可像我一样自定义一个6针的,因为我更喜欢水晶头,其实都是排列不同而已,只要再制作一条线进行转换就什么都搞定了. 2.基于并口的ISP下载线,我最初也是自制了这款,这种下载线可以下载AVR全系列和AT89S系列51单片机,成本较低,不过需要PC机有并行口,许多笔记本电脑现在都没有并口了,比较麻烦,市场上卖的USB转并口,大都是用于打印机的,无法使用.

自制一台ATMEL 89系列FLASH单片机编程器

自制一台ATMEL 89系列FLASH单片机编程器 学习单片机最有用的恐怕是编程器和仿真机,一台商品化的编程器至少要几百元,仿真机价格更高,往往让初学者难以选择。这里介绍的一款国外电子网站推出的廉价51编程器,能够读写最常用的12种51单片机,自己动手装配一台,既能锻炼自己的动手能力,又能廉价地装备一台多用编程器,无论是学习单片机或业余时间搞开发,都是一个非常好的选择。笔者按照资料自制了一台,十分好用,不敢独享。特编译了全部制作资料介绍给大家。这个编程器硬件使用标准的TTL系列器件而没有使用特殊元件。它连接在计算机的并行端口,对PC的并口没有特殊要求,所以配置很低的计算机也能用这个编程器。Atmel Flash 系列单片机是当前最流行的单片机,易于擦写,不象OTP芯片容易造成浪费。特别是89系列单片机与大家熟悉的INTEL51系列单片机完全兼容,这个编程器支持的单片机主要是Atmel flash系列。 支持的器件: 这个编程器支持以下ATMEL单片机 AT89C51,AT89C52,AT89C55,AT89S51,AT89S52,AT89S53,AT89C51RC, AT89C55WD,AT89S8252,AT89C1051U,AT89C2051,AT89C4051 注意:20脚的单片机需要一个简单的适配器。(图 2 ) 硬件:

图1显示了这个FLASH 编程器的电路图,编程器和标准的计算机并口连接。电路图中的U2是用于控制计算机和控制器之间的数据流,U4 锁存低位地址字节,U5 锁存高位地址字节,U3用于产生控制信号给被编程的单片机。IC U1用于产生编程脉冲给单片机.当U7提供编程电压给控制器时,电源部分用U8产生逻辑5v供给。IC U6用于产生5V或6.5V VDD 电源电压给单片机。 图 1 编程器的电路图 调试:

51单片机的看门狗

“看门狗”概念及其应用 在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watch dog)。 加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。 通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。 看门狗定时器寄存器(WDT_CONTR) STC单片机看门狗定时器寄存器在特殊功能寄存器中的字节地址为E1H,不能位寻址,该寄存器用来管理STC单片机的看门狗控制部分,包括启停看门狗、设置看门狗溢出时间等。单片机复位时该寄存器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。其各位的定义如表4.2.1所示。 表1看门狗定时器寄存器(WDT_CONTR)

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC) 51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。 单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点: 1. 要知道寄存器的英文全拼,比如IE = interrupt中断 不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。 2. 每个知识点要有形像的出处 比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位 看到ET0, 马上要形像地定位到IE寄存器的第2位 https://www.360docs.net/doc/dc18127365.html,/tuenhai/独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。 写程序代码时,也要把尽量把每行代码形像化。 51单片机内中断源 8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):

8052有6个中断源,它比8051多一个定时器/计数器T2中断源。 8051五个中断源分别是: (1)51单片机外部中断源 8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。 INT0也就是Interrupt 0。在这里应该看一下你的51单片机开发板的电路原理图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。 TCON的结构如下图: (a)定时器T0的运行控制位TR0

单片机片内存储器如何烧写 几种烧写方式介绍

单片机片内存储器如何烧写几种烧写方式介绍 单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存程序,在系统上电后,CPU 可取出这些指令重新执行。只读存储器(Read Only Memory,ROM)中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称只读存储器。向ROM中写入信息称为ROM编程。根据编程方式不同, 掩模ROM.在制造过程中编程,是以掩模工艺实现的,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但是由于掩模工艺成本较高,只适合于大批量生产。 可编程ROM(PROM).芯片出厂时没有任何程序信息,用独立的编程器写入。但是PROM 只能写一次,写入内容后,就不能再修改。 EPROM.用紫外线擦除,用电信号编程。在芯片外壳的中间位置有一个圆形窗口,对该窗口照射紫外线就可擦除原有的信息,使用编程器可将调试完毕的程序写入。 E2PROM(EEPROM).用电信号擦除,用电信号编程。对E2PROM的读写操作与RAM存储器几乎没什么差别,只是写入速度慢一些,但断电后仍能保存信息。 Flash ROM.闪速存储器(简称闪存),是在EPROM和E2PROM的基础上发展起来的一种电擦除型只读存储器。特点是可快速在线修改其存储单元中的数据,改写次数达一万次(ROM 都有改写次数),读写速度快,存取时间可达70ns,而成本比E2PROM低得多,因此正逐步取代E2PROM。 注意:更多存储器内容请参考,《电子技术基础》数字部分(第五版) 主编康华光. 第七章,或者电工学(第七版)(下册) 主编秦曾煌第22章. 烧写器、烧录器、编程器、下载器、仿真器、调试器 单片机编程器(烧写器、烧录器)是用来将程序代码写入存储器芯片或者单片机内部的工具。编程器主要修改只读存储器中的程序,编程器通常与计算机连接,再配合编程软件使用。如下图所示是一个典型的编程器外形。图中黑色的是集成电路插座(也有下载编程器,不用取下芯片,涉及ISP、ICP,后面有介绍),通过拨动手柄可以将置于其中的集成电路芯

自制简单编程器

许多爱好者由于不具备专业的开发环境和编程器而无法进行单片机实验,这里给大家介绍一个简单的AT89C2051编程电路,只要有一部微机,再做一个简易的接口即可。打印口必须具备双向功能(目前的微机一般都满足,如EPP、ECP模式均可用),编程器电路见附图。 AT89C1051/2051单片机的编程的时序简述如下: 1 接通电源(置Vcc为+5V),置RST、XLAT1为低电平,延时至少10ms。 2 置RST、P 3 2为高电平。 3 置P3 3、P3 4、P3 5、P3 7为相应编程模式:LHHH(写入)、LLHH(读出)、HLLL(片擦除)…… 4 送出要写入的数据到P1 0~P1 7(第一次写入的是地址0)。 5 将RST升至12V,使单片机能进行写入或擦除操作。 6 送一个脉冲给P3 2,激发一次编程动作。这时内部自动完成所需的时序(约1 2ms),此间P3 1 变为L,表示内部忙。 7 为了验证写入数据是否正确,可将RST电压拉回到H,并置P3 3~P3 5、P3 7为“LLHH”, 所写入的数据便可从P1端口读出。 8 送一个脉冲给XLAT1,单片机进入下一个编程地址。 9 循环步骤4到8,直到最后一个编程地址,便可完成全部的编程工作。 10 置RST、XLAT1为L,并切断电源Vcc,编程结束。 其它有关擦除和加密的步骤这里略过,读者可参考有关资料。 在该装置中,微机并口的8条数据线(PD0~PD7)接至单片机的P1端口,用来收发数据。4条控制线(PC0~PC3)分别用来产生编程所需的控制信号。状态口的PS6接至P3 1用来获取单片机的工作状态,采用C++语言编写编程控制软件,实现简易的编程操作。 程序使用方法:(运行程序将出现使用说明) P2051 R[文件〗读出单片机内数据,需置开关P33、P34为L,P35、P37为H。 P2051 W[文件〗将数据写进单片机,需置开关P33为L,P35、P34、P37为H。 P2051 E 擦除单片机,需置开关P33为H,P35、P34、P37为L。 P2051 L 对单片机加密,需置开关P33、P34为H,P35、P37为L。

51单片机精确延时程序大集合

51单片机精确延时程序大集合 以下程序说是精确延时,实际上都不对。调用一次差个几微秒、几百微秒,一天下来差好几分钟。加我的QQ群有精确版本哦,不同频率的晶振都适用。群:38397759 2008-04-24 12:10:26, 在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个机器周期 PUSH 05H;2个机器周期 PUSH 06H;2个机器周期 MOV R4,#50;1个机器周期 DELAY5S_0:MOV R5,#200;1个机器周期 DELAY5S_1:MOV R6,#245;1个机器周期 DJNZ R6,$;2×245=490个机器周期 DJNZ R5,DELAY5S_1;这条2个机器周期,这层循环包含R5×(490+1) +2×R5=98600个机器周期 DJNZ R4,DELAY5S_0;这条2个机器周期,这层循环包含R4×(98600+1) +2×R4=4930150个机器周期 POP 06H;2个机器周期 POP 05H;2个机器周期 POP 04H;2个机器周期 RET;2个机器周期 ;(共2+2+2+1+4930150+2+2+2+2=4930165个机器周期) ;513微秒延时程序 DELAY: MOV R2,#0FEH;1个机器周期 JUZINAIYOU: DJNZ R2,JUZINAIYOU;2×R21即2×245 RET;2个机器周期 ;(实际上是493个机器周期)

;10毫秒延时程序 DL10MS: MOV R3,#14H DL10MS1:LCALL DELAY DJNZ R3,DL10MS1 RET ;(缺DELAY) ;0.1s延时程序12MHz DELAY: MOV R6,#250 DL1: MOV R7,#200 DL2: DJNZ R6,DL2 DJNZ R7,DL1 RET ;延时1046549微秒(12MHz) ;具体的计算公式是: ;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3)*r5+5 DEL : MOV R5,#08H DEL1: MOV R6,#0FFH DEL2: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL2 DJNZ R5,DEL1 RET ;1秒延时子程序是以12MHz晶振 DELAY:MOV R1,#50 del0: mov r2,#91 del1: mov r3,#100 djnz r3,$ djnz r2,del1 djnz r1,del0 Ret ;1秒延时子程序是以12MHz晶振为例算指令周期耗时 KK: MOV R5,#10 ;1指令周期×1 K1: MOV R6,#0FFH ;1指令周期×10

AT89C51 52 55单片机编程器(烧写器)制作

AT89C51/52/55单片机编程器(烧写器)制作 -------------------------------------------------------------------------------- AT89C51/52/55单片机编程器(烧写器)制作 AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性。一般情况下可重复烧写1000次,这样为初学者试验提供了一个廉价的平台。为了满足广大单片机爱好者动手的需要,本人利用半个月的时间,参考国外资料,实际设计制作成功一款简单的AT89C51/52/55单片机编程器。由于单片机编程时序不同,这一款编程器仅仅支持ATMEL 公司的AT89C51, AT89C52, AT89C55芯片,不支持华邦或飞利浦兼容芯片。下面是单片机编程器电路图.

注:元器件清单见附录 工作原理简述: Q2, Q4以及周围的几个元件构成了电平转换电路,这样节省了1片max 232芯片,在要求不高的场合,这个电路在单片机通信中可以取代MAX232。Q1, R2,R4,DW2,4个元件为编程器提供烧写用12V电压,其中,R4, R2构成了分压电路;平时,*芯片89C51第13脚(P3.3)输出高电平,Q1导通,R2(1K)将DW2(12V)拉低,此时DW2电压由R4,R2 分压,大约3-5V 之间;当写程序时,*芯片第13脚(P3.3)输出低电平,Q1截止,DW2(12V)直接送到被烧芯片的31脚,从而提供烧写电压。ATMEL官方网站提供的编程器器烧写电压是用LM317调整得到的,并且用到了两个高精度电阻,电路复杂且成本高,该电路经过本人数百台的实验证明非常稳定可靠. 电源变压器要求为15V的电源,例如常见的3-12V直流可调电源,注意其空载电压不要低于13V , 滤波应好一些,否则可能出现编程不可靠的情况。 *芯片用IC座安装,另外找一个编程器烧写好*程序EZ51.HEX后插入,方便调试。烧写卡座如果购买有困难,可以直接用一个IC座。连接电缆用9对9一头公一头母的串口线,注意市场上有些串口线的两头2,3脚是交叉的,最好用万用表检查一下是否为一一对应。如果没有串口线,也可拆一个老式的串口鼠标自制,只要两头把2,3,5脚连接好即可。本电路对元件没有特殊要求,电阻用1/8W普通碳膜,三极管我用的是2SA1015,2SC1815, 实际上很多小功率管都可以,例如9014,9015。只是需要注意他们的管脚排列区别。二极管1N4148可以用1N4004替代。另外12V稳压管最好挑选一下,精度要求为5%以内。 11.0592M晶体有条件的话应当测试一下,市场零售的晶体有些不起振。 这款编程器的烧写软件EZ31.EXE界面很简单;全兼容于WINDOWS9X-2000。仅有几个按钮,分别为打开文件(SEND),读芯片(READ),退出(EXIT),COM选择,加密(LOCK CODE),以及校验(FAST VERILY)。大家用一下就知道了。注意目前提供下载的为它的升级版本ez4.0自动监测端口号和芯片。使用更简单!DIY安装步骤: 1: 安装电阻,共11个;元件插到位后焊接剪脚: 2:安装二极管,三个1N4148 和一个12V稳压管DW2。请仔细看管子的表面有字:稳压管印有12V字样,千万别给搞混了。二极管是有极性的,二极管的黑头方向插向pcb的印有白色的一边就对了:元件插到位后焊接剪脚: 3:安装2个104和2个30p电容;11。0592晶体,这些都没有方向性随便插: 4:插入三极管。电解电容,发光管:注意这些东西都是有极性的:如果搞反了可不行。电解电容和发光管很好办,都是负极向下。三极管(2个2SC1815,一个2SA1015,)以及一个78L05的稳压IC:他们的方向在PCB上可以看到,屁股的方向就是半圆圈的方向。 5:插入排阻(排阻有一个白点的一端是公共端,他的位置在靠近PCB边源的一端;电源插座,232插座就不用说了。 6:插*芯片的插座。 7:插烧写卡座。由于他和*芯片是面对面的,因此必须先焊接*芯片插座,最后焊烧写卡座。否则等会不好动烙铁了。 8:如果您实在搞不清除元件的方向,请睁大眼睛仔细看看上面的照片吧。 9:最后检查一下电路板的各个地方有没有插错,短路的。再按照上面的调试方法调试。如果没有插错基本可以一次调OK 调试: 组装好后通电,用万用表检查:

单片机结构与开发设计流程图

模块一单片机结构及开发设计流程 课题一单片机结构 1、画出89C51单片机的引脚排列图。 2、画出89C51单片机的引脚功能图。 3、画出89C51单片机的基本组成框图。 4、叙述89C51单片机各部分的具体组成情况。 课题二单片机工作条件 1、画出51系列单片机部时钟和外部时钟电路接线图。 2、画出51系列单片机上电复位和按键复位电路接线图。 3、画出51系列单片机工作条件接线图。 课题三单片机输入/输出端口结构 1、画出51系列单片机P0、P1、P 2、P3口位结构图。 2、叙述51系列单片机P0~P3口使用注意事项。 课题四单片机开发设计流程 1、用Protel软件画出按键左移亮灯电路原理图。 2、用Protel软件设计出按键左移亮灯电路印制电路板图。 3、制作按键左移亮灯电路板。 4、连接仿真器。 5、运行仿真软件,输入按键左移亮灯程序,编译、调试及仿真运行程序。 6、连接编程器。 7、运行编程器软件,将调试通过的按键左移亮灯程序目标代码写入89C51单片机。 8、将经过编程的89C51单片机插入电路板上的单片机IC插座中,脱机运行,观察电路运 行情况。 模块二单片机指令系统及汇编语言程序设计 课题一程序设计基础 1、简述单片机存储器总体分配情况。 2、简述单片机片数据存储器结构。 3、简述单片机七种寻址方式。

4、简述单片机不同存储器空间的寻址方式。 5、回答下列指令的寻址方式: (1)MOV A, #6AH (2)MOV A, #0E#H (3)MOV A, 3FH (4)MOV A, 7BH (5)MOV A, R1 (6)MOV A, R3 (7)MOV A, R0 (8)MOV A, R1 (9)MOVX A, DPTR (10)MOVC A, A+DPTR (11)MOV A, A+PC (12)JZ 50H (13)SETB 01H 课题二延时程序 1、将本课题任务二中的R3的值改为01H、02H和08H,观察亮灯的间隔时间有何变化? 2、将本课题任务二中的RL A指令改为RR A指令,观察亮灯的顺序有何变化? 3、将本课题任务二中的亮灯数据初值改为03H、07H和55H,观察亮灯规律有何变化? 4、设计一延时5S的延时程序,并替代任务二中的延时程序,观察亮灯间隔时间。 5、设单片机振荡频率为6MHz,试精确计算下列延时子程序的延时时间。 DEL: MOV R7, #0FAH DEL1: MOV R6, #0F8H NOP DEL2: DJNZ R6, DEL2 DJNZ R7, DEL1 6、设单片机振荡频率为12MHz,试估算下列延时子程序的延时时间。 MOV R5, #20 K1: MOV R6, #250 K2: DJNZ R6, K2 DJNZ R5, K1

相关文档
最新文档