导航:首页 > 编程语言 > 自行车c语言编程

自行车c语言编程

发布时间:2022-08-30 02:53:30

❶ 如何设计一个自行车速度表

现在,很多人都把骑自行车作为一项锻炼身体的运动项目,如果在自行车上加装一个里程速度表,就可以知道自己骑车的速度和行程,从而很好地控制运动量。本文介绍一种用单片机制作的自行车里程速度表,里程和速度显示可进行切换,采用三位数码管显示;最大可显示里程为99.9km,显示最高速度可为99.9km/h。该里程速度表也可以用在电动自行车和速度不超过100km/h的摩托车上。

一、电路原理

电路如图1所示,由检测传感器、单片机电路和数码显示电路等组成。

检测传感器由永久磁铁和开关型霍尔集成电路UGN3020.组成。UGN3020由霍尔元件、放大器、整形电路及集电极开路输出电路等组成,其功能是把磁信号转换成电信号,图2a是其内部框图。霍尔元件H为磁敏元件,当垂直于霍尔元件的磁场强度随之变化时,其两端的电压就会发生变化,经放大和整形后,即可在③脚输出脉冲电信号。其工作特性如图2b所示。由于有一定的磁滞效应,可保证开关无抖动。B叩为工作点“开”的磁场强度,Brp为释放点“关”的磁场强度。永久磁铁固定在车轮的辐条上,UGN3020固定在车轮的叉架上。检测传感器的工作原理如下:车轮每转一周,磁铁经过UGN3020一次,其③脚就输出一个脉冲信号。UGN3020输出的脉冲信号作为单片机AT89C2051的外中断信号,从P3.2口输人。单片机测量脉冲信号的个数和脉冲周期。根据脉冲信号的个数计算出里程,根据脉冲信号的周期计算出速度并送数码管显示。S1用来进行里程和速度显示的切换,在初始状态下显示的是速度。

数码管DS1--DS3,VT1-VT3.R4-R13等组成显示电路,使用共阳数码管。P3.3-P3.5为数码管的动态扫描位驱动。PLO-P1.6作数码段码输出。

二、程序设计

程序用C语言编写,由主程序、外中断0服务程序,TO中断服务程序、延时子程序等模块组成。主程序主要完成程序初始化和键盘处理,外部中断朋及务程序由测量、计算、读数等部分组成,TO中断服务程序由计时、动态扫描显示、自行车停车判断等部分组成。

从P3.2口输人的脉冲信号作为外中断0的中断请求信号,采用沿触发方式。在测量速度时,由于车轮转动脉冲信号的频率很低,不适宜使用计数的方式进行测量,所以采用测脉冲周期的方法进行测量,用脉冲信号系统来控制计时信号,通过计时数计算出脉冲周期,用车轮的周长除以周期便可得到自行车的行驶速度。在测量里程时,用脉冲信号个数乘以车轮的周长便可获得行驶里程。需要说明的是:脉冲信号周期和个数是同时测量的,要做的只是用按钮开关S1切换显示。

本文的程序是针对车轮直径为26英寸的自行车编写的对于其他规格的自行车,只要改写程序spm=14904(常量1)In和spm=207(常量2)xc即可。为了避免使用浮点数,远算结果长度是以百米为单位的,数据读出时在第三位数加小数点就换算成千米了。为方便读者制作,现列出各种规格的轮径和轮周长、程序常量的对应值见附表,供参考。

定时器TO的中断定时时间为5ms,每中断一次计时变量n加1,因此n的单位为5ms。例如:自行车车轮转一周对应的n值为100,则对应的时间为0.5s,由此可得自行车的速度为14.9km/li。如果n的值达到1000,即5秒钟仍没有发生外部中断,即表示自行车没有前进,n也被清零,速度显示为0。读数采用三位显示,TO中断一次显示一位数,中断3次就可以刷新一次数据,即巧ms刷新一次数据。

三、安装与调试

传感器的安装与调试是一个关键。将它安装在前轮的位置,把一块小永久磁铁固定在车轮的辐条上,UGN3020作防潮密封后固定在前叉上,使得车轮转动时磁铁从它的前面经过,并使两者相遇时间隔尽量小。安装时,要使磁铁的S极面向UGN3020的正面。判定磁铁极性方法是:把磁铁的两个极分别靠近UGN3020的正面,当其③脚电平由高变低时即为正确的安装位置。传感器安装完成后,转动车轮,UGN3020的③脚应有脉冲信号输出,否则说明两者的间隔偏大,应缩小距离,直至转动时③脚有脉冲信号输出为止。一般间隔为5mm左右,如果向隔小于5mm仍无脉冲信号输出,说明磁铁的磁场强度偏小,应予以更换。

调试结束后,把里程速度表安装在车把手上,打开电源,骑动自行车,这时数码管显示的是速度,如果要显示里程,只要按一下S1,如果要回到显示速度,再按一下SI即可

❷ 自行车简易不简单的小论文500字,急

武汉工程大学邮电与信息工程学院毕业设计(论文)

摘 要
随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。自行车测速仪能够满足人们最基本的需求,让人们能清楚地知道当前的速度、里程、时间、温度等物理量。本论文主要阐述一种基于霍尔元件的自行车测速仪的设计。
本文以STC89C54RD+单片机为核心,霍尔传感器测转数,实现对自行车里程、速度、时间、温度的测量统计,能将自行车的里程及速度用LCD实时显示。文章详细介绍了自行车测速仪的硬件电路和软件设计。硬件部分利用霍尔元件将自行车每转一圈的脉冲数传入单片机系统,然后单片机系统将信号经过处理送LCD显示。软件部分用C语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,已达到设计目标。

