51单片机

阅读 / 问答 / 标签

51单片机和开发板是什么关系?怎么用?

对于这种问题,我真的很无语!o(>﹏<)o!

有那种可以自由拆卸和组合元器件的51单片机开发板吗?

一般的开发板都是以模块的形式,就像是积木块似的,每个积木块是一个小板,可以自己自由组合。但要求每个元件都可以组合拆卸,那就自己买几块面包板了,买些元件,在面包板上自己拆卸组合了。不过,用面包板,对于那些标准引脚间距的元件可以,而且要用很多导线把元件连接起来,这样是可以煅炼自己的动手能力,也能提高电路的连接能力。但有些体积大点的非标准引脚间距的元件就插不了了,就得临时焊导线了,这样显得有点乱,工作起来也不太可靠。

如何在51单片机开发板上烧写程序?

1.在电脑中找到【STC-ISP】程序烧写软件,有不同版本,但用法基本一致。双击打开会出现下图中界面。2.然后点击下图中箭头所指处,找到单片机型号STC89C52。然后,将51单片机开发板与电脑连接起来,初次连接时,会自动给电脑装一个驱动。3.单片机与电脑连接成功后,点击下图中【扫描】按钮,扫描出单片机与电脑连接的那个端口号。然后,点击【打开程序文件】按钮。4.在弹出的对话框中,选择刚刚编写的那个程序文件,点击【打开】按钮。5.然后,点击图中的【下载/编程】按钮。6.此时,给按下单片机开发板上的【电源开关】给单片机上电。7.程序烧写成功后,会出现下图所示界面。8.此时,你会看到单片机开发板上,流水灯的第一个被点亮了。

51单片机该怎么学?

随着嵌入式软件的日益兴起,单片机学习氛围也越来越浓,51单片机自然成了新手入门学习必备。51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。踏实学习学习之前一定先要下足决心,必须踏踏实实,脚踏实地的去学;仔细观察每一个细节,在开始编程的时;要善于独立思考,观察试验的结果的变化,对试验出的不同结果要进行总结。准备一套设备建议买一套飞天三号STC1单片机开发板,兼容51单片机,带有液晶屏、矩阵键盘、点阵、数码管、蜂鸣器、温度传感器、AD/DA、交通灯、红外、触摸按键、RS485、WIFI模块接口、2.4G无线接口等。可通过开发板完成收音机、信号发生器等实战项目。配套书籍、视频教程、代码、开发工具等资料,是学习和实战单片机应用的好帮手。加强兴趣重在实践首先,学习兴趣很关键,因此,在选择单片机时就要非常的注意这一款单片机带给你的体验,只有好的初体验,才能够提升你对单片机的兴趣,也能够为后期的提升提供帮助。我是用的比较多的,感觉还靠谱的是STC12C5A60S2.是一款增强了很多的51内核的单片机,他的资料非常多,希望你能不断地学习,当然最重要的是不断的实践,实践。总结编程学习重点是实践,只有每天坚持才能在单片机学习上取得成绩。

kst51单片机开发板与普中51单片机区别大吗?

51仿真器是为单片机爱好者学习单片机和学习使用KEIL C51软件而开发的。 51仿真器使用一片 SST89C58 单片机来实现仿真功能 ,仿真机通过串口与 PC 连接。用户可以开发小于等于28K的程序。 51仿真器直接插入用户的应用板MCU的位置。 51仿真器的主要性能: 直接支持 KEIL C51 的 IDE 开发仿真环境。 可单步、断点、全速运行调试程序;可参考变量、RAM变量。 支持汇编、C语言混合调试。 片内 28K 程序空间可以随时进行在线程序更新。 完全仿真 P0、P2 口。 仿真频率 6-33 MHz 晶振可选,系统配置 11.0592 MHz 。 可以仿真标准的 89C51 , 89C52 , 89C58 等全部51内核的单片机。 51仿真器占用T2定时器、UART口。使用仿真插针可更换结构,仿真插针可以取下,方便断针后更换,即使断针,也能自行处理,不必返修,小功能,大用处,尤其是对一些比较粗心的人而言。可切换晶振电路,一般使用用户板上的晶振,也可用本机自带,多一种选择,特别是可以判断用户机上晶振电路工作是否正常,对初学者尤其适用。带有简单的复位按钮(按钮通过一只100ohm电阻接VCC),当用户电路板为简易的RC复位时,这个按钮就能起作用了。如果是用了复位电路,那么电路本身就能保证复位的可靠性,不需用该按钮。超小的体形设计,线路板和40脚集成电路一样大小,全部用贴片元件完成,不记成本的,使用max232贴片的232转换专业芯片,使可靠性更高,配置:包括仿真机主机一台,光盘一张,串口线一条,说明一本。51单片机开发板:也称51单片机实验板、51单片机学习板。是用于学习51型号的单片机的实验及学习器件,他是将51单片机常用的外围。比如流水灯,数码管,矩阵键盘,EEPROM,时钟,蜂鸣器,继电器及集成在一小块电路板上。便于携带及学习,直接插在PC机上面。随时随地的进行学习,另外一些中小型项目也可以直接在此板上面进行二次开发,开发完成后即可以在此基础上面重新画图做板,极大的缩短了公司的开发周期,节省硬件成本。例如电子人单片机开发板,针对学者需要特别配套VB上位机软件开发,游戏开发等教程学习资料。开发此类单片机开发板的公司一般提供完善的售后服务与技术支持,高校常用的单片机开发板为教学需要,常见配套资源有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。 常见配套资源如下: 1、硬件实验板及期配件如:杜邦线、单片机芯片、流水灯、点阵显示、ds1302数字钟、ds18b20温度检测、彩色TFT液晶屏,SD卡,超声波测距、收音机、mp3解码、智能小车等等。 2、实验程序源码,包含汇编源程序、C语言源程序。 3、电路原理图、PCB图。 4、实验手册、使用手册。 5、附加PCB设计制作、VB软件开发等计算机学习资料。

用51单片机C语言版设计秒表倒计时

可以啊交给我

51单片机仿真机和51单片机开发板有什么区别

