原创 如何突破学习的瓶颈(二)

2009-11-13 08:09 5611 8 9 分类: 工程师职场

我们确定了用PWM方案实现电子荧火虫,接下来就是实现它了。这里用的是一个内置了PWM模块的单片机,当然,这个芯片的价格是远远高于我们说过的1块钱了。不过,实现的道理是一样的。而且我们想要讨论的并不是电路的问题,也不是代码的问题,所以我没有给出完整的电路图,也没有完整的代码,那么,我想要谈的是什么呢?还是请大家看吧。最后的那段红色的文字就是我想要说的。


要对真实的荧火虫发光情况进行模拟,需要巨大的工作量,要使用仪器对荧火虫的发光周期,光强度等参数进行精确的测量。这里不去讨论这一工作,仅是对其中一项参数进行调试,即均匀发光。由于发光二极管的非线性特征,因此,其发光强度与流过其中的电流并非线性关系。即便将PWM出的线性做得非常好,但是反映到发光上,就表现为亮度的不线性。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


前例中有


ifinCrease


              timCount++


       else 


              timCount--


显然,这样仅是保证PWM波形输出的线性,而不能保证亮度的线性变化。有时timCount变化12个数字,亮度就会感到有时显的变化;而有时timCount变化10个数字,亮度变化也不明显。要实现亮度的线性变化,就要通过观察亮度的变化,找到相应timCount值。接下来的工作,就是不断地重复劳动按下按键,记录CCAP0H的值,然后记录亮度的变化。当然,细微的变化用肉眼是难以分辨的,但大致还是能够分出一些级别来。在此,我们将亮度分为10级,并将其对应的数据记录在下表中。


  LED亮度与CCAP0H关系表



亮度等级


1


2


3


4


5


6


7


8


9


10


CCAP0H


1


4


12


22


35


70


128


165


208


254


有了表格以后,在程序中实现这样表格并不困难,用一个数组就可以,详见下面的源程序。相对而言,工作量很大的部分是表格的生成,也就是通过按键调节,观察亮度,并记录下当前CCAP0H这项工作。这项工作不仅工作量大,而且烦燥乏味,没有技术含量,因而很容易被开发者在项目规划初期忽略掉。但在实际项目中,做出来的产品能否被用户接受,却很有可能就体现在这样的工作中。这实际上也是很多项目开发中面临的问题,忽视这一点,往往会造成项目开发周期的拖延甚至最终失败。最终完成的代码如下所示。


void main()


{    


    uint               timCount=0x10


              uchar      xPosyPos


              uchar      *s="CCAP0H is"


              uchar      caTmp[4]


              uchar      cTmp1cTmp2


              bit        inCrease=1


              uchar      i


              initPCA();


              initTmr();


              xPos=0       yPos=1


              RstLcd();


              ClrLcd();


              SetCurCurFlash);    //开光标显示、闪烁


 


              WriteStringsxPosyPos);


              for(;;)


              {     ifinCrease


                     {     timCount=brightTabi++}


                     else 


                     {     timCount=brightTabi--}


                            CCAP0H=timCount  


                            mDelay100);


                            ifi==9


                                   inCrease=0


                            else ifi==0


                                   inCrease=1


              }


}


    当然,读者对于这个表格不必太关心。这个表格只适用于作者所做实验的电路板,因为LED的发光特性与限流电阻、自身特性等有关,所以这个表格并没有普遍性,而且将亮度仅十等分,也是比较粗糙的。读者应该从中看到的是一个产品的功能如何不断演化,并最终得到结果这样的一个过程。
    在各论坛逛常有这样的感觉,有很多牛气冲天的大虾,不论什么最新技术,都有人懂且精。但一旦论到用这些知识做个什么东西出来,却往往有点底气不足。当然,论坛本是华山论剑之地,并非屠龙斩虎之所,所以专门讨论技术也无可厚非。但再看一看国内的电子产品,与国外的产品相比,其差别并非在于技术的先进性,而往往在于一些细节,如产品的稳定性、产品使用时的手感、美感等。我们在用一些大品牌的手机时往往有这样的感觉:一开始不熟悉只会一些简单功能,用了一段时间后就会逐渐拓展应用,此时往往会想“要有**功能就好了”,结果一找,还真就有这功能。。。。给人的感觉是这些品牌在细节处做复非常到位。


 

文章评论1条评论)

登录后参与讨论

用户1435026 2011-7-4 17:02

总之一句话,做产品不容易
相关推荐阅读
teach51_109853927 2015-10-25 22:37
带“锁定输出”的数控稳压电源(二)
3.控制程序编写        硬件电路设计完成后,就要编写软件了。软件基本上可以分为键盘驱动,PWM生成,功能实现等部分。 3.1 键盘处理程序        STC单片机的引脚可以...
teach51_109853927 2014-03-02 12:17
带“锁定输出”的数控稳压电源(一)
本文是探索“开源培训”思想的作品。 所谓“开源培训”是指在某个社区,各志愿者提供有一定实用价值和教学价值的作品,同时详细说明制作过程,并提供制作所需的各类资源,帮助入门者快速找到适合自己的项目...
teach51_109853927 2014-02-22 21:15
《单片机项目教程》、《单片机项目教程C语言版》电子课件
《单片机项目教程》电子课件 http://pan.baidu.com/s/1kT2Yb6f 《单片机项目教程C语言版》电子课件 http://pan.baidu.com/s/1gd5O...
teach51_109853927 2014-02-22 21:05
《单片机应用与接口技术》相关资源
单片机应用与接口技术    机械工业出版社出版,江苏省教育厅推荐教材 《单片机应用与接口技术》课件 http://pan.baidu.com/s/1c0kpzUg 《单片机应用与接...
teach51_109853927 2014-02-22 15:25
便携式无线抢答器
本产品专门为开展活动时需要用到抢答器的场合设计,已制作成品,读者可以参考作为练手之用。 如图1所示左边为信号接收装置(主持人用),右边两个为发射装置(比赛选手用)。都只需要使用干电池供电即可。...
teach51_109853927 2014-02-22 15:22
Modbus通讯协议
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条