文档库 最新最全的文档下载
当前位置:文档库 › 宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总

宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总

宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总
宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总

宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总 (Ver0.99.14) (Click here for the English version: STC MCU STC-ISP serial programming failure causes and solutions點擊查看繁體中文版本: 宏晶STC單片機使用STC-ISP串口燒錄失敗的原因與解決匯總)

STC单片机使用串口ISP(在系统编程:InSystemProgram)编程(或称:下载、烧写、烧录等),不需专用编程器,只要有串口和单片机接成最小系统(带有MAX232电路)就可以了,非常方便。(注:若USB转串口下载器/下载线本身可直接输出TTL 电平,则连MAX232电路也不需要(例如使用CH340T芯片的下载器))。

2014.08起,最新新的STC15W4KxxS4系列单片机支持直接接USB D+/D-下载,非常方便。但是大量的实际编程下载时可能遇到各种各样下载失败的问题,影响了用户体验,现整理原因和解决方法如下:下载不成功不外乎单片机本身或下载环境这两方面的问题,我们可使用替换法来检查问题出在何处,首先可试更换另一片单片机或另一个下载线或下载板,排除个体差异。因STC-ISP对串口信号的时序、电平的指标要求较严格,若果使用低价的劣质USB转串口线,问题大多出现于此。

我们强烈建议以下配置作为测试标准平台:台式机的原生串口 + 32位的WINXP(64位可能兼容性不够好)+ 原厂MAX232(SP232)芯片(3.3V系统需要MAX3232)+ 单片机最小系统。(注意:部分用户的精简版WINXP 由于组件不完整,可能导致STC-ISP 软件不能正常运行或出错,请改用完整版)其实,STC-ISP软件已经列出了常见的下载失败原因,见下图:

1.在单片机停电状态下,点下载按钮,再给单片机上电。

2.停止下载,重新选择 RS-232 串口, 接好电缆。

3.可能需要先将 P1.0/P1.1 短接到地。

4.可能外部时钟未接。

5.因 PLCC、PQFP 转换座引线过长而引起时钟不振荡,请调整参数。

6.可能要升级电脑端的 STC-ISP.exe 软件。

7.若仍然不成功,可能 MCU/单片机内无 ISP 系统引导码,或需退回升级,或 MCU 已损坏。

8.若使用 USB 转 RS-232 串口线下载,可能会遇到不兼容的问题,可以让我们帮助购买兼容的USB转RS-232串口线。

我们也总结失败的原因如下:

1、首先检查最小系统连线是否正常,有否短路或开路、接触不良的现象。(特别注意:烧写点击编程键后,单片机必须断电进行冷启动!)。

2、检查电压是否稳定和正确(不可过高或过低,F系列为5.0V,L系列为3.3V,W系列为宽电压3.3-5.0V)。

3、试将STC-ISP的下载波特率调低,并将最低和最高波特率调为一致(例如均选为4800BPS)。

4、检查是下载选项上次是否选择了P1.0/P1.1(15F系列为:P3.2/P3.3)同为0才下载,而本次没有将其拉低为低电平。

5、检查STC-ISP下载选项上次是否选择了使用外部晶振,而本次未接入外部晶振或震荡电路不工作。

6、是否有外挂电路的影响(例如外挂了RS485等电路会干扰串口)。

7、STC-ISP的下载选项延时设置是否正确(建议勾选“上电复位使用较长延时”)。

8、232电平转换电路是否良好(3.3V系统需要MAX3232,请使用原厂正品,并注意批判电容的容量。另:部分国产232芯片不稳定,需要注意。强烈建议不要用2个三极管搭建的廉价232电路)(若使用某些输出TTL电平的USB专用下载器(如CH340T芯片的),则不需要232电平转换电路)。

9、若使用USB线转串口线,注意USB线的质量问题,推荐使用CH340T芯片的线。(PL2302芯片假冒品很多,需找到合适的驱动,最新的驱动未必最好)。

10、部分USB转串口线会通过RxD/TxD引脚对单片机供电,导致下载时不能彻底断电。可在单片机的TxD引脚串一个二极管(接正极,如图),使单片机可彻底断电冷启动。(注:若USB转串口芯片共板,不要对USB芯片断电,否则USB转换的串口会消失)。

11、检查是否复位不良。

12、早期版本(2010-10-18前)的STC15F104E/204E请使用STC-ISP V1.06版下载,后面版本的推荐使用STC-ISP V6.53及以上的最新版本( STC-ISP V4.83/ STC-ISP V4.88建议仅用于早期的脱机下载板或早期固件的单片机)。

13、15系列单片机调节的频率过高,超过标称值(例如40MHZ),导致软件进行频率调整超时等失败(请按芯片型号标示的最高频率内进行调节,例如25MHZ和35MHZ 等,不要超频使用)。

14、芯片损坏或不良(因过流、过压烧毁或芯片内ISP CODE固件丢失等原因),请更换另一片芯片重试。

宏晶STC单片机串口ISP烧录故障及解决实例

1、现象:客户使用STC-ISP V4.83对ATMEL AT89S52烧写失败。

解决:STC-ISP只能对STC单片机进行烧写,其他牌子的单片机请使用其专用软件或支持的编程器。

2、现象:STC12C5A60S2 下载STC-ISP软件提示“正在检测单片机...”

解决:检查供电电压为4.25V,用户使用USB口供电,线材内阻大导致压降大,更换优质USB线后电压为4.85V,问题解决。

3、现象:使用STC-ISP V4.83+STC官方下载板(V3.0)下载STC12C5A60S2,无任何反

应。

解决:经检查,客户将电压跳线选择为3.3V上,单片机供电不足导致下载失败,重新将跳线设置5V,下载成功。

4、现象:用户称所有的几片STC12C5A60S2都只能烧写一次,下次再使用就“坏”了,

不能下载!!!

解决:用户所做的最小系统为无晶振的电路,但STC-ISP的下载选项选择了“下次使用外部晶振”,导致单片机因无时钟无法工作而下载失败,增加外部晶振电路即可。

5、现象:用户称所有的几片STC12C5A60S2都只能烧写一次,下次再使用就“坏”了,

不能下载!!!是否为OTP芯片假冒FLASH芯片???

解决:用户STC-ISP的下载选项选择了“下次冷启动P1.0/P1.1为0/0才下载”,而实际下载并未拉低导致下载失败,将该两脚接地即可(注:应留意STC-ISP的下载选项,理解各参数的用法,做出合适的选择)。

