当前位置:首页 » 编程语言 » c语言os51
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言os51

发布时间: 2023-05-19 15:40:25

❶ 如何学习c语言编程

目录部分1:准备工作1、下载和安装编译器。2、理解基本概念。3、查看一些基本的代码。4、尝试编译这段程序。5、要养成写注释的习惯。部分2:变量的使用1、理解变量的功能。2、学习声明变量。3、理解在何处声明变量。4、用变量来存储用户的输入。5、处理变量。部分3:使用条件语句1、理解条件语句的基本概念。2、学习基本的比较符号。3、写一个IF语句。4、使用ELSE/ELSE IF语句来扩展你的条件判断。部分4:学习循环语句1、理解循环的原理。2、使用FOR循环。3、使用WHILE循环。4、使用DO?WHILE 循环。部分5:使用函数1、理解函数的基本原理。2、从函数原型开始。3、把函数添加到程序中。部分6:不断学习1、找一些C语言编程相关的书来看。2、加入一些社区。3、参加一些课程。4、考虑学习C++。诞生于上世纪70年代的C语言是一门古老的语言了, 但作为一门底层语言,时至今日它仍然非常强大。学习C语言能够为学习其他更复杂的语言打下良好的基础,因为你在C语言中学习到的知识对几乎所有的编程语言都适用。下面就来看看如何开始用C语言编程吧。
部分1:准备工作
1、下载和安装编译器。 C语言需要通过编译器解释为计算机可以理解的机器码。 编译器通常是免费的, 不同的操作系统上一般使用不同的编译器。 对于Windows系统, 可以尝试 Microsoft Visual Studio Express,其是Windows平台上最流行的多语言IDE(集成开发环境),其集成了Microsoft开发的C语言编译器。
对于OS X系统, Xcode是一款优秀的多语言IDE,其集成了C语言的编译器。
对于Linux, gcc是一个不错的也是最流行的选择。
2、理解基本概念。 C语言是一门古老的语言, 但却十分强大。它最初是为Unix操作系统设计的, 但后来被移植到了几乎所有的操作系统上,并得到了很多扩展。C语言的现代版本是C++。 C语言本质上是由函数构成的,在函数体中你可以使用变量,条件语句,循环等语句来存储和处理数据。
3、查看一些基本的代码。 下面是用C语言写的一段非常基本的代码, 阅读这些代码,尝试理解这种语言的不同部分是如何工作的, 并对程序的运作原理有初步的认识。
#include <stdio.h>int main() { printf("Hello, World!
"); getchar(); return 0;}这里的#include 指令在程序开始之前就出现了, 它的功能是把包含有你需要的函数的库加载进来。 在这个例子中,引入stdio。h 使得我们能够使用 printf() 和 getchar() 这两个函数。
这里的 main() 指令会告诉编译器,程序需要运行一个叫做“main”的函数,该函数运行完毕后返回一个整数值。所有的C语言都要运行一个“main”函数。
{} 符号表示括号内的所有内容都是函数的一部分。在本例中,他们标记了所有的内容都是“main”函数的一部分。
printf() 函数能够将小括号中的内容显示在用户的屏幕上。双引号保证了这个字符完全按照字面的样子输出,
组合告诉编译器这串字符输出完之后将光标移动到下一行 。
; 符号表示一行的结束。绝大部分C代码都以分号结束。
getchar()函数告诉编译器这段程序要等待一个按键的输入才能够继续。考虑到大部分编译器在运行完程序之后会立刻关掉程序窗口,这个功能还是很有用的,因为这样可以让程序保持运行直到有键被按下才会结束。
return 0 指令表示程序的结束。请注意”main”函数是一个int类型的函数,也就是说当函数结束时需要返回一个整数。如果返回0则表示程序正确的执行了,其他数字表示程序运行时发生了错误。
4、尝试编译这段程序。 把上面的代码输入到你的代码编辑器中,然后保存为”*。c”文件。 用你的编译器编译它, 一般来说点击Build或Run按钮即可。
5、要养成写注释的习惯。 注释是代码中的一部分,它不会被编译, 但是却可以告诉你代码做了些什么。这对于提醒你自己你的代码是干什么的以及让其他开发者理解你的代码都很有帮助。 在C语言中添加注释只需要把要注释的部分的前面添加/*, 后面添加 */。
不要吝啬你的注释,除了特别简单明了的地方都尽量加上注释吧。
注释功能也可以快速的屏蔽一部分代码但不删除它们。只需要给你想要排除的代码用注释标签包起来它们就不会被编译。如果你想要改回来,去掉注释标签即可。
部分2:变量的使用
1、理解变量的功能。 变量是用来存储数据的,不管是计算得出的还是用户输入的数据。变量在使用前要先定义,并且有不同的类型可以选择。有以下几种常见的变量类型 int, char, 和 float。 每种变量类型都代表一种数据存储的格式。
2、学习声明变量。 变量在使用前要先被创建出来,或者叫”声明”。 声明一个变量只需要在变量类型的后面写出变量的名字即可。比如,下面就是一些变量声明的例子:
float x;char name;int a, b, c, d; 注意,你可以在一行中声明多个变量,只要它们的类型是一样的就行,你只需用逗号把变量名隔开即可。
和大多数的C代码一样,变量的声明也要以分号结尾。
3、理解在何处声明变量。 变量的声明必须要放在每个代码块之前(代码块是指用大括号{}包起来的一段代码)。如果你在代码块后边声明变量,程序就不能正确执行了。
4、用变量来存储用户的输入。 现在你了解到了变量的一些基本原理, 你可以写一段简单的程序来存储用户的输入。这次你需要用到另外一个叫scanf的函数, 它的功能是把用户的输入赋值给指定的变量。
#include <stdio。h>int main(){ int x; printf( "请输入一个数: " ); scanf( "%d", &x ); printf( "你输入了: %d", x ); getchar(); return 0;} 这里的"%d"符号告诉scanf函数在用户的输入中找出整数。
x前面的&符号告诉scanf在哪里找到要修改的变量,并把输入的整数值存进去。
最后的printf命令读出输入的整数并返回给用户。
5、处理变量。 你可以用数学表达式来处理之前存储的变量。需要注意一个重要的差别:在数学表达式中单个=是赋值号,作用是把等号右边的值赋给等号左边的变量, 而==则是比较两个变量是否相等。
x = 3 * 4; /* 把x设为3*4,也就是12 */x = x + 3; /* 把x的值增加3,然后把新的值赋值给x */x == 15; /* 检查x是否等于15 */x < 10; /* 检查x是否小于10 */
部分3:使用条件语句
1、理解条件语句的基本概念。大多数程序都是由条件语句驱动的, 这样的语句可以判断一个条件是TRUE(真)还是FALSE(假), 然后据此执行不同的动作。最基本的条件语句是if语句。C语言中的TRUE和FALSE和你平常理解的有点不太一样。TRUE和任何非0的数总是相等的。当你执行一个比较时,如果结果是TRUE,会返回一个”1”。如果结果是FALSE,会返回0。弄清楚这一点能帮助你更好的理解IF语句的执行过程。
2、学习基本的比较符号。条件语句是以比较大小的数学表达式为核心的。下面列出了最常用的一些比较符号:
> /* 大于 */< /* 小于 */>= /* 大于或等于 */<= /* 小于或等于 */== /* 等于 */!= /* 不等于 */


