主页 > 科技生活 >宝安机场_单片机制作呼吸灯的C语言程序怎样编写? >

宝安机场_单片机制作呼吸灯的C语言程序怎样编写?

单片机制作呼吸灯的C语言程序怎样编写?
#include
sbit LED0=P0^0;
sbit wei=P1^1;
sbit duan=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
duan=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延可以看到熄灭的
for(PWM_LOW=1;PWM_LOW{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
如何学习C51系列单片机C语言编程啊?
我也是才开始学天的菜鸟推荐你个不
用心的看完基本就掌握了。。一起加油哦我感觉学单基本不么基础,你就自一个单片机学习板,上网上看郭天祥的《十会单片机》就行,然后跟着他写程序,再把程序烧进你的学习板中运行,分析结果,说白了,就是多做实验,你天天弄的话,10多天差不多,你就学会了,不过有个前提你的c语言要有不错的基础,我学51单片机就是这么学的,我自己感觉这个方法挺好。追问

但是没有C语言基础啊 ,一点都不懂啊,高如何学习C语言呢?追答

你这种情况学起来就有点难了,那你先学c语言吧,你可以看谭浩强的《c语言程序设计》挺好的,或者你可以边学单片机边学c语言,不过这样你这一样可能会很累,不过你要是能坚持下来的话,我感觉效果应该是非常好的。追问

学习C语言有没有什么好的方法啊?望赐教。学知识是肯定要下功夫的 , 楼上的说的都是挺好的建议 , 但关键还是自己 ,然后 就木有然后了~~~~既然你有一定的电子基础,那么就剩下程序方面的问题了,C语言的学习建议你去看谭浩强的C语言程序设计,里面的知识点讲得非常详细易懂,应该适合你学习。如果楼主有C基话那么C51只不过在它的基础上增加了点,很好学,前提是,单内部结构要懂(很好学,一部分一部分的,搞明白,结构规定,就行拉)要是没有C基础,那就先学C把,当然也可以一起学,会难一点可以边看书边做实验光看书是学不会单片机的
如何快速的学会单片机C语言编程


重:多看,多写,多练,考!

单片机有很,每种的侧重都有不同自己想深入的单片机方向选择一本经典教材,然后将心沉入教材,开始用功学习。切记不要只看书,要读懂书中例子程序,且动手编程实现它。
学习编程语言最好的方法是读程序,读程序是学习C语言入门最快,也是最好的方法。我们大家都应该有个体验。读了之后就要写,这一点来不得半点懒惰。如果你C语言功底扎实,按照选定教材钻研几天便可上手开发单片机软件。本回答由推荐选中要学的单片机型号后,买块开发板,对照着开发板上的演示程序跑一遍,把每个DEMO看懂,自己会修改,编写程序,就OK了很多想学单片机的人问我的第一句话就是怎样单片机?对于这个问题我今天就己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。

先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。

有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。

总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。

步骤:1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)

2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)

3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)

4.自己完全设计具有个人风格的电路,产品,。。。你已经是高手了。 。。。。

看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。
参考资料:

先51单片机入手,一般都看郭天祥频,建议这个时候自学画PCB己制作51最小系统,并绘制51的外设,通过编程控制模块。学习16的单片机,学习的是TI的16位MSP430单片机,然后把底层的库自己写一遍,这个时候就会发现其实所有的单片机就都是大同小异了,就是读数据手册,配置寄存器。最后你可以用stm32这种32位的单片做一些东西,由于前面使用16位单片机写过底层,这个时候调库就比较轻松,做项目更多的集中在算法和电路上,而不是单片机上了。学习了以上这些,就会了单片机,进而可以学习更高端的ARM芯片,进而学习嵌入式操作系统的知识了,希望对你有所帮助。

快速学号单片C语言其实很简单,多练。
如果你有C语言基础,那么学片机C语言相对容易些,重心只要放到单片机的知识上就可以了。
如果你有单片机基础,汇编较为熟练,那么学C语言很容易,比汇编容易多了,稍稍了解一下C编程规范就可以上手了。
求一个单片机C语言编写的PID控制程序。谢谢!!
#include

#include "global_varible.h"

/****************************************************************************
* 名: PID
* 描述:PID调节子程序
*采用PID-PD算法。差绝对值大于△e时,用PD算法,以动质。
*当偏差绝对值小于△e时,用PID算法,提高稳定精度。
* PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e(1)]+kd*[e(t)-e(t-1)]
*============================================================================
* 入口:无
* 出口:无
* 改变:PID_T_Run=加热时间控制
*****************************************************************************/
void PID_Math(void)
{
signed long ee1;//偏差一阶
//signed long ee2;//偏差二阶
signed long d_out;//积分输出

if(!Flag_PID_T_OK)
return;
Flag_PID_T_OK=0;

Temp_Set=3700;//温度控制设定值37.00度

PID_e0 = Temp_Set-Temp_Now;//本次偏差
ee1 = PID_e0-PID_e1;//计算一阶偏差
//ee2 = PID_e0-2*PID_e1+PID_e2;//计算二阶偏差
if(ee1 > 500)//一阶偏差的限制范围
ee1 = 500;
if(ee1 < -500)
ee1 = -500;
PID_e_SUM += PID_e0;//偏差之和
if(PID_e_SUM > 200)//积分最多累计的温差
PID_e_SUM = 200;
if(PID_e_SUM < -200)
PID_e_SUM = -200;

PID_Out = PID_kp*PID_e0+PID_kd*ee1;//计算PID比例和微分输出
if(abs(PID_e0) < 200)//如果温度相差小于1.5度则计入PID积分输出
{
if(abs(PID_e0) > 100)//如果温度相差大于1度时积分累计限制
{
if(PID_e_SUM > 100)
PID_e_SUM = 100;
if(PID_e_SUM < -100)
PID_e_SUM = -100;
}
d_out = PID_ki*PID_e_SUM;//积分输出
if(PID_e0 < -5)//当前温度高于设定温度0.5度时积分累计限制
{
if(PID_e_SUM > 150)
PID_e_SUM = 150;

if(PID_e_SUM > 0)//当前温度高于设定温度0.5度时削弱积分正输出
d_out >>= 1;
}
PID_Out += d_out;//PID比例,积分和微分输出
}
else
PID_e_SUM=0;

PID_Out/=100;//恢复被PID_Out系数放大的倍数
if(PID_Out > 200)
PID_Out=200;
if(PID_Out<0)
PID_Out=0;

if(PID_e0 > 300)//当前温度比设定温度低3度则全速加热
PID_Out=200;
if(PID_e0 < -20)//当前温度高于设定温度0.2度则关闭加热
PID_Out=0;

Hot_T_Run=PID_Out;//加热时间控制输出

PID_e2 = PID_e1;//保存上次偏差
PID_e1 = PID_e0;//保存当前偏差
}
////////////////////////////////////////////////////////////void PID_Math() end.先网上找找我做过的有仿真留个qq相互学习


上一篇: 下一篇: