资源简介
使用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
相关资源
- 51单片机485(modbus协议)通信程序
- 基于AT89c51单片机的数字温度测量及显
- 51单片机播放音乐、电子琴、快进
- 51单片机1602+ADIIC+按键
- 基于51单片机和lcd1602的adc0804测电压电
- 数独计算器
- 个税计算微信小程序
- 如何利用51单片机输出PWM波
- 51单片机数字时钟-proteus仿真文件及
- MCS-51单片机实用子程序库
- 89C51FFT蝶形算法
- 基于51单片机定时器实现的数字时钟
- stm32+MAX7219数码管模块显示程序 spi接口
- 51单片机AD0804模数转换检测电压并显示
- 最方便好用的余数计算器
- 24C02存储显示计时时间
- 51单片机电子闹钟程序及仿真图
- LabView 大作业程序 简单的计算器
- 基于51单片机的温度控制系统PCB板设计
- VC计算器的详细课程设计
- 51单片机课程设计电子时钟设计
- 基于51单片机的可调直流稳压器
- 51单片机控制双舵机模拟云台
- 8255扩展4*4按键
- 单片机万年历制作全套资料
- 基于ArcEngine的栅格计算器开发
- 51单片机_DAC0832_多波形发生器汇编频率
- 不确定度计算器
- 51单片机实现蜂鸣器警车、救护车、消
- 基于51单片机RS485多机通讯
评论
共有 条评论