① 如何实现单片机通过WIFI获取时间和天气数据
有两种方案解决这个问题。
1:单片机链接WIFI,WIFI接入互联网,自己买一个天气平台网站API接口,从网站上读取。
2:自己写一个软件获取天气、时间等信息,把软件放到服务器里面,WIFI做客户端,接入服务器,服务器把天气时间数据发给客户端,客户端就是你的WIFI模块。
② 单片机如何实现多路模拟量的数据采集、显示
普通单片机实现多路模拟量的数据采集、显示需要:
外部连接一个多通道输入的ADC芯片,单片机按照一定的周期驱动模拟开关切换到不同的模拟通道,设计模数转换控制器的控制程序,可以进行定团戚时模拟信号采集和显示。
(2)单片机如何快速提取数据扩展阅读:
单片机基本结构及作用:
1、运算器
运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。
ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
运算器有两个功能:
执行各种算术运算。
执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
2、控制器
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。其主要功能有:
从内存中取出一条指令,并指出下一条指令在内存中的位置。
对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、寄存器和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。外部总线又称为系统总线,分为数据总线键或仿DB、地址总线AB和控制总线CB。通过输入输出接口电路,实现与各种外围设备连接。
3、主要寄存器
累加器A
累加器A是微处理器中使用最频繁的寄存器。在算术和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。
当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时稿纤,也需要用到地址寄存器和数据寄存器。
③ 单片机如何进行数据采集
对于液压设备中的8个待测参数选用相应的传感器来来检测,试验时选取应变式传感器作为测试现场的工具。这些选用的检测元件输出都是标准的4-20mA微弱的电流信号,电流信号又经过由LM324组成的放大转换电路转换成0-5V的电压信号输入到C8051F020的模拟输入端,如图2所示,经内部集成的A/D转换器转换成相应的数字量。C8051F020将8路采样值作为液压设备现场的状况存入相应的内存单元。
3.2 LCD显示
为了使数据采集系统小巧美观,同时又获得较高的性价比,选用德彼克公司生产的DMF-50174蓝屏液晶显示器,该显示器是320×240点阵式液晶,图形和文本都可以显示。显示驱动控制芯片采用EPSON 公司的一种高性能LCD 控制器SED1335。硬件电路采用间接接法,如图3所示。用单片机的P5.0~P5.7口作为SED1335的DB0~DB7数据总线的输入通道。P4.5作为SED1335的片选信号, 配合地址信号A0实现SED1335 通过数据总线接收来自单片机的指令和数据。当A 0= 0, P4.6(WR)=0,P4.7(RD)= 1时, 实现指令的写入和从SED1335 中读取数据。当A 0= 1, P4.6(WR)= 0, P4.7(RD)=1时, 则是显示数据的写入,该功能通过软件实现。
3.3 数据通讯
单片机C8051F020的TX0、RX0及P0.2通过MAX485与上位机相连,进行串行通信,如图3所示。P0.2控制MAX485的状态或发送,用软件控制。RX0为单片机的串行输入端,接收上位机通过MAX485向单片机发送的数据。TX0为单片机的串行输出端,通过MAX485发送给上位机。
4 系统软件设计
4.1 软件设计总体上由两部分组成:一部分为单片机C8051F020
主程序设计,一部分为LCD液晶显示程序设计。由于用C语言编程可以降低程序的复杂度,提高程序的可读性和可修改性,所以本软件采用C51进行编程,keil μVision2编译器进行编译。
④ 51单片机怎样从一个非常大的数字里面提取个十百千万位等......
下面举例说明万千百十个的表示方法。其实很简单,用除法取余就行。
i=a/b ;//取商
i=a%b;//取余
方法很多,以下是一例:
unsigned int wan,qian,,shi ,ge,
wan=i/10000;//除一万取商,是万位。
qian=(i/1000)%10;//先除1000,取商,商的个位是千位,所以再除10 取余。
=(i%100)/10%10;//先除100,取商,商的个位是百位,所以再除10 取余。
shi=(i%100)/10;//先除100,取余,商再除10 取余。
ge==(i%10;//除10取余。
不过阁下要知道整形量最大是65535,假如你的数据达到999999,你就要定义长整形量了。
unsigned long int i=999999;
如当I<10的时候 P0=table[i/10]; 个位
这样的算法 我写的不行 ,请高手写下 ,我看下我的出错在什么地方
i/10是取商啊,怎么可能是个位呢?是十位。I<10的话,一定是0了。
移位的方法不行,移位是2进制运算。你这个是十进制。
⑤ 单片机里面的数据能提取出来吗
我以前试过,51单片机里float和double储存的只到小数点后6位,就像你说的5123456789在51单片机里是以5.123456e+9储存的,也就是5123456000,后边的都丢失了,所以简单的程序应该是不可能算到你说的精度的。在32位单片机上用long
long
可以储存差不多20位的整数,但是keil
51是不支持的。
你用这么大的数干什么?不行就换一种方法吧。
⑥ 用单片机用串口提取一帧数据
通过 串口 读数据会否??
会的话,那就是 不知道 如何 判断 符不符合 AA____BB 的格式咯:
if(RecData & UserCode == UserCode) {符合格式执行内容},其中,RecData 是接收到的数据,UserCode 是 AA0000BB 的值,比如 A=1,B=0,那UserCode 就是 0xC0(最好使用 宏定义);
格式符合后,读取中间 的代码值:
comm=(RecData &0x3c)>>2; 其中 0x3c 是 屏蔽 AA、BB位的值(0011 1100);左移2位是将 代码值 放到最低位(0000 DDDD)。
⑦ 如何用单片机从外部存储设备提取数据
汽车发动机本身有一路信号可以识别发动机是否正在工作,
但不是从电瓶正负极上得到
⑧ 如何获取第三方单片机上的数据
你想读取第三方单片机数据控制别的外围电路,这个不可行的,除非你有第三方单片机源程序,在源程序基础上增加功能,如果你想使用第三方硬件和APP软件,找人解密单片机程序把二进制文件提取出来,可以山寨别人产品,如果产品有序列号加密,这样连接APP就不成功了,这种产品一般APP和单片机通讯数据都是加密的,如果没有加密,破解协议自己做过单片机程序,如果加密了可以按照功能重新开发。
⑨ 单片机字符串怎么提取你需要的数据
如果01恰好是一个字节,FF恰好是一个字节,将数据存储到数组中,确定偏移量直接读取啊。