C语言实现1、数列求和,已知数列1/1,2/1,3/2,5/3,8/5,…。51单片机P1口连接2个BCD数码管,分别显示十位和个位;外部中断0引脚连接按键, (1)按1下按键,求取数列前5项的和; (2)再按1下按键,求取数列前10项的和; (3)再按1下按键,求取数列前20项的和; (4)再次按下按键,恢复(1)的操作。 利用C51编程,实现上述功能,求出数列之和,但只需要显示数列和的整数部分,两位BCD数码管按十进制方式显示。

时间: 2024-03-25 09:35:40 浏览: 15
好的,根据您的要求,我来给您提供一个C语言的程序,实现数列求和并且控制BCD数码管显示: ``` #include <reg51.h> #define uchar unsigned char #define uint unsigned int sbit key = P3^2; //定义按键P3.2 sbit LED1 = P1^4; //定义LED1口P1.4为输出口 sbit LED2 = P1^5; //定义LED2口P1.5为输出口 void delay(uint xms) //延时函数 { uint i, j; for (i = xms; i > 0; i--) { for (j = 110; j > 0; j--); } } void init() //初始化函数 { TMOD = 0x01; //定时器T0工作在模式1 TH0 = 0x4C; //设置定时器初值 TL0 = 0x00; TR0 = 0; //停止定时器T0 ET0 = 1; //开启定时器T0的中断 EA = 1; //开启总中断 } void main() { init(); while (1) { if (key == 0) //如果按键按下 { delay(10); //延时去抖 if (key == 0) //再次判断按键是否按下 { TR0 = 1; //启动定时器T0 while (!key); //等待按键松开 } } } } void T0_time() interrupt 1 //定时器T0的中断函数 { static uchar n = 1; //定义静态变量n,表示数列中的第n项 static uchar flag = 0; //定义静态变量flag,表示当前求和的项数 static uchar sum = 0; //定义静态变量sum,表示数列的和 uchar temp; //定义临时变量 TR0 = 0; //停止定时器T0 TH0 = 0x4C; //重新设置定时器初值 TL0 = 0x00; P1 = 0xFF; //清空数码管 if (n == 1) //如果是数列的第一项,则显示1 { LED1 = 0; LED2 = 1; } else { temp = sum / 10; //计算数列和的十位数 if (temp == 0) //如果十位数为0,则不显示 LED1 = 1; else { LED1 = 0; P1 = temp; //显示十位数 LED2 = 0; //点亮个位数码管 delay(5); //延时一段时间 } temp = sum % 10; //计算数列和的个位数 P1 = temp; //显示个位数 LED2 = 1; //熄灭个位数码管 } sum += n; //累加数列中的第n项 n++; //n加1 if (flag == 4) //如果求和的项数已经达到5项 { sum = 0; //重置数列和 n = 1; //重置数列中的第n项 flag = 0; //重置求和的项数 } else flag++; //求和的项数加1 } ``` 在这个程序中,我们使用了定时器T0来控制数列求和的过程,并且根据定时器的中断来控制BCD数码管的显示。具体来说,我们定义了一个静态变量n来表示数列中的第n项,flag来表示当前求和的项数,sum来表示数列的和。然后,在定时器T0的中断函数中,我们首先根据静态变量n来显示数列中的第n项,并且累加到数列和sum中,然后根据sum来控制BCD数码管的显示。最后,如果求和的项数已经达到5项,则重置数列和、数列中的第n项和求和的项数。 需要注意的是,在这个程序中我们使用了51单片机的定时器T0来控制数列求和的过程,所以需要进行一些初始化的设置。具体来说,我们将定时器T0设置为工作在模式1,然后设置定时器的初值为0x4C,这样定时器每隔1ms就会产生一次中断。在中断函数中,我们还需要重新设置定时器的初值,并且停止定时器的计数。

相关推荐

最新推荐

recommend-type

Java swing + socket + mysql 五子棋网络对战游戏FiveChess.zip

五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
recommend-type

纯C语言实现的控制台有禁手五子棋(带AI)Five-to-five-Renju.zip

五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
recommend-type

setuptools-57.1.0.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

setuptools-59.1.1.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

空载损耗计算软件.zip

空载损耗计算软件
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

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

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