带小数点的c语言数码管显示,数码管怎么显示小数点

这篇博客介绍了如何使用C语言在数码管上显示带有小数点的数字,并实现基本的算术运算。通过定义数码管显示数组和处理按键输入,程序能够接收数字和运算符,更新数码管显示结果。中断服务函数用于处理等于号键的按下,以进行计算操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我写的比较烂,能想到的都写了,结果显示还没有写

#include "reg52.h"

typedef unsigned char u8;

typedef unsigned int u16;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

u8 code shumaguan[]={0x3f,0x06,0x5b,0x4f,     //0~3

0x66,0x6d,0x7d,0x07,    //4~7

0x7f,0x6f,0x00,0x00,    //8~b

0x00,0x00,0x00,0x00 }; //c-f

#define keychoice P1

#define keyoutput P0

u8 keyvalue;

u8 a=0;

int a;                 //第一个数字

int b;             //第二个数字

int c;             //结果

char flag;

void delay(u8 i)

{

while(i--);

}

void interrupt0()

{

EA=1;

INT0=1;

EX0=1;

}

void dtdisplay()

{

u8 i;

for(i=1;i<9;i++)

{

switch(result)

{

case(1):LSA=0;LSB=0;LSC=0;break;

case(2):LSA=1;LSB=0;LSC=0;break;

case(3):LSA=0;LSB=1;LSC=0;break;

case(4):LSA=1;LSB=1;LSC=0;break;

case(5):LSA=0;LSB=0;LSC=1;break;

case(6):LSA=1;LSB=0;LSC=1;break;

case(7):LSA=0;LSB=1;LSC=1;break;

case(8):LSA=1;LSB=1;LSC=1;break;

}

P0=shumaguan;

delay(100);

P0=0x00;

}

}

void keydown()

{

keychoice=0x0f;

if(keychoice!=0x0f)

{

delay(1000);

if(keychoice!=0x0f)

{

keychoice=0x0f;

switch(keychoice)

{

case(0x07):keyvalue=0;break;

case(0x0b):keyvalue=1;break;

case(0x0d):keyvalue=2;break;

case(0x0e):keyvalue=3;break;

}

keychoice=0xf0;

switch(keychoice)

{

case(0x70):keyvalue=keyvalue;break;

case(0xb0):keyvalue=keyvalue+4;break;

case(0xd0):keyvalue=keyvalue+8;break;

case(0xe0):keyvalue=keyvalue+12;break;

}

//加法

if(keyvalue==10)

{

keyvalue='+';

}

//减法

if(keyvalue==11)

{

keyvalue='-';

}

//乘法

if(keyvalue==12)

{

keyvalue='*';

}

//除法

if(keyvalue==13)

{

keyvalue='/';

}

//小数点

if(keyvalue==14)

{

keyvalue='.';

}

//等于

if(keyvalue==15)

{

keyvalue='=';

}

while((a<50)&&(keychoice!=0xf0))

{

delay(1000);

a++;

}

}

}

}

void keydeal()

{

if(keyvalue==10)

{

result=D_shu+E_shu;

}

if(keyvalue==11)

{

result=D_shu-E_shu;

}

if(keyvalue==12)

{

result=D_shu*E_shu;

}

if(keyvalue==13)

{

result=D_shu/E_shu;

}

if(keyvalue==15)

{

interrupt0();

}

}

void main()

{

LSA=0;

LSB=0;

LSC=0;

while(1)

{

keydown();

keyoutput=shumaguan[keyvalue];

}

}

void Int0() interrupt 0

{

if(keyvalue==15)

{

delay(1000);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值