当前位置:文档之家› 手把手教你学单片机C程序设计《电子书》

手把手教你学单片机C程序设计《电子书》

手把手教你STC51的ISP下载线

手把手教你STC51的ISP下载线 说起我从认识学习使用C51单片机到现在有两年多,时间不长,菜鸟一只。从用TOP151烧写AT89C51,到用easy51pro在线编程AT89S51,再到用STC-ISP 软件在线编程STC89C51,最后现在变得越来越懒,干脆用protues仿真单片机外围电路。 现在简单的总结一下,入门级的C51学习在没有昂贵的单片机仿真器情况下,怎样算是方便调试又花费少吧。 先说说AT89C51,噢,差点忘了,这型号的单片机不知何年被停产了,现在就靠它的库存仍在这个历史的舞台上挣扎。 缺点:对入土为安的芯片没什么好说了。 那就说AT89S51,这可是一个令人振奋的产物,最大的特点莫过于它的ISP(在线编程)功能,就是使用者每编译好程序,就可以立即通过ISP下载线写到单片机上去。而且ISP下载线的制作简单令单片机和我们的距离更加接近了。它的ISP原理图如下:

其中ISP下载程序可以用easy 51pro v2.0。相比昂贵的仿真器,做上图的元器件总共也就十块钱左右吧。 缺点:一、并口连接电脑,1.可能占用打印机口;2.是笔记本是没有并口的。 二、下载线制作一次成功率不大,不是漏接了这个脚就是那个口,对于新手而言尤其这样。 三、下载线寿命不长,一两次不知明的原因(通常静电),就可以把里面的那块芯片(74LS244)烧坏。并且,实际你都不知道到底哪里出毛病了。 也许,世界上真的没有最好,只要更好,自从好友张JL和陈Y介绍了STC的51系列单片机给我之后,发现竟然有这么方便好用功能强大的单片机。

STC51单片机的型号跟ATMEL的大致一样,有STC89C51,C52等,对应于AT89C51,C52等对应它们的内部RAM内部ROM中断口等,是完全一样的。 当然,STC系列单片机是改进型的单片机,它的热重启,串口ISP等功能确实为我准备介绍给大家提供了理由。 先说说ISP功能,它跟电脑连接就只有三根线,就是通过RS-232传输。它ISP 过程是这样的:冷重启(上电)-单片机运行系统ISP监控程序(出厂时已烧到里面)-检测P3.0/RXD有没有合法下载命令流,有的话,就下载用户程序进户程序区;没有的话,就跳到用户程序区,运行用户程序。所以,第一次下载程序,用户需要先点ISP下载软件的“download”,再把单片机通电。如图: 到了这里,大家不禁会说,下载线虽然简单,但每次都要断电上电,烦不烦?答:我都觉得烦。不过眼睛锐利的读者发现了上图右下片有一段文字。说什么的呢?哦,原来是自定义下载。什么是自定义下载?首先我先说个高兴的事儿——用自定义下载,从此告别断电上电的冷重启ISP下载。 所谓自定义下载,就是我从上面软件的自定义下载命令文本框中打入十六进制数字(如:FEH)然后点击发送,程序自动下载到用户单片机里。神奇吧。究其不用断电上电冷重启的原因,就是上面我所说的STC单片机具有热重启功能。用户只需简单控制ISP_CONTOR特殊功能寄存器即可实现系统复位了。汇编语

云龙51单片机视频教程大全