仿真机介绍: 51仿真器是为单片机爱好者学习单片机和学习使用KEIL C51软件而开发的。 51仿真器使用一片 SST89C58 单片机来实现仿真功能 ,仿真机通过串口与 PC 连接。用户可以开发小于等于28K的程序。 51仿真器直接插入用户的应用板MCU的位置。 51仿真器的主要性能: 直接支持 KEIL C51 的 IDE 开发仿真环境。 可单步、断点、全速运行调试程序;可参考变量、RAM变量。 支持汇编、C语言混合调试。 片内 28K 程序空间可以随时进行在线程序更新。 完全仿真 P0、P2 口。 仿真频率 6-33 MHz 晶振可选,系统配置 11.0592 MHz 。 可以仿真标准的 89C51 , 89C52 , 89C58 等全部51内核的单片机。 51仿真器占用T2定时器、UART口。使用仿真插针可更换结构,仿真插针可以取下,方便断针后更换,即使断针,也能自行处理,不必返修,小功能,大用处,尤其是对一些比较粗心的人而言。可切换晶振电路,一般使用用户板上的晶振,也可用本机自带,多一种选择,特别是可以判断用户机上晶振电路工作是否正常,对初学者尤其适用。带有简单的复位按钮(按钮通过一只100ohm电阻接VCC),当用户电路板为简易的RC复位时,这个按钮就能起作用了。如果是用了复位电路,那么电路本身就能保证复位的可靠性,不需用该按钮。超小的体形设计,线路板和40脚集成电路一样大小,全部用贴片元件完成,不记成本的,使用max232贴片的232转换专业芯片,使可靠性更高,配置:包括仿真机主机一台,光盘一张,串口线一条,说明一本。 51单片机开发板:也称51单片机实验板、51单片机学习板。是用于学习51型号的单片机的实验及学习器件,他是将51单片机常用的外围。比如流水灯,数码管,矩阵键盘,EEPROM,时钟,蜂鸣器,继电器及集成在一小块电路板上。便于携带及学习,直接插在PC机上面。随时随地的进行学习,另外一些中小型项目也可以直接在此板上面进行二次开发,开发完成后即可以在此基础上面重新画图做板,极大的缩短了公司的开发周期,节省硬件成本。例如电子人单片机开发板,针对学者需要特别配套VB上位机软件开发,游戏开发等教程学习资料。开发此类单片机开发板的公司一般提供完善的售后服务与技术支持,高校常用的单片机开发板为教学需要,常见配套资源有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。   常见配套资源如下:   1、硬件实验板及期配件如:杜邦线、单片机芯片、流水灯、点阵显示、ds1302数字钟、ds18b20温度检测、彩色TFT液晶屏,SD卡,超声波测距、收音机、mp3解码、智能小车等等。   2、实验程序源码,包含汇编源程序、C语言源程序。   3、电路原理图、PCB图。   4、实验手册、使用手册。   5、附加PCB设计制作、VB软件开发等计算机学习资料。希望对你有用!!!

51单片机开发板的用途

51单片机开发板也称51单片机实验板、51单片机学习板。是用于学习51型号的单片机的实验及学习器件,他是将51单片机常用的外围。比如流水灯,数码管,矩阵键盘,EEPROM,时钟,蜂鸣器,继电器及集成在一小块电路板上。便于携带及学习,直接插在PC机上面。随时随地的进行学习,另外一些中小型项目也可以直接在此板上面进行二次开发,开发完成后即可以在此基础上面重新画图做板,极大的缩短了公司的开发周期,节省硬件成本。例如铁牛单片机开发板,针对学者需要特别配套VB上位机软件开发,游戏开发等教程学习资料。开发此类单片机开发板的公司一般提供完善的售后服务与技术支持,高校常用的单片机开发板为教学需要,常见配套资源有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。常见配套资源如下:1、硬件实验板及期配件如:杜邦线、单片机芯片、流水灯、点阵显示、ds1302数字钟、ds18b20温度检测、彩色TFT液晶屏,SD卡,超声波测距、收音机、mp3解码、智能小车等等。2、实验程序源码,包含汇编源程序、C语言源程序。3、电路原理图、PCB图。4、实验手册、使用手册。5、附加PCB设计制作、VB软件开发等计算机学习资料。

用STC89C51单片机做光立方和用STC12C5A60S2有什么不同,原理图方面的

STC12C5A60S2多了三个P4口,内存大(60K),是1T单片机速度快;详细的参见数据手册。

我焊接好了光立方和51单片机板子 可是发现LED的亮度不够

你一个P0口直接驱动八块芯片肯定不太好。你采用上拉驱动,改变一下程序。另外电源可能有问题。

51单片机控制的共阳4*4*4光立方的程序

有没有原理图?

我焊接好了光立方和51单片机板子 可是发现LED的亮度不够

你一个P0口直接驱动八块芯片肯定不太好。你采用上拉驱动,改变一下程序。另外电源可能有问题。

请教一下。如果想做光立方的话是不是需要51单片机基础?

恩, 对, 用51是最简单的,你首先得了解单片机大部分引脚输的功能,做小一点的光立方, 不需要太多外围电路,比如4X4X4,5X5X5,3X3X3就可以不需要加三极管,把光立方按照正确地方式链接好,一般是每一层共阴极, 每一列也共阳极,这样,你控制光立方所有LED就需要所有列加上所有层这么多数量的单片机I/O口 ,再把这个光立方组装到一个完整的单片机系统上(一个完整的单片机最小系统在原理图上画的很详细),再然后就是理清每一个LED分别是由哪两个I/O组合使之发亮的,学会一些基本的C语言,就可以开始编写你自己的光立方图像了。。

51单片机教材有什么好的推荐吗?

单片机原理(普通高等教育“十二五”规划教材):这本《单片机原理》根据21世纪高等院校单片机原理课程教学大纲的要求,结合现代电子技术、计算机技术发展的趋势和对单片机技术开发人才的实际需求进行编写的。单片机原理及应用(全国高等学校自动化专业系列教材):本书前两版持续畅销,累计印数3万余册。优秀作者,历经10年,打造单片机系列(3本)教材,覆盖单片机领域课程绝大部分需求。提供配套电子课件、习题参考答案和程序代码。单片机原理与应用:《单片机原理与应用》共分11章,第1章介绍单片机的基础知识;第2章介绍MCS-51单片机的内部结构及外部引脚;第3~4章介绍MCS-51单片机的指令系统及汇编语言程序设计。51单片机使用注意事项众所周知,51系列单片机的硬件堆栈不能放在片外,所以要在51系列单片机上开发操作系统的话就要少用它的片内RAM。但是不用片内RAM是办不到的,因为操作系统也要传递参数,也要使用堆栈。C51单片机的C函数传递参数是通过寄存器和存储器的,不能通过堆栈。但是可以通过一些措施使得操作系统代码少用片内RAM。

80C51单片机原理、开发与应用实例的目录_80c51单片机内部结构的组成

前言第1章绪论1.1单片机的发展1.280C51单片机分类1.3单片机应用领域和发展趋势1.3.1单片机的应用领域1.3.2单片机的发展趋势第2章80C51单片机硬件结构和原理2.180C51的基本结构2.1.180C51的基本结构框图2.1.2芯片的内部结构特点2.280C51的引脚及其功能2.2.1电源引脚V和Vss2.2.2时钟电路引脚XTALl和XTAL22.2.3控制信号引脚ALE、PSEN、EA和RST2.2.4输入/输出引脚2.380C51CPU结构和时序2.3.1运算器2.3.2控制器2.3.380C51时钟系统2.3.4CPU时序2.4存储器结构和地址空间分配2.4.1程序存储器地址空间分配2.4.2数据存储器地址空间分配2.580C51工作方式2.5.1复位方式2.5.2程序执行方式2.5.3节电工作方式2.5.4掉电保护方式第3章80C51指令系统3.1指令与汇编语言3.1.1指令与程序设计语言3.1.2指令格式及系统中使用的符号意义3.2寻址方式3.2.1寻址方式3.2.2寻址空间3.3指令系统3.3.1数据传送指令3.3.2算术运算指令3.3.3逻辑运算指令3.3.4程序控制转移指令3.3.5位操作(Bool类型)指令第4章80C51单片机的功能资源4.1并行I/O接口4.1.1P0口4.1.2P1口4.1.3P2口4.1.4P3口4.2定时器/计数器4.2.1概述4.2.2定时器T0和T1的结构和功能4.2.3定时器的工作方式及应用4.2.4定时器/计数器T24.2.5定时器,计数器的编程和使用4.3串行接口4.3.1串行口结构和工作模式4.3.2串行口的编程和举例4.4中断系统4.4.1中断基本概念4.4.2中断响应及处理过程4.4.3中断程序举例第5章单片机C51程序设计基础5.1程序设计语言概述5.1.1汇编语言5.1.2C51语言5.2C51标识符和关键字5.2.1标识符5.2.2关键字5.3C51基本数据类型和运算符5.3.1基本数据类型5.3.2运算符5.4数组5.4.1一维数组5.4.2多维数组5.4.3字符数组5.5指针5.5.1指针与地址5.5.2指针变量的定义5.5.3指针变量引用5.5.4数组的指针5.5.5函数的指针5.5.6指针数组5.6结构体和联合体5.6.1结构体概念和定义5.6.2结构体的引用5.6.3联合体概念和定义5.6.4联合体的引用5.6.5枚举5.7型定义和预处理5.7.1类型定义5.7.2预处理5.8语句和程序设计基本结构5.8.1语句5.8.2顺序结构5.8.3选择结构5.8.4循环结构5.9函数5.9.1函数定义5.9.2函数调用5.9.3中断服务函数5.9.4局部变量与全局变量5.9.5变量的存储种类第6章典型外围接口设计6.1键盘与单片机接口设计6.1.1独立式键盘6.1.2行列式键盘6.2显示器接口6.2.1LED显示器6.2.2LED显示器接口实例6.2.3LCD显示器6.2.4LCD显示器接口实例6.3显示接口芯片MAX82796.3.18279内部结构及基本工作原理6.3.28279引脚功能6.3.38279工作方式6.3.48279命令字6.3.58279状态字6.3.68279应用举例6.4D/A/AD芯片与单片机接口设计6.4.1D/A转换接口电路6.4.2A/D转换接口电路第7章80C51单片机系统扩展7.180C51系统扩展概述7.1.180C:51最小应用系统7.1.2片外总线结构7.1.3片选7.1.4地址锁存7.1.5扩展存储器时应考虑的几个问题7.2外部存储器扩展7.2.1程序存储器的扩展7.2.2数据存储器的扩展7.2.3多片存储器的扩展7.3并行I/O接口的扩展7.3.1简单并行I/O接口扩展7.3.28255A可编程并行I/0接口扩展7.4串行接口的扩展7.4.18251串行口扩展芯片7.4.2825l应用实例第8章80C51单片机应用系统的抗干扰技术8.1可靠性与抗干扰技术概述8.1.1干扰窜入单片机系统的主要途径8.1.2干扰形成的基本要素8.1.3干扰的耦合方式8.2硬件抗干扰技术8.2.1抑制干扰源8.2.2切断干扰传播路径8.2.3提高敏感器件的抗干扰性能8.2.4其他常用抗干扰措施8.3软件抗干扰技术8.3.1指令冗余8.3.2软件“陷阱”8.3.3软件“看门狗”技术8.3.4设置程序运行标志,拦截“跑飞”程序第9章ProteIDXP电路板设计软件第10章KeilC51单片机开发软件入门第11章基于80C51的计量泵流量控制系统设计第12章80C51单片机在电液位置伺服系统上的应用附录AMCS-51指令表附录B

请推荐几本好的51单片机教程

郭天翔的《十天学会单片机和C语言编程》,视频的,蛮好的

mcs-51单片机

你看不懂吗?我给你回答一下不过你计算一下是不是正确.....应该是正确的!1.是将@R1和累加器A相加结果是F02.是将累加器和立即数77H相减#1H3.是将AB相乘1E04.是将A除以B结果是1E5.这是一个与指令是将78H和#78H相与结果是78H6.这是一个或指令结果是A7.这是一个异或指令结果是80H这是我的回答记得要给我分数啊!还应该感谢我的回答.....

51单片机接继电器的原理图如下,能不能帮我解释一下原理?

就是控制电平从而控制初级线圈的通断,单片机的学习,建议你看一下,吴鉴鹰单片机实战精讲。

51单片机的工作原理

一个高度集成 的数字电子电路了,是个 单片机,见百度知道:http://zhidao.baidu.com/question/27019967.html?si=1

51单片机电路原理图,看不懂电路图

先问你两个问题?1、上面的仿真电路是你画的吗?2、电路看不懂还是原理不懂?

51单片机最小系统原理图?

单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。单片机最小系统电路(单片机电源和地没有标出)如图2-7所示。x0dx0ax0dx0a图2-7 单片机最小系统x0dx0a下面着重介绍时钟电路和复位电路。x0dx0a1)时钟电路x0dx0a单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。x0dx0a内部时钟方式的原理电路如图2-8所示。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为0~24MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。x0dx0a外部时钟方式则是在单片机XTAL1引脚上外接一个稳定的时钟信号源,它一般适用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。x0dx0a时序是单片机在执行指令时CPU发出的控制信号在时间上的先后顺序。AT89C51单片机的时序概念有4个,可用定时单位来说明,包括振荡周期、时钟周期、机器周期和指令周期。x0dx0a振荡周期:是片内振荡电路或片外为单片机提供的脉冲信号的周期。时序中1个振荡周期定义为1个节拍,用P表示。x0dx0a时钟周期:振荡脉冲送入内部时钟电路,由时钟电路对其二分频后输出的时钟脉冲周期称为时钟周期。时钟周期为振荡周期的2倍。时序中1个时钟周期定义为1个状态,用S表示。每个状态包括2个节拍,用P1、P2表示。x0dx0a机器周期:机器周期是单片机完成一个基本操作所需要的时间。一条指令的执行需要一个或几个机器周期。一个机器周期固定的由6个状态S1~S6组成。x0dx0a指令周期:执行一条指令所需要的时间称为指令周期。一般用指令执行所需机器周期数表示。AT89C51单片机多数指令的执行需要1个或2个机器周期,只有乘除两条指令的执行需要4个机器周期。x0dx0a了解了以上几个时序的概念后,我们就可以很快的计算出执行一条指令所需要的时间。例如:若单片机使用12MHz的晶振频率,则振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us,执行一条单周期指令只需要1us,执行一条双周期指令则需要2us。x0dx0a2)复位电路x0dx0a无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。x0dx0a单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。x0dx0a单片机的复位形式:上电复位、按键复位。上电复位和按键复位电路如下。x0dx0ax0dx0a图2-9 单片机复位电路x0dx0a上电复位电路中,利用电容充电来实现复位。在电源接通瞬间,RST引脚上的电位是高电平(Vcc),电源接通后对电容进行快速充电,随着充电的进行,RST引脚上的电位也会逐渐下降为低电平。只要保证RST引脚上高电平出现的时间大于两个机器周期,便可以实现正常复位。x0dx0a按键复位电路中,当按键没有按下时,电路同上电复位电路。如在单片机运行过程中,按下RESET键,已经充好电的电容会快速通过200Ω电阻的回路放电,从而使得RST引脚上的电位快速变为高电平,此高电平会维持到按键释放,从而满足单片机复位的条件实现按键复位。x0dx0a单片机复位后各特殊功能寄存器的复位值见表2-11。x0dx0a表2-11 单片机特殊功能寄存器复位值x0dx0a寄存器复位值寄存器复位值寄存器复位值x0dx0aPC0000HSBUF不确定TMOD00Hx0dx0aB00HSCON00HTCON00Hx0dx0aACC00HTH100HPCON0***0000Bx0dx0aPSW00HTH000HDPTR0000Hx0dx0aIP***00000BTL100HSP07Hx0dx0aIE0**00000BTL000HP0~P3FFHx0dx0a注:*表示无关位。

51单片机最小系统原理图的功能详解

学过~忘记了。爱莫能助

51单片机工作的原理是什么

51单片机是一种8位微控制器,它是一种可编程的控制器,可以根据用户的要求完成特定的控制任务。51单片机的工作原理是:1.将程序存储在内部ROM或外部EPROM中,程序中包含控制程序和数据。2.将程序加载到CPU中,CPU根据程序指令进行操作。3.CPU根据程序指令控制I/O口,从而控制外部设备。4.CPU根据程序指令控制定时器,从而实现定时功能。5.CPU根据程序指令控制中断,从而实现外部设备的中断处理。

51单片机控制的数码管原理是什么?

数码管脚与单片机PX口相连,通过程序控制PX口来显示数字字符 比如:一个PX.0-A(数码管显示段) PX.1-B …… PX.6-G PX.7-H 对应。控制输出数字0-9只要给PX端口依次赋值:C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H(共阳极)

51单片机最小系统原理图是?

电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

51单片机如何生成随机数?

1)使用外置部真随机数发生器获取;2)自已设计一个简单的随机数算法(例如,使用ADC采样晶振引脚的电压,然后结合环境温度,程序例程间的执行跳转合成一个随机数),实用性比较好;3)使用现成的伪随机数函数;

51单片机有几个中断源,分别是什么?

五个外部中断0外部中断1定时器中断0定时器中断1串口中断。

AT89S51单片机八路抢答器工作原理

你要什么

MCS-51单片机原理及应用技术教程的介绍

《MCS-51单片机原理及应用技术教程》由高洪志编写,人民邮电出版社于2009年出版发行。该书以MCS-51单片机为学习平台,讲解了单片机的组成原理、各功能模块的使用方法及扩展方法。全书共10章。内容包括单片机的种类、功能及用途;MCS-51单片机的组成;MCS-51单片机指令系统和汇编语言程序设计;单片机内部各种硬件资源的组成、工作原理及编程使用方法;C语言在单片机编程中的使用方法;单片机扩展和接口技术,包括I/O扩展、存储器扩展、人机接口扩展以及模拟接口扩展;串行通信技术,并给出了案例;系统设计开发方法、调试方法和抗干扰技术以及用C51语言编写了单片机课程的部分实训案例。

关于can总线调试,我用51单片机和sja1000还有82c250组成的can总线,原理图照着书上画,现在调试的情况如下

你先查下datasheet看吧 soiseek有中文版的英文原版:www.soiseek.com

利用51单片机的定时器和实验仪的数码管电路设计一个电子时钟,显示格式XX XX XX,依次为 时、分、秒。

想法很好啊,赶快动手!

51单片机最小系统原理图

可以自己焊接一个(带原理图还有stc系列的元件库):网页链接

51单片机,怎么以参数的形式把IO口传入子函数

不能把IO口直接当参数,但可以使用变通方法:一、确定输出端口,如P1,这是一个固定不变的端口。二、可以把指定端口的某位当参数传入子函数oid HuXi_up(uint IO_Bit){unsigned char i,mask;mask=1;mask = _crol_(1,IO_Bit)for(pwm_low=1;pwm_low<CYCLE;pwm_low++){P1 = P1 & (~ mask);duty=0;while(duty<=pwm_low);P1 = P1 ^ mask;duty=0;while(duty<=(CYCLE-pwm_low));}}

用51单片机产生占空比可调的pwm,且可以定时持续输出一定占空比的pwm~

/***************在OCR1B(PD4)上可测到100HZ的PWM波***********************//***************在OCR1A(PD5)上可测到50HZ的方波************************/#include <iom16v.h>#include <macros.h>void PWM(){ DDRD=0X30;//设置OC1B(PD4)和OC1A(PD5)为输出 TCCR1A=0X63; TCCR1B=0X1B; OCR1A=7;//得到10KHZ的PWM波 OCR1B=5;//得到2ms(1810/5)的高电平时间 }1.这是AVR的程序,51不能产生PWM波,你用AVR吧。主要是设置存放的TOP值 (OCR1A的值),然后你要多大的占空比 再设置OCR1B的值,至于持续时间就更简单了,你要产生多久,就调用此函数就可以了哈2.产生方波的频率计算公式(KHZ)f=fclk(晶振)/{*N(1+OCRNA)}N:代表分频因子根据你要的产生方波的频率,就能算出OCRNA的值,就可以了!

51单片机教材有什么好的推荐吗?

单片机原理(普通高等教育“十二五”规划教材):这本《单片机原理》根据21世纪高等院校单片机原理课程教学大纲的要求,结合现代电子技术、计算机技术发展的趋势和对单片机技术开发人才的实际需求进行编写的。单片机原理及应用(全国高等学校自动化专业系列教材):本书前两版持续畅销,累计印数3万余册。优秀作者,历经10年,打造单片机系列(3本)教材,覆盖单片机领域课程绝大部分需求。提供配套电子课件、习题参考答案和程序代码。单片机原理与应用:《单片机原理与应用》共分11章,第1章介绍单片机的基础知识;第2章介绍MCS-51单片机的内部结构及外部引脚;第3~4章介绍MCS-51单片机的指令系统及汇编语言程序设计。51单片机使用注意事项众所周知,51系列单片机的硬件堆栈不能放在片外,所以要在51系列单片机上开发操作系统的话就要少用它的片内RAM。但是不用片内RAM是办不到的,因为操作系统也要传递参数,也要使用堆栈。C51单片机的C函数传递参数是通过寄存器和存储器的,不能通过堆栈。但是可以通过一些措施使得操作系统代码少用片内RAM。

80C51单片机原理、开发与应用实例的内容简介

《80C51单片机原理、开发与应用实例》是《51系列单片机丛书》之一。《80C51单片机原理、开发与应用实例》以80C51作为主要讲解对象。全书分为四部分:第一部分(第1~4章),介绍80C51的基本结构和工作原理;存储器结构以及地址空间分配,工作方式;指令系统;并行和串行接口定义及功能,定时器计数器结构功能,中断系统。第二部分(第5~8章),介绍单片机C51语言,外围接口技术,以及系统扩展和系统抗干扰设计。第三部分(第9~10章),介绍单片机系统开发工具Protel电路设计软件和KeilC51开发软件。第四部分(第11~12章),通过单片机应用开发实例巩固前面知识。本书适合具有一定单片机基础的初学者、广大从事单片机应用系统开发研制的工程技术人员,以及高等院校相关专业的师生阅读参考。

求解单片机原理题1、请说明80C51单片机的堆栈的作用和操作规律。补考试题,求解,急急急

同学 我推荐给你本书 看 单片机原理及应用 随便那个版本 这些问题只要看目录对应找就行了

简述51单片机的工作原理

单片机的工作原理与计算机CPU的工作原理是一样的,主要是利用片内的半导体存储器存放用户的程序和数据,单片机的核心中央微处理器CPU中有指令寄存器、指令译码器,程序计数器等部件,由程序计数器寻找下一条要执行的指令,找到后,将指令送给指令寄存器,再由指令译码器翻译执行该指令,完成对指令功能的操作。 一句话:单片机的工作就是不断地取指令、分析指令、执行指令的循环过程。按预先编写的程序执行,以达到用户期待的结果。 单片机主要用途是做生产设备的控制器,做智能仪表的核心部件,由于单片机体积微小,可以植入任何一个设备和仪表当中,因此它也是嵌入式技术的核心部件。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成.嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程

51单片机原理是什么,有哪些应用?

那要看你说的是具体哪一款了,主要看他的针脚,如果你知道每个针脚的意思,单片机你就理解差不多啦

c51单片机原理及应用重点

哪有什么重点啊!换句话说,什么不是重点啊~

急求89c51单片机万年历汇编程序DS1302的

typedef struct __SYSTEMTIME__{ unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString[11]; unsigned char TimeString[9];}SYSTEMTIME; //定义的时间类型SYSTEMTIME CurrentTime;#define AM(X) X#define PM(X) (X+12) // 转成24小时制#define DS1302_SECOND 0x80 //时钟芯片的寄存器位置,存放时间#define DS1302_MINUTE 0x82#define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A#define DS1302_DAY 0x86#define DS1302_MONTH 0x88#define DS1302_YEAR 0x8C void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数){ unsigned char i; ACC = d; for(i=8; i>0; i--) { DS1302_IO = ACC0; //相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } }unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数){ unsigned char i; for(i=8; i>0; i--) { ACC = ACC >>1; //相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; } return(ACC); }void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据{ DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); // 地址,命令 DS1302InputByte(ucDa); // 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0;} unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据{ unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); // 地址,命令 ucData = DS1302OutputByte(); // 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);}void DS1302_GetTime(SYSTEMTIME *Time) //获取时钟芯片的时钟数据到自定义的结构型数组{ unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE); Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK); Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH); Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); }void DateToStr(SYSTEMTIME *Time) //将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString[]{ if(hide_year<2) //这里的if,else语句都是判断位闪烁,<2显示数据,>2就不显示,输出字符串为 2007/07/22 { Time->DateString[0] = "2"; Time->DateString[1] = "0"; Time->DateString[2] = Time->Year/10 + "0"; Time->DateString[3] = Time->Year%10 + "0"; } else { Time->DateString[0] = " "; Time->DateString[1] = " "; Time->DateString[2] = " "; Time->DateString[3] = " "; } Time->DateString[4] = "/"; if(hide_month<2) { Time->DateString[5] = Time->Month/10 + "0"; Time->DateString[6] = Time->Month%10 + "0"; } else { Time->DateString[5] = " "; Time->DateString[6] = " "; } Time->DateString[7] = "/"; if(hide_day<2) { Time->DateString[8] = Time->Day/10 + "0"; Time->DateString[9] = Time->Day%10 + "0"; } else { Time->DateString[8] = " "; Time->DateString[9] = " "; } if(hide_week<2) { week_value[0] = Time->Week%10 + "0"; //星期的数据另外放到 week_value[]数组里,跟年,月,日的分开存放,因为等一下要在最后显示 } else { week_value[0] = " "; } week_value[1] = ""; Time->DateString[10] = ""; //字符串末尾加 "" ,判断结束字符}void TimeToStr(SYSTEMTIME *Time) //将时,分,秒数据转换成液晶显示字符放到数组 TimeString[];{ if(hide_hour<2) { Time->TimeString[0] = Time->Hour/10 + "0"; Time->TimeString[1] = Time->Hour%10 + "0"; } else { Time->TimeString[0] = " "; Time->TimeString[1] = " "; } Time->TimeString[2] = ":"; if(hide_min<2) { Time->TimeString[3] = Time->Minute/10 + "0"; Time->TimeString[4] = Time->Minute%10 + "0"; } else { Time->TimeString[3] = " "; Time->TimeString[4] = " "; } Time->TimeString[5] = ":"; if(hide_sec<2) { Time->TimeString[6] = Time->Second/10 + "0"; Time->TimeString[7] = Time->Second%10 + "0"; } else { Time->TimeString[6] = " "; Time->TimeString[7] = " "; } Time->DateString[8] = "";}void Initial_DS1302(void) //时钟芯片初始化{ unsigned char Second=Read1302(DS1302_SECOND); if(Second&0x80) //判断时钟芯片是否关闭 { Write1302(0x8e,0x00); //写入允许 Write1302(0x8c,0x07); //以下写入初始化时间 日期:07/07/25.星期: 3. 时间: 23:59:55 Write1302(0x88,0x07); Write1302(0x86,0x25); Write1302(0x8a,0x07); Write1302(0x84,0x23); Write1302(0x82,0x59); Write1302(0x80,0x55); Write1302(0x8e,0x80); //禁止写入 }}

51单片机中汇编语言中的swap是什么意思?

51单片机汇编语言中的swap是半字节交换指令。x0dx0aSWAPA这条指令,将累加器A的高、低4位数据交换,也就是低4位数据进入高4位,高4位数据进入低4位。例如:x0dx0aMOVA#00001111Bx0dx0aSWAPAx0dx0a执行SWAPA后,A中的内容变为11110000B。

51单片机中汇编语言中的swap什么意思?

半字交换,即一个字节的高4位和低4位互换

51单片机中汇编语言中的swap什么意思

swap是半字节交换指令。SWAP A 这条指令,将累加器A的高、低4位数据交换,也就是低4位数据进入高4位,高4位数据进入低4位。例如:MOV A#00001111BSWAP A执行SWAP A后,A中的内容变为11110000B。

51单片机中汇编语言中的swap是什么意思?

51单片机汇编语言中的swap是半字节交换指令。SWAP A 这条指令,将累加器A的高、低4位数据交换,也就是低4位数据进入高4位,高4位数据进入低4位。例如:MOV A#00001111BSWAP A执行SWAP A后,A中的内容变为11110000B。

求一个51单片机5000字左右的中英文翻译 毕业设计用 谢谢

  Design of the Temperature Control System Based on AT89S51  Huang Wentian, Li Jinping  College of Information, Beijing Union University, Beijing 100101, China  woshihwt@yahoo.com.cn, xxtjinping@buu.edu.cn  ABSTRACT: The principle and functions of the temperature control system based on microcontroller AT89S51 are studied, and the temperature measurement unit consists of the 1-Wire bus digital temperature sensor DS18B20. The system can be expected to detect the preset temperature, display time and save monitoring data. An alarm will be given by system if the temperature exceeds the upper and lower limit value of the temperature which can be set discretionarily and then automatic control is achieved, thus the temperature is achieved monitoring intelligently within a certain range. Basing on principle of the system, it is easy to make a variety of other non-linear control systems so long as the software design is reasonably changed. The system has been proved to be accurate, reliable and satisfied through field practice.  KEYWORDS: AT89S51; microcontroller; DS18B20; temperature  中文译文  基于单片机AT89S51设计的温度控制系统  黄温甜,李金平  信息学院,北京联合大学,北京100101,中国  woshihwt@yahoo.com.cn, xxtjinping@buu.edu.cn  摘要:原理和单片机AT89S51单片机温度控制系统功能的基础研究,温度测量单位的1- Wire总线数字温度传感器DS18B20组成。该系统可将检测到设定温度,显示时间和保存监测数据。报警系统会给予如果温度超过了可动任意设置,然后实现自动化控制,从而达到监控的温度在一定范围内智能温度上限和下限值。在系统原则的基础上,很容易使其他非非线性控制系统,以便在合理长改变了软件设计等。该系统已被证明是准确,可靠,并通过野外实习至满意。  关键词:AT89S51单片机,微控制器,传感器DS18B20,温度。

51单片机“和校验”

CLR TB8 MOV A,@R0 ;GET DATA MOV SBUF,A ;SEND XRL A,R4 MOV R4,A TRAN1: JNB TI,TRAN1 ;WAIT这是XOR(异或)校验吧...把XRL A,R4改为ADD A,R4就是和校验..

51单片机MODBUS通讯,RTU中的CRC校验

51默认的数据类型为字符型。这段程序是典型的CRC16查表速算,网上一搜一大把到处都是。

51单片机8个数码管功:先让第一个数码管显示某字符,保持前面数码管点亮再点亮下一个数码管并任意显示

楼主有电路吗?

求基于51单片机无线模块nrf24l01程序

刚好正在研究,网上找的,稍改了一下,2015.8.17晚试验接收方应该没问题,但发送方上电一次只能发2 个数据,想再发,单片机复位也不行必须重新给NRF24L01上电 有的网友则只能发一次单片机用STC12C5A32S2,但硬件SPI不成功,用的是普通IO模拟SPI#include <reg52.h>//#include "STC12C5A.H"#include <intrins.h>#define uint unsigned int#define uchar unsigned char//****************************************IO端口定义***************************************sbit CE=P0^0;sbit CSN=P0^1;sbit SCK=P0^2;sbit MOSI=P0^3; //管脚配置 sbit MISO=P0^4; sbit IRQ=P0^5; sbit diola=P2^5;//发光二极管锁存端sbit duanla=P2^6;//段锁存端 tx-1c开发板sbit weila=P2^7;//位锁存端//************************************按键***************************************************sbit KEY1=P3^4;uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//*********************************************NRF24L01*************************************#define TX_ADR_WIDTH 5 // 5 uints TX address width#define RX_ADR_WIDTH 5 // 5 uints RX address width#define TX_PLOAD_WIDTH 20 // 20 uints TX payload#define RX_PLOAD_WIDTH 20 // 20 uints TX payloaduchar TX_ADDRESS[TX_ADR_WIDTH]= {0x12,0x34,0x56,0x78,0x90}; //本地地址uchar RX_ADDRESS[RX_ADR_WIDTH]= {0x12,0x34,0x56,0x78,0x90}; //接收地址//***************************************NRF24L01寄存器指令#define READ_REG 0x00 // 读寄存器指令#define WRITE_REG 0x20 // 写寄存器指令#define RD_RX_PLOAD 0x61 // 读取接收数据指令#define WR_TX_PLOAD 0xA0 // 写待发数据指令#define FLUSH_TX 0xE1 // 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 // 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 // 定义重复装载数据指令#define NOP 0xFF // 保留//*************************************SPI(nRF24L01)寄存器地址#define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 // 自动应答功能设置#define EN_RXADDR 0x02 // 可用信道设置#define SETUP_AW 0x03 // 收发地址宽度设置#define SETUP_RETR 0x04 // 自动重发功能设置#define RF_CH 0x05 // 工作频率设置#define RF_SETUP 0x06 // 发射速率、功耗功能设置#define STATUS 0x07 // 状态寄存器#define OBSERVE_TX 0x08 // 发送监测功能#define CD 0x09 // 地址检测 #define RX_ADDR_P0 0x0A // 频道0接收数据地址#define RX_ADDR_P1 0x0B // 频道1接收数据地址#define RX_ADDR_P2 0x0C // 频道2接收数据地址#define RX_ADDR_P3 0x0D // 频道3接收数据地址#define RX_ADDR_P4 0x0E // 频道4接收数据地址#define RX_ADDR_P5 0x0F // 频道5接收数据地址#define TX_ADDR 0x10 // 发送地址寄存器#define RX_PW_P0 0x11 // 接收频道0接收数据长度#define RX_PW_P1 0x12 // 接收频道0接收数据长度#define RX_PW_P2 0x13 // 接收频道0接收数据长度#define RX_PW_P3 0x14 // 接收频道0接收数据长度#define RX_PW_P4 0x15 // 接收频道0接收数据长度#define RX_PW_P5 0x16 // 接收频道0接收数据长度#define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置uchar sta; //状态标志#define RX_DR (sta & 0x40)#define TX_DS (sta & 0x20)#define MAX_RT (sta & 0x10)//*****************************************长延时*****************************************void Delay(unsigned int s){ unsigned int i; for(i=0; i<s; i++); for(i=0; i<s; i++); for(i=0; i<s; i++); for(i=0; i<s; i++);}//******************************************************************************************//***********毫秒延时程序********************/void delayms(unsigned int count){ unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<850;j++);}//****************************************************************************************//NRF24L01初始化void init_NRF24L01(void){ delayms(1); CE=0; // chip enable CSN=1; // Spi disable SCK=0; // Spi clock line init high SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动 ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0 SPI_RW_Reg(WRITE_REG + RF_CH, 0); // 设置信道为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB}//***************************************************************************************************//函数:uint SPI_RW(uint uchar)//功能:NRF24L01的SPI写时序//***************************************************************************************************/uchar SPI_RW(uchar byte){ uchar i; for(i=0;i<8;i++) // output 8-bit { MOSI = (byte & 0x80); // output "uchar", MSB to MOSI byte = (byte << 1); // shift next bit into MSB.. SCK = 1; _nop_(); // Set SCK high.. byte |= MISO; // capture current MISO bit SCK = 0; // ..then set SCK low again _nop_(); } return(byte); // return read uchar}//***************************************************************************************************//函数:uchar SPI_Read(uchar reg)//功能:NRF24L01的SPI时序/****************************************************************************************************/uchar SPI_Read(uchar reg){ uchar reg_val; CSN = 0; // CSN low, initialize SPI communication... SPI_RW(reg); // Select register to read from.. reg_val = SPI_RW(0); // ..then read registervalue CSN = 1; // CSN high, terminate SPI communication return(reg_val); // return register value}//***************************************************************************************************///功能:NRF24L01读写寄存器函数//***************************************************************************************************/uchar SPI_RW_Reg(uchar reg, uchar value){ uchar status; CSN = 0; // CSN low, init SPI transaction status = SPI_RW(reg); // select register SPI_RW(value); // ..and write value to it.. CSN = 1; // CSN high again return(status); // return nRF24L01 status uchar}//***************************************************************************************************///函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)//功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数//***************************************************************************************************/uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar num){ uchar status,i; CSN = 0; // Set CSN low, init SPI tranaction status = SPI_RW(reg); // Select register to write to and read status uchar for(i=0;i<num;i++) pBuf[i] = SPI_RW(0); // CSN = 1; return(status); // return nRF24L01 status uchar}//******************************************************************************************************//函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)//功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数//******************************************************************************************************/uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar num){ uchar status,i; CSN = 0; //SPI使能 status = SPI_RW(reg); for(i=0; i<num; i++) // SPI_RW(*pBuf++); CSN = 1; //关闭SPI return(status); // }//***************************************************************************************************///函数:void SetRX_Mode(void)//功能:数据接收配置 //***************************************************************************************************/void SetRX_Mode(void){ CE=0; SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收 CE = 1; delayms(1);}//*****************************************************************************************************///函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)//功能:数据读取后放如rx_buf接收缓冲区中/******************************************************************************************************/unsigned char nRF24L01_RxPacket(unsigned char* rx_buf){ unsigned char revale=0; sta=SPI_Read(STATUS); // 读取状态寄存器来判断数据接收状况 if(RX_DR) // 判断是否接收到数据 { CE = 0; //SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer revale =1; //读取数据完成标志 } SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志 return revale;}//*******************************************************************************************************//函数:void nRF24L01_TxPacket(unsigned char * tx_buf)//功能:发送 tx_buf中数据//******************************************************************************************************/void nRF24L01_TxPacket(unsigned char * tx_buf){ CE=0; //StandBy I模式 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址 SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送 CE=1; //置高CE,激发数据发送 delayms(1);}//*******************************接收方主函数******************************************************void main(void){ unsigned char TxBuf[20]={0};// unsigned char RxBuf[20]={0}; unsigned char led_num,aa=0; diola=1; P1=0X0F;//几个指示灯闪亮,没实际作用 delayms(2000); P1=0XF0; delayms(2000); P0=0XFF;//数码管全关 weila=1; weila=0; init_NRF24L01() ; while(1) { delayms(100); SetRX_Mode(); //  接收模式 一直循环。 nRF24L01_RxPacket(RxBuf); if(RX_DR==0) P1=~RxBuf[1]; } }//发射方主程序void main(void){ unsigned char TxBuf[20]={0}; // unsigned char RxBuf[20]={0}; unsigned char led_num; delayms(100); init_NRF24L01() ; TxBuf[1] = 0x55 ; delayms(100); nRF24L01_TxPacket(TxBuf); // 第一次发 led1=0; delayms(1000); led1=1; led_num=0x50; while(1) { //init_NRF24L01() ; if(KEY1 ==0 ) { TxBuf[1] =led_num ;   led_num++; nRF24L01_TxPacket(TxBuf); // 按下按键再发,可惜只能发一次 Delay(500); } }}

