单片机按键程序程序转换

软件按字母搜索:
中文按声母搜索:单片机、电路板
连接器、接插件
其他元器件
A/D转换器CS5550与单片机的接口程序设计
A/D转换器CS5550与单片机的接口程序设计
摘要:分析双通道低成本A/D转换器CS5550的接口特点,以ATmegal6单片机为例设计CS5550与单片机的接口电路。经过对ATmegal6单片机SPI口的分析,详细讨论使用硬件SPI接口和软件模拟SPI两种方式的程序设计,并给出相应的软件流程图。最后对CS5550的两种接口方式进行比较。关键同:模数转换器;CS5550;单片机;接口程序现代智能化仪器仪表中A/D转换器和单片机是重要组成部分。串行MD转换器的串口信号线数目较少,在数据采样速率较低
摘要:分析双通道低成本A/D转换器CS5550的接口特点,以ATmegal6单片机为例设计CS5550与单片机的接口电路。经过对ATmegal6单片机SPI口的分析,详细讨论使用硬件SPI接口和软件模拟SPI两种方式的程序设计,并给出相应的软件流程图。最后对CS5550的两种接口方式进行比较。关键同:模数转换器;CS5550;单片机;接口程序&&& 现代智能化仪器仪表中A/D转换器和单片机是重要组成部分。串行MD转换器的串口信号线数目较少,在数据采样速率较低的系统中有利于降低硬件间连线的复杂度,节省单片机的接口资源。在CS5550的性能特点及其片上串行接口的基础上,给出CS5550与单片机的接口程序设计方案。1 CS5550的主要性能及接口特点&&& CS5550是Cirrus Logic公司推出的一款双通道低成本△-∑型A/D转换器,内部集成有2个△-∑A/D转换器、2个放大器、1个串行接口以及1个温漂为25 ppm/℃的2.5 V参考电压源。CS5550在两个通道上都具有24位寄存器,其中通道1具有13位有效位,通道2具有10位有效位口。&&& CS5550片上集成有1个双向数字串行接口,包括(片选信号)、SDI(数据输入)、SDO(数据输出)和SCLK(串行时钟)4条控制线。该串口与标准SPI接口协议兼容,可与带有SPI接口的单片机传输数据。另外,CS5550还有一个中断输出引脚,可通过配置其屏蔽寄存器(Mask Register)来设定中断,并可通过软件修改配置寄存器中的“IMODE IINV”位来决定中断的产生方式(高/低电平或上升/下降沿有效)。2 单片机的SPI接口与CS5550连接&&& SPI接口是由Motorola公司最先推出的,目前很多型号的单片机都集成有SPI接口,如ATMEL公司的ATmega8、PIC公司的PICl6F877、Analog Devices公司的ADuC812等。用户可使用单片机所提供的SPI接口与CS5550直接连接。这里以ATmegal6单片机为例讨论使用单片机的SPI接口实现读写CS5550的操作。2.1 ATmegal6的SPI接口及其与CS5550的连接&&& ATmegal6单片机内部的SPI接口可完成全双工、3线同步数据传输。它支持主/从机操作模式,作为主机时具有倍速模式(CK/2);具有写碰撞标志检测、传输结束中断标志、7种可编程的比特率,并可设置LSB或MSB首先发送。在实际使用该SPI接口时,需要将MOSI(主机输出从机输入)、MISO(主机输入从机输出)、SCK(串行时钟)、(从机选择)引脚依次与CS5550的SDI、SDO、SCLK、引脚相连,如图1所示。
型号/产品名
深圳市福田区科鑫电子商行
深圳市中平科技有限公司
深圳市明兴电子展销柜单片机编程中的格式转换---sprintf
> 单片机编程中的格式转换---sprintf
单片机编程中的格式转换---sprintf
函数功能:把格式化的数据写入某个字符串  头文件:stdio.h本文引用地址:  函数原型:int sprintf( char *buffer, const char *format, [ argument] & ) ;  返回值:字符串长度(strlen)自《CSDN 社区电子杂志&&C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以&%&开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。格式化数字字符串sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代itoa。如://把整数123 打印成一个字符串保存在s 中。sprintf(s, "%d", 123); //产生"123"可以指定宽度,不足的左边补空格:sprintf(s, "??", 123, 4567); //产生:" 123 4567"当然也可以左对齐:sprintf(s, "%-8d?", 123, 4567); //产生:"123 4567"也可以按照16 进制打印:sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。sprintf(s, "X", 4567); //产生:""上面以&%d&进行的10 进制打印同样也可以使用这种左边补0 的方式。这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它:short si = -1;sprintf(s, "X", si);产生&FFFFFFFF&,怎么回事?因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个&%X&就能得知当初函数调用前参数压栈时被压进来的到底是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。如果你想看si 的本来面目,那么就应该让编译器做0 扩展而不是符号扩展(扩展时二进制左边补0 而不是补符号位):sprintf(s, "X", (unsigned short)si);就可以了。或者:unsigned short si = -1;sprintf(s, "X", si);sprintf 和printf 还可以按8 进制打印整数字符串,使用&%o&。注意8 进制和16 进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16 进制或8 进制表示。控制浮点数打印格式浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符&%f&控制,默认保留小数点后6 位数字,比如:sprintf(s, "%f", 3.1415926); //产生"3.141593"但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:&%m.nf&格式,其中m 表示打印的宽度,n 表示小数点后的位数。比如:sprintf(s, ".3f", 3.1415626); //产生:" 3.142"sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"注意一个问题,你猜int i = 100;sprintf(s, "%.2f", i);会打出什么东东来?&100.00&?对吗?自己试试就知道了,同时也试试下面这个:sprintf(s, "%.2f", (double)i);第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个&%f&。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i 的那4 个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编排的结果是否正确。字符/Ascii 码对照我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与short,int,long 这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把这个类型叫做&byte&,然后现在就可以根据实际情况,使用byte 或short 来把char 通过typedef 定义出来,这样更合适些)于是,使用&%d&或者&%x&打印一个字符,便能得出它的10 进制或16 进制的ASCII 码;反过来,使用&%c&打印一个整数,便可以看到它所对应的ASCII 字符。以下程序段把所有可见字符的ASCII 码对照表打印到屏幕上(这里采用printf,注意&#&与&%X&合用时自动为16 进制数增加&0X&前缀):for(int i = 32; i < 127; i++) {printf("[ %c ]: = 0x%#04Xn", i, i, i);}连接字符串sprintf 的格式控制串中既然可以插入各种东西,并最终把它们&连成一串&,自然也就能够连接字符串,从而在许多场合可以替代strcat,但sprintf 能够一次连接多个字符串(自然也可以同时在它们中间插入别的内容,总之非常灵活)。比如:char* who = "I";char* whom = "CSDN";sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "strcat 只能连接字符串(一段以&&结尾的字符数组或叫做字符缓冲,null-terminated-string),但有时我们有两段字符缓冲区,他们并不是以&&结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的&&来结尾。如果直接连接,不管是sprintf 还是strcat 肯定会导致非法内存操作,而strncat 也至少要求第一个参数是个null-terminated-string,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串也一样的。比如:char a1[] = {A, B, C, D, E, F, G};char a2[] = {H, I, J, K, L, M, N};如果:sprintf(s, "%s%s", a1, a2); //Dont do that!十有八九要出问题了。是否可以改成:sprintf(s, "%7s%7s", a1, a2);也没好到哪儿去,正确的应该是:sprintf(s, "%.7s%.7s", a1, a2);//产生:"ABCDEFGHIJKLMN"这可以类比打印浮点数的&%m.nf&,在&%m.ns&中,m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n 才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m 没什么大用,还是点号后面的n 用的多。自然,也可以前后都只取部分字符:sprintf(s, "%.6s%.5s", a1, a2);//产生:"ABCDEFHIJKL"在许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在sprintf 的实现中也被考虑到了,sprintf 采用&*&来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于是,上面的例子可以变成:sprintf(s, "%.*s%.*s", 7, a1, 7, a2);或者:sprintf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:sprintf(s, "%-*d", 4, A); //产生"65 "sprintf(s, "%#0*X", 8, 128); //产生"0X000080","#"产生0Xsprintf(s, "%*.*f", 10, 2, 3.1415926); //产生" 3.14"打印地址信息有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32 位的数,你完全可以使用打印无符号整数的&%u&把他们打印出来:sprintf(s, "%u", &i);不过通常人们还是喜欢使用16 进制而不是10 进制来显示一个地址:sprintf(s, "X", &i);然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的&%p&:sprintf(s, "%p", &i);我觉得它实际上就相当于:sprintf(s, "%0*x", 2 * sizeof(void *), &i);利用sprintf 的返回值较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次strlen 便已经知道了结果字符串的长度。如:int len = sprintf(s, "%d", i);对于正整数来说,len 便等于整数i 的10 进制位数。下面的是个完整的例子,产生10 个[0, 100)之间的随机数,并将他们打印到一个字符数组s 中,以逗号分隔开。#i nclude#i nclude#i ncludeint main() {srand(time(0));char s[64];int offset = 0;for(int i = 0; i < 10; i++) {offset += sprintf(s + offset, "%d,", rand() % 100);}s[offset - 1] =//将最后一个逗号换成换行符。printf(s);return 0;}设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat 效率高,因为strcat 每次调用都需要先找到最后的那个&&的位置,而在上面给出的例子中,我们每次都利用sprintf 返回值把这个位置直接记下来了。使用sprintf 的常见问题sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问题,建议变参对应一定要细心,而打印字符串时,尽量使用&%.ns&的形式指定最大字符数。忘记了第一个参数低级得不能再低级问题,用printf 用得太惯了。//偶就常犯。:。(变参对应出问题通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤其是对应&*&的那些参数,都提供了吗?不要把一个整数对应一个&%s&,编译器会觉得你欺她太甚了(编译器是obj 和exe 的妈妈,应该是个女的,:P)。strftimesprnitf 还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:time_t t = time(0);//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。char s[32];strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));sprintf 在MFC 中也能找到他的知音:CString::Format,strftime 在MFC 中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一字符和数据之间的转换
查看: 3564|
摘要:   我们学串口通信的应用主要是实现单片机和电脑之间的信息互发,可以用电脑控制单片机的一些信息,可以把单片机的一些信息状况发给电脑上的软件。下面我们就做一个简单的例程,实现单片机串口调试助手发送的数据, ...
  我们学串口通信的应用主要是实现和之间的信息互发,可以用电脑控制单片机的一些信息,可以把单片机的一些信息状况发给电脑上的软件。下面我们就做一个简单的例程,实现单片机串口调试助手发送的数据,在我们开发板上的数码管上显示出来。