云龙51单片机视频教程简介 本视频教程是针对YL-51单片机开发板讲的配套DVD视频教程目录: 讲次内容细节 第一课如何学好单片机单片机能做什么,学习单片机需要什么,如何学好单片机技术。 第二课预备知识点亮一个发光管认识单片机由来及内部结构,单片机最小工作单元组成;单片机开发软件操作:KEIL软件开发环境认识、单片机烧录软件使用。 第三课预备知识 C51基础知识及流水灯设计简单延时程序、子程序调用、、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。 第四课数码管显示的原理,数码管的静态显示共阳、共阴数码管显示原理、带参数子程序设计。 第五课中断和定时器原理定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、定时器中断应用 第六课数码管的动态显示原理及应用实现动态扫描概念及定时器、中断加深 第七课按键学习:独立按键和矩阵按键键盘检测、消抖、键盘编码、带返回值函数写法及应用 第八课数模转换(DA)工作原理及应用数字电压与模拟电压的关系、如何使用DAC0832的实成DA转换 第九课模数转换(AD)工作原理及应用模拟电压与数字电压的关系,如何使用ADC0804的实成AD转换 第十课1602液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作 第十一课串口原理及应用串口通讯工作方式、重点讲述最常用的10位数据通讯、波特率概念及如何根据波特率计算定时器初值 第十二课IIC总线原理和模块化编程方法 IIC总线工作原理、目前非常通用的一种通信机制; 项目开发模块化编程方法。 第十三课红外通信原理及应用红外通信是目前应用最为广泛的通信和遥控手段。在本课程中以红外遥控为代表,具体讲解红外通信的具体过程。

STC15W系列单片机初学者教程

目录 因为网站限制原因,其他链接都不予显示,还有联系方式都不予显示,带来不便非常抱歉 1.开始学习了 2.15W4K32S4单片机简介资料 3.单片机可以用来做什么呢? 4.单片机示例!写一个串口通讯程序,您也可以直接先从这 步开始学习 5.相关资料链接(数据手册,其他进阶例子,开拓眼界) 6.售后持续支持 7.所有下载链接汇总 一. 开始学习了 这个宝贝包含的硬件,也就是给您发货的内容包含以下东西:

1.15W4K32S4最小系统板 1块 2.转串口下载器一个2303转串口 1块用来下载程序和串口 通讯 3.白色面包板一个 1块适合搭建各种电路 4.一个霍尔传感器,制作一个霍尔电路做一个磁控开关 5.若干杜邦针;连接电路 6.彩灯3 颗若干电阻学习彩色灯控制彩色灯 7.三极管若干个电位计 1个灯亮度控制 8.提供上面所有元器件手把手教程手把手教程

这篇教程能够让您学会什么呢? 1.怎么使用 4软件编写的程序,并且使用下载程序到单片机 上面; 2.串口通讯程序,另外在电脑端使用软件进行图形化显示 程序; 如果您有兴趣的话,希望下面对您学习工作有帮助,资料有点多,但是还是值得花一些时间实际操作演示,只有自己动手了,才能体会到更多的内容。

二. 15W4K32S4单片机简介 15W4K32S4单片机是一款非常优秀的51系列单片机,很适合用来作为初学者入门单片机世界。当然单片机的世界没有最强大,只有最适合的单片机。如果你有了解过什么是51单片机和一点C语言。就可以尝试进入这款单片机。边玩边搭建更多的电路,在玩中学习。 继续往下看,将会一步一步演示给您看具体怎么是使用这款单片机。请有耐心的看下去哦,不过如果一次看不完的话,可以分多几天来操作,关键是要坚持! 那么单片机可以用来做什么呢? 目前单片机渗透到我们生活的各个领域,小到电话,玩具,手机,刷卡机,电脑键盘,彩电,冰箱,空调,电磁炉,大到汽车,工业自动控制,机器人,导弹导航装置,甚至是美国的火星车,这些设备里面都含有一个或者多个单片机。单片机的数量不仅远超过机,甚至比人类的数量还要多。可见数量之庞大,用途之广泛啊。 三. 我们掌握单片机有什么用呢?

单片机百度盘资料

一、51单片机 1、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者 资料下载链接:https://https://www.doczj.com/doc/473040486.html,/cJzLQdrBfp2KD 访问密码8f77 2、普中51单片机学习光盘 https://www.doczj.com/doc/473040486.html,/s/1pK0c4BL 3、郭天祥----十天征服单片机 https://www.doczj.com/doc/473040486.html,/s/1i4N2Hrn 4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著) https://https://www.doczj.com/doc/473040486.html,/cYAYJtgFJNUup 访问密码9eb1 5、力天电子51单片机视频教程 https://www.doczj.com/doc/473040486.html,/s/1hrulifU 6、天狼星51单片机视频教程 链接:https://www.doczj.com/doc/473040486.html,/s/1pKsD3b9 密码:scy4 8、STC12C5A60S2例程 https://https://www.doczj.com/doc/473040486.html,/cjPpH7uBBbIr8 访问密码a471 二、AVR单片机 1、郭天祥--十天学会AVR单片机视频教程 https://https://www.doczj.com/doc/473040486.html,/cwVbV5mWw9pxk 访问密码34ba 1、锐志电子AVR单片机视频教程

https://https://www.doczj.com/doc/473040486.html,/cweRHU4JUSypY 访问密码64b2 2、手把手AVR单片机视频教程 https://https://www.doczj.com/doc/473040486.html,/cm926G3YrWKhG 访问密码dccb 3、DY_miniAVR单片机光盘资料 https://https://www.doczj.com/doc/473040486.html,/c3fIFUrWu4LEG 访问密码0036 4、AVR代码生成器 https://https://www.doczj.com/doc/473040486.html,/c3fILqj5h3aT9 访问密码2061 5、AVR开发工具 https://https://www.doczj.com/doc/473040486.html,/c3fI3satMGmSh 访问密码d356 6、AVR例程 https://https://www.doczj.com/doc/473040486.html,/c3fIFfSgCzhWE 访问密码48c1 三、msp430单片机 1、郭天祥---十天学会msp430单片机 https://https://www.doczj.com/doc/473040486.html,/cYAYvyxDBaHgr 访问密码4dca 2、力天msp430单片机视频教程 https://https://www.doczj.com/doc/473040486.html,/cYAY83HwRumTn 访问密码d66c 3、msp430 c语言.pdf https://https://www.doczj.com/doc/473040486.html,/cYAY577Ucc7b2 访问密码86b3 4、msp430教程.pdf https://https://www.doczj.com/doc/473040486.html,/cYAYtXwXYesgC 访问密码ccbf 5、IAR C 430标准库函数.pdf https://https://www.doczj.com/doc/473040486.html,/cYAYnInwURHZx 访问密码52ef

03 第三讲 数字电路基础知识--力天手把手教你学单片机之入门篇

手把手教你学51单片机 ——之MCS-51入门篇 主讲: 尹延辉 策划:张勇 开发板:LT-Super51 QQ群:31646346 网址:https://www.doczj.com/doc/473040486.html, E-Mail:litianmcu@https://www.doczj.com/doc/473040486.html, litianmcu@https://www.doczj.com/doc/473040486.html,

入门篇第三讲——数字电路基础知识?本讲内容提要 数字量和模拟量 数制和码制 算术运算和逻辑运算 数字芯片 常用数字芯片简介 可编程逻辑器件 存储器 学习板上扩展IO口 的实现

——数字量和模拟量 ?数字量和模拟量定义 模拟量:随时间连续变化的电压或电流信号称之为模拟量 数字量:随时间离散变化的量称之为数字量 ?数字量的实质为加入判决门限的模拟量

——数字电路’0’与’1’的定义?数字电路’0’与’1’的定义 TTL电平:电压+5V代表’1’,电压0代表’0’ LVTTL:+3.3V~’1’,0~’0’ RS232:-15V~’1’,+15V~’0’ LVDS:2根线上电压差的正负表示’1’或’0’

——数制和码制 ?数制的定义 计数过程中一位数字通常是不够用的,多位数码中每一位的构成方法及从低位向高位进位规则称为数制。 N进制数的通俗定义:逢N进1 ?十进制:逢十进一 ?十六进制:逢十六进一 ?二进制:逢二进一 ?常用数制 十进制、二进制、十六进制 ?人类有十个指头,所以习惯采用十进制 ?计算机只能识别0和1,采用二进制 ?为了计算机学中的数据书写方便,采用十六进制

——数制转换详解 ?数制间的转换 二-十转换 十-二转换 二-十六转换 十六-二转换 ?位与字节的概念: 位(bit):简写为b,表示二进制数的一位。 字节(Byte):简写为B,8位为一字节。 ?数制转换工具: Windows自带的计算器

c51单片机实例下载大全

单片机资料教程下载,省去找资料的麻烦,只供学习参考用,下载24内删掉,祝大家学习进步 单片机点阵学习资料 https://www.doczj.com/doc/473040486.html,/thread-1703-1-1.html 手把手教你学单片机--教程视频 https://www.doczj.com/doc/473040486.html,/thread-1688-1-1.html 力天把手教你学单片机视频教程 https://www.doczj.com/doc/473040486.html,/thread-1689-1-1.html 谱中单片机开发板例程 https://www.doczj.com/doc/473040486.html,/thread-1683-1-2.html 初学单片机的30,硬件简单对初学者有帮助 https://www.doczj.com/doc/473040486.html,/thread-1962-1-1.html 用单片机制作的MP3 https://www.doczj.com/doc/473040486.html,/thread-1701-1-2.html 51单片机应用开发大全所含100个范例代码及电路图 https://www.doczj.com/doc/473040486.html,/thread-1820-1-1.html 【含28个单片机实例流程图】 https://www.doczj.com/doc/473040486.html,/thread-1959-1-2.html 谱中单片机程序烧录工具STC https://www.doczj.com/doc/473040486.html,/thread-1682-1-2.html 《单片机技术》32讲

https://www.doczj.com/doc/473040486.html,/thread-1693-1-1.html 51单片机c语言100例教程 https://www.doczj.com/doc/473040486.html,/thread-1700-1-1.html 单片机超级精华包 https://www.doczj.com/doc/473040486.html,/thread-1687-1-1.html 新手学的多功能电子钟 https://www.doczj.com/doc/473040486.html,/thread-1679-1-1.html 十天学会单片机和c语言视频教程 https://www.doczj.com/doc/473040486.html,/thread-1692-1-1.html C语言函数库速查手册 https://www.doczj.com/doc/473040486.html,/thread-1696-1-1.html 历史上最全的KEIL中文学习资料 https://www.doczj.com/doc/473040486.html,/thread-1729-1-2.html 单片机c语言程序设计实训100例--基于AVR+PROTUES https://www.doczj.com/doc/473040486.html,/thread-1695-1-2.html (有电路图和程序) https://www.doczj.com/doc/473040486.html,/thread-1965-1-1.html 关于单片机抗干扰的资料 https://www.doczj.com/doc/473040486.html,/thread-1961-1-1.html 单片机矩阵扫描键盘程序 https://www.doczj.com/doc/473040486.html,/thread-1723-1-1.html 共享通过串口在线调试51单片机的专业版培训资料

手把手教你学单片机进阶-框架篇(上)

手把手教你学单片机进阶教程 框架篇(上) 本篇里我们聊一聊软件框架,那么什么是框架呢?它又有什么用处呢? 软件框架,说简单一点就是我们组织软件的方式,没有框架的代码,模块是乱添的,写程序的人也不知道要添在哪里,只知道加在这里可以用,放在这里就行。有框架的代码,模块应该添加到哪里是清楚的。曾经看过一句话说的挺有道理,“一个好的程序架构,是一个有经验的工程师和一个初学者的分水岭”,我们在单片机软件中用的最多的结构莫过于下面这样的: 1While(1) 2{ 3Led_on(); 4i = 1000; 5While(i--); 6Led_off(); 7} 当我们刚开始学习的时个,程序比较简单,这样单纯的结构还是可以应付的。但是如果当我们真的要做一个系统级的工程的时候,有很多功能要处理,这样的结构显然就不能适应了,只那一个“while(i--)”就不知道耽误了多少事儿。 到这里有人要说了,工程复杂的时候我可以跑个OS。可以说RTOS对于功能复杂的嵌入式系统来说是个非常好的解决方案,如比较出名的RT-Thread (我们以后会推出这个的专题),uc/os-ii。不过,可惜的是,操作系统对于51来说有点太,系统的开销有可能比应用占用的资源的还要多。 那么我们就自己动手来打造一个小资源单片机适用的框架吧。我们将实现两个版本,其内在思想都是一样的,一个简单点,占用资源更小。一个稍复杂些, pzq@https://www.doczj.com/doc/473040486.html,/csh@sparkcn

但更灵活。大家可以根据情况选用。 easy_framework 我们把这个框架暂时命名为easy_framework,这里我们仅提供思想和基本的代码。完整的代码可以在我们提供代码包(下载地址见文章最后)里找到。 这里测试和实验的硬件环境是Spark51学习板。大家如果有需要,可以到我们工作室店铺购买https://www.doczj.com/doc/473040486.html,或直接通过QQ联系我们首先使用一个Timer来产生一个1m的定时中断。在51单片机上,这里选用Timer0 1init_sys_timer() 2{ 3/*T0 1方式*/ 4TMOD |= 0x01; 5/*设定1m的计时*/ 6TL0 = (u8)SYS_TIMER_INIT_VALUE; 7TH0= (u8)(SYS_TIMER_INIT_VALUE >> 8); 8/*允许中断*/ 9ET0 = 1; 10TR0 = 1; 11} 通过上面这个函数产生一个1m的中断,在其“中断服务函数”里我们对一些时间标志量进行记数 1/*Timer 0中断服务程序*/ 2void proc_sys_tick() interrupt 1 3{ 4TR0 = 0; 5Cnt5ms++; pzq@https://www.doczj.com/doc/473040486.html,/csh@sparkcn

[用微课学51单片机][白炽贵][电子教案和教学指南] 《用微课学51单片机》教学指南0513

《用微课学51单片机》教学指南 教学模式 本书与电子工业出版社出版的《用微课学电子CAD》教材对接,即以学生电子CAD 课程所完成制作的51单片机电路板为编程验证平台,进行51单片机编程实操实训。因此,需在本课程开课前,先进行本书所需的51单片机实验板CAD设计及安装焊接。这既提高了电子CAD课程的教学目标和教学档次,又为单片机课程创建了学生得心应手功能强劲的编程开发平台,从而满足学生单片机技术高档次的研发平台之需,能让职业院校学生在电子CAD和单片机技术两课程对接上实现“1+1>2”的效果。 教学目标 借助学生亲手完成的单片机实验板平台,在单片机程序实训案例的数量上和质量上有所突破和创新,引用蓝牙技术和WIFI技术,让学生充分享受单片机程序设计的乐趣和成功,为学生胜任单片机技术职业岗位打下必须的技能基础。 教学内容 1.数码管显示编程实操; 2.单片机中断编程实操; 3.单总线双总线三总线器件编程实操; 4.LED16乘16点阵汉字显示编程实操; 5.串行通信编程实操; 6.存储器编程实操; 7.使用蓝牙模块和WIFI模块编程实操; 8.ADC0804和DAC0832编程实操; 9.LCD液晶屏编程实操; 10.红外解码超声测距步进电机编程实操; 11.程序综合编程实操。 12. 教学重点 每个单片机程序设计项目的实操步骤和代码输入过程是教学的重点 。 教学难点 理解单片机程序的执行逻辑分析是教学难点。 教学时数 全书实操视频约540分钟,学生实操以4倍计算,计2160分钟,以40分钟为1课时,约54课时,加14课时机动,合计68课时。 教学建议 1.本书以任务驱动展开教学和实操,为方便教师的教和学生的学,全书的每个任务实操都配有一个不差一秒的实操全程录屏视频,可手把手指导学生正确完成编程任务。学生实操时应两人一组进行合作学习,即学生甲用一台电脑进行单片机程序设计,学生乙用另一台电脑放实操视频,学生甲要参照学生乙所放视频进行代码输入,学生乙要对照检查学生甲屏幕上的代码输入是否正确,两学生的角色定时轮换。两学生这样合作实操,就能保证编程实操的正确性。 1

51单片机最小系统讲解及应用

51单片机最小系统 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 下面给出一个51单片机的最小系统电路图. 说明 复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系 统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典 型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的 取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的, 原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定 量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机

