教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

基于 AT89C52 单片机的计算器设计(2)

来源:网络收集 时间:2025-12-29
导读: #define uint unsigned int sbit pinRS = P2^6; //复位端 sbit pinRW= P2^5; //写数据端 sbit pinE= P2^7; //使能端 //#include LCD1602.h void shortdelay(uchar i)//短延时 { for(;i0;i--); } //长延时 void long

#define uint unsigned int

sbit pinRS = P2^6; //复位端

sbit pinRW= P2^5; //写数据端

sbit pinE= P2^7; //使能端

//#include "LCD1602.h"

void shortdelay(uchar i)//短延时

{

for(;i>0;i--);

}

//长延时

void longdelay(uint i)

{

uint j;

for(;i>0;i--)

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

{for(j=100;j>0;j--);}

}

//延时程序

void delay(int i)

{int j;

for(;i>0;i--)

for(j=0;j<100;j++);

}

//初试状态

void io_init()

{P1=0xff;

}

//---------------------------键盘扫描部-----------------------------//

unsigned char key_scan()

{ unsigned char key;

unsigned char temp;

uint flag;

io_init(); //初始化

P1=0xf0; //高四位输入 行为高电平 列为低电平 flag=0;

loop: temp=P1^0xf0; //屏蔽低四位 分

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

while(temp)

{

P1=0xfe;

delay(1);

if((P1&0xfe)!=0xfe)

switch(P1)

{

case 0xee: key=0x11;flag=1;break;

case 0xde: key=0x12;flag=1;break;

case 0xbe: key=0x13;flag=1;break;

case 0x7e: key=0x14;flag=1;break;

}

if(flag)

goto exit;

else

P1=0xfd;

delay(1);

if((P1&0xfd)!=0xfd)

switch(P1)

{

case 0xed: key=0x21;flag=1;break;

case 0xdd: key=0x22;flag=1;break;

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

case 0xbd: key=0x23;flag=1;break;

case 0x7d: key=0x24;flag=1;break;

}

if(flag)

goto exit;

else

P1=0xfb;

delay(1);

if((P1&0xfb)!=0xfb)

switch(P1)

{

case 0xeb: key=0x31;flag=1;break;

case 0xdb: key=0x32;flag=1;break;

case 0xbb: key=0x33;flag=1;break;

case 0x7b: key=0x34;flag=1;break;

}

if(flag)

goto exit;

else

P1=0xf7;

delay(1);

if((P1&0xf7)!=0xf7)

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

switch(P1)

{

case 0xe7: key=0x41;flag=1;break;

case 0xd7: key=0x42;flag=1;break;

case 0xb7: key=0x43;flag=1;break;

case 0x77: key=0x44;flag=1;break;

}

exit: return key;

}

if(temp==0)

goto loop;

}

//--------------------------------- 键盘扫描完 //--------------------------------- 显示初始化 //P0 口初始化

void initpindata(bit i)

{

//uchar pindata,pinRS,pinRW,pinE;

if(i==1) P0=0xff;

else P0=0X00;

}

//数据命令选择设置

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

void setRS(bit i)

{

if(i==1) pinRS=1; //RS高电平选择数据寄存器 else pinRS=0; //RS低电平选择指令寄存器

}

//读写操作控制

void setRW(bit i)

{

if(i==1) pinRW=1; //RW高电平选择读

else pinRW=0; //RW低电平选择写

}

//使能信号

void setE(bit i)

{

if(i==1) pinE=1;

else pinE=0; // 下降沿执行

}

//读BF 以及AC 的值

uint read_BF_AC() //忙标志位和地址计数器AC命令 BF为1表示忙

{

uint temp;

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

initpindata(1); //初始化

setRS(0); //数据命令选择设置

setRW(1); //读写操作控制设置

setE(1); //以上是忙标志设置 shortdelay(1);

temp=P0;

shortdelay(10);

setE(0); //E下降沿开始执行

return(temp);

}

//判忙

bit statuscheck()

{

return((bit)(read_BF_AC()&0x80)); //

}

//写指令函数

void writeinstruc(uint instruc)

{

while(statuscheck());

initpindata(0);

setRS(0);

setRW(0); //00写指令 判最高位是否为1

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

setE(0);

P0=instruc;

//short delay(1);

setE(1);

shortdelay(10);

setE(0); //下降沿开始执行

}

//写数据到RAM

void writedata(uint data1)

{

initpindata(0);

setRS(1);

setRW(0); //10写数据

setE(0);

P0=data1;

setE(1);

shortdelay(10);

setE(0); //下降沿开始执行

}

//从RAM 中读数据函数

uint readdata(void)

{

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

uint temp;

initpindata(1);

setRS(1);

setRW(1); //数据寄存器读出

setE(1);

…… 此处隐藏:3605字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于 AT89C52 单片机的计算器设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/39339.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)