AI大模型教程
一起来学习

【Proteus仿真】【51单片机】多功能计算器系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示
2、矩阵按键​
3、加减乘除,开方运算
4、带符号运算
5、最大 999*999

二、使用步骤

基于51单片机多功能计算器
包含:程序,仿真,文档等

三、硬件资源

1、51单片机核心模块
2、按键模块
3、LCD1602显示模块

四、软件设计

#include
#include
#include
#include
#include
sbit RS = P2^5; 
sbit RW = P2^6; 
sbit E  = P2^7; 

#define Data  P0//数据端口
//全局变量
float num1;//第一操作数num1     (初始为零)
float num2;//第二操作数num2     (初始为零)
char yun_flag=’+’;//运算符号 yun_flag    (默认为+ )
char key_last;//上次按键状态标志 key_last
char sqrt_flag;//开方键按下标志   sqrt_flag
unsigned long pos_flag=1;//小数位权pos_flag      (默认为1)
char neg_flag;//正负标志 neg_flag
char data c_num1[15]=” “;//c_num1 字符型第一操作数 (数组不定义大小与其他变量冲突)
char data c_num2[15]=” “;//c_num2 字符型第二操作数
char error;//运算法则错误;
char len;//小数点后位数
/*                    微秒延时函数                                */
/******************************************************************/
void DelayUs(unsigned char us)//delay us
{
 unsigned char uscnt;
 uscnt=us>>1;        /*12MHz频率*/
 while(–uscnt);
}
/******************************************************************/
/*                    毫秒函数声明                                */
/******************************************************************/
void DelayMs(unsigned char ms)
{
 while(–ms)
   {
     DelayUs(250);
     DelayUs(250);
     DelayUs(250);
     DelayUs(250);
   }
}
/******************************************************************/
/*                   写入命令函数                                 */
/******************************************************************/
void WriteCommand(unsigned char c)
{
 DelayMs(5);//操作前短暂延时,保证信号稳定
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
}
/******************************************************************/
/*                   写入数据函数                                 */
/******************************************************************/
void WriteData(unsigned char c)
{
 DelayMs(5);  //操作前短暂延时,保证信号稳定
 E=0;
 RS=1;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
 RS=0;
}
/******************************************************************/
/*                   写入字节函数                                 */
/******************************************************************/
void ShowChar(unsigned char pos,unsigned char c)
{
 unsigned char p;
 if (pos>=0x10)
    p=pos+0xb0; //是第二行则命令代码高4位为0xc
 else 
    p=pos+0x80; //是第二行则命令代码高4位为0x8
 WriteCommand (p);//写命令
 WriteData (c);   //写数据
}
/******************************************************************/
/*                   写入字符串函数                               */
/******************************************************************/
void ShowString (unsigned char line,char *ptr)
{
 unsigned char l,i;
 l=line  for (i=0;*(ptr+i)!=”;i++)
  ShowChar (l++,*(ptr+i));//循环显示16个字符
}
/******************************************************************/
/*                   初始化函数                                   */
/******************************************************************/
void InitLcd()
{
 DelayMs(15);
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x38); //display mode
 WriteCommand(0x06); //显示光标移动位置
 WriteCommand(0x0c); //显示开及光标设置
 WriteCommand(0x01); //显示清屏

}

五、实验现象

演示视频:

文章来源于互联网:【Proteus仿真】【51单片机】多功能计算器系统

相关推荐: 百度文心一言ERNIE-4.5-0.3B-PT开源大模型本地私有化部署

号外号外!6月30号,百度文心一言官宣开源ERNIE 4.5大模型!!! 一收到这个消息,博主就立马从GitCode拉了个模型,本地私有化部署体验了一下,一个字,酷! 鉴于绝大多数玩家的设备条件有限,博主选择CPU就可以跑的 ERNIE-4.5-0.3B-PT…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 【Proteus仿真】【51单片机】多功能计算器系统
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们