mega16单片机科学计算器程序源代码

发布者:轻松自在最新更新时间:2020-02-03 来源: elecfans关键字:mega16  单片机  科学计算器 手机看文章 扫描二维码
随时随地手机看文章

支持最大八位的无符号长整型数值计算

mega16单片机科学计算器程序源代码

#include《iom16v.h》

#include《macros.h》

//#include《stdio.h》

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define EA SREG|=BIT(7)

uchar temp,old,key_turn,flag=0;

ulong datA=0,datB=0;

const uchar wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

const uchar tab[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};

extern uchar dat[8]={0,0,0,0,0,0,0,0};

extern uchar dat_right[]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};

void delay(uint z)

{

while(z--);

}

void display(uchar z)

{

uchar i;

while(z--)

for(i=0;i《8;i++)

{

PORTB=wela[i];

PORTD=tab[dat_right[i]];

delay(30);

PORTB=0XFF;

}

}

void clean_junk()

{

uchar i,p=0;

for(i=0;i《8;i++)

{

dat_right[i]=0x0a;

}

for(i=0;i《8;i++)

{

if(dat[i]》0)p=1;

if(p)dat_right[i]=dat[i];

}

}

void delete()

{

uchar i;

for(i=0;i《8;i++)

{

dat[i]=0;

}

clean_junk();

}

void disan_he()

{

ulong i;

i=dat[0]*1e7+dat[1]*1e6+dat[2]*1e5+dat[3]*1e4+dat[4]*1e3+dat[5]*1e2+dat[6]*1e1+dat[7];

if(flag)datB=i;

else datA=i;

flag=1;

delete();

}

void disan_fen()

{

dat[0]=datA/1e7;

dat[1]=datA%10000000/1000000;

dat[2]=datA%1000000/100000;

dat[3]=datA%100000/10000;

dat[4]=datA%10000/1000;

dat[5]=datA%1000/100;

dat[6]=datA%100/10;

dat[7]=datA%10;

flag=0;

}

void move()

{

uchar i;

if(temp》0&temp《0x0b)

{

for(i=0;i《8;i++)

{

dat[i]=dat[i+1];

}

if(temp==0x0a){dat[0]=0;temp=0;}

dat[7]=temp;temp=0;

}

}

void clean()

{

uchar i;

flag=0;

for(i=0;i《8;i++)

{

dat[i]=0;

}

temp=0;

old=0;

datA=0;

datB=0;

}

void disan()

{

if(temp》0&temp《0x11)switch(temp)

{

case 0x0e:clean();break;

case 0x0b:old=temp;temp=0;disan_he();break;

case 0x0c:old=temp;temp=0;disan_he();break;

case 0x0d:old=temp;temp=0;disan_he();break;

case 0x10:old=temp;temp=0;disan_he();break;

case 0x0f:switch(old)

{

case 0x0b:if(flag)disan_he();datA=datA/datB;old=0;temp=0;disan_fen();break;

case 0x0c:if(flag)disan_he();datA=datA*datB;old=0;temp=0;disan_fen();break;

case 0x0d:if(flag)disan_he();datA=datA-datB;old=0;temp=0;disan_fen();break;

case 0x10:if(flag)disan_he();datA=datA+datB;old=0;temp=0;disan_fen();break;

default:temp=0;old=0;break;

}break;

default:move();temp=0;break;

}

// disan_fen();delete();

}

void diskey()

{

uchar i,n;

const uchar code[]={0xFE,0xFD,0xFB,0xF7};

if(temp==0x00)for(i=0;i《4;i++)

{

PORTA=code[i];

temp=PINA;

if(~temp&0xf0)i=6;

while(~PINA&0xf0)display(1);

PORTA=0xff;

}

if(temp》0x10)switch(temp)

{

case 0xEE:temp=0x07;break;

case 0xDE:temp=0x08;break;

case 0xBE:temp=0x09;break;

case 0x7E:temp=0x0b;break;

/////////////////////////

case 0xED:temp=0x04;break;

case 0xDD:temp=0x05;break;

case 0xBD:temp=0x06;break;

case 0x7D:temp=0x0c;break;

//////////////////////////

case 0xEB:temp=0x01;break;

case 0xDB:temp=0x02;break;

case 0xBB:temp=0x03;break;

case 0x7B:temp=0x0d;break;

////////////////////////

case 0xE7:temp=0x0e;break;

case 0xD7:temp=0x0a;break;

case 0xB7:temp=0x0f;break;

case 0x77:temp=0x10;break;

/////////////////////////

default:temp=0x00;break;

}

disan();

}

void main()

{

MCUCSR|= 1《《JTD; //禁用jtag功能

MCUCSR|= 1《《JTD; //再次禁用jtag功能生效

DDRC=0XFF;

DDRB=0XFF;

DDRD=0XFF;

DDRA=0X0F;

while(1)

{

display(1);

diskey();

clean_junk();

}

}


关键字:mega16  单片机  科学计算器 引用地址:mega16单片机科学计算器程序源代码

上一篇:基于ATmega8的无刷直流电机调速控制系统
下一篇:单片机USB-ISP下载线制作详细教程

推荐阅读最新更新时间:2024-11-13 13:28