特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的. 因此可以看出,其实要熟悉51单片机的40个引脚功能也很容易: 总共40个脚,电源用2个(Vcc和GND),晶振用2个,复位1个,EA/Vpp用1个,剩下还有34个.29脚PSEN,30脚ALE为外扩数据/程序存储器时才有特定用处,一般情况下不用考虑,这样,就只剩下32个引脚,对于初学者,这32个引脚就是要经常跟它们打交道的了.它们是: P0端口P0.0~P0.7共8个 P1端口P1.0~P1.7共8个 P2端口P02.0~P2.7共8个 P3端口P3.0~P3.7共8个 使得单片机工作的最小电路 80C51为例 首先,我们在使用protel和proteus的软件画电路图时,你会发现原先40个引脚的芯片变成了38个引脚,那是因为它把第40和第20个引脚VCC和GND隐藏了,所以要是的单片机开始工作至少需要一个VCC(电源)和GND(接地)。 其次,学习过组成原理的同学或者说学习过计算机导论的同学一定知道,计算机的冯·诺依曼体系,什么是冯·诺依曼体系。简单的说就是程序(指令)存储,顺序执行,也就是说指令是一条一条执行的,即CPU从ROM(他可以称为程序存储器,但不准确)中取出指令然后再执行。取指令并执行有严格的先后顺序,那么就需要一个时钟来准确的使CPU 稳定工作。 所以,第二个需要的就一个时钟电路。一个内部时钟电路是由两个电容(CAP)和一个石英晶振(Crystal)组成。CPU的时钟周期(震荡周期)由石英晶振决定(常用6MHZ或12MHZ),两个电容取10~30pF,并把他们接在XTAL1(输入)和XTAL2(输出)两端。

51单片机的学习经验(附学习总结)

51单片机的学习经验(附学习总结) OFweek工控网讯:作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。 单片机作为一种简单的控制器在生活中有这广泛的应用,当然在工业型单片机在生产中也扮演着很重要的角色,所以对于一个学习自动化的工控人来说,学习单片机是非常有必要的。 单片机的学习经验 1、学习电子技术基础知识,如电路、模拟电路和数字电路。这是学习电类相关专业的基础。 2、学习计算机硬件知识,如计算机的简单组成原理(只需要了解),当然要知道CPU是什么?总线是什么?一些相关概念。 3、程序编写的相关知识,主要是汇编语言和C语言。了解结构化语言的程序设计方法,也就是三种结构(顺序结构、分支结构(或称选择结构)、循环结构),会一些常用的算法。 4、以上是基础,有了这些基础,学习51单片机就只要花几周的时间就能上手。但学习单片机时,主要从单片机的存储器开始,其中特殊功能寄存器是重点,学会之后,就可以学习单片机的基础部分了,主要是四个部分:51单片机I/O口的使用、中断的使用、定时器的使用、外部器件的扩展。这些部分都可以用软件仿真(可以用proteus软件)。 5、可以买一两块廉价的单片机开发板,用廉价的方法(可以用热转印法做PCB板)仿制一些更简单的实验功能板,开始做板时千万不做得太复杂,我带过的很多学生中,有少部分人总是觉得太简单了,做个复杂的,结果做了个把星期,没有成功,最后只有放弃。还有一点很重要,就是用PROTEUS仿真时,最好只做单一功能的仿真,否则可能与实际在硬件上做的结果不一样。 6、从网上下载一些实例进行研究学习,不断提高。 学习单片机的步骤

手把手教你学51单片机之十八 RS485通信与Modbus协议

在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。而RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且允许多个收发设备接到同一条总线上。随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,本节课我们要讲解一下RS485通信和Modbus协议。 单单使用一块KST-51开发板是不能够进行RS485实验的,应很多同学的要求,把这节课作为扩展课程讲一下,如果要做本课相关实验,需要自行购买USB转485通信模块。18.1 RS485通信 实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方: 1、接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。 2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。 3、接口使用信号线和GND与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。 4、传输距离有限,最多只能通信几十米。 5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。 针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点: 1、我们在讲A/D的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。而RS485就是一种差分通信方式,它的通信线路是两根,通常用A和B或者D+和D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V 表示,逻辑“0”以两线间的电压差为-(0.2~6)V来表示,是一种典型的差分通信。 2、RS485通信速度快,最大传输速度可以达到10Mb/s以上。 3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。 4、传输距离最远可以达到1200米左右,但是他的传输速率和传输距离是成反比的,只有在100Kb/s以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。

从业将近十手把手教你单片机程序框架DOC