#include&&reg52.h&
sbit&ADDR3&=&P1^3;&&&&&&//LED选择地址线3
sbit&ENLED&=&P1^4;&&&&&&//LED总使能引脚
unsigned&char&code&LedChar[]&=&{&&//数码管显示字符转换表
&&&&0xC0,&0xF9,&0xA4,&0xB0,&0x99,&0x92,&0x82,&0xF8,
&&&&0x80,&0x90,&0x88,&0x83,&0xC6,&0xA1,&0x86,&0x8E
unsigned&char&LedBuff[6]&=&{&&//数码管
&&&&0xFF,&0xFF,&0xFF,&0xFF,&0xFF,&0xFF
unsigned&char&T0RH&=&0;&&//T0重载值的高字节
unsigned&char&T0RL&=&0;&&//T0重载值的低字节
unsigned&char&RxdByte&=&0;&&//串口接收到的字节
void&ConfigTimer0(unsigned&int&ms);
void&ConfigUART(unsigned&int&baud);
void&main&()
&&&&P0&=&0xFF;&&//P0口初始化
&&&&ADDR3&=&1;&&//选择数码管
&&&&ENLED&=&0;&&//LED总使能
&&&&EA&=&1;&&&&&//开总中断
&&&&ConfigTimer0(1);&&&//配置T0定时1ms
&&&&ConfigUART(9600);&&//配置波特率为9600
&&&&while(1)
&&&&{&&&//将接收字节在数码管上以十六进制形式显示出来
&&&&&&&&LedBuff[0]&=&LedChar[RxdByte&&&0x0F];
&&&&&&&&LedBuff[1]&=&LedChar[RxdByte&&&&4];
void&ConfigTimer0(unsigned&int&ms)&&//T0配置函数
&&&&unsigned&long&
&&&&tmp&=&&/&12;&&&&&&//定时器计数频率
&&&&tmp&=&(tmp&*&ms)&/&1000;&&//计算所需的计数值
&&&&tmp&=&65536&-&&&&&&&&&//计算定时器重载值
&&&&tmp&=&tmp&+&31;&&&&&&&&&&&//修正中断响应延时造成的误差
&&&&T0RH&=&(unsigned&char)(tmp&&&&8);&&//定时器重载值拆分为高低字节
&&&&T0RL&=&(unsigned&char)
&&&&TMOD&&=&0xF0;&&&//清零T0的控制位
&&&&TMOD&|=&0x01;&&&//配置T0为模式1
&&&&TH0&=&T0RH;&&&&&//加载T0重载值
&&&&TL0&=&T0RL;
&&&&ET0&=&1;&&&&&&&&//使能T0中断
&&&&TR0&=&1;&&&&&&&&//启动T0
void&ConfigUART(unsigned&int&baud)&&//串口配置函数,baud为波特率
&&&&SCON&=&0x50;&&&//配置串口为模式1
&&&&TMOD&&=&0x0F;&&//清零T1的控制位
&&&&TMOD&|=&0x20;&&//配置T1为模式2
&&&&TH1&=&256&-&(/32)&/&&&//计算T1重载值
&&&&TL1&=&TH1;&&&&&//初值等于重载值
&&&&ET1&=&0;&&&&&&&//禁止T1中断
&&&&ES&&=&1;&&&&&&&//使能串口中断
&&&&TR1&=&1;&&&&&&&//启动T1
void&LedScan()&&//LED显示扫描函数
&&&&static&unsigned&char&index&=&0;
&&&&P0&=&0xFF;&&&&&&&&&&&&&&&&&//关闭所有段选位,显示消隐
&&&&P1&=&(P1&&&0xF8)&|&&&//位选索引值赋值到P1口低3位
&&&&P0&=&LedBuff[index];&&&&&&&//相应显示缓冲区的值赋值到P0口
&&&&if&(index&&&5)&&&&&&&&&&&&&//位选索引0-5循环,因有6个数码管
&&&&&&&&index++;
&&&&&&&&index&=&0;
void&InterruptTimer0()&interrupt&1&&//T0中断服务函数
&&&&TH0&=&T0RH;&&//定时器重新加载重载值
&&&&TL0&=&T0RL;
&&&&LedScan();&&&//LED扫描显示
void&InterruptUART()&interrupt&4
&&&&if&(RI)&&//接收到字节
&&&&&&&&RI&=&0;&&//手动清零接收中断标志位
&&&&&&&&RxdByte&=&SBUF;&&//接收到的数据保存到接收字节变量中
&&&&&&&&SBUF&=&RxdB&&//接收到的数据又直接发回,这叫回显-"echo",以提示用户输入的信息是否已正确接收
&&&&if&(TI)&&//字节发送完毕
&&&&&&&&TI&=&0;&&//手动清零发送中断标志位
  大家在做这个实验的时候,有个小问题要注意一下。因为我们STC89C52RC下载程序是使用了UART串口下载,下载完程序后,程序运行起来了,可是下载软件最后还会通过串口发送一些额外的数据,所以程序刚下载进去不是显示00,而可能是其他数据。大家只要把开关关闭,重新打开一次就好了。
  细心的同学可能会发现,在串口调试助手发送选项和接收选项处,还有个“字符格式发送”和“字符格式显示”,这是什么意思呢?
  先抛开我们使用的汉字不谈,那么我们常用的字符就包含了0~9的数字、A~Z/a~z的字母、还有各种标点符号等。那么在单片机系统里面我们怎么来表示它们呢?ASCII码(American&Standard&Code&for&Information&Interchange,即美国信息互换标准代码)可以完成这个使命:我们知道,在单片机中一个字节的数据可以有0~255共256个值,我们取其中的0~127共128个值赋予了它另外一层涵义,即让它们分别来代表一个常用字符,其具体的对应关系如下表。
  表1&ASCII表
  这样我们就在常用字符和字节数据之间建立了一一对应的关系,那么现在一个字节就既可以代表一个整数又可以代表一个字符了,但它本质上只是一个字节的数据,而我们赋予了它不同的涵义,什么时候赋予它那种涵义就看编程者的意图了。ASCII码在单片机系统中应用非常广泛,我们后续的课程也会经常使用到它,下面我们来对它做一个直观的认识,同学们一定要深刻理解其本质。
  对照上述表格,我们就可以实现字符和数字之间的转换了,比如还是这个程序,我们发送的时候改成字符格式发送,接收还是用十六进制接收,这样接收和数码管好做一下对比。
  我们用字符格式发送一个小写的a,返回一个十六进制的0x61,数码管上显示的也是61,ASCII码表里字符a对应十进制是97,等于十六进制的0x61;我们再用字符格式发送一个数字1,返回一个十六进制的0x31,数码管上显示的也是31,ASCII表里字符1对应的十进制是49,等于十六进制的0x31。这下大家就该清楚了:所谓的十六进制发送和十六进制接收,都是按字节数据的真实值进行的;而字符格式发送和字符格式接收,是按ASCII码表中字符形式进行的,但它实际上最终传输的还是一个字节数据。这个表格,当然不需要大家去记住,理解它,用的时候过来查就行了。
  通信的学习,不像前边控制部分那么直观了,通信部分我们的程序只能获得一个结果,而其过程我们却无法直接看到,所以慢慢的可能大家就会知道有和逻辑分析仪这类测量仪器。如果学校实验室或者公司里有示波器或者逻辑分析仪这类仪器,可以拿过来抓一下串口波形,直观的了解一下。如果暂时还没有这些仪器,先知道这么回事,有条件再说。因为工具类的东西有的比较昂贵,有条件可以尽量使用学校或者公司的。在这里我用一款简易的逻辑分析仪把串口通信的波形抓出来给大家看一下,大家了解一下即可,如图1所示。
图1&逻辑分析仪串口数据示意图
  分析仪和示波器的作用,就是把通信过程的波形抓出来进行分析。先大概说一下波形的意思。波形左边是低位,右边是高位,上边这个波形是电脑发送给单片机的,下边这个波形是单片机回发给电脑的。以上边的波形为例,左边第一位是起始位0,从低位到高位依次是,顺序倒一下,就是数据0x31,也就是ASCII码表里的‘1’。大家可以注意到分析仪在每个数据位都给标了一个白色的点,表示是数据,起始位和无数据的时候都没有这个白点。时间标T1和T2的差值在右边显示出来是0.102ms,大概是9600分之一,稍微有点偏差,在容许范围内即可。通过图11-7,我们可以清晰的了解了串口通信的收发的详细过程。
  那我们这里再来了解一下,如果我们使用串口调试助手,用字符格式直接发送一个“12”,我们在我们的数码管上应该显示什么呢?串口调试助手应该返回什么呢?经过试验发现,我们数码管显示的是32,而串口调试助手返回十六进制显示的是31、32两个数据,如图2所示。
图2&串口调试助手数据显示
  我们用逻辑分析仪把这个数据抓出来看一下,如图3所示。
图3&逻辑分析仪抓取数据
  对于ASCII码表来说,数字本身是字符而非数据,所以如果发送“12”的话,实际上是是分别发送了“1”和“2”两个字符,单片机呢,先收到第一个字符“1”,在数码管上会显示出31这个对应数字,但是瞬间马上就又收到了“2”这个字符,数码管瞬间从31变成了32,而我们视觉上呢,根本是没有办法发现这种快速变化的,所以我们感觉数码管直接显示的是32。
上一篇:下一篇:
看过《字符和数据之间的转换》的人还看了以下文章:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:点击查看大图
单片机程序转换工具Transfer是一款优秀专业的适用于单片机二进制程序转换工具,单片机程序转换工具能够用于pic单片机/义隆单片机/麦肯的转换。单片机程序转换工具可以将hex文件转为bin文件,供飞凌单片机烧写时使用.单片机程序转换工具简面友好,易学易用,通过简单的操作就可以掌握软件的使用方法.
你可能感兴趣的软件
在单片机系统中,常常有显示数码管,汉字,图标的需要(比如手机屏幕,广告屏幕)。一般的做法是先在计算机上做好汉字和图标保存为位图,然后把位图转换成有特定格式的数据,最后在单片机中显示出来。《单片机字体工具》就是把位图转化成特定数据的工具,它还提供字体显示、汉字编码等其他功能。它可以搭档提高单片机软件工程师的工作效率。
本次就给大家带来这个简单的串口计算器。功能不多,但是足够了。可以自定义波特率和晶振频率的。 首先是界面:(只要点下列表框的内容立即会自动计算,界面没有采用任何按钮)
PA51中文单片机汇编全新版本,全面支持Keil C51。MCS51单片机编译软件中文版,除提供中文字符串编程功能外,还具有动态子程序库调用、全功能汉字字模生成、点阵图形数据生成、中文寄存器定义等诸多功能。是汇编语言程序员的优秀帮手。
单片机多功能调试助手一款集串口/USB/网络调试、进制转换、字模与数码管字型码制作、常用校验值计算、UNICODE码转换、位图输出C文件等众多功能于一身的综合型调试软件。
本软件为51系列单片机计算定时器初值的小工具,直接输入时钟频率和要定时的时间即可得到需要定时初值。 此软件是作者在学习C++Builder过程中练习时所编写。
单片机延时计算小程序(通用延时子程序),很方便的一个小工具,绿色单文件版。 单片机延时计算方法 如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看
AVR单片机ISP下载编程软件,目前只支持:USBASP (接口类型:USB)
158.08 MB/
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。proteus单片机仿真软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
一款单片机辅助开发工具,提供常用51系列单片机的参数计算和资料查询功能。
Keil uVision4是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发。keil uvision4单片机编程软件可以帮助嵌入式开发者更好地去开发ARM。
Keil C51是一款单片机编程软件,Keil C51是目前世界上较好的51单片机的汇编和c语言的开发工具。Keil C51单片机编程软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
Syncios Data Transfer(ios数据传输工具)是一款功能强大的iOS数据传输工具,Syncios Data Transfer 允许iOS和Android之间的联系
单片机程序转换工具下载地址
36449次下载
西门子plc编程软件(西门子plc编程软件中文版下载) V5.5中文版
Altium Designer Summer09官方中文完整版
LedStudio2013(LED显示屏控制卡编辑软件)V14.2.19.1官方版
Multisim(含multisim12安装教程) 12下载
JDpaint(精雕软件) V5.5中文版
电工仿真教学软件(电工仿真教学软件官方下载)V2013官方版
Altium Designer 14.3.13官方中文版下载
Altium Designer 16(Altium Designer 16下载) V16.0.5 官方版
Altium Designer(含安装教程) 6.9 官方中文版
165093次下载
西门子plc编程软件(西门子plc编程软件中文版下载) V5.5中文版
Altium Designer Summer09官方中文完整版
商行天下设备维修保养管理软件 V9.9官方版
静隆金属热处理软件(静隆金属热处理软件官方下载)V3.7.1.1官方版
浩辰CAD架空线路优化设计(浩辰CAD架空线路优化设计官方下载)V12.1.0.0官方版
LedStudio2013(LED显示屏控制卡编辑软件)V14.2.19.1官方版
光伏小精灵(光伏小精灵官方下载)V1.0.0.0官方版
铁师傅钣金展开软件(铁师傅钣金展开软件官方下载)V1.0.0.0官方版
电脑装机报价系统(电脑装机报价系统网络版官方下载)V4.0.5官方版
闲鱼二手app是淘宝官方出品的二手市场应用,淘宝二手市场官方手机客户端软件闲鱼,推荐给喜欢上闲鱼淘宝二手市场购物或买卖的机友,淘宝出品起码有一定的保障,不需要担心安全问题,二手交易嘛仁者见仁智者见智,眼睛擦亮点也是可以找到好东西的。
抖音短视频app,这里汇聚全球潮流音乐,搭配舞蹈、表演等内容形式,还有超多原创特效、滤镜、场景切换帮你一秒变大片,为你打造刷爆朋友圈的魔性短视频。脑洞有多大,舞台就有多大!好玩的人都在这儿!
日常生活中,因为各种原因我们常常丢失随身设备中的数据,怎么高效实用的恢复成了困扰许多用户的问题,今天下载吧小编为大家带来一款强大的苹果手机恢复软件,果粉们新技能还不get起来!开心手机恢复大师是一款强大的苹果数据恢复软件,操作简单,兼容Windows和Mac平台,支持iOS设备微信聊天记录恢复及短信,通讯录,备忘录,照片等删
不管是出门旅游还是出差第一件事情就是查看外当天气如何,现在许多手机的桌面天气预报软件就可以帮助你快速查看天气了,但有些手机自带的天气预报可能不能满足大家的需要,所以在这里小编为大家整理了几款功能强大且齐全的ios天气预报软件,希望里面有你喜欢的一款。
春节在外和小伙伴聚会,家里的群突然有红包抢,没看手机错过了?不用怕,有了下面这些手机抢红包神奇,再也不怕抢不到红包了!
元宵是春节后第一个寓意团圆的节日,更是中国的情人节!马上就到了2018年的元宵节了,元宵佳节,一片喜庆,小编精选了元宵必备的手机应用,希望小伙伴们能够喜欢!
现在在都市中越来越多的人喜欢到户外去运动去探险!今天下载吧小编就为大家整理推荐了几款运动必备的手机软件,有需要的小伙伴快来下载吧体验一番吧!
觉得手机像素不够高?那你就得下载一个手机美颜相机来处理照片了,现在市面上好用的手机美颜相机有很多,今天下载吧就为喜欢自拍的你介绍几款好用的手机美颜相机,一起来看看。}

我要回帖

更多关于 单片机程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信