针对常用51单片机下载程序问题做下详解
单片机下载程序方式总结

单片机程序下载方式总结一、编程器下载(离线下载、脱机下载)编程器也称为程序烧录器,将单片机从电路板下取下来,放入烧录器的芯片座并固定好,然后进行程序下载。
编程器与PC机之间用USB、串口、并口等方式连接并传输数据,目前主流的产品支持USB和串口连接,部分产品支持插装CF卡,即将程序提前复制到CF卡中,烧写过程可不需要PC机。
程序烧录器成本较高,如图1所示的SmartPRO 5000U售价在2400元左右。
该方式不如在线编程方式灵活方便,现在个人和小批量的编程已经很少使用了。
该方式主要用于量产编程,对于批量生产的产品,使用专门的编程器实现脱机编程,一次可烧写大量的芯片。
同时,公司指派专人负责程序下载,保密性强。
有些技术公司外接项目时,将烧定芯片次数与产品提成挂钩,烧一个芯片表明生产了一台产品。
图1单片机程序烧录器二、在系统编程ISP(In System Programming)不用将单片机从线路板上取下来,直接烧写,适用于样机研发阶段或小批量的程序下载。
根据PC机与单片机的通信方式不同分为2种:(1)SPI接口模式SPI模式是ATMEL和PIC单片机常用的下载方式,该方式要求单片机必须具备SPI接口,如AT89S51系列单片机的P1^5、P1^6、P1^7分别为MOSI(主输出从输入),MISO(主输入从输出),SCK(同步时钟)引脚,下载程序时还要用到RST引脚。
SPI接口和电脑的现有通讯口都不兼容,因此需要通过转换电路把PC机的端口转换成SPI方式,常见的包括并口、RS232串口、USB口转SPI下载。
并口和RS232串口转换到SPI比较简单,可以网上查找资料自己制作。
USB转SPI的电路做起来有点难度,但是使用比较方便,一般网上都有成品销售。
SPI下载的优点是下载比较可靠和稳定,与单片机的接口简单。
图2 USB转SPI下载器图3 SPI接口(2)串口模式单片机还可利用自身的串口来下载程序,典型的如STC单片机。
51单片机的RAM区域划分以及常遇到的问题

51单片机的RAM区域划分以及常遇到的问题前几天群里有一位同学使用AT89S51这个单片机编程,遇到了一个情况:keil软件的options for Target的Target选项中,其中的Memory Model选项,同样的程序,如果选择Small模式进行编译,把程序下载到单片机内,程序就工作正常;如果选择Large模式进行编译,下载到单片机内程序就工作不正常,这个就是新手偶尔遇到,但是很难分析出原因的内存使用溢出问题。
51单片机的问题,是历史问题,比较复杂,那现在一般一些新型单片机这种问题就简单一些,但是也得注意关于RAM的溢出问题。
RAM是用来保存临时数据的,一旦我们的使用量超过了RAM的大小或者区域,那就可能造成一些不可预知的错误问题。
51单片机的RAM分为片内和片外,标准的51内核是0x00~0x7F 一共128B,而现在的大多数半导体厂商开发的51系列单片机都带了扩展片内RAM,即片内RAM区域一般是从0x00到0xFF一共256B。
随着功能需求越来越多,程序量越来越大,那片内这256B也不够用了,因此又扩展了片外RAM,片外RAM的预留比较大,最大可以从0x0000到0xFFFF一共64KB,当然了,每个具体型号有多大不一定,具体看通过芯片的手册来了解。
而现在的51单片机的片外RAM,“片外”只是一个名词而已,实际上很多也是直接做到了单片机内部,但是访问地址,还是以外部的起始地址的方式。
就是说,片内RAM的地址从0x00到0xFF,而片外是从0x0000到0xFFFF;其中最开始的256B是重复的地址,这部分通常情况下只要RAM够用就可以不理会,软件编译器会自动给我们处理好。
当选默认small模式,优先使用内部的前128B,而选Large 模式,优先使用的是片外的64K。
因此上面那个同学的问题就在这里了,因为他用的是AT89S51单片机,而这个单片机是没有片外RAM 的,如果选择了Large模式,那优先使用的是片外,因此编译完成,下载到单片机里,程序运行时用了这个单片机所没有的区域,那肯定就不行了。
51单片机c程序编写下载调试

51单片机的程序编写下载入门(本讲解是在win7旗舰版系统下实现的)首先在PC要安装好1、keil4软件开发环境2、stcisp程序下载软件3、usb转串口的驱动程序一、新建工程:打开keil uVision4→Project→New uVision Project→选择工程文件存放地址,给工程命名(存放地址和工程名不一定要一致!)→选择芯片类型(一般选择Atmel下的AT89C52)→添加启动文件?选择“否”新建文件,可以从File里面建,也可以直接按Ctrl+N新建完文件紧接着就保存(Ctrl+S),注意后缀名要是.c然后就要将新建的文件添加到工程中去选择刚刚新建好的c文件,单击Add,单击Close。
当左侧的窗口显示如下就说明添加成功了接下来就可以编辑程序了!二、编辑编译刚装上的keil软件编辑的字体是很小的而且看着很不舒服,下面就来调节字体。
根据自己的喜好选择字体和大小吧,最后点击ok就行了。
终于可以开始敲击程序了!经过一番辛勤的耕耘,代码终于敲好了。
可是要让硬件去实现功能还有不少的事情要做啊!不用担心,你会很享受这个过程的!自己敲好的代码一般会存在两个方面的问题。
一是c语言的语法上的问题。
这个可以通过keil的编译器帮助查出,进行修改。
点击下图圆形中的图标进行编译。
在界面的下方会出现这个框,显示编译结果。
我们最终要得到以下图椭圆中的字样。
但是一般情况下编译后会有以下的问题:1、error C202: 'led': undefinedidentifier——这是没有定义led这个量。
2、error C141: syntax error near '}'——这表明在'}'附近有句法错误,一般情况下是附近少了分号。
3、warning C206: 'DelayMs': missingfunction-prototype——这是DelayMs函数没有在主函数前声明。
6.单片机下载软件的学习

重点
1 • KEIL软件整个界面的初步学习 2 • KEIL软件建立工程 3 • 硬件设置 4 • 软件编程 5 • 编译 6 • 程序下载
难点
• KEIL软件整个界面的初步学习 1
• 利用KEIL软件建立工程、硬件设置、软件 2 • 编程、编译的整个过程的熟练
点击保存按钮以后,会弹出一个对话框,要为这个文件起一 个名字,后缀名为.c,名字起了之后,就点击保存。最后打 开左侧下拉菜单
打开下来菜单以后,点击右键,导入刚才的文件
导入以后,双击打开
打开以后,就要设置一下,因为要烧写到单片机中,所以就 需要将所编写的代码转换成机器码。
点击OUTPUT选项
点击HEX选项,并单击确定
设置好了以后,要进行编译文件
找到刚才的C文件,并导入
下面的对话框显示错误信息,上图显示书写的程序没有错 误,如果有错误则需要改正并从新编译
总结
KEIL软件整个界面的初步学习 利用KEIL软件建立工程、硬件设置、软件 编程、编译的整个过程的熟练
程序下载过程
作业
• 自己建立一个以自 己的名字命名的 KEIL工程,完成从 建立工程、硬件设 置、软件编程、编 译、下载的整个过 程,反复练习。那么漂亮的霓虹灯就是用单片机控制 实现的,那么我们怎么才能做到呢?我们需要硬件 和软件的配合使用,我们得一步一步脚踏实地的学 习才能做到,那么下面我们来开始第一步的学习, 就是单片机程序编程软件KEIL软件的学习。
单击桌面上KEIL图标,打开KEIL
然后单击New Project命令
• 自己总结KEIL工程 的整个建立到最后 下载的过程,用文 字。
感谢
谢谢,精品课件
51单片机入门教程(两篇)

引言概述:51单片机是一种常见的单片机型号,它具有广泛的应用领域和较高的使用率。
本教程旨在为初学者提供51单片机的入门知识和基础操作指南。
本文将介绍51单片机的基本概念,硬件配置,编程语言,程序以及常见问题解答。
通过学习本教程,读者可以对51单片机有一个全面的了解,并在实践中掌握其基本应用。
正文内容:1.51单片机基本概念介绍单片机的定义和类型,包括其基本构成和特点。
详细解释51单片机的命名由来,并介绍其典型应用场景。
探讨51单片机与其他单片机型号的区别和优势。
2.51单片机硬件配置介绍51单片机开发板的主要组成部分和功能。
讲解51单片机的复位电路、晶振电路以及外部扩展接口。
提供常见的硬件错误排查方法,如常见的电路连接问题和芯片供电问题。
3.51单片机编程语言简要介绍51单片机所支持的主要编程语言。
详细解释汇编语言和C语言在51单片机编程中的应用。
提供汇编语言和C语言的编译和调试方法,以及注意事项。
4.51单片机程序介绍不同的程序方法,如串口、ISP以及仿真器。
解释如何选择合适的方法和调试工具。
提供常见错误和解决方法,如速度慢、失败等问题。
5.51单片机常见问题解答回答常见的初学者问题,如51单片机如何上电启动、如何设置端口输入输出、如何控制LED等。
解决常见的编程问题和错误,如程序死循环、程序崩溃等。
提供进一步学习资源和推荐书籍,以帮助读者更深入地理解和掌握51单片机。
总结:通过本教程的学习,读者获得了对51单片机的基本概念、硬件配置、编程语言、程序以及常见问题解答等方面的全面了解。
无论是初学者还是有一定经验的工程师,都可以通过实践操作和进一步学习,掌握51单片机的基本应用和进阶技巧。
希望本教程能给读者带来实际帮助,并激发更多的学习兴趣和创造力。
引言概述:本文主要介绍了51单片机入门教程。
51单片机是一种非常常见的单片机,广泛应用于各种电子设备和嵌入式系统中。
本文将详细介绍51单片机的基本原理、开发环境、编程语言以及常用功能及应用等方面的内容。
51单片机程序编写及下载

51单片机程序编写及下载
1,硬件准备
(1)将单片机小系统供电,一般为5V供电
(2)将并口下载线一端连接到电脑机箱后面的并口插槽,一端连接到单片机小系统板的下载口
2,编写程序
(1)打开keil c开发环境
(2)选择project—new project,新创建一个工程,并保存在相应目录下
(3)选择芯片类型,我们这里使用的是at89s52 (4)添加汇编启动代码,点击YES
(5)此时,程序已包含startup.a51的汇编启动代码,主要完成单片机各个寄存器的定义(6)创建c语言程序,点击file—new
(7)编写代码
(8)编写好的文件保存
(9)添加文件到工程(10)选择编写好的文件
(11)此时,在工程文件中,我们可以看到两个文件startup.a51汇编程序和test2.c的c程序(12)选择project—opinions for file test2.c
(13)选择output选项卡
(14)将create hex file 选项选中
(15)将文件编译连接
(16)如果文件没有错误,可以在相应文件夹中看到以下文件
3,下载程序
(1)打开ISPlay.exe应用程序
(2)点击检测器件
(3)点击擦除
(4)点击文件,选择.hex文件
(5)此时,可看到二进制代码
(6)点击autorun,将程序写入单片机。
常见51单片机指令及详解

常见51单片机指令及详解1. 简介单片机是一种集成电路,具备处理和控制功能。
51单片机是指Intel公司推出的一系列8位单片机,常用于嵌入式系统和物联网设备。
本文将介绍一些常见的51单片机指令,并对其进行详解。
2. 数据传送指令2.1 MOV指令MOV指令用于将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。
例如:MOV A, #10 ;将立即数10传送给累加器AMOV R0, R1 ;将寄存器R1的值传送给R02.2 XCH指令XCH指令用于交换两个寄存器或内存位置中的数据。
例如:XCH A, B ;交换累加器A和B的值3. 算术运算指令3.1 ADD指令ADD指令用于将两个操作数相加,并将结果保存在累加器中。
例如:ADD A, B ;将累加器A和寄存器B的值相加,结果存储在A中3.2 SUBB指令SUBB指令用于将第二个操作数的补码与累加器的值相减,并将结果存储在累加器中。
例如:SUBB A, B ;将B的补码与累加器A的值相减,结果存储在A中4. 逻辑运算指令4.1 ANL指令ANL指令用于对两个操作数进行按位与运算,并将结果存储在目的操作数中。
例如:ANL A, B ;将累加器A和寄存器B的值按位与,结果存储在A 中4.2 ORL指令ORL指令用于对两个操作数进行按位或运算,并将结果存储在目的操作数中。
例如:ORL A, B ;将累加器A和寄存器B的值按位或,结果存储在A 中5. 跳转指令5.1 JMP指令JMP指令用于无条件跳转至指定的目标地址。
例如:JMP 2000H ;跳转至内存地址2000H处执行指令5.2 JZ指令JZ指令用于在累加器为零时跳转至指定的目标地址。
例如:JZ 3000H ;当累加器为零时,跳转至内存地址3000H处执行指令6. 输入输出指令6.1 IN指令IN指令用于将外部设备的数据输入到累加器或指定的寄存器中。
例如:IN A, P1 ;将P1端口的数据输入到累加器A中6.2 OUT指令OUT指令用于将累加器或指定的寄存器中的数据输出到外部设备。
51单片机入门 程序下载(程序烧写)

51单片机入门程序下载(程序烧写)串口串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口。
我们比较熟悉的USB接口,全名通用串行总线(Universal Serial BUS),就属于串口。
串行接口按电气标准及协议来分还包括UART、RS232、RS422、RS485等。
老式的台式计算机和部分笔记本上则有RS232串口,这里RS232指的是RS232电平的串口。
后来由于这种串口使用很少、速度较慢、体积较大而逐渐在笔记本甚至台式机上被淘汰了。
而51单片机等中含有UART串口,UART这里指的是TTL电平的串口。
UART与RS232区别主要在于其电平定义不同。
TTL电平是5V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。
标准串口即RS232串口(通常指COM接口),如图。
由于USB接口与单片机的TTL串口无法直接连接,一般通过转换芯片来连接。
连接到USB接口的转换芯片一般需要在电脑上安装驱动。
USB转RS232串口(常用转换芯片为CH341,价格10-20元)RS232转TTL(电平转换芯片MAX232)USB转TTL串口(常称为USB转TTL升级小板,USB-TTL转接板,常用转换芯片为PL2303,价格6-10元)USB - RS232串口 - TTL串口转接板USB-RS232电路图通常成品学习板上都是USB接口或者RS232串口+USB接口。
一方面USB接口负责给单片机供电,另一方面,USB转TTL或RS232转TTL已经集成的学习板上。
51单片机程序的烧写我们最常见的51单片机是美国Atmel公司生产的AT系列单片机和中国宏晶公司生产的STC系列单片机。
早期的AT89C51系列(89后面是字母C)单片机,下载程序时需要使用专门的烧写器烧写进去,单片机烧写程序时必须从电路上取下来,非常麻烦。
后来退出了支持ISP(In System Programming)在线编程的AT89S51系列单片机,只需连接几根线即可烧写程序,也不需取下单片机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
针对常用51单片机下载程序问题做下详解
目前为止,接触单片机已有不少,从选择元器件、原理图、PCB、电路硬件调试、软件开发也算小有心得。
单片机软件开发里面第一步当属下载程序了,如果这一步都有问题,那么后面的一切便无从谈起,记得当初刚接触单片机时,对于下载电路方法及原理也是一头雾水。
好在随着经验的积累以及自己的努力探求,现在对此问题算是有了点点自己的经验理解。
故今天在此针对常用51单片机下载程序问题做下详解,以求新手们少走弯路。
原理
单片机的TXD、RXD是TTL电平,所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!其中CH340、PL2303等芯片是直接将USB信号转换为TTL电平,而MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL.下面请看利用这种原理的两种常用方法:
方法一:
请看图一,这是我们最常见的单片机下载电路了,其中从②到⑥属于大家常用的USB转串口线,用这种方案的好处是,如果自己的PC带有串口(可能很老的机器没有USB接口),那么就可以直接给单片机开发板下载程序,因为采用这种方法的开发板必定带有串口接口嘛。
当然,如果PC仅有USB接口而不带串口,那么只能找根USB转串口线了(其电路原理就是图中②到⑥),这里我推荐大家使用采用CH340芯片的USB转串口线,而不要采用PL2303的USB转串口线,因为PL2303价钱便宜所以山寨的水货较多,这会导致下载电路不稳定,甚至无法正常下载。
同时此方案的坏处是电路板上必定要做一个9针串口接口(太巨大了),这必将增加了电路PCB的面积,当然也就增加了成本啦!(顺便发表下个人见解:那个9针接口实在太丑,又大又重,无形中便降低了自己的设计档次,哈哈。
所以不推荐这种方法!)
请看图二,这是我经常采用的单片机下载电路。
实践证明效果非常好,几乎没出过任何问。