6、现象:芯片型号为“STC15F2K61S2”, 但下载时在STC-ISP找不到对应的型号,使用

IAP15F2K61S2时提示“型号错误”。

解决:经联系厂家,此为早期芯片,型号印刷有误,应为STC15F2K60S2,选择该型号后下载成功。

7、现象:STC12C5A32S2在某51开发板下载不稳定,成功率很低,降低波特率也无法

下载,提示“无法找到单片机”,而单片机则自动运行上一次的程序。

解决:单片机可运行,代表最小系统无问题。通过替换法排查,发现在另一块单片机开发板上可以正常下载,最后将原开发板上的国产的MAX232芯片(DIP封装,带插座)更改为正品的SP3232芯片后解决(估计为该MAX232芯片性能不良,有时外部的电容容量过小或性能不良也会出现类似故障)。

推荐使用STC官方的下载板作为基准最小系统平台。

8、现象:某开发板下载传统STC单片机正常,飞线下载IAP15F2K61S2无反应。

解决:经仔细检查,用户犯了低级错误,将RXD,TXD与P3.0/P3.1对调导致下载失败,更正后立即下载成功。

9、现象:某51开发板下载很不稳定,常常下载失败,试过何种方法也无法下载。

解决:检查板上MAX232芯片外围电荷泵电容为0.1uF,而查手册该型号后缀的芯片对应的电容容量为1uF,均更换为1uF电容后解决。

10、现象:用户一直使用STC15F104E在线下载无问题,后改用另一批次芯片,下载成

功率很低,客户一直认为下载环境无改变。

解决:经查,虽然单片机特性均在数据手册范围以内,但部分特性不同,在STC-ISP 软件的“下载选项”勾选“上电复位使用较长延时”后下载成功。

11、现象:用户使用USB转串口专用下载器,之前一直正常,某天突然下载

STC15F2K61S2失败,STC-ISP提示“调整频率无响应”。

解决:使用替换法检查,使用原生串口+RS232电路可以下载,冷启动电脑,卸载并重新安装USB转串口下载器的驱动后解决。

12、现象:STC12C5A60S2 下载无反应,但之前下载的流水灯测试程序可以正常运行。

解决:经了解,用户上次使用第三方SP300U编程器下载过芯片,后来就不能使用STC-ISP下载。

经查,该编程器已破坏STC芯片的ISP CODE代码(固件),已经不能串口下载(点评:STC单片机建议使用原厂STC-ISP下载即可,不建议使用其它编程器)。

13、现象:STC12C5A08S2下载无反应

解决:经查,客户在STC-ISP中选择了“下次冷启动使用外部晶振”,但实际下载环境晶振使用了插座,检查该插座有一脚与PCB虚焊了,震荡电路不工作。补焊后正常下载。

14、现象:用户手工使用洞洞板搭建最小系统,但是下载不成功。使用芯片:

STC89C52RD+。

解决:经查,客户使用性能不良的开关电源,不稳定,且滤波不良。更换优质电源后解决。

15、现象:IAP15F2K61S2下载,一直停留在“正在调整频率”环节。

解决:经检查,用户的芯片型号为“IAP15F2K61S2-25I-PDIP40”,该芯片最高工作频率为25Mhz,但用户手工将工作频率设定为40MHZ(超频)。

为稳定,使用标称频率以内即可正常。

16、现象:IAP15F2K61S2(2013年C版),下载设定频率为15MHZ, 但实际为14.2MHZ,

偏移约10%!

解决:经咨询厂家,该系列芯片只能在常用频点(例如:11.0592M、12M等)范围内调整能达到误差少于0.3%,部分不常用的频点会有较大误差。用户选择常用频率后正常。

17、现象:IAP15F2K61S2下载若超过30MHZ,以后不论如何设置都不能下载,不是无

响应就是长期卡在“调节频率中”上,但放置到次日就可以正常下载(30MHZ以下)。

百思不得其解!

解决:后来在单片机正面的型号中发现有“BATEA”字样,表明这是一个样片(应该是当初送样的,估计没有直接销售)。此芯片为试产样片A版本,可能存在各种不稳定的情况,后续的B版、C版芯片已经改正。

18、现象:用户需下载“STC15F104E”芯片,但STC-ISP 软件单片机型号下拉菜单与“打

开程序文件”按钮均为灰色,型号固定为“IAP15F2K61S2”且无法读入烧写HEX文件,换过几台电脑,在WINXP和WIN7下均如此。

解决:经咨询,客户使用的STC-ISP左上角的版本号显示为V6.31,其实这是一个被自助发布的版本,被定义为“IAP15F2K61S2”且HEX已内置。

原因:该版本的界面正常版与被发布版一样,导致误会。后续版本厂家已经将界面与正常版明显区分,并可自定义标题。换用STC-ISP 最新版软件(例如V6.57)“搞定”!:)

19、现象:(网摘)用户一直使用网购的USB转串口下载器(外形如U盘)下载正常,

某日在学校同学的类似的USB下载器却不能下载,提示“正在检测目标单片机”,但该串口自检正常。

解决:经查,用户原下载器型号为HT1032,内置自动冷启动功能,学校的为不带自动冷启动功能导致下载失败。STC单片机烧写须冷启动才能进入ISP状态。后用户手工拨动开关断电一下,烧写下载成功!(注意:STC单片机下载必须冷启动,与ARM等烧写方式不同,习惯后也是非常方便的。)

20、现象:STC12C2051(内部固件版本号:3.6D),使用目前最新版STC-ISP V6.57

下载失败,提示“暂不支持烧录该版本单片机”。

解决:改用传统STC-ISP V4.83/V4.88烧写成功。(注:STC-ISP V6.XX不支持部分固件版本低的老型号单片机烧录)

21、现象:STC15F12AD(PDIP40封装)烧写时在STC-ISP软件中找不到对应型号。

解决:该版本为早期样片,仅供测试,未量产,可使用STC-ISP V4.82BETA版(可在本站下载)烧写。

22、现象:在开发板可以下载STC89C52RC可以,但跳线下载IAP15F2K61S2不成功,

显示“正在握手中..”

解决:经检查,发现用户使用的USB线不稳定,更换为台湾力特牌(推荐)正品USB转串口线(FT232芯片)并下载安装最新驱动后下载成功(注:因STC-ISP对串口时序和电平要求较严格,故部分低价USB串口线不能满足要求导致下载失败)。

23、现象:STC15F204EA(SKDIP28封装),下载无反应。

解决:发现该批芯片为早期版本(2010-10-18前)版本,在官网下载 STC-ISP V1.06版(下载地址:

https://www.wendangku.net/doc/204981412.html,/datasheet/stc/STC-ISP-15F204EA-V1.06/stc-isp-15xx-v1.06-chi nese.exe)解决(注:新旧版芯片互不兼容,需对应版本的STC-ISP,请特别注意)。

24、现象:IAP15F2K61S2(版本C)下载,提示“下载失败”。

解决:发现使用的是STC-ISP V6.39版,试在STC官网下载最新的STC-ISP V6.53(及以上版本)再试,烧写成功(注:固件版本在7.1.3S及以上也需要新版STC-ISP软件才可烧写)。

25、现象:STC-ISP V4.83 在64位 WIN7 安装不成功,提示“XXX控件未安装”。

解决:因STC-ISP 新版已支持STC全系列单片机编程,在官网下载新版STC-ISP V6.53(及以上版本)后解决。(注:部分老STC单片机型号的内部固件较低或旧版脱机编程器,还是需要使用STC-ISP V4.83,可在STC网站(https://www.wendangku.net/doc/204981412.html,)下载控件及控件注册工具)

26、现象:(网摘)客户使用蓝牙串口,串口自检正常,但下载STC12C5A60S2单片机

不成功。

解决:因STC-ISP软件下载时需动态设置串口参数,但该蓝牙串口模块不支持。请暂使用普通串口下载。

27、现象:(网摘)用户使用LINUX,无法下载STC12C5630AD。

解决:STC暂无非WINDOWS版的ISP烧录软件,可尝试使用虚拟机下的WINDOWS 环境试验。(备注:从实用可靠角度,开发还是使用WINDOWS平台吧,同时该STC-ISP软件目前也不支持苹果MAC OS和IOS系统。)

28、现象:用户使用STC-ISP V6.57下载STC官方脱机下载板(V3.0)失败。

解决:STC-ISP V6.XX版的脱机下载不支持旧版的脱机下载板,请使用STC-ISP V4.83。

29、现象:用户使用STC官方下载板下载STC12C5630AD(DIP28封装)失败。

解决:经检查,该STC官方下载板为标准PDIP40的下载板,管脚不兼容!使用飞线或将下载板的下载接口插座引出到最小系统板解决。

30、现象:CP2102芯片USB转串口线下载,单片机无反应。

解决:使用串口工具检查,串口传输有误码,使用示波器观察,该串口时序及电平均性能不良,更换CH340芯片的串口线后成功。

31、现象:客户使用STC-ISP V6.XX下载一个24K的HEX文件,但是软件读入后又是

马上闪退会桌面,有时则是死锁“无响应”。

解决:部分特殊的HEX文件可能不兼容,最新版STC-ISP软件已针对其进行改善,或使用第三方HEX转换软件将其转为BIN文件加载即可。

32、现象:客户使用STC-ISP V6.61软件,选择了单片机型号为:STC12C5A08S2,然

后再【打开程序文件】加载一个下载大小约7K的HEX文件,但是软件读入后提示“文件大小超出范围,超过部分已被自动截取”,请问为什么HEX的大小比单片机的FLASH 空间小还是出现超容量呢?

解决:我们知道起始HEX文件的大小非BIN文件的大小(请自行查看HEX格式说明),将HEX转换为BIN文件后观察大小再选择FLASH ROM容量合适的单片机。

本例转换后BIN文件为9K左右,故选用FLASH ROM容量为16K的STC12C5A16S2单片机后下载运行成功。

33、现象:客户使用STC-ISP V6.61下载时提示“串口打开失败,请检查串口是否存在或

已被打开”

解决:其实上面提示已经很清晰了,经检查,为用户运行了另一个“串口助手”软件使用了串口1导致的。关闭该软件后STC-ISP软件即可正常下载了。(这种情况也可能是串口选择不正确或USB转串口线被强制拔出等原因造成的,请仔细检查)34、现象:来个特殊的:客户使用KEIL更新调试源程序,并重新编译成功。但下载单

片机完成,但单片机竟然“坏了”,还是执行上次旧的程序,尝试几次也是如此!!!

解决:经提示客户观察STC-ISP的程序文件窗口,HEX文件读入后没变化。原来客户中途因故修改过KEIL的输出路径,新生成的HEX保存在新位置,但还是习惯在原文件夹读取旧的HEX!大家知道后来如何解决了吧...其实程序员需要细心加冷静,呵呵..

35、现象:用户使用某款惠普(HP)PC的COM1,时可时不可下载,很不稳定。

解决:经其他网友指点,在设备管理器中点击该串口,选“属性”-“端口设置”-“高级”-“使用FIFO缓冲区”画面中将“接收缓冲区”和“传输缓冲区”的滑动条滑动到最左端,使数值均为“1”后解决。

36、现象:用户使用STC官方下载板下载STC12C5A60S2失败。

解决:经检查,客户使用的是普通双公头USB线,而非STC专用配套USB线。因该STC官方下载板为常规串口电路,非USB转串口。借用了USB电缆进行供电及传输串口RXD,TXD信号,故必须使用配套专用USB线(有串口DB9插头)。客户改回原专用USB线后解决(注意两个USB插头上的贴纸提示,对调用错亦不能工作)。

37、现象:客户使用STC-ISP V6.53软件下载,但其电脑杀毒软件提示有

STC-ISP-V6.53.EXE有“木马或恶意”软件,并自动禁止运行并删除或隔离文件。

解决:经测试,STC-ISP封装时使用了自解压的带壳软件技术,容易被一些软件认为是“木马”或恶意软件。只要在官网下载的STC-ISP都应该是不带病毒的,将其添加到本机杀毒软件的“白名单”或“信任软件”列表即可。(如需检测STC-ISP,可将文件提交到https://https://www.wendangku.net/doc/204981412.html, 网站进行检测扫描)

38、现象:2014年8月,用户使用STC原厂最新的U8编程器下载最新的IAP15W4K61S4

单片机,一直停留在“正在检测单片机...”,但无法编程。

解决:用户犯了低级错误:在放置DIP40的芯片时放反了方向!此时传统51引脚单片机会发烫,但STC15系列单片机的电源引脚排列原因不会发热故未能及时发觉。

按U8编程器外壳的印制的图示(芯片缺口朝手柄,底部对齐)放置单片机,下载成功。

39、现象:用户使用最新的宏晶STC15W4K48S4单片机(样片)进行USB直接D+/D-

下载,使用芯片的内部RC振荡器。使用WIN XP系统运行STC-ISP V6.79版,插入芯片后系统自动安装了USB驱动程序,首几次可下载成功,但后来插入单片机后系统均提示“发现未知设备”,无法使用USB-ISP方式下载。

解决:开始可以下载,证明系统无问题,用户的2片样片经反复重新安装驱动程序、更换多台PC电脑均无法解决。后经联系厂家,回复为样片原因,使用极少比例的芯片在使用内部振荡器进行USB直接下载可能不稳定,需使用24M外部晶振。按数据手册上的提示,外接24M外部晶振电路后重新使用USB-ISP下载成功。

40、现象:客户使用STC15F104W下载时无响应。

解决:检查客户供电电压为3.4V,改为5.0V供电下载成功。(原因为:客户见单片机型号后缀为W就误认为是宽电压芯片,查看数据手册可知其为5V芯片,

STC15W104才是宽电压版,STC15L104W是低压3.3V版芯片)

41、现象:客户使用STC15W104E和万能板进行电路验证,开始时下载成功,但次日

发现MCU可以运行原程序,但下载时无响应。

解决:客户刚好该MCU样片只有一颗,故先用替代法检查下载器和电脑对其他型号的MCU下载无问题,客户称之前一直可以下载,无法理解。后来从别处调到一颗同型号样片,测试下载成功,证明原MCU的确是坏了(芯片损坏可能在不留意时发生,例如:反接电源、过压、过流、焊接时间过长高温、静电损坏等等)。42、现象:客户使用IAP15W4K58S4进行下载,几次后无法下载,STC-ISP软件提示“下

载失败”。

解决:据了解,客户误用了STC-ISP软件的【下载口令】功能,最多只允许进行5次的错误尝试,超过后芯片将被永久锁死,即使再输入正确的下载密码也不能解锁。

本例只能更换新的芯片(建议用户熟悉软件的功能,避免误操作)。

43、现象:客户对IAP15W4K61S4进行下载,STC-ISP软件提示“下载失败”。

解决:据了解,客户误用了STC-ISP软件的【程序加密后传输】功能,无合法密钥,无法进行下载,只能更换新芯片处理(建议用户熟悉软件的功能,避免误操作,同时建议厂家在STC-ISP软件增加相应的出错提示)。

(点评:一般量产的芯片都是经过考验的(样片需留意厂家的问题提示),研发不得浮躁啊。当不能下载烧录的问题一般先从下载环境和设置方面找找原因,相信一定可以解决。只要细心和有耐心,使用分析和替代法,尽量使用新版STC-ISP软件,基本都可以下载成功!)

(本文地址:https://www.wendangku.net/doc/204981412.html,/q_and_a_stcisp.html,仅供参考,欢迎分享和指正,如转载请保留本链接。Email:stcisp(a)https://www.wendangku.net/doc/204981412.html,)(c)https://www.wendangku.net/doc/204981412.html, 2013.05.01-2015.02.02)

51单片机串口调试实验(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 /****************************************************************************** * * 实验名: 串口实验 * 使用的IO : P2 * 实验效果: 将接收到发送回电脑上面。 * 注意: ******************************************************************************* / #include void UsartConfiguration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() { UsartConfiguration(); while(1) { } } /****************************************************************************** * * 函数名:UsartConfiguration() * 函数功能:设置串口 * 输入: 无 * 输出: 无 ******************************************************************************* / void UsartConfiguration() { SCON=0X50; //设置为工作方式1

STC单片机虚拟串口发送程序(超简单)

STC单片机(STC12C5A32S)虚拟串口发送程序 //虚拟串口发送子函数 void Uart(uint8 a) { ACC=a; //TXD3是已经定义的任意的发送端口 TR1=1; TXD3=0; //发送起始位 while(TF1==0); TF1=0; //TF1必须清零,因为只有启用T1中断才会自动清零 TXD3=ACC0; //发送8个位也可以用移位来发送,ACC0-ACC7也必须先定义 while(TF1==0); //表示ACC的8个位,如果用移位发送,就不用这样定义。 TF1=0; TXD3=ACC1; while(TF1==0); TF1=0; TXD3=ACC2; while(TF1==0); TF1=0; TXD3=ACC3; while(TF1==0); TF1=0; TXD3=ACC4; while(TF1==0); TF1=0; TXD3=ACC5; while(TF1==0); TF1=0; TXD3=ACC6; while(TF1==0); TF1=0; TXD3=ACC7; while(TF1==0); TF1=0; TXD3=1; //发送停止位 while(TF1==0); TF1=0; TR1=0; } 该子函数使用T1定时器,T0也可以。采用8位自动重装,重装值为A0 Main() { TMOD = 0x21; //T0:模式1,16位定时器。T1:模式2,8位定时器,自动重装AUXR &= 0x3f; //定时器0和定时器1与普通8051定时器一样(不同的单片机设置可能

不同) TL1 = 0xa0; //虚拟串口波特率:9600 TH1 = 0xa0; ET0 = 1; ET1 = 0; //T1中断一定不要使用,要不接收会错误 TR0 = 1; TR1 = 0; Uart(0xaa); //0xaa是发送的数据,如果接收有误,在发送一个字节后可加点延时//延时 While(1); //具体程序此处省略 } 注:因本人实验的硬件不需要模拟串口来接收数据,故没给出虚拟串口接收程序。 以上程序已验证成功。

STC89C52RC单片机用户手册

STC89C52RC单片机介绍 STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。 主要特性如下: 1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意 选择,指令代码完全兼容传统8051. 2.工作电压:5.5V~ 3.3V(5V单片机)/3.8V~2.0V(3V单片机) 3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作 频率可达48MHz 4.用户应用程序空间为8K字节 5.片上集成512字节RAM 6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉, P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻。 7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8.具有EEPROM功能 9.具有看门狗功能 10.共3个16位定时器/计数器。即定时器T0、T1、T2 11.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可 由外部中断低电平触发中断方式唤醒 12.通用异步串行口(UART),还可用定时器软件实现多个UART 13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 14.PDIP封装 STC89C52RC单片机的工作模式 掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序

STC12C5A60S2 双串口使用程序

STC12C5A60S2 双串口使用程序(已经验证成功) #include #include "intrins.h" #define uchar unsigned char #define S2RI 0x01 // 串口2接收中断请求标志位 #define S2TI 0x02 // 串口2发送中断请求标志位 //================================================ // 对于将P4.4、P4.5当做I/O口使用必须添加的定义|| //================================================ sfr p4sw=0xbb; // 需在主函数文件中做相应设置4、5、6为1(作为I/O口使用) /*sbit button1=P4^3; sbit button2=P4^4; sbit button3=P4^5; sbit button4=P4^6;*/ 页脚内容1

uchar code temp1[]={" 白云:“我可是个名人”"}; uchar code temp2[]={" 黑土:“啥名人啊,你就是个人名”"}; uchar code temp3[]={" 小崔:“诶,大叔大妈,你俩都冷静冷静”"}; uchar code temp4[]={" 观众:“哈哈哈哈”"}; /*void delay_1ms(uchar ii) // 误差-0.018084490741us { unsigned char a,b; for(; ii>0; ii--) for( b = 18; b>0; b--) for( a = 152; a>0; a--); _nop_(); //if Keil,require use intrins.h } void delay1s(void) //误差-0.000000000125us { unsigned char a,b,c; for( c = 212; c>0; c--) 页脚内容2

stc系列单片机μCOSⅡ在C8051F系列单片机上的移植及其应用系统开发

stc系列单片机μCOSⅡ在C8051F系列单片机上的移植及其 应用系统开发 随着微处理器技术的飞速发展和嵌入式系统实时性要求的不断提高,应用实时多任务操作系统(RTOS)作为嵌入式设计的开发平台已逐步成为嵌入式应用设计的主流。本研究讨论将μC/OS-Ⅱ移植到C8051F系列高性能8位单片机中,并以C8051F060为例阐述了其应用系统的开发过程。 一、μC/OS-Ⅱ的基本工作原理 1.任务管理 ?C/OS-II中的任务可以是一个无限的循环,也可以在一次执行完毕后被“删除”掉,即该任务可以认为CPU完全属于该任务本身,实时应用程序的设计过程包括将问题分割为多个任务。?C/OS-II可以管理64个任务,每个任务有一定的优先级,且优先级不重复。 2.任务调度机制的实现 ?C/OS-II是可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,这提高了系统的实时响应能力。在没

有中断情况下,任务间的切换一般会调用OSSched()函数。?C/OS-II 的中断服务子程序和一般前/后台的操作有所不同。 3.任务之间的通信 在?C/OS-II中,可以通过信号量、消息邮箱和消息队列等机制,实现数据共享和任务通信。消息邮箱用一个指针型变量,一个任务或一个中断服务子程序通过内核服务,将一则消息放入邮箱,一个或多个任务通过内核服务接受这则消息。每个邮箱有相应的等待消息任务表,等待消息的任务在无消息时被置挂起态,并记入邮箱等待消息任务表中。消息放入邮箱,内核将运行等待消息任务表中优先级最高的任务。 二、移植及应用 C8051F060系列单片机特别适用于任务繁重的小型化测控系统。当芯片具有的功能被较多地使用时,系统要处理的任务就较多,编程头绪也多。为了简化应用程序实现程序模块化,提高应用程序的实时性和可靠性,将μCOS2Ⅱ移植到C8051F060中就成为一件很有意义的事。 1.?C/OS-II的移植

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.wendangku.net/doc/204981412.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

STC51单片机IO口模式快速设置

STC51单片机IO口模式的快速设置新型51单片机STC系列,较传统51单片机在性能和速度上有根本性的提高。速度提高8—12倍;片上RAM大量增加;片上外围模块大量增加,等等。 其中IO口的模式增加为4种(传统51只有1中),以P0口为例:这里,每个端口新增两个寄存器PxM0, PxM1(x=0,1,2,3)。在设置每一个IO端的模式时都需要对这两个寄存器进行操作。 比如:要将设为推挽输出, 设为准双向口, 设为高阻输入; 设为开路模式, 都设为准双向口, 那么需要如下的代码: IO_Init() { P0M0=0x30;//0011 0000 P0M1=0x90;//1001 0000 } 这样的设置不便于记忆,很容易写错,且写好的代码可读性差,为此,我们可以通过一个宏定义来解决,具体如下: #define PORT0 0 #define PORT1 1 #define PORT2 2 #define PORT3 3 #define BIT0 0 #define BIT1 1 #define BIT2 2

#define BIT3 3 #define BIT4 4 #define BIT5 5 #define BIT6 6 #define BIT7 7 #define STANDARD 0 #define PP_OUT 1 #define Z_IN 2 #define OD 3 #define IOMODE(Port,bit_n,mode) { \ switch(Port)\ {\ case 0:\ switch(mode) { \ case STANDARD: P0M0&=~(1<

普中科技单片机STC90C51转串口驱动安装

普中单片机驱动安装 初试单片机,什么都不懂,就按照光盘里的步骤开始(先声明我用的是64位win7旗舰版的笔记本) 打开软件安装指导.pdf 1. USB 转串口驱动的安装 这个驱动是最让我蛋疼的,用了很久才搞定。 按照指导,安装驱动发现驱动打开是这个东西 与图上不同,这也就算了,蛋疼的是安装失败。无奈,连上板子,进设备管理器,看到

然后右键更新驱动程 序软件》浏览计算机以查找驱动程序软件》从计算机的设备驱动程序列表中选择》端口(COM和LPT)》从磁盘安装,此时打开光盘的驱动文件夹即 找到后打开出现了

图中没签名不懂什么意思,再点下一步,结果就悲剧了下图 至此完全迷茫了,这又是神马。特意百度了下错误代码52 ,没有帮助。回到设备管理器

有感叹号就是驱动没没有签名的缘故。不管了,脸上板子,打开 可用的串口不过还是进入了PZISP软件,设置好点下载程序

至此,表示尝试失败。 这时,想到烧录软件还有官方的没试,就试了下,结果 又失败。而且光盘中给出了两种官方软件版本STC_ISP_V479.exe 和STC_ISP_V488.exe 都不行。 接下来,本屌认为是驱动的原因,光盘教程图中的驱动是v1.40,而给的却是v1.31,故百度上找v1.40版本,找来了安装,一样的结果,又失败。 又是不停的百度,什么串口、驱动、usb线、还有烧录软件等等各种原因,这一过程虽然累,却让我加深了解单片机。

好了,废话不多说,最后百度CH341SER.INF ,点第一个进 下载得到CH341SER.zip,解压后 然后猛点SETUP.EXE

STC12C5A60S2单片机双串口通信

STC12C5A60S2单片机双串口通信 STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作 与传统51单片机串行口相同;特殊的是STC12C5A60S2 单片机内部有一个独立波特率发生器,串口1可以使用 定时器1作为波特率发生器,也可以使用独立波特率发 生器作为波特率发生器;而串口2只能使用独立波特率 发生器作为波特率发生器。 下面是一段双串口通信的程序: /************************************************ *********************** 时间:2012.11.24 芯片:STC12C5A60S2 晶振:22.1184MHz 波特率:9600bps 引脚定义:串行口1:发送 ————TxD/P3.1;接收 ————RxD/P3.0 串行口2:发送 ————TxD2/P1.3;接收 ————RxD2/P1.2 功能描述:STC12双串口通信(中断方式)

当串行口1接收数据后,将此数据由串行口2发送出去 当串行口2接收数据后,将此数据由串行口1发送出去 ************************************************* **********************/ #include; #define S2RI 0x01//串口2接收中断请求标志位 #define S2TI 0x02//串口2发送中断请求标志位unsigned char flag1,flag2,temp1,temp2; /****************串行口初始化函数 ****************/ void InitUART(void) { TMOD = 0x20; //定时器1工作在方式2 8位自动重装 SCON = 0x50; //串口1工作在方式1 10位异步收发 REN=1允许接收 TH1 = 0xFA; //定时器1初值 TL1 = TH1; TR1 = 1; //定时器1开始计数 EA =1;//开总中断

STC系列单片机内部AD的应用

STC系列单片机内部AD的应用 作者:郭天祥来源:原创更新时间:2008-11-27 22:16:38 浏览次数:7668 STC89LE52AD、54AD、58AD、516AD这几款89系列的STC单片机内部自带有8路8位的AD转换器,分布在P1口的8位上,当时钟在40MHz以下时,每17个机器周期可完成一次AD转换。 与AD相关的几个寄存器如表1所示。 表1 STC89系列单片机AD相关寄存器 P1_ADC_EN:P1.X口的AD使能寄存器。 相应位设置为“1”时,对应的P1. X口作为AD转换使用,内部上拉电阻自动断开。 ADC_CONTR:AD 转换控制寄存器。 ADC_START:AD转换启动控制位,设置为“1”时,AD开始转换。

ADC_FLAG:AD转换结束标志位,当AD转换完成后,ADC_FLAG=1。 CHS2、CHS1、CHS0:为模拟输入通道选择,如表2所示。 表2 STC89系列单片机AD模拟通道选择设置 ADC_DATA:AD 转换结果寄存器。模拟/数字转换结果计算公式如下: 结果=256×Vin / Vcc Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 下面一个例程演示STC89LE516AD/X2系列单片机的A/D转换功能。时钟11.0592MHz,转换结果以16进制形式输出到串行口,可以用串行口调试程序观察输出结果。(本代码摘自宏晶科技芯片手册,经作者调试可正常运行)。 新建文件part3.4.5.c,程序代码如下: #include #include // 定义与ADC 有关的特殊功能寄存器 sfr P1_ADC_EN = 0x97; //A/D转换功能允许寄存器 sfr ADC_CONTR = 0xC5; //A/D转换控制寄存器 sfr ADC_DATA = 0xC6; //A/D转换结果寄存器 typedef unsigned char INT8U; typedef unsigned int INT16U; void delay(INT8U delay_time) // 延时函数 { INT8U n; INT16U m; for (n=0;n

基于STC系列单片机的串联型开关电源设计与实现

单片机及模数综合系统设计 课题名称:基于STC12系列单片机的串联型开关电源设计与实现 --单片机控制部分

一、实验目的:本模拟电路课程设计要求制作开关电源的模拟电路部分,在掌 握原理的基础上将其与单片机相结合,完成开关电源的设计。本报告旨在详述开关电源的原理分析、计算、仿真波形、相关控制方法以及程序展示。 二、总体设计思路 本设计由开关电源的主电路和控制电路两部分组成,主电路主要处理电能,控制电路主要处理电信号,采用负反馈构成一个自动控制系统。开关电源采用PWM 控制方式,通过给定量与反馈量的比较得到偏差,通过调节器控制PWM 输出,从而控制开关电源的输出。当键盘输入预置电压后,单片机通过PWM输出一个固定频率的脉冲信号,作用于串联开关电源的二极管和三极管,使三极管以一定的频率导通与断开,然后输出进行AD转化,转化后的结果再给单片机进行输出,进行数码管显示。 系统的基本框图及控制部分如下: 控制过程原理分析:单片机所采用的芯片为STC12C5A60S2,该芯片在拥有8051内核的基础上加入了10为AD和PWM发生器。通过程序,即可控制单片机产生一定占空比的PWM 脉冲,将此脉冲输入到模拟电路部分,在模拟电路的输出端即可产生一定的输出电压,可比较容易的通过程序来实现对输出电压的控制。但上述的开环控制是无法达到精确的调节电压,因此需要采用闭环控制来精确调制。即,对输出电压进行AD采样,将其输入回单片机中进行数据处理。单片机根据处理的结果来对输出电压做出修正,经过这样的逐步调节即可达到闭

环的精密输出。由此原理,可以将整个过程分成一下模块:PWM波形输出模块,模拟电路模块,AD转换模块,数码管显示模块,键盘输入模块。 控制过程基本思路为:首先从键盘输入一个电压值,并把该电压值在数码管上面显示出来,再由A/D转换模块对串联开关电源电路的输出端进行电压采集,将采集到的电压值与键盘输入的电压值进行比较,通过闭环算法,控制PWM的脉宽输出,由此控制串联开关电压电源电路,改变输出的电压值,使得输出值与设定的电压值相等。 三、系统各单元模块电路设计 1、键盘输入数据部分 分别接到单片机的P2.4,P2.5,P2.6,P2.7。每路通过电阻进行上拉,可以编程实现控制单片机运行不同程序。为了判断键盘上面的按键是否有按下的,可以事先对P2.4,P2.5,P2.6,P2.7端口赋值,便可以知道具体是哪个按键被按下了。例如:P2.4=0,便可知道P2.4对应的按键已经按下了。 键盘输入模块程序如下: void key( ) //键盘扫描函数 { if(P2_6== 0) { delay(10);//延时去抖动 if(P2_6== 0) { while(P2_6== 0)

基于STCSTC15F2K60S2单片机的串口通讯..

湖南科技大学 信息与电气工程学院《单片机课程设计报告》 题目:基于STCSTC15F2K60S2单片机的串口通讯 专业:自动化 班级:一班 姓名:罗永恒 学号: 1209010303 指导教师:范小春 2015年 6月 30日

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。 关键词:单片机串口通信

第一章 STCSTC15F2K60S2的简介 (1) 1.1 STCSTC15F2K60S2的内部结构框图 (1) 1.2 STC15F2K60S的DIP封装图 (1) 1.3 STC15F2K60S的各引脚简介 (2) 第二章单片机通过USB与PC机的通信设计 (4) 2.1设计方案选择 (4) 2.1.1 PC机同单片机通信存在的问题 (4) 2.1.2 USB接口同RS-232(DB-9)串口的比较 (4) 2.1.3 USB转接芯片的选择 (4) 2.2 通信功能要求 (5) 第三章硬件电路图的设计 (5) 3.1单片机最小系统 (5) 3.2 USB与单片机连接主电路 (6) 3.3 总电路图 (6) 3.4 PCB图 (6) 第四章程序设计 (7) 4.1 串口初始化 (7) 4.2 主程序 (7) 4.3 中断服务程序 (8) 4.4 总程序 (8) 第五章总结与体会 (10) 第六章参考文献 (11)

STC12C5A60S2串口通信keil与proteus调试 自己总结

STC12C5A60S2串口调试需要软件: 在keil里安装。在debug里设置仿真器为:

点击MCU连接程序:

RS232: 虚拟终端:

程序: #include "STC12C5A60S2.h" #include "intrins.h" typedef unsigned char BYTE; void UartInit(void) //9600bps@11.0592MHz { SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器TMOD &= 0x0F; //设定定时器1为16位自动重装方式TL1 = 0xE0; //设定定时初值 TH1 = 0xFE; //设定定时初值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 } void SendByte(BYTE dat); void SendString(char *s); void main() { UartInit(); SendString("STC12C5A60S2\r\nUart Test !\r\n"); while(1); } void Uart_Isr() interrupt 4 using 1 {if(RI)

{ RI=0; } if(TI) { TI=0; } } void SendByte(BYTE dat) { SBUF=dat; } void SendString(char *s) { while(*s!='\0') { SendByte(*s++); } }

基于STC12C5A60S2系列单片机万年历时钟

/**************************************************/ /*基于STC12C5A60S2系列单片机+595驱动五个数码管+165按键输入 +1302实时时钟+18B20温度传感器的万年历时钟 功能键:0xfe:实现温度,时间,年月日,周的转换显示 0xdf:实现每按一次可以一次更改小时,分,年,月,日,周的闪烁,而 实现加减按键对其改变数值 0xfb:加功能键,在0xdf有效的情况下才能生效 0xfd:减功能键,在0xdf有效的情况下才能生效 数码管亮度有点不一致,还希望高手能帮忙解决,其他功能都是正常的,也可以给各位爱好单片机的新人们一个互相交流的一段小程序,后面付有图片 */ #include < 12C5A60S2.h > //头文件 #include < intrins.h > #define uchar unsigned char //宏定义 #define uint unsigned int uchar time_tuf[]={0x14,0x04,0x10,0x12,0x30,0x00,0x5}; //年月日时分秒周 uchar code weima[]={0x20,0x10,0x08,0x04,0x02,0x01}; //数码管位选 uchar code duan_ma[]={0xee,0x88,0xd6,0xdc,0xb8,0x7c,0x7e,0xc8,0xfe,0xfc}; //数码管段选信号 uchar sec,min,hour,day,month,year,week,num,flag,flag1,flag2,flag3,Flicker,di,x,h; //时间变量及标志位变量 uint tt,tvalue; //变量 void yueri_work(void); //月日显示程序 void nian_work(void); //年显示程序 void Show_pass(uchar dss); //不显示程序 void zhou_work(void); //周显示程序 void delay_18B20(uint i); //温度延时显示程序 void wendu_work(void); //温度显示程序 void show_work(void); //显示程序 void KEY(void); //按键显示程序 sbit RCLK=P0^2; //595输出存储器锁存时钟线/165装载移位控制锁存信号 sbit SRCLK=P0^0; //595数据输入时钟线 sbit SER=P0^3; //595数据线 sbit SO=P0^4; //165数据输出数据线 sbit CLK=P0^1; //165时钟信号 sbit RST=P0^5; //1302复位引脚,高电平有效 sbit IO=P0^6; //1302数据输入输出引脚 sbit SCL=P0^7; //1302串行时钟输入,控制数据线的输入输出 sbit DQ=P1^0; //18B20数字温度传感器,输入输出口

STC单片机资料

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。 1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051 2.工作电压:STC12C5A60S2系列工作电压:5.5V- 3.3V(5V单片机) STC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单片机) 3.工作频率范围:0 - 35MHz,相当于普通8051的0~420MHz 4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节...... 5.片上集成1280字节RAM 6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O 口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55mA 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9. 看门狗10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地) 11.外部掉电检测电路:在P4.6口有一个低压门槛比较器5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3% 12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟 常温下内部R/C振荡器频率为:5.0V单片机为:11MHz~15.5MHz 3.3V单片机为:8MHz~12MHz 精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准 13.共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器再加上2路PCA模块可再实现2个16位定时器 14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在 P3.5/T1输出时钟

STC单片机串口下载使用说明书

STC单片机串口下载使用说明书 1、注意学习板、串口线、USB线和电脑的连接顺序:因为电脑串口不能带电拔插,所以要一定要按下面的顺序连接和断开。 连接时的顺序: (1)先连接好串口线。 (2)再接上USB线(给学习板供电用)。 断开连接的顺序: (1)先拔去USB线(先去掉学习板上的电源) (2)再拔去串口连接线 2、硬件连接图: 3、学习板上跳线的设置:要通过串口将程序下载到STC89C51/52时,请将学习 板上单片机的串口引脚接通MAX232(电平转换IC),如下图所示: 注意:用学习板做串口实验时也要将跳线设置如上图所示,因为这样是把单片机的

串口通信脚接通MAX232再到“串口通信口” 4、下载程序使用STC公司提供的下载软件 打开下载软件:在“【精创科技】51初级学习板(红板)80\下载软件和编辑软件\STC公司下载软件\STC-ISP-V4.83”文件夹下双击“”文件即可进入下载软件的操作介面: 下载程序操作过程:(1)在下载介面的左上角“”中选择单片机型号为:STC89C51/52 (2)点击“打开程序文件”选择要下载的目标文件“*.HEX或*.Bin”(3)选择通信连接的 com口(),如果你不确定你电脑认定的是哪一个COM口,你可以在“我的电脑/属性/硬件/设备管理器”中查看“”(4)点击“DowdLoad/下载”后出现如下

图所 示后,请关闭学习板上的电源开 关 ,然后再打电源开关,这时程序将自动完成下载,并自动复位后单片机就可以自动运行刚才下载的程序,注意:电源开关按下去为“开”,弹起来为“关”。 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学习板上各个配件的接法图:

简单好用的stc12c5a串口2发送程序!

//功能:stc12c5a串口2发送程序,发送0--9,晶振频率11.0592MHz,串行口工作于方式1, 波特率为9600 #ifndef __STC12C5A60S2_H__ #define __STC12C5A60S2_H__ //------------------------------------------------------------------------------ -- //新一代 1T 8051系列单片机内核特殊功能寄存器 C51 Core SFRs // 7 6 5 4 3 2 1 0 Reset Value sfr ACC = 0xE0; //Accumulator 0000,0000 sfr B = 0xF0; //B Register 0000,0000 sfr PSW = 0xD0; //Program Status Word CY AC F0 RS1 RS0 OV F1 P 0000,0000 //----------------------------------- sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2; sbit P = PSW^0; //----------------------------------- sfr SP = 0x81; //Stack Pointer 0000,0111 sfr DPL = 0x82; //Data Pointer Low Byte 0000,0000 sfr DPH = 0x83; //Data Pointer High Byte 0000,0000 //------------------------------------------------------------------------------ -- //新一代 1T 8051系列单片机系统管理特殊功能寄存器 // 7 6 5 4 3 2 1 0 Reset Value sfr PCON = 0x87; //Power Control SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0001,0000 // 7 6 5 4 3 2 1 0 Reset Value

STC系列单片机串口通信的总结

串口通信: 软件调试,在调试过程中需要使用虚拟串口助手。在编程中注意设计时钟和波特率。注意程序的串口设置和串口调试助手中串口设置相同。 单串口: mode com2 9600,0,8,1 assign com2 sout stime = 0 多串口: mode com2 9600,0,8,1 assign com2 s0out 0表示单片机的串口0 编程: STC12介绍的方法: 接收一个字节的函数和发送字符串的函数,发送字符串需要知道字符串的长度。对于接收字符串的函数,可以仿照通过调用接收一个字节的函数,写出接收字符串函数。 void WriteUart(uchar *pucData ,uchar ucLength) { if(ucLength == 0) { return; } if(UartBuzy == 1) return; ucSendLength = ucLength; pucSendData = pucData; SBUF = *pucSendData; UartBuzy = 1; ucSendedCount = 0; } uchar ReadUart(void) { uchar Data; Data = ucRecData; ucRecData = 0; return Data; } Unsigned char RString(unsigned char *s, unsigned int len) { Unsigned int i; For(i =0;i

void UartIRQ(void) interrupt 4 { if(RI) { RI = 0; ucRecData = SBUF; } if(TI) { TI = 0; ucSendedCount++; if(ucSendedCount >= ucSendLength) { UartBuzy = 0; return; } else { SBUF = *(pucSendData + ucSendedCount); } } } STC15: STC15只给出了发送函数,且发送函数有瑕疵,具体见最后分析。void UART1_ISR(void) interrupt 4 using 1 { if (RI) //接收数据 { RI = 0; //清除RI位 } if (TI) //发送数据 { TI = 0; //清除TI位 busy = 0; //清忙标志 } } void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } void SendString(char *s) {

基于STC系列单片机的SPWM波形实现

基于STC系列单片机的SPWM波形实现 时间:2010-03-24 14:58:56 来源:现代电子技术作者:邢娅浪赵锦成孙世宇军械工程学院电气工程 系 摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA 实现SPWM控制软件的编写过程,并给出了SPWM中断服务程序的流程图。将结果应用于由MICA421驱动器驱动的四个MOSFET器件FQAl60N08所组成的逆变桥上进行实际调试,实验结果表明,该方法具有电路简单、计算量小、实时性强的优点,采用在线计算和查表技术相结合,较好的解决了实时控制的要求,具有较好的应用价值。 关键词:STC12C5410AD;SPWM波 0 引言 近年来,随着逆变电源在各行各业应用的日益广泛,采用正弦脉宽调制(SPWM)技术控制逆变电源提高整个系统的控制效果是人们不断探索的问题。对SPWM的控制有多种实现方法,其一是采用模拟电路、数字电路等硬件电路产生SPWM波形,该方法波形稳定准确,但电路复杂、体积庞大、不能进行自动调节;其二是借助单片机、DSP等微控制器来实现SPWM的数字控制方法,由于其内部集成了多个控制电路,如PWM电路、可编程计数器阵列(PCA)等,使得这种方法具有控制电路简单、运行速度快、抗干扰性强等优点。本文介绍一种利用STC系列单片机实现SPWM波形的方法,并将由STCl2C5410AD产生的单极性SPWM波应用于单相逆变电源,实验结果证明了利用其实现SPWM波形的可行性和有效性。 1 正弦脉宽调制技术SPWM SPWM控制方案有两种:即单极性调制和双极性调制法。单极性法所得的SPWM信号有正、负和0三种电平,而双极性得到的只有正、负两种电平。比较二者生成的SPWM波可知:在相同载波比情况下,生成的双极性SPWM波所含谐波量较大;并且在正弦逆变电源控制中,双极性SPWM波控制较复杂。因此一般采用单极性SPWM波控制的形式。 由单片机实现SPWM控制,根据其软件化方法的不同,有如下几种方法:自然采样法、对称规则法、不对称规则法和面积等效法等。理论分析发现面积等效法相对于其它方法而言,谐波较小,对谐波的抑制能力较强。而且实时控制简单,利于软件实现。因此本文采用面积等效法实现SPWM控制。 图l为SPWM面积等效法原理示意图。

相关文档
相关文档 最新文档