10 > 5 TRUE6 < 15 TRUE8 >= 8 TRUE4 <= 8 TRUE3 == 3 TRUE4 != 5 TRUE
3、写一个IF语句。 利用IF语句,你可以根据一个表达式计算的结果决定之后的程序如何运行。之后学习了其他条件语句后你可以把它们组合起来实现更强大的功能,不过现在写一段简单的代码熟悉一下就行了。
#include <stdio.h>int main(){ if ( 3 < 5 ) printf( "3比5小"); getchar();}
4、使用ELSE/ELSE IF语句来扩展你的条件判断。 在IF语句中你可以添加ELSE 和ELSE IF语句来处理更多不同的结果。 ELSE后面的语句在IF中的判断结果为FALSE时执行。 ELSE IF则可以让你在一个代码块中使用多个IF语句来处理更多的情况。阅读下面的代码看一下他们是怎么工作的。
#include <stdio.h>int main(){ int age; printf( "请输入您的年龄: " ); scanf( "%d", $age ); if ( age <= 12 ) { printf( "你是个孩子!
" ); } else if ( age < 20 ) { printf( "年轻的感觉真好!
" ); } else if ( age < 40 ) { printf( "你充满了青春的活力!
" ); } else { printf( "充满智慧的年纪!
" ); } return 0;}这段代码接收用户输入的一个数据然后传递给IF语句。如果这个数据满足第一个条件,则第一个printf被执行。如果没有满足第一个条件,则后面的各个ELSE IF会逐个进行判断直到有一个满足条件的分支为止。如果没有任何分支满足条件,则ELSE语句被执行。。
部分4:学习循环语句
1、理解循环的原理。 循环是编程中很重要的一部分, 它们让你可以重复执行一段代码直到满足特定条件为止。这个机制使你可以很容易的实现重复的动作,同时省去了每次做条件判断的麻烦。 有3种类型的循环:FOR, WHILE, 和 DO?WHILE。
2、使用FOR循环。这是最常见和好用的循环类型。它会不断的运行循环内的函数直到循环条件不再成立。FOR循环需要包含3条语句:初始化变量,循环条件,和变量更新的方式。如果你不需要其中的某个语句,把该处空着打一个分号即可,否则的话循环会无限运行。
#include <stdio.h>int main(){ int y; for ( y = 0; y < 15; y++;){ printf( "%d
", y ); } getchar();}在上面的程序中,y被设为0,循环继续运行的条件是y小于15。每次循环中y的值被打印出来,并且被增加1。一旦y=15,循环就结束了。
3、使用WHILE循环。WHILE循环比FOR循环要简单的多。它们只有一个语句,只要该语句为TRUE循环就不断执行。你不需要初始化或更新变量,不过你可以在循环体中做这些事。
#include <stdio.h>int main(){ int y; while ( y <= 15 ){ printf( "%d
", y ); y++; } getchar();}这个循环每执行一次,y++命令就把y的值增加1。一旦y达到16,循环就结束了。(记住只有在y小于等于15的条件下循环才会执行。)
4、使用DO?WHILE 循环。这种循环在你想要确保一个循环至少要被执行一次时非常管用。在FOR和WHILE循环中,循环条件的检测是在循环开始之前进行的,这也就意味着有可能第一次检测就无法通过,那样的话循环体一次都不会被执行。然而DO。。。WHILE循环会先执行一次循环体然后再做检测,这就保证了循环体至少会被执行一次。
#include <stdio.h>int main(){ int y; y = 5; do { printf("循环被执行!
"); } while ( y != 5 ); getchar();}在上面的循环中,即使循环条件检测的结果为FALSE还是会展示一条信息。变量y的值被设为5而WHILE循环被设置为只有当y 不等于5时才运行,所以循环执行到条件检测时就会终止。但信息还是被展示出来了,因为条件检测是在输出信息之后的。
DO?WHILE循环中的WHILE语句必须以;结尾。这是唯一一种循环体以分号结尾的情形。
部分5:使用函数
1、理解函数的基本原理。 函数是可以被程序的其他部分调用的自成一体的代码块。使用函数可使你更容易重复一段代码,同时也让程序变得简单易读、便于修改。函数中可以包含前面提到的所有技术,甚至可以包含其他函数。 前面的例子中的main()就是一个函数,同样getchar()也是。
要想写出高效且易读的代码,函数是至关重要的。用好函数可以使你的程序条理更清晰。
2、从函数原型开始。在真正开始编写一个函数之前,你最好先搞清楚你要完成什么功能,并从函数原型开始编写。函数的基本语法格式为: “返回值类型 函数名 (参数1, 参数2, ?);”。 比如下面是一个把两个数相加的函数:
int add ( int x, int y );上面的代码创建了一个把输入的x和y相加然后返回他们的和的函数。
3、把函数添加到程序中。你可以用上面的函数原型实现一个把用户输入的两个数相加的函数。下面的程序展示了"add"函数是如何处理输入的数字的。
#include <stdio。h>int add ( int x, int y );int main(){ int x; int y; printf( "请输入要求和的两个数: " ); scanf( "%d", &x ); scanf( "%d", &y ); printf( "您输入的数字之和为 %d
" add( x, y ) ); getchar();}int add ( int x , int y ){ return x + y;} 请注意,函数的原型也需要放在程序的顶部,这样能保证当这个函数被调用时编译器已经知道存在这个函数,同时也知道它的返回类型。不过只有你想在函数调用处之后再实现这个函数时才有必要这么做。如果你直接把add()函数的实现放在main()函数之前,那么即使不声明函数原型也是一样的。
这个函数的实现代码其实是放在程序的底部的。main() 函数获取了用户输入的两个整数并把他们传给add()函数以便后者进行处理,然后add()函数把计算的结果返回给main() 。
当add()函数被定义之后,你就可以在程序中的任何地方调用它了。
部分6:不断学习
1、找一些C语言编程相关的书来看。 这篇指南涵盖了C语言中最基础的部分,但对于完整的C语言只是体系来说这只是皮毛。如果能有一本好的参考书你在学习C语言的道路上能省去许多麻烦
2、加入一些社区。不论是在线上还是线下,都有一些很棒的致力于学习和发展优秀编程语言的社区。如果能找到一些志同道合的C语言程序员,并和他们相互交流, 你一定能进步的很快。 如果可能的话还可以尝试黑客马拉松活动。在这项活动参赛的团体或个人需要在有限的时间里对给出的问题提出自己的程序和解决方案,因此很能培养人的创造力。你还可以籍此认识许多优秀的程序员。并且世界各地都有规律性举办的黑客马拉松活动。
3、参加一些课程。虽然你没必要重新回到学校修得计算机科学的学位,但是适当的参加一些相关课程还是会让你的学习过程有质的飞跃。没有什么能比一位C语言专家的言传身教更能帮助你了。通常你总能在网络上找到一些培训课程,也有一些专业的计算机培训机构可供选择。还有一些大学的优秀课程是免费对外开放的,你可以去旁听。
4、考虑学习C++。 如果你已经掌握了C语言,了解一下C++将对你大有裨益。因为C++是C语言更现代的版本, 它更加的灵活和方便。C++是以面向对象的思想设计的,掌握C++之后你就可以在几乎所有操作系统中编写强大的程序了。
小提示多给程序写注释。注释不仅可以帮助其他可能看到你的代码的人更好的理解代码, 还能帮你会一起你写的代码是什么意思以及你为什么要这么写。当你写代码的时候你可能很清楚你要干什么,但两三个月之后呢?你很可能已经忘的差不多了。
如果你在编译时遇到语法错误而被困扰,记得用谷歌或其他搜索引擎搜索一下你遇到的问题。有可能已经有人遇到了同样的问题并贴出了解决办法。
你的源代码需要以。c扩展名做后缀,这样编译器才能够知道这是一个C语言源码文件。

❷ C语言程序的运行步骤

当编写完一个程序后,需要首先进行编译,然后再运行。

如下图所示,程序编写完毕后,点击工具栏中的Execute,选择compile(编译)。

如果没有错误,再选择Execute,选择run(运行)。

(2)c语言os51扩展阅读:

dll因为某些原因(最大的可能是因为它是个病毒或流氓软件的dll文件,被杀软删除了)丢失了,但其相关的注册信息却还在,导致系统开机时还加载它,却又找不到它的文件,所以报错。

如果你点击“确定”后,系统没有什么不正常,并且可以正常运行的话,你可以用这个软件清理掉这个开机加载项,以后开机就不会出现这个信息了。

下载和安装编译器。C语言需要通过编译器解释为计算机可以理解的机器码。 编译器通常是免费的, 不同的操作系统上一般使用不同的编译器。

对于Windows系统, 可以尝试 Microsoft Visual Studio Express,其是Windows平台上最流行的多语言IDE(集成开发环境),其集成了Microsoft开发的C语言编译器。对于OS X系统, Xcode是一款优秀的多语言IDE,其集成了C语言的编译器。对于Linux, gcc是一个不错的也是最流行的选择。

❸ 如何学习c语言

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢? 第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。第二:C语言能够让你深入系统底层,你知道的衡笑操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。那么究竟怎样学习C语言呢?1:工欲善其事,必先利其器这里介绍几个学习C语言必备的东东:一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。 2:葵花宝典学习计算机语言最好的方法是什么?答曰:读程序。没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么咐旁含写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。3:登峰造极写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?启亮举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书

❹ 本科学历,工作3年,懂得C语言,51单片机原理,请问可以在电子行业里能找到些什么样的好工作请大家指引

现在纯粹用51做开发的公司已经不多了,要找的话槐态基本上就是一些老点的工厂,招的基本上是产品维护。要想从事单碧茄片机开发的话,最好能转ARM方向,再学下操作系统,最好是linux。现在这个行业比较吃香,但是大都要求项目经悔明察验。

❺ 51单片机相关c语言该怎么学习

如果是诸如速成班,单片机入门之类的,目标仅仅是点亮led灯之类的(代码规模在100以内吧),那就不需要完整的介绍c语言了。
如果从行业从业人员角度来讲,C语言的功底是非常重要的。现在单片机的应用领域,已经不是以前简单的读个开关,点亮个灯这么简单了。
现代的单片机领域,有异常复杂的算法(pid,电机控制,网络栈协议,os的接口),有严谨的架构设计(app,hw,mcu),而这一切都是建立在c语言基础上的。

❻ 初学c语言用什么系统好

初学C语言用Windows和macOS都可以。
Windows系统安装C语言编程环境
普通电脑安装的都是Windows,现在一般的系统都是Win7和Win10。

使用Win7,可以安装比较经典的VC6.0,这里之前用的最多的C和C++编程环境,许多高校还在用,编译、连接程序非常方便快捷。

使用Win10,由于VC6.0太老了和Win10系统不兼容,可以用集成mingw的Code::Blocks集成开发工具,因为win10默认不带C编译器,mingw是一个开源通用的C编译器,集成mingw的Code::Blocks免去了单独安装mingw的繁琐过程。Code::Blocks的C编程环境也非常友好,和之前的VC6.0相似。Win7使用Code::Blocks也是完全可以的。

macOS系统安装C语言编程环境
苹果macOS操作自带gcc编译器,可直接运行C语言编程。但还是要借助集成开发环境,初学者用文本编辑器写C程序还是有一些困难的。

Xcode。Xcode是苹果公司用来开发macOS软件和iOS软件的综合性的集成开发环境,有着非常强大的功能,而且完全免费。完美的支持C语言的开发,在创建工程时选择C语言即可,编程环境界面非常友好,非常推荐使用。缺点就是软件体积较大。

VS Code、Sublime Text、Atom。这三个软件都是代码编辑器,它们都可以支持大多数的程序设计语言的编写。以VS Code为例,它是微软推出的免费代码编辑器,可以通安装插件支持C、C++、Python、Java、JavaScript等几乎所有编程语言。要支持C和C++,需要安装ctools和clang++两个插件,还要做一些简单的配置。Sublime和Atom的配置方式也是类似的。

要想学好编程,选择什么系统、什么编辑器并不重要,重要的是什么自动多动手编程、多思考。

❼ 51单片机c语言程序,求大虾帮忙改下让每次按键后step的值加大一点

22. 电子琴
1. 实验任务
(1. 由4X4组成16个按钮矩阵,设计成16个音。
(2. 可随意弹奏想要表达的音乐。
2. 电路原理图

图4.22.1
3. 系统板硬件连线
(1. 把“单片机系统告滑灶”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;
(2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;
4. 相关程序内容
(1. 4X4行列式键盘识别;
(2. 音乐产生的方法;
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此袜扮,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示
音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值)
低1 DO 262 63628 # 4 FA# 740 64860
#1 DO# 277 63731 中 5 SO 784 64898
低2 RE 294 63835 # 5 SO# 831 64934
#2 RE# 311 63928 中 6 LA 880 64968
低 3 M 330 64021 # 6 932 64994
低 4 FA 349 64103 中 7 SI 988 65030
# 4 FA# 370 64185 高 1 DO 1046 65058
低 5 SO 392 64260 # 1 DO# 1109 65085
# 5 SO# 415 64331 高 2 RE 1175 65110
低 6 LA 440 64400 # 2 RE# 1245 65134
# 6 466 64463 高 3 M 1318 65157
低 7 SI 494 64524 高 4 FA 1397 65178
中 1 DO 523 64580 # 4 FA# 1480 65198
# 1 DO# 554 64633 高 5 SO 1568 65217
中 2 RE 587 64684 # 5 SO# 1661 65235
# 2 RE# 622 64732 高 6 LA 1760 65252
中 3 M 659 64777 # 6 1865 65268
中 4 FA 698 64820 高 7 SI 1967 65283
下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据
低音0-19之间,中音在20-39之间,高音在40-59之间
TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0
DW 0,63731,63928,0,64185,64331,64463,0,0,0
DW 0,64580,64684,64777,64820,64898,64968,65030,0,0
DW 0,64633,64732,0,64860,64934,64994,0,0,0
DW 0,65058,65110,65157,65178,65217,65252,65283,0,0
DW 0,65085,65134,0,65198,65235,65268,0,0,0
DW 0
2、音乐的音拍,一个节拍为单位(C调)
曲调值 DELAY 曲调值 DELAY
调4/4 125ms 调4/4 62ms
调3/4 187ms 调3/4 94ms
调2/4 250ms 调2/4 125ms
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
下面就用AT89S51单片机产生一首“生让磨日快乐”歌曲来说明单片机如何产生的。
在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。
5. 程序框图
贴不了.
7. C语言源程序
#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};

void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;

while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}

void t0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
P1_0=~P1_0;
}

❽ 如何编写C语言程序

准备材料

windows电脑、VC++(DEV_C++)

1.打开桌面上的DEV_C++,进入如下界面:

❾ c语言如何输出当前的日期和时间

#include<stdio.h>
#include<time.h>
intmain()
{
time_tt;//time_t是一种类型,定义time_t类型的t
time(&t);//取得当前时间
printf("%s ",ctime(&t));//ctime(&t)将日期转为字符串并打印
return0;
}

❿ 如何用C语言获取当前系统时间

需要利用C语言的时间函数time和localtime,具体说明如下:

一、函数接口介绍:

1、time函数。

形式为time_t time (time_t *__timer);

其中time_t为time.h定义的结构体,一般为长整型。

这个函数会获取当前时间,并返回。 如果参数__timer非空,会存储相同值到__timer指向的内存中。

time函数返回的为unix时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

由于是秒作为单位的,所以这并不是习惯上的时间,要转为习惯上的年月日时间形式就需要另外一个函数了。

2、localtime函数。

形式为struct tm *localtime (const time_t *__timer);

其中tm为一个结构体,包含了年月日时分秒等信息。

这种结构是适合用来输出的。

二、参考代码:

#include<stdio.h>
#include<time.h>
intmain()
{
time_tt;
structtm*lt;
time(&t);//获取Unix时间戳。
lt=localtime(&t);//转为时间结构。
printf("%d/%d/%d%d:%d:%d ",lt->tm_year+1900,lt->tm_mon,lt->tm_mday,lt->tm_hour,lt->tm_min,lt->tm_sec);//输出结果
return0;
}

注意事项:

struct tm中的tm_year 值为实际年减去1900, 所以输出的时候要是lt->tm_year+1900。