stc89c52单片机实现小数的电子计算器

时间: 2023-12-08 10:06:57 浏览: 47
要实现一个带有小数的电子计算器,需要以下步骤: 1. 确定电路结构:可以选择使用键盘、LCD显示屏、运算符按键等部件,需要根据实际需要确定所需部件。 2. 程序设计:需要编写程序来获取用户输入,并进行运算,最后将结果显示到LCD显示屏上。在程序中需要实现浮点数的运算,可以通过数据结构来实现。 3. 硬件连接:将电路连接好,并通过STC89C52单片机来控制各个部件。 下面是一个简单的示例程序,可以实现加法和乘法运算: ```c #include <STC89C5xRC.H> #define KEY P1 #define LCD P0 int main(void) { float num1, num2, result; unsigned char op; while (1) { // 获取用户输入 num1 = get_num(); op = get_op(); num2 = get_num(); // 进行运算 switch (op) { case '+': result = num1 + num2; break; case '*': result = num1 * num2; break; default: result = 0; break; } // 显示结果 display(result); } } // 获取用户输入数字 float get_num() { float num = 0.0; unsigned char key; // 等待用户输入 do { key = KEY; } while (key == 0xFF); // 读取数字 while (key != '#') { if (key >= '0' && key <= '9') { num = num * 10 + (key - '0'); } else if (key == '.') { num /= 10; } key = KEY; } return num; } // 获取用户输入运算符 unsigned char get_op() { unsigned char op = '+'; unsigned char key; // 等待用户输入 do { key = KEY; } while (key == 0xFF); // 读取运算符 if (key == '*') { op = '*'; } return op; } // 显示结果到LCD屏幕上 void display(float num) { unsigned char str[16]; // 将数字转换为字符串 sprintf(str, "%.2f", num); // 在LCD屏幕上显示 LCD = 0x80; for (int i = 0; i < 16; i++) { LCD = str[i]; } } ``` 这个程序只是一个简单的示例,可以根据需要进行扩展和优化。

相关推荐

最新推荐

recommend-type

基于stc89c52单片机的温控风扇.docx

实现4位数码管上显示温度,ds18b20温度传感器实时采集温度,由单片机最小系统开发板控制L289n驱动5v顺源风扇实现转动。挡为3档,一档:25℃下风扇停止转动,25~30℃之间风扇轻微转动,30℃以上风扇快速转动。
recommend-type

基于AT89C52单片机的语音录放系统实现

文中给出以单片机AT89C52为核心构成的语音录放系统原理图及软件流程。通过实验验证该语音录放系统录音和放音效果良好,单片机控制相当准确。在应用方面,将该系统作为一个模块可与其他功能电路集成,实现各种功能...
recommend-type

基于STC89C52单片机的智能红外遥控系统

基于STC89C52单片机的智能红外遥控系统 毕业设计论文 包含了 LCD12864 DS1302 DS18B20 HS0038 继电器
recommend-type

基于STC89C52的智能全自动洗衣机控制系统设计

为了降低全自动洗衣机的运行功耗、提高运行的稳定性、降低制造成本以及更方便的操作,设计了一种基于STC89C52单片机的全自动洗衣机控制系统。该控制系统由蓝牙部分、红外热释部分、LCD1602液晶部分和直流电机等组成...
recommend-type

基于STC89C51单片机的出租车计费器设计

本文以单片机STC89C51 为核心设计一款出租车计费器, 使能够实现里程及对应价格的显示,由于采用芯片的自动定时计数,所以能够准确的计算出总的行车里程并能转换成对应的价格来,这样能够避免出租车司机作弊的可能性...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用matlab绘制高斯色噪声情况下的频率估计CRLB,其中w(n)是零均值高斯色噪声,w(n)=0.8*w(n-1)+e(n),e(n)服从零均值方差为se的高斯分布

以下是用matlab绘制高斯色噪声情况下频率估计CRLB的代码: ```matlab % 参数设置 N = 100; % 信号长度 se = 0.5; % 噪声方差 w = zeros(N,1); % 高斯色噪声 w(1) = randn(1)*sqrt(se); for n = 2:N w(n) = 0.8*w(n-1) + randn(1)*sqrt(se); end % 计算频率估计CRLB fs = 1; % 采样频率 df = 0.01; % 频率分辨率 f = 0:df:fs/2; % 频率范围 M = length(f); CRLB = zeros(M,1); for
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。