51单片机动态显示学号后8位

uchar buff[8]={1,2,3,4,5,6,7,8};//假设12345678就是你的学号後8位uchar table[10]={..............};//0-9的七段码while(1){for(i=0;i<8;i++) { weila=1;//打开位锁存器 P0=1<<i;//送位码 weila=0; delay_ms(2); duanla=1;//打开段锁存器 P0=table[ 7-i];//送段码 duana=0; delay_ms(2); } 这里还可以加其它语句,但不要占用时间太长}

51单片机中using的用法

c51单片机编译器在编译程序时会自动分配工作组,通常省略不写,没有默认使用哪组,如果你要知道使用哪组,你可以用using自己分配一个啊。

51单片机中using的用法

51单片机中using使用在C51编程中,用来在中断函数中指定工作寄存器区,工作寄存器共有4个区,分别代表R0~R7地址是:第0工作区:00H~07H第1工作区:08H~0FH第2工作区:10H~17H第3工作区:18H~1FHusing n,那么n就是第几区,使用方法如下:void exterint0() interrupt 0 using 1 这表示外部中断0使用第1工作区地址。

51单片机 sbit LSA = P2^2; 变量LSA是什么意思?英文全拼是啥有大佬知道吗?

这是用C语言写单片机程序时用的语句,sbit LSA = P2^2; 其实变量LSA只是表示一个引脚名,并非有什么英文全拼。用sbit 定义引脚名时,本就是可以随便写的符号。用这个符号肯定是因为在原理图(或仿真图)中用了74LS138译码器,多是用于8位共阴数码管的位驱动。用单片机3个引脚接译码器的ABC三个脚,然后定义单片机的这三个脚,LS应该是取74LS138中的字母,LSA、LSB、LSC就是分别接ABC的三个脚。或者说,就是写程序的人自己随便写的符号,又何必纠结要英文全拼。

51单片机汇编语言问题,急求回答!

ORG 0000HLJMP MAINORG 000BHCPL P1.7RETIORG 001BHCPL P1.0RETIORG 0030HMAIN: MOV TMOD,#26H MOV TH0,#(256-5) MOV TL0,#(256-5) MOV TH1,#(256-40) MOV TL1,#(256-40) SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA SJMP $ END

请高手帮忙,51单片机执行定时器0的中断程序后,需要大约15秒才能返回主程序断点处继续运行? 太奇怪了?

不明白定时中断子程序里为什么要关掉TR0,关掉下次就进不去了。D0: CLR TR0 ;????????????...

80C51单片机按键中断实验(用汇编语言)

: ORG 0000H LJMP MAIN ORG 0003H LJMP X0_INT ORG 0013H LJMP X1_INT ORG 0030HMAIN: SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 MOV B, #0FFH MOV P1, BHERE: SJMP HEREX0_INT: MOV A, B RL A DEC A MOV B, A MOV P1, A RETIX1_INT: MOV A, B RR A ADD A, #80H MOV B, A MOV P1, A RETIEND

51单片机fosc=12Mhz利用T0方式1产生500ms的定时,在p1.0引脚上输出周期为1s的方波求这个用汇编语言怎么写

ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0SETB ET0SETB EAMOV R2,#10SJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0DJNZ R2,T0EMOV R2,#10CPL P1.0T0E:RETIEND

关于C51单片机单片机的几个问题

1、这句话是对的,如果是跳转那么就会出现SP堆栈混乱,进入中断时有一个保护现场的操作,也就是讲地址压栈,你执行完后跳转回去就不会有出栈操作,要不来多少次就会使SP爆满的。何况你知道什么时候进入中断的吗?2、应该是TH0=1EH,TL0=0CH,答案有错。3、PC是可以使用的,只是不能赋值而已,当然它确实没有物理地址,一般而言是程序执行过程中靠硬件自动改变值大小的。使用方法如下:MOVC A,@A+PC4、MOV 20H,@DPTR是没有这个指令的,DPTR只能通过MOVC或MOVX来访问,而且只能传送到累加器A。5、是的,只能保护断点地址,不能保护现场比如PSW状态等。6、可以呀,有无符号是靠你自己的决定的,一般而言,最高位为1位负数,位0 为正数这就是有符号数,没有特别说明和设定,一般都是做无符号数处理。7、我感觉你的0100H应该是当前转移指令的地址,也即是SJMP的地址。

51单片机时钟T0在工作方式3情况下,中断返回(RETI)后,要不要重新SETB TR0?

51单片机时钟T0在工作方式3情况下,中断返回(RETI)后,要不要重新SETB TR0?--这要看你的需要了。

80c51单片机用两个定时器实现占空比不同的方波,采用汇编语言,求教程序!谢谢