第一节:吴坚鸿谈初学单片机的误区。 (1)很难记住繁杂的寄存器?寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。 (2)很难记住繁杂的汇编语言指令?除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。鸿哥我行走江湖多年,从来就没有用汇编帮客户做过一个项目。 (3)C语言很难学?你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。你只要会: 5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。 7个运算符+,-,*,/,|,&,!。 4个逻辑关系符||,&&,!=,==. 3个数据类型unsigned char,unsigned int,unsigned long。 3个进制相互转化,二进制,十六进制,十进制。 1个void函数。 1个一维数组code(或const) unsigned char array[]。 那么世界上任何一种逻辑功能的单片机软件你都能做出来。 鸿哥我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。 (4)很难记住精确时间的计算公式?经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。鸿哥我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。 (5)很难记住繁杂的各种通信协议?什么IIC,SPI,232串口通讯,CAN,USB等等。这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。 (6)很难写短小精悍的程序?初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系,现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。 既然鸿哥列出了那么多误区,那么什么才是初学者关注的核心?预知详情,请听下回分解----delay()延时实现LED灯的闪烁。 第二节:delay()延时实现LED灯的闪烁。 开场白: 上一节鸿哥列出了初学者六大误区,到底什么才是初学者关注的核心?那就是裸机奔跑的程序结构。一个好的程序结构,本身就是一个微型的多任务操作系统。鸿哥教给大家的就是如何编写这个简单的操作系统。在main函数循环中用switch语句实现多任务并行处理的任务切换,再外加一个定时器中断,这两者的结合就是鸿哥多年来所有实战项目的核心。鸿哥的程序结构看似简单,实际上就是那么简单。大家不用着急,本篇连载文章现在才正式开始,这一节我

手把手教你为51单片机写一个操作系统