❸ C++骑车与走路问题

楼主是练习switch的用法吗?

拿到这种题目一般是先上数学方法的:)
首先分析题目:
由题意可知,
骑自行车浪费的时间=23+27=50s
v车=3m/s(这速度可能是四轮自行车吧)
v人=1.2m/s
设路程为x m
则t车=x/3+50,t人=x/1.2
算时间一样的路程:
x/3+50=x/1.2
2x+300=5x

x=100
那就说明,路程<100m时,走路快,路程大于100m时,汽车快,否则一样快。
诶,我发现至少要打100个case,用switch的话??
难道题目考我们复制粘贴的水准?
NoNoNo这是套路,直接看代码:
#include<cstdio>
int main()
{
int a;
scanf("%d",&a);
switch(a%100) //先把All的情况单独拎出来
{
case 0:printf("All\n");break;
default: switch(a/100) //根据int向下取整的原理
{
case 0:printf("Walk\n");break;
default:printf("Bike\n");
}
}
return 0;//好习惯
}
ok了,不能用ifelse是真的痛苦啊!!是你们老师让你写的吗?挺锻炼思维能力诶。
纯手打,不懂再问

❹ C语言在编程的时候应注意什么问题

1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲

笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!\n");

中的;改成中文的分号;

运行一下程序,看有什么结果?

调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

❺ 毕业设计中自行车里程表怎么将自行车平均速度计算出来 用C语言实现

固定的时间内,测出单车转动的次数

速度=(单车轮子的周长*转动的次数)/时间

用霍尔测吧,比较准,固定的时间可以由定时器中断产生

❻ c语言相关的几个问题

1.C语言没过时,我不知道你是什么专业的,但在我专业里要学单片机(一种芯片,广泛用在日常生活和电子设备中,刷卡机,液晶显示,读卡器。。。等等中,只要你能看到的那些高级的设备都用到),就要求用C语言编程控制单片机实现功能的。不要以为C++等比他高级它就会过时,因为单片机高级语言只支持C语言。我参加全国的电子设计比赛,在产生正弦波,数模转化,液晶显示等方面,都用到单片机和C语言控制。全国电子设计大赛作为全国四大大学生比赛之一,学好单片机和C语言是必须的。你不要以为C语言只是用来做电脑软件的,那样的话是不实际的,C语言是用在硬件控制上。

2.如果你要学高级语言,我推荐你学C语言先,我现在都觉得C语言很实用,C语言的代码比较易懂,当我学了C语言再学c++和java,就觉得这两个只是在C上加了点东西。

3.C语言是面向过程的(注重过程的编写),C++是面向对象的(把过程分类,包装好,使用时直接调用),C语言就像制作的小零件,C++就像已经有了这些零件,把它组装成大机器,所以说c++功能强大。

❼ 51单片机C语言编写自行车测速仪用数码管显示速度和路程

只显示数据呢?还是需要采集然后再显示数据?

❽ 求C语言大神帮答,NOI上的一道题:骑车与走路

NOI油条回来油锅翻滚了

婆婆妈妈地说:有没有样例输入输出呀,NOI通常都有的。还有一个问题,输入输出文件再三核对一下,有没有规定,通常是要指定文件名的。(如果真的没有当我没有说,时代可能不一样了)

问题有点小棘手,因为浮点数是计算机中二进制表达,有些十进制内的信息它是精确表达不了的(这个因设备而异)

建议的解决方案:

误差判断(简单的)

//增加一个变量:

doubke dt;

//增加一个常量:

#define jd (double)0.0001

//万分之一秒 这个看具体精度要求 ,卡着要求就行了,太小的时间尺度用不了的

//计算

dt=t1-t2;

//判断语句改成

if (dt>-jd&&dt<jd) printf("ALL");

else if (dt>=jd)printf("WALK");

else if(dt<=jd)printf("BIKE");

方法二

❾ 编写程序:某项自行车比赛以“秒”计时(只保留整数)。试编写一个程序,从键盘输入一个选手的比赛成绩,

#include<stdio.h>
intmain()
{intt;
scanf("%d",&t);
printf("%d分%d秒 ",t/60,t%60);
return0;
}

阅读全文

与自行车c语言编程相关的资料

热点内容
调研编译写信息 浏览:857
python冯诺依曼 浏览:415
同时安装多个app有什么影响 浏览:251
奥术杀戮命令宏 浏览:181
用sdes加密明文字母e 浏览:358
单片机原理及应用试题 浏览:423
易语言开启指定文件夹 浏览:38
马思纯参加密室大逃脱 浏览:319
文件夹冬季浇筑温度 浏览:710
京东有返点的aPp叫什么 浏览:601
如何查看u点家庭服务器是几兆 浏览:262
python应用接口怎么接 浏览:67
腐蚀怎么进不去服务器啊 浏览:359
linuxcpiogz 浏览:630
安卓中的布局是什么文件 浏览:397
dex反编译部分代码无法查看 浏览:463
linuxandroid编译 浏览:603
程序员电视剧20集 浏览:910
怎么扩建文件夹 浏览:160
波普诺社会学pdf 浏览:98