MSC-51单片机的3字节和4字节浮点数计算程序分析
- 格式:doc
- 大小:39.50 KB
- 文档页数:11
51单片机C语言的一般结构#数据类型Unsigned char 单字节0~255Signed char 单字节-128~+127unsigned int 双字节0~65535Signed int 双字节-32768~+32767Unsigned long 四字节0~4294967295Signed long 四字节-2147483648~+2147483647Float 四字节±1.175494E-38~±3.402823E+38* 1~3字节对象的地址Bit 位0或1Sfr 单字节0~255Sfr16 双字节0~65535Sbit 位置0或1/***************************************************/指针变量:存放指向另一个数据的地址。
形式:数据类型指针符号学变量名称示例:char * point/*********************************************/数据的强制转换:如x,y是双字节整型数,若相乘后在单字节范围内,则形式:z=(unsigned char)(x*y)//积转换成一个无符号单字节数/****************************************************/定义:预处理符号命令表达式# define CONST 2 //用CONST代替2/*******************************************************/变量存储:种类(auto自动)(extern外部)(stati c静态)(register寄存器)形式:【存储种类】【数据类型】【存储器类型】【变量名】示例:auto int data x;(种类省略为自动)char code y=0x55;(赋值)存储模式如省略则按编译模式选择存储区:(small片内数据存储区data,compact分页片外数据存储区,large外部数据存储区)/************************************************************/特殊功能寄存器定义:Sfr 特殊功能寄存器名=地址常数例:sfr TMOD=0x89//定义定时/计数方式寄存器地址为89H位访问:(1)sbit 位变量名=位的绝对地址Sbit OV =0xD2;Sbit CY =0xD7;(2)sbit 位变量名=特殊功能寄存器名^位位置sbit OV=PSW^2;sbit CY=PSW^7;(3)sbit 位变量名=字节地址^位位置sbit OV=0xD0^2;sbit CY=0xD0^7;声明存储类型为bdata则C编译时会把数据存入可位寻址区示例:int bdata x=12345;//在可位寻址区存入x并赋值12345寻址:sbit x0=x^0; (位范围,char0~7,int0~15,long0~32)Sbit x15=x^15;/**********************************************************/预处理:宏定义、条件包含、条件编译。
单片机原理及接口技术课程设计报告设计题目:计算器设计信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。
注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。
字数不要太多,300-500字。
另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。
文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。
1. 设计任务结合实际情况,基于AT89C51单片机设计一个计算器。
该系统应满足的功能要求为:(1) 实现简单的四位十进制数字的四则运算;(2) 按键输入数字,运算法则;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。
主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。
注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。
2. 整体方案设计计算器以AT89C51单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。
通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。
单⽚机浮点数计算在单⽚机应⽤系统的数据处理过程中,经常会遇到⼩数的运算问题,如求解BCD的增量算式、线性化处理等。
因此,需要⽤⼆进制数来表⽰⼩数。
表⽰⼩数的⽅法⼀般有两种,定点数和浮点数。
定点数结构简单,与整数的运算过程相同,运算速度快。
但随着所表⽰数的范围的扩⼤,其位数成倍增加,给运算和存储带来不便,⽽且也不能保证相对精度不变。
浮点数的结构相对复杂,但它能够以固定的字节长度保持相对精度不变,⽤较少的字节表⽰很⼤的数的范围,便于存储和运算,在处理的数据范围较⼤和要求精度较⾼时,采⽤浮点数。
浮点数的概念常⽤的科学计数法来表⽰⼀个⼗进制数如l234.75=1.23475E3=1.23475×103在数据很⼤或很⼩时,采⽤科学计数避免了在有效数字前加0来确定⼩数点的位置,突出了数据的有效数字的位数,简化了数据的表⽰。
可以认为,科学计数法就是⼗进制数的浮点数表⽰⽅法。
在⼆进制效中,也可以⽤类似的⽅法来表⽰⼀个数,如1234.75=0.11(⼆进制)=0.1×211⼀般表达式为N=S×2p在这种表⽰⽅法中,数值由四个部分组成,即尾数S及符号,阶码P及符号。
在⼆进制中,通过定义相应字节或位来表⽰这四部分,就形成了⼆进制浮点数。
⼆进制浮点数可以有多种不同的表⽰⽅法,下⾯是⼀种常见的三字节浮点数的格式:其中尾数占16位,阶码占6位,阶符占1位,数符占1位。
阶码通常⽤补码来表⽰。
在这种表⽰⽅法中,⼩数点的实际位置要由阶码来确定,⽽阶码⼜是可变的,因此称为浮点数。
1234.75⽤这种格式的浮点数表⽰就是:00 1011 1001 10 01 1000⽤⼗六进制表⽰为1234.75=0B9A58H-1234.75=4B9A58H0.171875=043B00H-0.171875=443B00H三字节浮点数所能表⽰的最⼤值为1×263=9.22×1018能表⽰的最⼩数的绝对值为0.5×2-63=5.42×10-20其所表⽰的数的绝对值范围=(5.42×10-20~9.22×1018),由此可以看到,⽐三字节定点数表⽰的数的范围⼤得多。
华侨大学厦门工学院单片机控制系统—课程设计报告题目基于51单片机的简易计算器专业、班级:学生姓名:________________________________学号:____________________________________ 指导教师:_________________________________2014 年__5_ 月_20_日目录一、设计任务目的.............................................................................2.. .二、计任务要求.............................................................................2.. .三、设计方案选取与论证.............................................................................2.. .四、电路设计.............................................................................3.. .4.1总体电路图.............................................................................3.. .4.2 硬件设计4...4.2.1 矩阵按键4...422 AT89C52 主芯片 ................................................ 4.4.2.3 LCD 显示..................................................... 7...4 .3软件设计.............................................................................8.. .4.3.1 键盘模块.................................................... 8...4.3.2 计算模块.................................................... 9...4.3.3 显示模块.................................................... 9...五......................................................................... 制作及调试过程........................................................................... 1..0 .5.1 制作过程1..1.5.2 软件调试1..0.5.3 硬件调试1..1.结论..................................................................... 1..2.. 致谢..................................................................... 1..3.. 参考文献........................................................................... 1..3 ..一、设计任务目的设计一个计算器,可以进行简易的四则运算。
MCS—51四字节浮点库及其使用说明
李杰
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2002(000)012
【摘要】此浮点库包含16个子程序(数值转换、四则运算、浮点数处理等),不含函数库;占RAM(A,B,R0~R7,08H~0FH,23H);大小:1.6 KB;可任意浮动.
【总页数】2页(P77-78)
【作者】李杰
【作者单位】湖南长沙新开铺育新学校
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.MCS—51单片机实现的快速浮点多字节BCD乘除运算 [J], 陈宇;毕淑艳
2.AVR-90三字节浮点库及其使用说明 [J], 李杰
3.AVR—90三字节浮点库及其使用说明 [J], 李杰
4.MCS-96/196三字节浮点库 [J], 李杰
5.MCS—96/196三字节浮点库 [J], 李杰
因版权原因,仅展示原文概要,查看原文内容请购买。
1 Franklin C-511.1 Franklin C-51数据类型Franklin C-51编译器支持下列数据类型:数据类型长度值域bit 1 字节 0 或 1signed char 1 字节 -128~+127unsigned char 1 字节 0~255signed int 2 字节 -32768~+32867unsigned int 2 字节 0~65535signed long 4 字节 -2147483648~+2147483647unsigned long 4 字节 0~4294967295float 4 字节 ±1.176E-38~±3.40E+38指针 1~3 字节 对象地址sbit 1 位 0 或 1sfr 1 字节 0~255sfr16 2 字节 0~65535编译的数据类型(如结构)包含上表所列的数据类型。
由于8051系列是8位机,因而不存在字节校准问题。
这意味着数据结构成员是顺序放置的。
数据类型的转换:当计算结果隐含着另外一种数据类型时,数据类型可以自动进行转换,例如,将一个位变量赋给一个整型变量时,位型值自动转换为整型值,有符号变量的符号也能自动进行处理。
这些转换也可以用C语言的标准指令进行人工转换。
1. 2 数据类型的物理结构1.2.1 bit“bit”类型只有1位,不允许有位指针和位数组。
位对象始终位于8051 CPU的可寻址RAM空间。
如果程序控制流允许,L51将位对象交迭。
1.2.2 signed/unsigned char;data/idata/pdata 指针“char”类型标量和基于存贮器的“data/idata/pdata”指针具有1个字节长度(8 bits)。
1.2.3 signed/unsigned int/short;xdata/code 指针“int”和“short”类型标量及指向xdata/code区域的指针具有2字节长度(16 bits)。
51单片机实现的简易计算器1. 4X4键盘输入,点阵字符型液晶显示。
2. 由于所采用的浮点程序库的限制(MCU平台只找到这个……),浮点运算采用3字节二进制补码表示,有效数字6位。
对于输入输出,采用3字节BCD码浮点数格式,有效数字只有4位,因此最终有效数字只有4位。
3. 可进行连续输入,例如:1.23+4.56*8.23/234.8 ,但是运算结果为从左到右,这也是8位简易计算器的方式。
4. 可进行错误判断,溢出、除零等错误将显示一个字符E 。
5. 由于键盘只有16个按键,安排如下:+---------------+| 7 | 8 | 9 | + || 4 | 5 | 6 | - || 1 | 2 | 3 | * || 0 | . | = | / |+---------------+6. 按键的缺少导致取消了一些特殊函数,即开根号,三角函数(sin, cos, tan, ctg)的实现,由于这些函数在浮点程序库中均已提供,如果硬件允许,在原来的框架上添加这些附加功能是很容易的(可以看作和+, -, *, /等价的按键操作,调用不同的子程序进行运算即可)7. 按两次= 等于清灵。
因为按键实在太少,才采用了这个做法。
8. 相应举例:按键结果说明- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -123+= 123 按下等号而没有第二个操作数,保留第一个操作数并认为此次运算结束(等号的功能)123+321/111 4.0 等价于(123+321) / 1112.3+5.4=/0.1+ 77 等号后直接按 / ,则将前面的运算结果作为第一个操作数1/0= E 错误显示9. 不足使用3字节的浮点数表示,不可避免的带来了数表示的不精确,加上有效数字比较少,因此计算结果很容易产生误差,尤其是进行连续多次运算后,结果和精度较高的科学计算器的误差会很快达到0.01以上,当然这个差距和所测试的用例也有关系,4位有效数字导致了数字123456只能表示为123400,最后两位有效数字被摒弃了。
单片机浮点数的实用快速除法摘要: 介绍一种在8096/98系列单片机上实现的单精度浮点数快速除法。
该算法采用了预估-修正的数值计算方法,并充分利用了16位CPU中的乘除法指令,计算速度快、精度高,有很强的实用性。
关键词: 浮点数除法尾数预估-修正误差精度在较为复杂的单片机系统中,为扩大取值范围,实现复杂的计算和控制,一般都要涉及浮点数的运算。
而一般单片机是没有浮点数运算指令的,必须自行编制相应软件。
在进行除法计算时,通常使用的方法是比较除法[1],即利用循环移位和减法操作来得到24~32位商,效率很低。
有些文献给出了一些改进方法[2],但思路不清晰,很难推广使用。
这里给出一种浮点数除法运算的实用快速算法。
该方法以数值计算中的预估-修正方法为指导,充分利用了16位单片机的乘除法功能,很轻易地实现了浮点数的除法。
1 浮点数格式IEEE的浮点数标准规定了单精度(4字节)、双精度(8字节)和扩展精度(10字节)三种浮点数的格式。
最常用的是单精度浮点数,格式。
但是这种格式的阶码不在同一个字节单元内,不易寻址,从而会影响运算速度。
通常在单片机上采用的是一种变形格式的浮点数,。
其中的23位尾数加上隐含的最高位1,构成一个定点原码小数,即尾数为小于1大于等于0.5的小数。
有关浮点数格式的详细内容请参考有关文献[1][2]。
2 快速除法的算法原理在16位单片机中只有16位的乘除法,而浮点数的精度(即尾数的有效位数)达24位,因此无法直接相除,但仍然可以利用16位的乘除法指令来实现24位除法。
不过,如果只进行一次16位的除法必定会带来很大误差,因此问题的关键在于如何消除这个误差,从而达到要求的精度。
这其实就是通常数值计算中所采用的预估-修正方法。
假设两个浮点数经过预处理后,被除数和除数尾数扩展为32位(末8位为0)分别放入X 和Y中。
令YL为Y的低16位,并记YH=Y-YL。
显然YH≈Y,X/Y与X/YH相差不多:可见只需要在X/YH的基础上再乘以一个修正因子(YH-YL)/YH,就可以得到X/Y的一次校准值。