Advertisement

该程序基于51微控制器的串口计算功能。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
#include #include unsigned char tmp; unsigned char data1 = 0; unsigned int num1 = 0, num2 = 0, num3 = 0, fu = 0; int q[100] = {0}; int printf_flag = 0; int a = 0; int c = 0; void send_char(unsigned char txd); void send(unsigned int u); void main() { // EA = 1; //总开关 (启用中断使能位,开启所有中断) // ES = 1; //IE寄存器 通信开关 (启用串口中断使能位,允许串口数据接收) SCON = 0x50; // 设定串行口工作方式 0101 0000 工作方式1 (设置串口的波特率和数据格式) TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 (配置定时器1为8位自动重载模式,用于产生波特率) TH1 = 0xFD; // 波特率9600 TL1 = 0xFD; (设置定时器1的高字和低字,以实现9600波特率) PCON = 0x00; // 波特率不倍增 (禁用波特率倍增功能) TR1 = 1; // 启动定时器1 (启动定时器1,开始计数) while(1) { if(RI == 1) // 是否有数据到来 (检查是否收到串口数据) { RI = 0; // 清除接收缓冲区标志位 (清除接收缓冲区标志位,表示有数据可用) data1 = SBUF; //P1 = data1; // 数据传送到P口 (将接收到的数据存储到 SBUF 中,并将其发送到 P 口显示出来。) // send_char(data1); // 回传接收到的数据 (可选:将接收到的数据通过串口回传) if(( data1>=48 && data1<=57)) //判断是否是数字字符(范围从48到57){ //检查接收到的字符是否为数字字符。num3=num3*十的零次方+(data -48)} else if(data == +||data ==-||data == *|| data == /){fu=data;//判断是否是运算符} else if(data == =&&fu==+){num3=num2+num3;//判断是否是加法运算} else if(data == =&&fu==-){num3=num2-num3;//判断是否是减法运算} else if(data == =&&fu==*){num3=num2*num3;//判断是否是乘法运算} else if(data == =&&fu==/){num3=num2/num3;//判断是否是除法运算} if(printf_flag == 1){send(num3);//如果打印标志位为真则发送数值send(); num /= ; num= ; num= ; fu= ; printf_flag= ; }else{}} }

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 51单片机
    优质
    本项目为基于51单片机开发的一款串口计算器程序,用户可通过串口输入数学表达式,实现基本运算功能。适合于嵌入式系统中的计算需求。 #include #include unsigned char tmp; unsigned char data1 = 0; unsigned int num1 = 0, num2 = 0, num3 = 0, fu = 0; int q[100] = {0}; int printf_flag = 0; int a = 0; int c = 0; void send_char(unsigned char txd); void send(unsigned int u); void main() { // EA = 1; //总开关 // ES = 1; //IE寄存器 通信开关 SCON = 0x50; // 设定串行口工作方式,工作模式为1 TMOD = 0x20; // 定时器1配置为8位自动重载模式,用于波特率生成 TH1 = 0xFD; // 波特率为9600 TL1 = 0xFD; PCON = 0x00; // 不进行波特率倍增 TR1 = 1; // 启动定时器1 while (1) { if (RI == 1) { // 检查是否有数据到来 RI = 0; data1 = SBUF; if ((data1 >= 0) && (data1 <= 9)) { num1 = 10 * num1 + (data1 - 0); } else if (data1 == + || data1 == - || data1 == * || data1 == /) { fu = data1; num2 = num1; num1 = 0; } else if ((data1 == =) && (fu == +)) { // 等于号判断加法 num3 = num2 + num1; printf_flag = 1; } else if ((data1 == =) && (fu == -)) { num3 = num2 - num1; printf_flag = 1; } else if ((data1 == =) && (fu == *)) { // 等于号判断乘法 num3 = num2 * num1; printf_flag = 1; } else if ((data1 == =) && (fu == /)) { num3 = num2 / num1; printf_flag = 1; } if (printf_flag == 1) { // 发送结果 send(num3); num1 = 0; num2 = 0; num3 = 0; // fu=0; data1 = 0; printf_flag = 0; } } } }
  • 继电开关
    优质
    本项目旨在设计一种通过计算机串行端口(Serial Port)实现对继电器进行远程开/关操作的软件系统。用户可以利用该程序便捷地发送指令,从而操控与之相连的电气设备或电路,适用于自动化控制领域和实验研究场景。 实现功能:通过串口发送指令控制继电器开关。使用芯片为STC15F104E,晶振频率为12MHz,在Keil环境中进行编译。
  • 51单片机和多路舵机
    优质
    本项目设计了一种基于51单片机并通过串口通信实现控制的多路舵机控制系统。该系统能够灵活高效地驱动多个舵机,适用于机器人、自动化设备等领域。 关于舵机控制的51程序有很多现成的例子,但我测试后发现大多数会出现抖动或响应迟缓的问题。经过反复试验,我特别编写了一个四路串口舵机控制系统。如果需要增加更多的通道,相信大家都能明白如何操作。
  • Matlab手柄
    优质
    本程序利用Matlab开发,实现通过串口通信对手柄进行控制,适用于实验设备操控、游戏辅助等领域。 利用MATLAB程序通过串口控制实现手柄对工作台的操作。
  • STM32
    优质
    本项目是一款基于STM32微控制器开发的多功能计算器,集成了基本算术运算、科学计算及进制转换等功能,适用于工程与科研领域。 基于STM32F103的计算器支持加减乘除等功能,并且可以触屏操作。代码和工程文件完整提供。
  • STM32
    优质
    本项目基于STM32系列微控制器开发了一款功能全面的计算器应用程序,支持基本算术运算、科学计算及编程相关操作。通过集成LCD显示和按键输入模块,提供直观友好的人机交互界面,并具备低功耗特性以延长设备续航能力。 基于STM32F103的计算器支持基本的加减乘除功能,并且可以通过触屏操作。整个项目代码完整,可以运行。
  • ATmega16CS5550 AD转换.doc
    优质
    本文档介绍了一种使用ATmega16微控制器与CS5550模数转换器进行接口编程的设计方案,详细阐述了硬件连接及软件实现过程。 本段落档主要探讨AD转换器CS5550与单片机接口程序的设计方法。 首先分析了双通道低成本A/D转换器CS5550的接口特点,并以ATmega16单片机为例设计了CS5550与单片机之间的接口电路。通过对ATmega16单片机SPI口进行深入研究,详细讨论使用硬件SPI接口和软件模拟SPI两种方式下的程序设计方案并提供了相应的软件流程图。最后比较分析了这两种接口方法的优劣。 在现代智能化仪器仪表中,A/D转换器与单片机是核心组成部分之一。串行A/D转换器由于其信号线较少,在数据采样速率较低的应用场景下可以有效减少硬件间的连线复杂度,并节省单片机的接口资源。基于CS5550的性能特点及其集成的串行接口,提出了一种与单片机对接的具体程序设计方案。 1. CS5550的主要特性及接口功能 作为Cirrus Logic公司推出的一款双通道低成本Δ-Σ型A/D转换器,CS5550内部集成了两个Δ-Σ A/D转换器、两个放大器以及一个串行接口,并且配备了一个温漂为25 ppm/℃的2.5 V参考电压源。该设备在每个通道上都配置了24位寄存器,在通道1和通道2分别具有13位和10位的有效分辨率。 CS5550片内还集成了一个双向数字串行接口,包括片选信号(CS)、数据输入线(SDI)、数据输出线(SDO)以及串行时钟线(SCLK)。该串口与标准SPI接口协议兼容,因此能够直接连接到具有SPI功能的单片机进行通信。此外,设备还设有一个中断输出引脚INT,用户可以通过配置屏蔽寄存器来设定中断条件,并通过修改配置寄存器中的IMODE IINV位选择不同的中断触发方式(即高/低电平或上升/下降沿有效)。
  • Arduino舵机
    优质
    本项目提供了一个基于Arduino平台的串口舵机控制系统源代码,允许用户通过串行通信接口精确操控舵机的角度和速度,适用于机器人制作、智能家居等应用。 本项目介绍了一个基于Arduino的串口控制舵机源程序,并在其中加入了超声波反馈环以提高舵机控制精度。
  • 信小蓝牙继电调试源码
    优质
    本项目提供了一套基于微信小程序的蓝牙继电器控制系统及串口调试工具的完整源代码,方便开发者进行设备远程控制和开发测试。 1. 微信小程序蓝牙控制继电器及串口调试的源代码。 2. 微信小程序具备蓝牙控制继电器、灯等设备的功能,并且包含蓝牙串口调试助手等功能。 3. 小程序还支持云开发功能。
  • STM32手杖设.pdf
    优质
    本论文介绍了一种基于STM32微控制器的多功能智能手杖的设计与实现。该手杖集成了环境感知、安全警示及辅助导航等功能,旨在为老年人和行动不便者提供更便捷的生活辅助工具。 本设计旨在开发一款基于STM32单片机的多功能智能拐杖。该产品集成了多种传感器以及先进的算法,能够为老年人或行动不便者提供安全导航、环境感知及健康监测等功能。通过集成GPS模块实现精准定位与路线规划;利用超声波和红外线感应器避免障碍物碰撞;配备心率血压检测装置实时监控使用者的生理状态,并将数据传输至配套的应用程序中进行分析处理,以便及时发现潜在风险并采取相应措施保障用户安全健康。此外还设置了紧急呼叫按钮,在遇到危险情况时可迅速联系到相关人员获得帮助。 此多功能智能拐杖的设计充分考虑到了实际使用场景中的需求和挑战,旨在为特殊群体提供更加便捷、舒适且可靠的辅助工具,从而提高他们的生活质量与独立性。