资源简介
单片机设计计算器 实现加减乘除简单功能
能处理四个字节的数据
代码片段和文件信息
#include
#define uint unsigned int
#define uchar unsigned char
#define PinData P0
#define ClearScreen() WriteInstruc(0x01)
#define DispControl(temp) WriteInstruc(temp)
#define FunctionSet(temp) WriteInstruc(temp)
#define SetDDRAM_Add(Address) WriteInstruc(0x80 | Address)
#define CursorReturn() WriteInstruc(0x02)
sbit PinRS=P2^0;
sbit PinRW=P2^1;
sbit PinE=P2^2;
int r=0;
int a;
int reset=0; //结束一次运算后复位标志位
int f1=0; //结果是负数标志位
int yun; //yun==1+ 2- 3* 4/
int o[16];
char idata e[16]=“system error“;
char idata t[16] ;
char idata m[16] ;
unsigned long int idata u=0;
unsigned long int idata v=0;
unsigned long int idata w=0;
void delay(int i) //误差 0us 延时
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<100;j++);
}
void ShortDelay(int i)
{
for(;i>0;i--) ;
}
void InitP0(bit i)
{
if(i==1) P0 = 0xff;
else P0 = 0x00;
}
char Read_BF_AC()
{
uchar temp;
InitP0(1);
PinRS=0;
PinRW=1;
PinE=0;
PinE=1;
ShortDelay(1);
temp = PinData;
ShortDelay(10);
PinE=0;
PinRW=0;
PinRS=1;
return(temp);
}
bit StatusCheck()
{
return((bit)(Read_BF_AC() & 0x80));
}
void WriteData(char data1)
{
InitP0(0);
PinRS=1;
PinRW=0;
PinE=0;
PinData = data1;
PinE=1;
ShortDelay(10);
PinE=0;
PinRW=1;
PinRS=0;
}
void WriteInstruc(char Instruc)
{
while(StatusCheck());
InitP0(0);
PinRS=0;
PinRW=0;
PinE=0;
PinData =Instruc;
PinE=1;
ShortDelay(10);
PinE=0;
PinRW=1;
PinRS=1;
}
void DispCharacter(int x int y char data1)
{
int temp;
while(StatusCheck()); //若LCD控制器忙,则等待
temp = y & 0x0f;
x &= 0x01;
if(x) temp |= 0x40;
SetDDRAM_Add(temp); //设置显示位置
WriteData(data1);
}
void soft_reset(void) //复位
{
((void (code *) (void)) 0x0000) ();
}
char xunzuo(char c) //0xfe左移
{
if(c&0x80)
{
c=c<<1;
c=c|0x01;
}
else
{ c<<=1;}
return(c);
}
unsigned long int pow(int y)
{
int i;
unsigned long int x=1;
for(i=0;i {
x=x*10;
}
return x;
}
void systemerror()
{
int y0q0=3;
ClearScreen();
for(y0=0;y0<12;y0++)
{
DispCharacter(0q0++e[y0]);
}
delay(2000);
ClearScreen();
soft_reset();
}
void qian() //计算符号前面的数值
{
int i;
unsigned long int idata tx;
u=0;
if(r-1>10) { systemerror();}
if(r-1==10)
{
if((t[0]-48)>4&&(t[1]-48)>2&&(t[2]-48)>9&&(t[3]-48)>4&&(t[4]-48)>9&&(t[5]-48)>6&&(t[6]-48)>7&&(t[7]-48)>2&&(t[8]-48)>9&&(t[9]-48)>5) { systemerror();}
}
for(i=r-2;i>=0;i--)
{
tx=u;
u=u+((unsigned long int)(t[i]-48)*(pow(r-i-2)));
if(u }
}
void hou( ) //计算符号后面的数值
{
int i;
unsigned long int idata ty;
v=0;
if(r-1-a>10) { systemerror();}
if(r-1-a==10)
{
if((t[a]-48)>4&&(t[a-1]-48)>2&&(t[a-2]-48)>9&&(t[
- 上一篇:订单号随机生成器
- 下一篇:变速齿轮2.2.zip
相关资源
- 超级房贷计算器EXCEL
- STM32晶振选型-晶振不起振-晶振及负载
- QT计算器界面的ui文件
- 超完美的赔率计算器3.0
- QT个税计算器
- 8255/273实现六位十进制计算器
- 最新版地图分幅编号计算器
- 基于MVC的Web应用程序-个人所得税计算
- IOS计算器源代码
- 基于51单片机的简单计算器数码管显示
- BigDecimal 加减乘除工具包
- 数独计算器
- 个税计算微信小程序
- 最方便好用的余数计算器
- LabView 大作业程序 简单的计算器
- VC计算器的详细课程设计
- 基于ArcEngine的栅格计算器开发
- 不确定度计算器
- 简单计算器 及GridLayout布局
- msp430串口计算器
- 一元稀疏多项式计算器带界面
- 微信小程序Demo:汇率计算器
- 基于stc89c52单片机的智能计算器代码
- 51单片机计算器
- 设计模式计算器的设计
- 汇编实现一位十进制加减乘除四则运
- 用51单片机实现计算器功能
- 单片机lcd矩阵键盘计算器
- QT 可使用的简易计算器
- QT计算器界面和计算器功能实现
评论
共有 条评论