资源简介
使用6位数码管显示,可以实现加减乘除,当计算结果超过所能显示的位数时,显示错误。

代码片段和文件信息
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit wela=P2^7;
sbit dula=P2^6;
long in1in2outx;
int cntiflag;
uchar code num[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};
void delay(uint xms)
{
uint j;
for(i=xms;i>0;i--)
for(j=114;j>0;j--);
}
void display()
{
uchar w1w2w3w4w5w6f=0;
long y;
if(x>=0)
{
if(x>=1e6)
{
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[12];
dula=0;
delay(2);
P0=0xff;
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=0x3e;
dula=0;
delay(2);
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=num[0];
dula=0;
delay(2);
return;
}
w1=x%10;w2=x/10%10;w3=x/100%10;w4=x/1000%10;w5=x/10000%10;w6=x/100000%10;
if(f==1||w6)
{
f=1;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=num[w6];
dula=0;
delay(2);
}
if(f==1||w5)
{
f=1;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=num[w5];
dula=0;
delay(2);
}
if(f==1||w4)
{
f=1;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=num[w4];
dula=0;
delay(2);
}
if(f==1||w3)
{
f=1;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[w3];
dula=0;
delay(2);
}
if(f==1||w2)
{
f=1;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=num[w2];
dula=0;
delay(2);
}
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=num[w1];
dula=0;
delay(2);
}
else
{
y=labs(x);
if(y>=1e5)
{
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[12];
dula=0;
delay(2);
P0=0xff;
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=0x3e;
dula=0;
delay(2);
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=num[0];
dula=0;
delay(2);
return;
}
w1=y%10;w2=y/10%10;w3=y/100%10;w4=y/1000%10;w5=y/10000%10;
if(f==1||w5)
{
if(f==0)
{
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=0x40;
dula=0;
delay(2);
}
f=1;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=num[w5];
dula=0;
delay(2);
}
if(f==1||w4)
{
if(f==0)
{
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=0x40;
dula=0;
delay(2);
}
f=1;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=num[w4];
dula=0;
delay(2);
}
if(f==1||w3)
{
if(f==0)
{
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=0x40;
dula=0;
delay(2);
}
f=1;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[w3];
dula=0;
delay(2);
}
if(f==1||w2)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 100341 2013-02-17 17:51 新建文件夹\计算器.数码管.DSN
文件 7416 2013-02-17 21:27 新建文件夹\计算器(数码管.仿真).c
目录 0 2013-02-28 13:11 新建文件夹
----------- --------- ---------- ----- ----
107757 3
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 卡西欧工程计算器模拟器Casio FX
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 25.数码管显示0-99
- STC12C5A60S2 CH4521 驱动数码管 显示
- PIC 单片机定时器初值计算器
- 湍流k-e经验值计算器
- C51单片机汇编指令查询、学习工具集
- CH454键盘与数码管显示程序
- 基于8051单片机的红外接收程序
- PIC单片机延时计算器
- 基于EWB软件的数码管显示控制器
- 51单片机频率计(很简单)
- MVC模式实现的计算器
- 基于51单片机的智能温控器
- powerbuilder 计算器小程序
- 简单计算器的实现(数据结构)
- 基于51单片机的16*16点阵动态显示
评论
共有 条评论