• 大小: 14KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: 89C51  计算器  

资源简介

基本功能: 基本四则运算 小数点后至少包含2位 实现任意数平方,开方,三次方。开三次方 实现0到1之间随机数,小数点后至少3位 计算响应时间小于1秒 扩展功能 实现自然对数,和以10为底的对数 三角函数,反三角函数 用科学技术法显示

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 

#define uchar unsigned char
#define uint  signed int

#define T_CONVER   0x44
#define T_CONFIG   0x5f
#define T_READ     0xbe
#define T_WRITE    0x4e
#define T_ROM_JMP  0xcc
#define T_COPY_E2  0x48
#define T_RECALL_E2 0xb8
#define T_cont     0.0625

#define pi          3.1415926 

bit  T_sign;
bit  flag2=1;         //18B20驱动程序的标准位
sbit  DQ=P3^6;        //单片机与18B20的通信端
sbit  a_0=ACC^0;
sbit  fm=P3^7;

sbit  LCM_RS=P3^0;
sbit  LCM_E=P3^1;

typedef unsigned char BYTE;
typedef unsigned char WORD;
typedef bit BOOL;

uchar  temp0temp1temp2temp3;
uchar  keycalc=0;  
uchar  a[10];          //储存计算器运算过程中的数据
uchar  alen;          //字符串的长度
float  one=0result1=0;  
float  temp=0;
uchar t_bai;
uint  flag=0;        //计算器加减乘除的标准位           
uchar  shuzhi[6]={0};   // 用于储存温度的数组
uchar  idata seg[14]={‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘‘:‘‘.‘0xDF‘C‘};     // 0xDF 就是温度的 °号
uchar *jianzero(uchar *str);
uchar   wz=4h;
uchar   sjs[]={‘0‘‘4‘‘2‘‘3‘‘5‘‘7‘‘6‘‘9‘‘1‘‘8‘‘3‘‘5‘‘4‘‘2‘‘0‘‘3‘‘1‘‘6‘‘7‘‘9‘‘8‘‘5‘‘3‘};
uchar   ss[]={0.13240.2324};

/*****************************************************
延时操作函数
*********************************************************/
delay1ms(uint t)
{ uchar ij;
for(i=0;i     for(j=0;j<120;j++);
}

void delay1( uint time)
{  
while(time--); 
}
void delay10ms(void) //延时程序
{
unsigned char ij;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay(BYTE ms)
{
  BYTE i;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
//长延时
void Delay400Ms(void)
{
uchar i = 5;
uint j;
while(i--)
{
j=3267;
while(j--);
};
}

void speaker(void)
{
  fm=0;
  Delay400Ms();
  fm=1;
  Delay400Ms();
}

/*****************************************************
18B20 驱动函数
*********************************************************/

void DS18B20_send(uchar out_data)
{  
uchar i=0;
   for(i=8;i>0;i--)
    { DQ=0;
      ACC=out_data&0x01;
      DQ=a_0;
      delay1(5);
      DQ=1;
      out_data>>=1;
    }
}
     
 
void DS18B20_init()
{
uchar i=1;
  while(flag2==0)
    {
DQ=1;
      delay1(8);
      DQ=0;
      delay1(52);
      DQ=1;
     delay1(2);
      while(1)
        {
    i=DQ;
           if(i==0)
            {
flag2=1;
             delay1(10);
              break;
            }
        }
     }
     flag2=0;
}
uchar DS18B20_read(void)

 uchar iin_data;
     in_data=0;
     for(i=8;i>0;i--)
     {
  DQ=0;
       in_data>>=1;
       DQ=1;
      if(DQ) in_data|=0x80;
       delay1(4);
     }
     return(in_data);
}
void ReadTemperature()
{  
   uint y;
   uchar T_L=0;
   uchar T_H=0;
   uchar k;
   DS18B20_init();
   DS18B20_send(T_ROM_JMP);
   DS18B20_send(T_CONVER

评论

共有 条评论