手把手教你为51单片机写一个操作系统 目前,大多数的产品开发是在基于一些小容量的单片机上进行的。51系列单片机,是我国目前使用最多的单片机系列之一,有非常广大的应用环境与前景,多年来的资源积累,使51系列单片机仍是许多开发者的首选。针对这种情况,近几年涌现出许多基于51内核的扩展芯片,功能越来越齐全,速度越来越快,也从一个侧面说明了51系列单片机在国内的生命力。 多年来我们一直想找一个合适的实时操作系统,作为自己的开发基础。根据开发需求,整合一些常用的嵌入式构件,以节约开发时间,尽最大可能地减少开发工作量;另外,要求这个实时操作系统能非常容易地嵌入到小容量的芯片中。毕竟,大系统是少数的,而小应用是多数而广泛的。显而易见,μC/OS—II是不太适合于以上要求的,而Keil C所带的RTX Tiny不带源代码,不具透明性,至于其FULL版本就更不用说了。 1Keil C51与重入问题 说到实时操作系统,就不能不考虑重入问题。对于PC机这样的大内存处理器而言,这似乎并不是一个很麻烦的问题,借用μC/OS—II RTOS的说法,即要求在重入的函数内,使用局部变量。但5l系列单片机堆栈空间很小,仅局限在256字节之内,无法为每个函数都分配一个局部堆空间。正是由于这个原因,Keil C51使用了所谓的可覆盖技术: ①局部变量存储在全局RAM空间(不考虑扩展外部存储器的情况); ②在编译链接时,即已经完成局部变量的定位; ③如果各函数之间没有直接或间接的调用关系,则其局部变量空间便可覆盖。 正是由于以上的原因,在Keil C51环境下,纯粹的函数如果不加处理(如增加一个模拟栈),是无法重人的。那么在Keil C5l环境下,如何使其函数具有可重人性呢?下面分析在实时操作系统下面,任务的基本结构与模式: vold TaskA(void*ptr){ UINT8vaL_a; //其他一些变量定义 do{ //实际的用户任务处理代码 }while(1);

手把手教你单片机流水灯实验

手把手教你单片机流水灯实验(详解) -------------------------------------------------------------------------------------------- ------------------- 每当夜幕降临,我们可以看到大街各式各样广告牌上漂亮的霓虹灯,看起来令人赏心悦目,为夜幕中的城市增添了不少亮丽色彩。其实这些霓虹灯的工作原理和单片机流水灯是一样的,只不过霓虹灯的花样更多,看起来更漂亮一些。这一课我们就结合S51增强型单片机实验板、ISP编程器来手把手教你详细学习单片机的流水灯实验。 首先介绍实验的硬件设备:S51增强型单片机实验板+ ISP编程器 图1:S51增强型单片机实验板

图2:ISP编程器套件 S51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。。。等实验,电路原理图见下图3。

图3 从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。 实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。 从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。

c语言51单片机学习视频学习方法

学习单片机c语言介绍: 本教程内容以应用试验的方式,内容涵盖单片机内部资源学习应用介绍,C语言基础知识开发,硬件数字电路的设计方式,全部从应用的角度进行课程讲解,为电子初学者打下良好的基础。 应具备的条件: 1,软硬件设备方面,电脑不能少,最好可以有一块开发板,如果实在资金有限可以先用Proteus仿真,了解了基本的编程思想和对单片机有一定的认识之后,自己动手焊一个最小系统出来,之后用到的外围电路逐一添加就可以。一定要注意一点,单片机属于硬件,如果仅仅局限于仿真软件永远也学不会,所以最终要走到DIY的路上,凡事要动手去做,很快就会尝到甜头~~~ 2,书籍属于理论知识,理论必须和实践结合起来,只看书是学不会单片机的。3,不要考虑需要多少时间才能学会,只要你每天有安排有计划,当你全心全意投入的时候就会发现时间这个问题真不是问题,学无止境,只要每天不浪费不虚度能感觉到充实就已经很好了,如果一定要一个时间,那我告诉你“十天学会单片机”。 视频目录: 第一讲;Proteus,keil的使用上--手把手教你学51单片机与Proteus.avi 详情105.6MB 第一讲;Proteus,keil的使用下--手把手教你学51单片机与Proteus.avi 详情24.3MB 第二讲;单片机技术概论,数字电路基础知识--手把手教你学51单片机与Proteus.avi 详情 88.1MB 第三讲Keil软件使用及流水灯设计上--手把手教你学51单片机与 Proteus.avi 详情 40.4MB 第三讲Keil软件使用及流水灯设计中--手把手教你学51单片机与 Proteus.avi 详情 59.6MB

51单片机C语言教程-郭天祥-PDF转word版第二章

第2章Keil软件使用及流水灯设计 本章详细介绍单片机程序常用编译软件Keil的用法,包括用Kei建立工程、工程配置、C51单片机程序软件仿真、单步、全速、断点设置、变量查看等。同时还介绍如何使用SST89E516RD单片机进行计算机与TX-IC单片机学习板之间的硬件仿真。用一个完整的C51程序来操作发光二极管的点亮与熄灭,然后调用C51库函数来方便地实现流水灯,最后为大家补充蜂鸣器与继电器的操作方法及集电极开路与漏极开路的概念。从这一章开始我们将手把手地讲解单片机C语言编程。认真学好本章,对于初学者来说将会是一个非常好的开头。 2.1 Kell工程建立及常用按钮介绍 在使用Keil软件之前,要保证在用户的计算机上装有一套稳定可靠的软件。本教材中讲解的Keil版本为V6.12,为了能让大家更方便地学习本软件的用法,建议大家在学习本教材时尽量选择该版本。 在本书中,我们强烈推荐的学习方法是边学边用,所以在这里我们不会像传统专业书籍那样,将某个软件的所有功能事先都讲解得非常仔细,很多不用的地方我们不做说明,需要用到什么,我们就学习什么,这样才能有效地理解它、记忆它,最终达到学以致用的目的。 2.1.1 Keil工程的建立 进入Keil后,屏幕知图2.1.1所示,紧接着出现编辑界面,如图2.1.2所示。 图2.1.1 启动Keil软件时的屏幕 (1)建立一个新工程单击菜单中的选项,如图2.1.3所示。

图2.1.2进入Keil软件后的编辑界面 图2.1.3新建工程 (2)选择工程要保存的路径,输入工程文件名。Keil的一个工程里通常含有很多小文件, 为了方便管理,通常我们将一个工程放在一个独立文件夹下,比如保存到part2_l文件夹,工程文件的名字为part2_l,如图2.1.4所示,然后单击<保存>按钮。工程建立后,此工程名变为part2_l.uv2。 图2.1.4保存工程 (3)这时会弹出一个对话框,要求用户选择单片机的型号,可以根据用户使用的单片机来选择。Keil C51几乎支持所有的51内核的单片机,TX-1C实验板上用的是STC89C52,我

相关主题
文本预览
相关文档 最新文档