❶ 51单片机编程如何把一个字符串里的数字提取出来并转化成浮点数
你这个字符串的形式是怎么样的?先字母后数字?还是随机的?如果单纯只是字母后就数据的话就直接判断字符的ASCII码,从数字的地方开始截取,把数字和小数点放到另一个数组里,用double atof(const char *nptr)函数转为浮点类型即可,如果你初始给的字符串是随机的那好像麻烦很多。。。
❷ 单片机c51,C语言通过P0几个引脚如何实现74HC164串并转换输出
串并转换很简单的,还是好好查看74HC164资料吧,着重看一下高位在前,还是低位在前
❸ 什么是KMC仿真
KMC-S51型单片机仿真实验装置
本系统由仿真技术及实验电路有机结合组成,急支持MCS51单片机的全部原理性实验和单片机接口电路实验,又能仿真开发MCS51单片机的应用系统。
一、系统特点:
1、全部实验内容均为设计性实验,有利于实现创新教育。
2、提供独立运行、联上位机二种工作方式
3、具有示波器测量功能。能实时测量方波、正弦波、锯齿波、三角波等实验信号。
4、系统提供能将实验原理、目的、位置图等内容于一体自9Windows综合调试软件,便于多媒体教学。
5、系统提供机电一体化控制实验接口, 可做机电一体化实验。
6、系统提供点阵、液晶、语音录放、IC(I2C)卡读写、远程多机通信、直流电机转速测量与控制实验、新型通信、新型总线接口等多种丰富的单片机扩展实验模块。系统将地址总线、数据总线、控制总线等全部引出,便于课程设计与毕业设计。
二、技术指标:
1、主机含51CPU。
2、128K EPROM存放系统管理程序。另配有两片静态RAM62256构成64K用户程序RAM。
3、自带4X8键盘,进口键座,6只高亮LED七段数码显示器。可单机独立运行。
4、自带EPROM编程器
5、配10位开关量输入,12位开关量显示,
6、带有±单脉冲发生器, 可调连续脉冲发生器。
7、配有机电控制接口驱动电路及执行单元(直流电机、步进电机、继电器和电子音响等)。
8、提供标准RS232异步通信接口。
9、配有各种单片机常用I/O接口芯片(A/D 0809,D/A0832,并行I/OEl8255,并行I/O口81 55, 串并转换74LSl 64, 单片机并行口输入/输出扩展74LS273/774LS244,8253定时/计数器等)。另配通用,C—14插座两只,通用,C—28插座一只, 以备扩展实验用。
10、随机配套软件兼容WINDOWS 9X/2000/XP软件平台,并提供强大的CAI课件,便于进行多媒体教学。
11、联机软件支持WINDOWS9X/2000/XP平台。
12、提供功能强大的CAI课件,便于多媒体教学。
13、配有各种新型应用电路。对新型接口和主机集成于一体,如I2C应用电路,128X64点阵LCD显示应用电路,16X16点阵LED应用电路,语音录放应用电路,直流电机转速测量与控制等。RS485通信模块、I2C总线 E平方PROM模块、看门狗电路控制模块、DSl8B20温度测量模块等新型模块已集成于主板。
三、实验内容:
系统中实验项目的设置完全按照教育部大纲要求,并有适当提高,详细实验
项目如下:
带*为需扩展的选配模块:
(一)、软件实验
I、清零程序实验 2、拆字程序实验 3、拼字程序实验 4、数据块传送实验
5、数据排序实验 6、字符串查找并统计相同字符串个数 7、双字节乘法程序 8、多分支程序设计9、定时/计数器实验 10、电脑时钟实验
(二)、硬件实验
1、8031单片机P3、PIE口应用
2、工业顺序控制
3、并行I/01718255应用
4、简单I/OE]输入扩展
5、简单I/O口输出扩展
6、A/D转换0809应用
7、D/A转换0832应用
8、串并转换实验
9、可编程键盘显示8279A应用*
10、打印机接口应用*
11、直流电机控制
12、电子音响
13、定时计数器8353A应用
14、继电器控制
15、存贮器扩展和程序存贮器扩展
16、8031串行口应用(双机通信实验、与PC机通信实验)
17、16X16点陈LED显示实验
18、语音录放实验
19、128X64LCD液晶显示接口实验
20、IC存储卡(I2C总线)读写实验
21、单片机主从式远程多机通信实验
22、直流电机转速测量与控制实验
23、RS485通信模块
24、I2C总线E2PROM模块
25、压力测量实验*
❹ 51单片机数据类型转换 高分!
假如你的串口发送函数叫SendData,接收函数叫RecvData,参考如下代码
发送端:
intSendData(unsignedchar*pSendBuf,unsignedintnSendLen);
intRecvData(unsignedchar*pRecvBuf,unsignedintnBufLen);
voidmain(void)
{
floatf;
inti;
doubled;
SendData((unsignedchar*)&f,sizeof(float));
SendData((unsignedchar*)&i,sizeof(int));
SendData((unsignedchar*)&d,sizeof(double));
}
接收端:
voidmain(void)
{
floatf;
inti;
doubled;
RecvData((unsignedchar*)&f,sizeof(float));
RecvData((unsignedchar*)&i,sizeof(int));
RecvData((unsignedchar*)&d,sizeof(double));
}
宗旨就是,先取其他类型数据的地址,用&符号,然后把地址转换为unsigned char*型,就可以通过*(unsigned char)的方式或(unsigned char)[]的方式访问了,就这么简单,希望可以帮到你.
❺ 汇编语言实现通过51单片机的P1口控制74HC164实现串并转换控制 LED 灯循环点亮程序
几个亮几个灭呀?
时间,也不确定。
❻ 关于51单片机字符串转换成16进制
首先判断是数字还是字母,如果是数字,那么减0x30(0的ASCII),如果是字母,那么减0x41(A的ASCII),减完后,将两个数组合起来就可以了,第一个数放高四位,第二个数放低四位。
❼ 51单片机汇编语言1位数码管显示0,1,2,……到9再从9,8,7……到0,反复显示。
反复循环是一个作法,0到9循环结束后再做9到0的循环,0到9时用INC加法,9到0用DEC减法就行了,分开做两个循环,先加后减,两个循环结束,再回到0到9实现大循环就好了。很容易的呀,既然会0到9的循环,自己都能做出来,那其它的也能做出来吗,自己独立完成是最好的煅炼了,不能什么事都靠别人,那样是不会提高进步的。
❽ 用51系列单片机做个A/D转换器,具体该怎么做
注意,你这对单片机的位数和AD的位数理解有误。
首先:51系列单片机都是八位的,这里的8位是指它一个时钟所能处理的数据位数。而现在的电脑的微处理器酷睿等都是32位的CPU,意思和上述的一样。
而AD转换器的位数和所嵌入单片机的位数无关。12位是指这个AD转换器的精度。比如说12位的AD,读一个范围在0到5V的模拟信号,就能把这5V的范围分成 2的12次方 (=4096份)。也就说这个12位的AD转换器所能识别的最小电压量是5V÷4096 = 0.00122V。所以,单片机的8位和你需要的ad转换器12位没直接关系
而你说的AT89S52内部并没有集成AD转换器。
可以用Stc的单片机(有8位和10位ADC)、C8051F单片机(一般都是12位或10位ADC)、飞利浦的LPC900系列单片机等这都是8位的51系列单片机,内部带AD模块(但位数各不相同) 。
STC单片机数据手册:
C8051f020单片机数据手册:
补充:首先,你的问题有点混乱。
你前头问是“自带AD转换器的单片机”,就是说单片机内部有AD模块,直接把待测信号接单片机的AD引脚就可把数据读入到单片机内部的AD寄存器。如果是八位的正好就放在一个字节里,如果是10位、12位、16位就放两个字节(如x=AD,x是无符号INT型数据,C语言一句话搞定),如果是24位就3个或4个字节的寄存器内。这需要什么接口,没有分串口并口的。
而你后边补充问的那是单片机外接一个AD转换芯片,这个AD转换器就不是单片机自带的。这种芯片有串口和并口之分,但一般10位及其以上的AD芯片都是用串行接口。也有另类的,用并口连接的,那也比如说12位芯片使用并口也就是12个引脚和八位的51单片机连接,那单片机可以拿P1口接低八位,P2找四个脚和高四位连接。还有剩下的可以接CS、WR,之类的控制引脚。如果你买到这样的另类芯片,那写程序就忒麻烦了……
最后,C8051xxx系列的单片机,是使用51单片机内核的、集成了很多外设功能的单片机。一般有12位DAC、10/12位ADC、pwm、USB接口……说白就是个较高级的51单片机,但开发工具只能卖他们自己产的开发编程设备,贵。
❾ 利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。
共阳数码管中断程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar ,shi,ge;
void init();
void delay(uint);
void display(uchar,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar,ucharshi,ucharge)
{
P1=0xfd;
P0=table[];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
=num/100;
return ;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
(9)51单片机仿真串并转换实验扩展阅读
2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
参考资料来源:网络-51单片机