; 用一个 定时器0 实现占空比可调 PWM 方波HPWM EQU 100 ; 高电平计数值 改变 占空比LPWM EQU 200 ; 低电平计数值PWMBZ BIT 20H ; 标志位ORG 0000HLJMP MAINORG 000BHLJMP T0ZDORG 0030HMAIN: MOV TMOD,#02H MOV TH0,#HPWM SETB TR0 SETB EA SETB ET0 SJMP $T0ZD: JB PWMBZ,T0ZD2 MOV TH0,#HPWM SETB PWMBZ SETB P1.0 RETIT0ZD2: MOV TH0,#LPWM CLR PWMBZ CLR P1.0 RETI

51单片机定时器中断函数返回和普通函数返回的细节

为什么不用C呢 很费解

『求助』用51单片机定时器实现99秒表倒计时功能

MOV P0, #6FH ;开始, 数码管显示"99" MOV P2, #6FH MOV TMOD, #01H ;T0定时方式1 MOV TH0, #(65536 - 50000) / 256 MOV TL0, #(65536 - 50000) MOD 256 MOV IE, #82H MOV SECOND, #0 MOV TCOUNT, #0 MOV KCOUNT, #0

说明80C51单片机的中断过程.

中断标志位至1进入中断程序保护现场执行中断程序恢复现场退出中断

MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别?是多少?

中断服务程序的返回指令 汇编助记符 reti 机器指令 32h子程序的返回指令 汇编助记符 ret 机器指令 22h

51单片机子程序中使用JMP(AJMP,LJMP,SJMP)指令 执行RET能不能回到主程序?

在子程序内用跳转可以。但是如果在子程序内用跳转 跳出了这个子程序执行别的去了,这个就要小心了,你的RET没有执行(地址没有出栈),可能会出现数据的错误,如果后面反复调用该函数 也有可能因为地址只进栈不出栈 导致最终内存占满。

51单片机汇编语言问题,急求回答!

ORG 0000H LJMP MAIN ORG 000BH CPL P1.7 RETI ORG 001BH CPL P1.0 RETIMAIN: MOV TMOD, #26H MOV TH0, #251 MOV TL0, #251 MOV TH1, #216 MOV TL1, #216 SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA SJMP $ END

为什么80C51单片机在执行RETI或访问IE、IP指令时,不能立即响应中断?

【答案】:若正在执行RETI指令,则牵涉到前一个中断断口地址问题,必须等待前一个中断返回后,才能响应新的中断;访问IE、IP指令牵涉到有可能改变中断允许开关状态和中断优先级次序状态,必须等其确定后,按照新的IE、IP控制执行中断响应。因此,正在执行的指令不可以是RETI或者是访问IE、IP的指令,否则必须再另外执行一条指令后才能响应。

51单片机和飞思卡尔单片机的优缺点,还有LCD1602显示器的显示原理是什么,请各位大神帮忙回答我

原理很简单,用字符型的直接调用就行了

51单片机怎么使用串口把时钟显示传回计算机,用串口助手显示出来?

显然可以的就是 简单 的 串口通信而已定时把 数据发送到 电脑

求郭天祥51单片机ppt上程序答案?

/******************************************************* * 程序名称:hc595.c * 程序功能:595的应用文件 * 程序作者:吴鉴鹰 * 创建时间:2014-3-10 * 修改时间: * 程序版本:V0.1 ******************************************************//* * 包含头文件 */#include "inc/hc595.h"#include "reg51.h"/* * 定义引脚 *//* 时钟信号线引脚定义 */sbit HC595CLK = P0^5;/* 片选信号线引脚定义 */sbit HC595RCK = P0^6;/* 数据输入引脚定义 */sbit HC595DATA = P0^7;/****************************************************** * 函数名称:SendData * 函数功能:74HC595数据的发送 * 入口参数:unsigned int uiDataOne, unsigned int uiDataTwo * 出口参数:void*******************************************************/ void SendData(unsigned int uiDataOne, unsigned int uiDataTwo){ unsigned int i = 0; /* 将片选信号置为低电平 */ HC595RCK = 0; /* 输入第一个数据:uiDataOne */ for (i = 0; i < 8; i++) { /* 给出脉冲信号,首先将CLK置为0 */ HC595CLK = 0; if (0 != (uiDataOne & 0x80)) { HC595DATA = 1; } else { HC595DATA = 0; } /* 给出脉冲信号,首先将CLK置为1 */ HC595CLK = 1; /* 准备第二个数据 */ uiDataOne = uiDataOne << 1; } /* 输入第二个数据:uiDataTwo */ for (i = 0; i < 8; i++) { /* 给出脉冲信号,首先将CLK置为0 */ HC595CLK = 0; if (0 != (uiDataTwo & 0x80)) { HC595DATA = 1; } else { HC595DATA = 0; } /* 给出脉冲信号,首先将CLK置为1 */ HC595CLK = 1; /* 准备第二个数据 */ uiDataTwo = uiDataTwo << 1; } /* 将片选信号置为高电平 */ HC595RCK = 1;}求采纳

51单片机八位抢答器,多添加一个抢答犯规功能

多简单啊,自己添加就好了。

51单片机delay()函数

最好是用定时器,延时不是很准,如果对时间精确度不高,可以用delay

51单片机C语言中delay函数是怎么定义和使用的

void delay(char i){char j =0; for(i=0;i<255;i++) for(;i<255;j++)}void main(){delay(100);}

51单片机C语言中delay函数是怎么定义和使用的?

定义一个延时xms毫秒的延时函数void delay(unsigned int xms) // xms代表需要延时的毫秒数{unsigned int x,y;for(x=xms;x》0;x--)for(y=110;y》0;y--);}使用:void Delay10us(uchar Ms){uchar data i;for(;Ms》0;Ms--)for(i=26;i》0;i--);}i=[(延时值-1.75)*12/Ms-15]/4扩展资料1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。2、在延时子程序设计时,采用do?while,结构做循环体要比for结构做循环体好。3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

51单片机C语言中delay函数是怎么定义和使用的?

5 51单片机C语言中delay函数是怎么定义和使用的?voidDelay(unsignedinta){unsignedinti;while(--a!=0)

51单片机属于ASIC吗

嗯 楼上正解

“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系是什么?

1单片机:是一款比较老的单片机,至于单片机你可以把它理解成电脑中的CPU。Zigbee:是一短距离、低功耗的局域网无线通信技术,但可以进行自组网。CC2530:是TI公司推出的一款芯片,里面包含了51单片机的内核与Zigbee技术,而且TI提供了很好的Zigbee协议栈以及决解方案。什么是单片机?单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,已经发展到现在的32位300M的高速单片机。

“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系是什么?

1单片机:是一款比较老的单片机,至于单片机你可以把它理解成电脑中的CPU。Zigbee:是一短距离、低功耗的局域网无线通信技术,但可以进行自组网。CC2530:是TI公司推出的一款芯片,里面包含了51单片机的内核与Zigbee技术,而且TI提供了很好的Zigbee协议栈以及决解方案。什么是单片机?单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,已经发展到现在的32位300M的高速单片机。

51单片机两个I/O口分别接ds18b20程序

这个网上多着呢,自己可以去找一找。也可以自己试着写一下这个程序。在Proteus里面有仿真,自己可以去玩玩的。
 首页 上一页  1 2 3 4 5  下一页  尾页