基于AT89C51单片机的无级调光系统的实现
在生活中有很多可以自主调节挡位的设备,比如台灯的亮度、玩具车的速度、风扇的转速等等。它们调节档位的方式各有不同,有些是改变功率,有些是改变动力,但都离不开对激励或输入信号的改变,我们这里简单介绍一下对LED灯的无级调光的实现,可以自己动手做一个可变亮度的小灯。 一、所需器材: AT89C51×1、100Ω定值电阻×1、LED×1、示波器×1、滑动变阻器×1、直流电压表×1、ADC0808×1、500kHz时钟信号×1、+5V直流电源×2。 主要器材介绍:(我们这里只做简单介绍,各接口定义可自行查阅资料——反正这里也用不着) (1)AT89C51:AT89C51是一种带4K字节FLASH存储器(FPEROM—Flas
[单片机]
基于AT89C51<font color='red'>单片机</font>的无级调光系统的实现
基于单片机的智能控温风扇系统设计
本文设计的多功能自动调温控制系统。该系统采用了DS18B20温度传感器检测电风扇周围环境温度,并且根据用户设定的调温模式自动识别模式,若是自动调温模式,则会控制电风扇转速根据温度的变化而作出相应的温度调整。 系统模块主要包括:主控模块、电源电路、MCU控制模块、温度采集模块、无线遥控模块、电机模块、数码管显示模块。 系统组成:以STC90C52单片机为基础,温度采集选用DSl8B20数字温度传感器,实现无线遥控远程控制需要通过VS1838一体化红外接收头来实现功能,电机使用lm298电机驱动,显示功能通过lcd12864来实现。 01 总体方案设计 本系统的总体设计思路是以STC90C52单片机为基础,温度采集选用DS
[单片机]
基于<font color='red'>单片机</font>的智能控温风扇系统设计
单片机超声波视觉识别系统的硬件设计
  随着计算机技术、自动化技术和工业机器人的不断发展和广泛应用,视觉识别在工业中变得十分重要。例如,在机械加工自动化装配、检测、分类、加工与运输等过程中,对随意放置的工件作业,必须对工件的位置、形状、姿势、种类自动地进行判别。特别是在工件的运输过程中,问题显得更为复杂与困难。      近年来,随着工业自动化生产和装配过程中自动识别的需要,出现了多种视觉识别方法。根据其视觉信息载体的不同,可归纳为光学方法和 超声波 方法。光学方法在某些应用领域有其局限性;相比之下,超声波方法具有突出的优点:      ●超声波的传播速度仅为光波的百万分之一,因此可以直接测量较近目标的距离,纵向分辨率较高;      ●超声波对色彩、光照度不敏感,
[单片机]
<font color='red'>单片机</font>超声波视觉识别系统的硬件设计
单片机扩展技术
单片机内部存储器和I/o口资源有限,多数情况下需要外部扩展。 一、扩展方法和内容 二、总线介绍 单片机并行扩展的典型结构是总线结构。 各扩展部件通过总线与单片机连接起来,相当于系统中各部件挂在总线上,分时利用总线与CPU通讯。 当选中某部件时,可对该部件进行读写及控制,而其它部件与总线间处于“高阻态”,相当于与总线断开。 单片机系统的三总线构造方法如下: 以P0口线作数据总线/低位地址总线4以P2口线作高位地址总线 采用功能引脚形成控制总线 以P0口线作数据总线/低位地址总线:先由P0口线作地址总线,把低8位地址送锁存器,由锁存器提供给系统;然后再将P0口线作数据总线读写数据,从而实现地址总线的低8位地址信号和数据总线
[单片机]
关于MCS-51单片机实现PWM的方法
关于MCS-51单片机实现PWM的方法 PWM 是 脉冲宽度调制 的意思。 PWM 实际上是在单片机的某个引脚输出一系列的矩形波,其周期一般是固定的;而其高电平、低电平所占用的时间,是可以受控调整的。高电平、低电平所占用的时间之比,称为占空比,其值为0~1之间。PWM 的应用很广,简单的说,它可以控制灯光的亮度、可以控制直流电机的转速,甚至还可以输出语音信号。 新型的单片机,往往都含有硬件的 PWM 模块,编写程序就很简单;而老式的MCS-51系列,就不具备这个条件。 其实,在没有 PWM 硬件的单片机上实现 PWM,也并不难,只需一个定时器,令其工作在中断方式即可。下面以网上的一个题目为例,说明实现 PWM 方法。 题目链接:ht
[单片机]
8051单片机指令定义详解——ACALL addr11(1)
8051单片机指令定义详解 (ACALL addr11) 符号说明 符 号 说 明 表示数据传送方向 () 表示单元的内容 (()) 表示间接寻址的内容 rrr 8个工作寄存器之一;000=R0,001=R1等 dddddddd 数据位 aaaaaaaa
[单片机]
单片机跑马灯强化版
程序如下: #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char//宏定义 void delay(uint a);//声明延时函数 uchar c,d; sbit P00=P0^0; sbit P30=P3^0; sbit P31=P3^1; sbit P32=P3^2;//位操作 bit key_flag=0;//位定义 void main() { uint e,h; P00=0; delay(100); P00=1; delay(500); P00=0; TMOD=1;//设定定时器工作方式为1 T
[单片机]
【GD32 MCU 移植教程】7、从 GD32F10x 移植到 GD32E103
1. 前言 本应用笔记旨在帮助您快速将基于 GD32F10x 2.0 版本及以上固件库开发的应用程序从GD32F10x 系列微控制器移植到 GD32E103 系列微控制器。GD32E103 和 GD32F10x 系列相比,考虑软硬件兼容性,从 Flash 和 SRAM 容量,包括外设模块的增强性能上来看,E103 最接近 F105。 开始前您需要安装 GD32E103 关于 KEIL 或 IAR 的插件,在工程选项的器件条目中选择GD32E103 对应型号,添加 GD32E103 的 Flash 下载算法。 为了更好的利用本应用笔记中的信息,您需要对 GD32 系列微控制器有比较深刻的了解。您可在 GD32MCU 资料网站 下
[单片机]
【GD32 <font color='red'>MCU</font> 移植教程】7、从 GD32F10x 移植到 GD32E103
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved