DIY-给单片机写个实时操作系统内核!

DIY-给单片机写个实时操作系统内核!

DIY:给单片机写个实时操作系统内核!

为了进一步把单片机的潜能发挥到极限,我一直想写个程序把单片机的所有资源都用光,但是如果依照单道程序顺序执行的方式,很难把MCU 的CPU 时间都充分利用,比如使用软件延时函数实际上就是在无谓地消耗着CPU 的

时间什么事情都不做,因为CPU 一直在循环等待着条件结束,这相当于函数

被阻塞了。为了更明显地验证这一点,你可以在WINDOWS 下打开VC6.0

或其他的C 语言编译器,写段代码如下:#include void main(void){while(1) ;}意思是让CPU 不做事情在等待,你猜,这句代码会消耗掉多少CPU 时间?

答案会根据不同机型而不同,如果是单核CPU 的话,这句话会消耗掉CPU 接近100%的时间!如果是双核CPU,则只消耗掉50%左右,因为这段代码只运行在其中一个核,另外一个核还可以做别的事情,截图如下:

然后你可以测试下面这几句代码:

#include

#include

void main(void){while(1)Sleep(100);}这段代码实际上也是什么都不做,它不断地调用Sleep()函数,让它延时100 毫秒再醒来,然后继续睡觉。现在你可以再打开任务管理器看一下CPU 时间用了多少,答案是基本不用CPU 时间!!为什么同样地什么事情都不做,差别咋就这么大呢?这是因为使用了Sleep()这个函数是WINDOWS 操作系统为你提供的,调用Sleep()之后WINDOWS 操作系统自动把你这个程序挂起了(就是暂时扔到一边不管),然

后让CPU 去执行其他程序,等到时间到了,操作系统再把这段程序恢复继续

执行,这样的话CPU 就可以得到充分地利用了,也就是说你可以在一块CPU 里面同时执行多个任务而互不影响!(这里所说的同时并不是同时执行,CPU

如何使用BSL方式给MSP 单片机烧录程序

如何使用BSL方式给MSP430单片机烧录程序 一,使用两个软件:IAR(EW430)和MSP430BSL.exe 二,IAR软件用于编程和编译;BSL软件负责载入烧录。三,在IAR中编程操作: IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。 国内普及的MSP430开发软件种内不多,主要有IAR公司的Embedded Workbench for MSP430(简称为EW430)和AQ430。 目前IAR的用户居多。IAR EW430软件提供了工程管理,程序编辑,代码下载,调试等所有功能。并且软件界面和操作方法与IAR EW for ARM等开发软件一致。因此,学会了IAR EW430,就可以很顺利地过渡到另一种新处理器的开发工作。 IAR新建工程步骤 Step1:选择主菜单的File >New>Workspace命令,然后开启一个空白工作区窗口 Step2:选择主菜单Project>Create New Project>选择Empty project。点击OK。最好新建一个文件夹,用于放置所有的生成文件。选择保存路径后,点击保存,新工程建立完毕 Step3:file>new>file>编辑代码>save>文件名可以自己起,但后面一定要加 ”.c” ,保存为C文件 Step4: 右击工程名,将写好的程序添加进去Add>Add Files,也可以用Add>Add“main.c”添加入工程。 Step5: 右击工程名,点击Option>General Options>Device>选择MSP430F149 Step6: 继续设置Linker>Output>文件名.txt(这步很关键)>fomat>

经典51内核资源全览浓缩图

【经典51懒人5步速成法-01】经典51内核资源全 览浓缩图 1、引言 单片机开发既复杂又简单,大多有兴趣而无决心的懒人会望而却步。结合本懒人的体验,设计了一套经典款51单片机的入门速成法。正所谓。浓缩的都是精华,简约而不简单。 教程安排如下: 01-经典51内核资源全览浓缩图 02-重要外设特殊功能寄存器概览 03-程序开发流程与设计要点 04-三大外设的开发与可重用代码 05-应用程序设计入门一例通 2、经典51单片机内核资源全览 你不要当51单片机是高科技产品,请把它看作一款玩具。你不是在学习开发,你是在玩“极品飞车”。学习会让懒人痛苦,而玩耍会给懒人快乐,没有愉悦的心情,还谈什么学好学精? 经典款51单片机都有什么东西?一张图就可以告诉你...

<1> 四组8位并行I/O端口: P0端口:PC门,集电极开路输出,必须接上拉电阻才能输出高电平。 P1端口:无特殊之处。 P2端口:访问外部存储器时,作高8位地址用。 P3端口:功能复用端口,详情看表。 <2> 三大外设:外部中断、定时/计数、串行通信 <3> 五个中断源:2个外部中断、2个定时/计数中断、1个串行通信中断 注意:要记住中断号与中断源的对应关系...编程时会用到!

<4> 三大特殊功能寄存器:TCON、SCON、TMOD 3、小结 51单片机之所以经典,那是因为麻雀虽小,五脏俱全。 要用好任何一款单片机,首先要知道该单片机的功能与特性,接下来就要学会怎么样使用这些功能和控制这些特性。不管是复杂的处理器还是简单的单片机,其功能大多通过外设来体现出来,而外设与内核的交互则通过寄存器和中断系统来实现。因此,嵌入式设计师在做底层的单片机程序开发,实际上大部分都在编程操作各种特殊功能寄存器和处理中断的响应。 我们虽然是懒人,但是要速成单片机程序开发,还是绕不开对特殊功能寄存器的了解。比较幸运的是,在程序设计中常用的51单片机外设特殊功能寄存器真的很少.......未完待续,下期再见哦。

基于51内核的单片机比较

问:市场上流行的具有MCS-51内核的产品及其各自特性。 答:目前已有多家公司生产嵌入51内核的单片机,如ATMEL公司的ATMEL89系列、CYGNAL 的C8051FXXX系列、PHILIPS公司的8XC51系列等。 各系列的特性如下: 一、ATMEL公司的A TMEL89系列单片机 (1)ATMEL89系列单片机简介 ATMEL89系列单片机是ATMEL公司生产的与MCS-51系列单片机兼容的产品。这个系列产品的最大特点是在片内含有Flash存储器,因此它有着十分广泛的应用前景和用途。 ATMEL89系列的型号由"89CXXXX"或"89LVXXXX"或"89SXXXX"等表示。其中"9"表示芯片内部含Flash存储器,"C"表示是CMOS产品,"LV"表示低电压产品,"S"表示含可下载的Flash存储器,"XXXX"为表示型号的数字,如:51,2051,8252等。 (2)AT89S52单片机的主要特点 AT89S52是一款低能耗高性能的8位CMOS微处理器,芯片内部具有8K字节可在系统编程的Flash内部程序存储器(可写/擦1000次)。 允许在系统内改写或用常规非易失性存储器编程器编程。 芯片采用51系列指令集并与51系列单片机引脚兼容。 工作电压在4.0V~5.5V。 256字节内部RAM。 32根可编程I/O线、三个16位定时器/计数器、8个中断源、2个数据指针以及看门狗定时器。 全双工异步串行通信通道。 低功耗空闲和掉电方式。 通过中断中止掉电方式。 二、CYGNAL公司的C8051FXXX系列单片机 (1)C8051FXXX系列单片机简介 C8051FXXX系列单片机是美国CYGNAL公司推出的高速、高性能混合信号处理单片机,采用流水线结构,机器周期由标准的12个系统时钟周期降为1个系统时钟周期,处理能力大大提高,峰值性能可达100MIPS。该单片机可彻底改变人们对8051单片机速度慢性能低的印象。

单片机制作

自己动手做单片机实验板 孔子说:“工欲善其事,必先利其器”,学习单片机所用的工具、元器件和数模电路是有一些区别的,我们在学习之前最好先备齐它们,至少让外人看出我们是搞过单片机的。有几样东东很重要,在上场之前不得不提及。 刀枪剑戟 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑 CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧!

单片机十八般兵制作

单片机入门制作专辑--2.十八般兵器 [ 来源:本站原创 | 作者: | 时间:2008年02月11日 | 浏览: 1417 十八般兵器 快使用单片机,哼哼哈兮! 孔子说:“工欲善其事,必先利其器”,学习单片机所用的工具、元器件和数模电路是有一些区别的,我们在学习之前最好先备齐它们,至少让外人看出我们是搞过单片机的。有几样东东很重要,在上场之前不得不提及。 刀枪剑戟 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新 换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下

载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧! 图 1 忘了是哪一部抗日题材的电影里有一句经典台词:“别看你今天闹的欢,小心将来拉清单”。当时我还真不知道这话的意思,但我写到这里的时候我终于明白了,闹了这么长时间单片机,今天终于到我拉清单了。附表所示这个清单列出了学习单片机所需要的兵器,这是在成家立业之前必要的条件,里面我列出了大概的市场价格以防被黑。各元器件的外形如图 2所示。其实满打满算学习单片机也要不了几个钱,一般的元器件也就几块钱。几块钱能买什么?买不了房子买不了田,买几个元器件能用好几年。必要的时候可以和卖元器件的老板砍砍价,你砍得多省得多,回去能买辆自行车。 附表实验板 DIY元器件采购清单

单片机原理及应用习题答案

思考与练习题1 1.1单项选择题 (1)单片机又称为单片微计算机,最初的英文缩写是( D ) A.MCP B.CPU C.DPJ D.SCM (2)Intel公司的MCS-51系列单片机是( C )的单片机。 A.1位 B.4位 C.8位 D.16位 (3)单片机的特点里没有包括在内的是( C ) A.集成度高 B.功耗低 C.密封性强 D.性价比高 (4)单片机的发展趋势中没有包括的是( B ) A.高性能 B.高价格 C.低功耗 D.高性价比 (5)十进制数56的二进制数是( A ) A.00111000B B.01011100B C.11000111B D.01010000B (6)十六进制数93的二进制数是( A ) A.10010011B B.00100011B C.11000011B D.01110011B (7)二进制数11000011的十六进制数是( B ) A. B3H B.C3H C.D3H D.E3H (8)二进制数11001011的十进制无符号数是( B ) A. 213 B.203 C.223 D.233 (9)二进制数11001011的十进制有符号数是( B ) A. 73 B.-75 C.-93 D.75 (10)十进制数29的8421BCD压缩码是( A ) A.00101001B B.10101001B C.11100001B D.10011100B (11)十进制数-36在8位微机中的反码和补码是( D ) A.00100100B、11011100B B.00100100B、11011011B C.10100100B、11011011B D.11011011B、11011100B (12)十进制数+27在8位微机中的反码和补码分别是( C ) A.00011011B、11100100B B.11100100B、11100101B C.00011011B、00011011B D.00011011B、11100101B (13)字符9的ASCII码是( D ) A.0011001B B.0101001B C.1001001B D.0111001B (14)ASCII码1111111B的对应字符是( C ) A. SPACE B.P C.DEL D.{ (15)或逻辑的表达式是( B ) A.A?B=F B. A+B=F C. A⊕B=F D.(A?B)=F (16)异或逻辑的表达式是( C ) A.A?B=F B. A+B=F C. A⊕B=F D.(A?B)=F (17)二进制数10101010B与00000000B的“与”、“或”和“异或”结果是( B ) A.10101010B、10101010B、00000000B B.00000000B、10101010B、10101010B C.00000000B、10101010B、00000000B D.10101010B、00000000B、10101010B (18)二进制数11101110B与01110111B的“与”、“或”和“异或”结果是( D ) A.01100110B、10011001B、11111111B B.11111111B、10011001B、01100110B C.01100110B、01110111B、10011001B D.01100110B、11111111B、10011001B (19)下列集成门电路中具有与门功能的是( D ) A.74LS32 B.74LS06 C.74LS10 D.74LS08

自制单片机烧写器

像我们这样搞电子的人,要的就是动手的乐趣。下面我们来介绍近期在网络上非常流行的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板顶层

如何将程序代码烧录进STC单片机

不能用keil作下载,它应该只是一个程序编辑和调试用的吧,用keil生成hex 文件。下载时用专门的下载软件找到生成的那个hex文件就可以下载了。,有专门的单片机烧写软件的。那个软件的名字叫STC-ISP V391(你可以下载个更高版本的)的,你的开发板里面应该自带下载软件的啊! 如果你用的下载下是USB转串口的线的话,你需要安装一个USB转串口驱动才能下载程序。网上搜一下就可以了。如果有光盘的话就在光盘里面找,里面肯定有的。 如何将程序代码烧录进STC单片机 先安装<STC单片机编程工具>软件到计算机中,然后进行下面的操作。 以下是烧录程序的主要界面。烧录过程非常简单,操作也非常简单。图中红色的五个大数字就表示了整个过程。简简单单的五步就可以了(实际上只需4步)。 启动本烧录程序后,第一步就是选择烧录器件。本烧录软件支持STC全系列的51单片机芯片,因此,第一步必须选择相对应的型号。由于本实验板选用的单片机芯片就是本烧录

软件首次启动默认的型号,所以,本项一般都不需要选择。 另外,“AP Memory”是指该芯片的内存大小和起止地址,根据器件型号自动更改,不必理会。 选择了器件型号,第二步就应该选择将要被烧录的HEX机器码文件。HEX文件由单片机开发环境输入、编辑代码,最后编绎产生。

至于如何产生HEX文件,很多资料也都有介绍,本板光盘中有详细的说明,并且提供了多套开发软件(每套都能用)。通过对照自学完全可以很快掌握操作。并且,本实验板光盘也提供了多种单片机开发环境供大家学习研究。 本光盘中提供了一些例子程序,大家可以点“open file”按钮,弹出以下窗口(源程序也有,但这里不显示),先选择一些例子程序烧录实验。 选好了文件后,大家可以发现“文件校验和”中的数据发生了变化,大家可以通过留意这个数据是否变化来确定打开文件是否成功,或者文件刷新是否有更改。 当然,文件打开后,会显示在右边的数据区,大家也可以观查右边数据区是否有更改。不过,当数据太多时,更改的地方又很少时,观查“文件校验和”会更快更准确。 选好了器件,选好了文件,第三步就可以设置串口和串口通信速度了。串口是一个九针的插座,老式的鼠标口就是串口。为了让通信可靠,我们可以适当的选低一些的速度,这个串口线较长时非常重要。 烧录过程中,如果出现失败,可以考虑将串口通信速度降低再试,这是由于机器配置以及当地环境因素决定的,当环境干扰过大时,必需选低一点的波特率(即通信速率)。烧录成功与失败,可以从信息区的提示看出。 选择并设置好串口后(一般不需更改),进入第四步,而这一步基本上不用更改。设置时钟倍频主要是为了提高工作速度,设置时钟增益是为了降低电磁幅射。这些,对于高级工程人员和最终产品会很有用,对于初学者来说,只当没有看见就行了。 第五步是最后一步,点击“Download/下载”,就可以进入烧录状态。 特别说明:点击“Download/下载”之前实验板的电源开关必须关闭,使单片机彻底断电,点击“Download/下载”之后才可以使单片机上电,完成程序的烧录。 注意:点击“Re-Download/重复下载”也可以,这常用于大批量的编程,不必每次都去点“Download/下载”。出现以下图状态时,给实验板通电就可以完成编程过程(如果实验板已经通电,则必须关掉电源1秒钟再次通电)。

单片机各种烧写文件格式简介

各种烧写文件格式简介-ELF Hex Bin 一,ELF Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: (1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。 (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。 (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。 ELF文件格式比较复杂。 二,hex 什么是Intel HEX格式? Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 记录格式 一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式. :llaaaatt[dd...]cc 每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述. :冒号是每一条Intel HEX记录的开始 ll 是这条记录的长度域,他表示数据(dd)的字节数目. aaaa 是地址域,他表示数据的起始地址 <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址,

51单片机最小系统制作 全过程

51单片机最小系统制作 第一章概述 1.1 缘起 1. 给51初学者提供一个简单的DIY的教材。 第二章跑马灯和串口 2.1 第一步:准备 准备一下器件: 1、烙铁(质量好点) 2、焊锡(细) 3、烙铁架(带一个专用海绵) 4、松香块 5、万用表(要有带响的,听听红黑表笔短接时的声音出来快不快) 6、PCB面万用板1块 7、40pin 插座1个 8、11.0592M晶振1个 9、30P瓷片电容2个 10、11个LED 11、电阻排1K 1个到VCC,做跑马灯LED的限流电阻 12、max232或者兼容的芯片 13、16pin的插座上去 14、STC89C51 15、其它杂物 以上的投资加起来,不会超出100元。

价格数量和封装如下: STC的单片机可以串口下载。 解释一下: LED:8个挂在P1口,排电阻是上拉限流的;2个作为串口收发的指示灯;1个LED作为电源指示灯; 独石电容6个:5个是使用在max232上的;一个是使用在单片机上,作为电源去耦的; 10K电阻1个,接在EA上,上拉到5V; 电解电容和电阻构成上电复位电路;(STC单片机不需要)

自己买2个DB9的母头,焊接一根串口电缆; 准备一个3PIN的插座,焊接在PCB的面包板上; 还有电源,Dc5V的电源很多,电源电压差一点问题不大;很多单片机现在电源范围都宽; STC单片机应该可以工作在4V以上,具体查资料。 准备好以上物品,可以准备焊接好了。 来一张全家福: 2.2 第二步:焊接单片机最小系统

2.3 第三步:焊接串口指示灯 2.4 第四步:在P1口上焊接跑马灯

2.5 第五步:焊接Dc5V电源指示灯 2.6 第六步:焊接max232的5个0.1u电容

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位,需要仔细分配.

单片机自己制作

自己动手做单片机实验板 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑 CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧!

STC系列单片机程序烧录方法

S T C系列单片机程序烧 录方法 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

STC系列单片机程序烧录方法 来源:互联网作者: 关键字:STC单片机 ??单片机烧录 ??单片机烧录方法 ?? STC单片机具有通过串口编程功能,简单到通过串口3三根线就能将程序烧录到单片机内,这大大的方便了开发人员,省去了昂贵复杂的编程器,在调试程序时也可将内部数据直接通过串口发送到PC上观看,一些不太复杂的程序甚至可以省掉仿真器。 目前大部分的计算机都不带串口,这里还得介绍一下一个小转换工具,可将PC上的USB口转换成单片机的TTL电平。插入硬件后提示安装驱动,完成后查看PC上设备管理器,端口中会多出一个串口,这里是COM3,记住这个串口号,下面给单片机烧录是要用。

单片机板和转换板连线对应连接好,如发现无法通讯,可调整2、3的连线。 1,地线----地线 2,TXD-----RXD 3,RXD-----TXD 转换板由于PC供电,指对外提供很小的供电能力,建议单片机板用单独的电源供电,切记不能外接电源和转换板同时对单片机板供电,否则会烧设备或计算机的危险。 硬件连接正常后就是通过STC专门的烧录软件进行烧录了。

1、现在对应的单片机型号 2、打开编译过的需要写入单片机内的程序,类型都是以.bin和.Hex 结尾的文件。 3、选择连接的串口号,就是上边在设备管理器里看到的COM3。 4、选择通讯波特率,单片机目标板上有晶振的,这一项基本可以不用理会,系统会自动适应合适的波特率。如果目标板使用的是内部振荡,由于内部制造误差,自动波特率可能会连接不成功,这时就要手工

松翰单片机的OTP可重复烧写的技巧!

松翰单片机的OTP可重复烧写的技巧! 1.问题:笔者在前期工作中,常常遇到在做测试时,只要修改一些简短的指令或数据时,就要再换一个全新的芯片重新烧录一下,再测试。这样即浪费时间,又消费芯片,还消费金钱呢。 2.解决:其实OTP不是你想象的那么“顽固”,只要你对它好一些,还是有些回报的。在烧录前,芯片的内部全是由2进制的1组成,烧录后,是对里面的1进行切断成0,如此,烧录过的不能再烧录,是对已经把1烧录成0的不可再烧,而是没有把1烧成0的,还是可以再烧的。也就是说,1可以变成0,而0不可再变为1,就象保险丝一样,烧断了就不可再烧,而没烧断的,你还可以把它烧断。要想实现重烧的过程,还是要有些技巧的。哎,废话这么多,来些实例的讲吧。 你可以在你想要的地方预留些空间,等你想要在这修改时,再从里面提取出来。 ;-----------------------------------------------------------------------------; 3.实例1:在已经烧过程序的IC上修改数据: incms t_enter_io ;500ms 进入一次 nop ; mov a,#0xFF ;1 预留数据修改(二进制为:b) mov a,#0xFF ;2 预留数据修改 mov a,#0xFF ;3 预留数据修改 mov a,#0xFF ;4 预留数据修改

mov a,#0xFF ;5 预留数据修改 mov a,#0xF3 ;等待被修改的数据 cjb t_enter_io,a,e_tele_io ;249次进入一下 clr t_enter_io ; ;-----------------------------------------------------------------------------; 3.1.1 (直接修改)比如我想在已经烧有上面程序的IC的基础上,修改a=0xF3(2二进制:B)为a=0xF1,此时,你就不要再浪费IC了,直接在上面修改就可以。你可以看到,0xF3与0xF1的区别只在于3和1,二进制为:0011B和0001B,所以你可以把0011B(十进制3)中第2位的1修改为0,即从0011B成为0001B,所以可以直接修改,当然你也要以把它修改成为你想要的数据,但前提是:你只能从二进制中的1烧成0,不可从0变为1. 比如我可以把0xF1再烧成0xA1或0xA0或0x01或0x00等等。 ;-----------------------------------------------------------------------------; (覆盖修改)是否有一种可以在上面的程序中任意修改数据呢这是有的!读者可以看到,我上面的程序为了防止修改不同的数据而所预留的5条 :mov a,0xFF ,这是为了修改各种数据而预留的。你可以把 0xFF(二进制:B)修改成0~255范围的任意一个数据。修改过程为:先把在最下面的不想要的数据(直接送数指令:mov a,0xF3 ;此指令生成的机器指令为:2DF3),用 NOP(机器指令为:0000 )给填充掉。然后第5条的0xFF修改为你想要的数据),比如修改为:0x45,修改后的程序如下: incms t_enter_io ;500ms 进入一次 nop ; mov a,#0xFF

利用单片机制作简单万年历

国家职业资格全国统一鉴定 (国家职业资格二级) 家用电子产品维修工 论文题目:利用单片机制作简单万年历编号:13

利用单片机制作简单万年历 摘要:随着时代科技的发展,从摆钟到电子时钟,时代在进步,科技在不断地创新,本文设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在硬件设计方面,该电路采用AT89C52单片机作为核心,功耗小,计时模块采用DS1302d时钟电路,它的特点是寿命长,误差小,在显示方面,采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见;在软件设计方面,应用c语言编写程序,它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。在设计同时对单片机的理论基础和外围扩展知识进行了很好的实现。 关键词:AT89C52 DS1302 LCD1602

目录 1、前言 (4) 2、方案设计 (4) 2.21 主控模块设计 (5) 2.22 时钟电路模块设计 (6) 2.23 按键电路模块设计 (6) 2.24 显示模块设计 (7) 2.31 主程序设计 (7) 2.32 LCD1602显示软件设计 (8) 2.33 按键程序设计 (9) 2.34 DS1302时钟程序模块设计 (9) 3、测试与结果分析 (10) 4、软件仿真 (10) 5、结束语 (11) 参考文献 (13)

1、前言 据了解,目前市场上的电子万年历并不是采用51单片机作为主控制器的,基于单片机的万年历一般是学生和单片机爱好者在进行设计,谈不上占有市场。也许就是这样,研究单片机万年历的人不在少数,并且都在努力。努力不是单方面的,单片机的功能也应该要提高,STC89C52单片机就是这样的例子,其功能虽然没有大幅度提高,但使用起来更方便了。我相信,在不久的将来肯定会有功能更强大成本更低的单片机出现,给我们的设计带来更多的便利。 本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP 在系统烧写功能,使得烧写程序更加方便。 计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。总体来说,本设计成本消耗不高,功能设计也比较简单实现。 2、方案设计 2.1 总体设计思路 本设计包括硬件和软件设计两个部分。模块划分为主控模块、时钟电路模块、显示模块等子模块。软件方面可划分为:液晶显示程序、时钟调节程序、按键控制程序等管理软件组成。用户终端对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。它们之间的构成框图系统设计框图如图1所示。

Microchip推出增强型中档位PIC单片机内核

Microchip推出增强型中档位PIC 单片机内核Microchip推出增强型中档8位PIC 单片机内核 全球领先的单片机和模拟半导体供应商半导体供应商——Microchip Technology Inc.(美国微芯科技公司)今天宣布推出支持中档8位PIC12和PIC16 MCU系列单片机(MCU)的增强型架构。基于Microchip广为采用的中档内核的成功,该增强型增强型内核进行了更多的技术改进,其中有更大的程序和数据存储器、更深及更强的硬件栈、更多的复位方法、14条额外的编程指令(包括可以减少代码量的“C”效率优化)、更强的外设外设支持、更短的中断延迟及其他方面的改进。?考虑到8位MCU市场对更高的性能及更多的外设的需求,Microchip继续加大对其8位PIC MCU产品线的投入,以提供能够满足其现有及未来客户需求的丰富产品组合。新的增强型内核建立在其现有中档内核最佳要素的基础之上,可以实现更高的性能,同时保持了与现有中档产品的兼容性,有助于进行真正的产品移植。这些改进可以使用户的各种算法和功能的性能提升高达50%,代码容量减少多达40%。Microchip的中档8位PIC MCU一直保持着广泛的市场接受度,在传统上无法使用MCU的应用领域也获得了良好的发展势头,有助于设计人员使其产品在市场上脱颖而出。??Microchip公司安防、单片机及技术开发部副总裁Steve Drehobl表示:“由于消费、工业、医疗、汽车及其他应用寻求以更低的成本为消费者提供更多的实惠,对经济有效的智能构建模块的需求就变得至关重要。Microchip的增强型中档内核进一步促使低引脚数的PIC MCU具备高端性能和功能,使任何设计都可以增加智能且易于控制。”??增强型内核有助于提高集成度,使用多种外设而不会降低性能。

单片机入门常用知识

概述: 所谓单片机就是能在一个芯片上完成计算机处理功能的设备,在芯片的内部有计算单元、数据处理单元、程序存储以及常用的外部接口管理单元。在软件程序的管理控制下可实现设计者所需要的功能。 最初的单片机受芯片设计密度的限制,功能和性能不强,随着技术的发展,目前的单片机可实现大多数的常用接口功能,软件的存储空间也越来越大,处理能力大幅增加。 单片机常用功能: 普通端口功能:单片机都带有多个逻辑端口,可作为逻辑状态的输入输出使用,可用于控制或读取外部状态。 定时功能:单片机内部包含有定时器,通过对定时时钟进行计数来产生需要的延时,延时的长短可通过设置定时器的计数值来设置。 中断功能:单片机内部设定有多个中断入口,每当产生中断条件后,程序自动跳入到中断入口,通过中断入口的跳转指令转到中断处理程序,执行完后返回到产生中断跳转程序处的下一个指令地址。在单片机接口上,有专用的中断管脚,可设置为电平中断或边沿中断,当管脚出现条件时,设置对应的中断标志,触发相应中断。除了管脚中断,串口、定时、A/D等几乎都可产生中断。同时,中断的响应还需要设置对应的寄存器到要求的状态才可。 串口功能:串口相对于并口来说,数据是通过一个管脚送出或读入,数据长度一般为8位,按顺序移位送出。串口特点具有实用管脚少,应用方式灵活的特点,通过RS232电平转换可直接和计算机的串

口进行通讯。 A/D功能:可直接输入模拟信号,软件发出转换信号后,信号的幅值可通过转换变换为数值信号送对应的寄存器上。 D/A功能:可直接输出模拟信号,信号的幅值可通过D/A端口的设置数值来设定。 以上为常用功能,有些单片机还有SPI、USB、CAN等多种接口外部常用设备: 显示和输入:单片机的处理信息一般通过液晶屏或数码管来显示处理内容,液晶屏或数码管可直接连接到单片机管脚上,按照显示需求设置软件即可,输入多用按键输入,也可直接连接到单片机管脚上,软件通过监测管脚状态可获得按键信息。 串口应用:单片机串口信号一般为TTL电平,外部常用RS232或RS485,在应用中需要加对用的转换芯片或模块。 开发环境: 单片机储存的程序为二进制格式,把程序写入到单片机需要专用的设备,早期完成这个功能采用编程器来完成,编程器通过打印机口或串口以及USB口和计算机连接,单片机则通过可锁插座装入到编程器上,通过计算机上的软件选择好单片机型号,读入要下载的二进制软件,然后运行编程,则完成下载。目前,则是通过仿真器(下载线)来完成,一般是通过USB口连接计算机,计算机上下载功能和仿真功能集合到一起。通过编译软件把软件编译成二进制文件,然后直接下载即可。下载后的软件可通过仿真运行进行调试。

DIY-给单片机写个实时操作系统内核!

DIY:给单片机写个实时操作系统内核! 为了进一步把单片机的潜能发挥到极限,我一直想写个程序把单片机的所有资源都用光,但是如果依照单道程序顺序执行的方式,很难把MCU 的CPU 时间都充分利用,比如使用软件延时函数实际上就是在无谓地消耗着CPU 的 时间什么事情都不做,因为CPU 一直在循环等待着条件结束,这相当于函数 被阻塞了。为了更明显地验证这一点,你可以在WINDOWS 下打开VC6.0 或其他的C 语言编译器,写段代码如下:#include void main(void){while(1) ;}意思是让CPU 不做事情在等待,你猜,这句代码会消耗掉多少CPU 时间? 答案会根据不同机型而不同,如果是单核CPU 的话,这句话会消耗掉CPU 接近100%的时间!如果是双核CPU,则只消耗掉50%左右,因为这段代码只运行在其中一个核,另外一个核还可以做别的事情,截图如下: 然后你可以测试下面这几句代码: #include #include void main(void){while(1)Sleep(100);}这段代码实际上也是什么都不做,它不断地调用Sleep()函数,让它延时100 毫秒再醒来,然后继续睡觉。现在你可以再打开任务管理器看一下CPU 时间用了多少,答案是基本不用CPU 时间!!为什么同样地什么事情都不做,差别咋就这么大呢?这是因为使用了Sleep()这个函数是WINDOWS 操作系统为你提供的,调用Sleep()之后WINDOWS 操作系统自动把你这个程序挂起了(就是暂时扔到一边不管),然 后让CPU 去执行其他程序,等到时间到了,操作系统再把这段程序恢复继续 执行,这样的话CPU 就可以得到充分地利用了,也就是说你可以在一块CPU 里面同时执行多个任务而互不影响!(这里所说的同时并不是同时执行,CPU

51单片机的制作

51单片机的制作 学院:物电学院班级:1305 学号:2013112030526 姓名:曹杉 一:原理图的设计和PCB板的排版连线 这个PCB板的原理图分为好几块,元器件多只要细心就没问题,元件的封装像数码管单片机都是自己画的,最难的是连线排版,太多太复杂最后还是按老师的排版来画的,板子画好检查没问题发出去做的时候很有成就感也很忐忑

二:PCB板的原始成品 拿到的原始的板子 三:PCB板的焊接 从最小的元器件开始焊,贴片的电阻还有二极管很小,第一部分焊的这个,不熟练焊了好久,还要注意正负极,电阻电容等都是插件很好焊 贴片电阻和贴片二极管电阻 每焊完一部分元器件就要用万用表检查是否短路或能否正常发光,万用表的使用也很重要

开关和电容单片机和数码管 焊排针的时候有好多问题,方法不对针自己都掉了,最后在同学的帮助下,焊失败的排针也弄好了,也学会了怎么处理堵住的焊盘 完整的PCB板正面反面 花了很多时间焊板子,第一次没经验,电烙铁也不是很会用,所以板子很丑,不过成功焊完还是成就感爆棚

四:PCB板的调试 焊完就要尝试运行了,利用电脑下载线还有软件把程序烧进单片机,按照自己编的程序看二极管或者数码管是否按程序运行 二极管全亮数码管显示 总结 1.连线的时候要注意线宽和安全距离,电源线要加粗,焊盘也要注意大小 2.元器件的封装一定要按照实物,排版连线之后要打印出来用实物比量 3.单片机等焊盘多的元件插进板子的时候要小心,不要弄断脚 4.利用电烙铁的高温,焊锡贴近焊盘一点就能焊上去,不要太多 5.电容二极管等有极性的一定要注意正负极 感想:从开始画图到完成一整块板子,前后花了几十个小时,感触挺多收获也很多,仿真软件上最初的设计要思考怎么设计才最合理最省钱同时也最好用,焊板子考验的是认真细心和耐心,不熟练焊了一会就能慢慢体会到精髓,一次没有成功也不灰心,跑实验室问同学把板子调通,第一次拿到自己做的可以用的实物,第一次用电烙铁,觉得比平时在教室上课学的东西更有用自己也更有兴趣,这只是个开始,希望以后随着我们书本知识的增加动手能力的加强能做出更实用的作品

相关文档
最新文档