标题:
单片机串口计算器源码
[打印本页]
作者:
kaiaki123
时间:
2017-7-21 15:48
标题:
单片机串口计算器源码
这个计算器的结果是在电脑串口上面显示的
串口计算器所有资料51hei提供下载:
串口练习.zip
(22.33 KB, 下载次数: 37)
2017-7-21 15:48 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
// # include <stdlib. h>
#include<math.h>
sbit dula=P2^6; //段选信号的锁存器控制
sbit wela=P2^7; //位选信号的锁存器控制 ,0x77,0x7c,0x39,0x5e,0x79,0x71
bit flag0=0; //"="号按键标志
bit flag1=0; //"+"号按键标志
bit flag2=0; //"-"号按键标志
bit flag3=0; //"*"号按键标志
bit flag4=0; //"^"号按键标志
bit flag5=0; //清楚标志
#define uint unsigned int
#define uchar unsigned char
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int j,t,sum,s1=0,s2=0,a1,a2,a3;
uint m;
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=90;n>0;n--);
}
void display(uint s)
{
P0=0xfe;
wela=1;
wela=0;
P0=table[s/100];
dula=1;
dula=0;
delay(6);
P0=0xfd;
wela=1;
wela=0;
P0=table[s%100/10];
dula=1;
dula=0;
delay(6);
P0=0xfb;
wela=1;
wela=0;
P0=table[s%10];
dula=1;
dula=0;
delay(6);
}
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void main(void)
{
InitUART();
while(1)
{
display(sum);
}
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
m= SBUF;
SendOneByte(m);
if((m-0x30)>=0 && (m-0x30)<=9)
{
s1=s1*10+(m-0x30);
// display(m);
}
switch(m)
{
case 0x2B:{ s2=s1;s1=0;flag1=1;}break; //加法
case 0x2a:{s2=s1; s1=0;flag3=1;}break; //乘法
case 0x2d: {s2=s1; s1=0;flag2=1;}break; //减法
case 0x5e: {s2=s1; s1=0;flag4=1;}break; //幂运算
case 0x3d: flag0=1; break; //"="号按键
case 0xFF: flag5=1; break; //"/"号按键
default: break;
}
if(flag0==1)
{ if(flag1==1)
{
sum=0;
sum=s1+s2;
}
else if(flag3==1)
{
sum=s1*s2;
}
else if(flag2==1)
{
sum=s2-s1;
}
else if(flag4==1)
{
sum=pow(s1,s2);
}
display(sum);
a1=sum/10;
a2=sum%10;
SendOneByte(a1+0x30);
SendOneByte(a2+0x30);
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
作者:
卢卡
时间:
2020-1-1 23:39
本帖最后由 卢卡 于 2020-1-2 00:00 编辑
感谢,如果加上图片更好
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1