技术无极限

常用链接

统计

最新评论

#

错误是成长的代价

刚才接到一个消息,我多天努力画出来的PCB中,把数码管放倒了,做出来是一个头朝下的数字。
也怪我,每次都是拿着那一半的仪器,没注意它的数码管是在底端,结果画板的时候以为数码管是在头部,~~~~~~~~~~~

这会儿心里很乱,不知道还会有什么错误,他还说过孔比较难做,唉,我也不知道为什么过孔会比较难做呢?也没具体问他


硬件工程师,这算是我就职以后的第一个项目,呵呵,就闹出了这样的错误,吃一堑长一智吧,做硬件,再多细心都不过分的!


希望,错误是成长的代价!

posted @ 2009-11-24 09:58 勇敢空心人 阅读(163) | 评论 (0)编辑 收藏

PCB板的电源布线(摘自网络)

摘要:本文分析讨论了高速PCB板上由于高频信号的干扰和走线宽度的减小而产生的电源噪声和    压降,并提出了高速PCB的电源模型,采用电源总线网络布线,选取合适的滤波电容,模拟数字地    分开等几个简单有效的方法来解决高速PCB板的噪声和压降问题。

0 引言
    随着集成电路工艺和集成度的不断提高,集成电路的工作电压越来越低,速度越来越快。进入新世纪后,CPU和网络都迈入了GHZ的时代,这对于PCB板的设计提出了更高的要求。本文正是基于这种背景下,对高速PCB设计中最重要的环节之一——电源的合理布局布线进行分析和探讨。

1 电源模型分析
    通常,在进行理论上的分析和计算时,都是把电源进行理想化,即电源无内阻,也无寄生阻抗。如果用一个3.3V的电压源对PCB上的元件供电,那么无论距离电源的远近,各个元件都应工作在3.3V,且没有噪声。然而在实际的设计工作中,由于PCB上的Ic和输入输出的信号都工作在高频下,电场和磁场的相互转化,必不可免的给电源引入了噪声,如图1、图2所示。同时由于PCB板上的走线非常的细,又产生了由于线路阻抗引起的压降,使远离电压源的器件工作电压小于电源电压。因而高速PCB的电源布线存在两个关键的问题:电源噪声和压降。
 
                                 图1  理想电源信号模型                                           图2  实际电源信号模型

2 电源线的合理布局
    设计高速PCB板的关键之一就是要尽可能的减小由于线路阻抗引起的压降和高频电磁场转换而引入的各种噪声。通常用两种方法来解决上述问题。一是电源总线技术(POWER BUS),另一种方法就是采用一个单独的电源层进行供电。后者在很大程度上缓解了压降和噪声的问题,但考虑到多层PCB的工艺复杂,昂贵的费用和较长的制作周期,一般设计者们更喜欢采用前者,因而有必要对电源总线的合理布线进行分析讨论。
    如图3所示,采用了电源总线技术,各个元器件悬挂在电源总线上,所以又称之为悬挂式总线,电源    总线的宽度通常比普通的信号线要宽,采用总线技术后,虽然可以减小压降和和噪声的问题,但它们仍然存在的。
 
             图3  电源总线                                               图4  改进型电源总线
    首先来看压降问题,假设电源电压为3.3V,0A,AB,BC,CD,BE,AF各段导线的电阻为0.05Ω,PCB板上的每个元器件的扇出或吸入电流为200ma,并作两个理想假定:
    1.不考虑由于A,B,C处电源线地突然拐角而产生的电压电流突变;
    2.不考虑边界元件(1,4,9,12)由于电磁场地相互转换而引起的边界效应。
    则导线OA中的电流为2.6A,导线.AB中的电流为1.6A,导线BC和CD中的电流为0.8A,最后元件9上的电压为:
    3.3-2.6×0.05-1.6×0.05-0.8×0.05=3.01V
    由于线路的阻抗产生了0.29V的压降,偏差几乎达到10%,这对于一个3.3V的电压来说已经是相当大了,而且随着IC朝低电压方向的发展,已经有很多工作在2.5V乃至更低的Ic,因此这样大的压降将是非常致命的。同时,在这种电源总线下,噪声也是一个很大的问题,如图3,每个器件产生的噪声都将通过电源耦合到元件13中,这也就是说器件13叠加了13个元件的噪声,这将很容易引起器件13不能正常工作。由于这两个问题依然存在,因此对电源总线技术进行了改进,如图4所示,它被称为电源总线网络法,即让电源总线相互交叉,而把对噪声和压降敏感的元件放在电源线网络的交叉点上,使得每一个元件同时属于几个不同的回路,如图4中的元件6,7就分别属于四个不同的小回路。由于电流可以从网络中的任何一条总线上进来或出去,而且每一个网孔构成了一个回路,这就不仅可以使网络中每条总线上的电流趋于均衡,不会出现悬挂式总线上的各段总线电流大小不一致的问题,因此就可以减小由于线路阻抗引起的压降问题。元件的电流由各网孔417/分担,每个网孔的电流为400mA。对于元件5,元件9和元件1的电压都比它高,因而电流从元件1和9流向5,从5流出到6。在最坏情况下即
元件9和1的电流全部从一端流出进入元件5,则元件5上的电压为3.3-0.4×0.05=3.28V(仍假定各段导线电阻为0.05Ω),要比悬挂式总线高了许多。悬挂式电源总线和改进型电源总线中元件1,5,9元件的电压数据分别如表1和表2所示:

节点元件 电压(V)
1 3.13
5 3.05
9 3.01

表1  分布式电源总线电压

节点元件 电压(V)
1 3.3
5 3.28
9 3.3

表2 改进型电源总线电压
    从表中可以看到由于采用了改进的电源总线技术,元件1,5,9的电压都得到了极大的提升。
    同时对于各个元件产生的噪声来说,由于干扰是高频信号,因而每个回路可以看成一个单匝线圈。根据法拉第电磁感应定律ξ=dφ/dt,由于每个回路中的电流方向不一样,因而产生的变化磁场(大小为穿过每个网孔的磁通φ)的方向也就不一致,因而感应的电动势的方向也就不一致,这样就可以起到相互抵消的作用,减小了由于噪声干扰产生的尖锋电压或电流,保护了元件的正常工作。同时由于电源总线网络是杂乱无章的,因而每个元器件产生的噪声通过电压平均的耦合到其它各个元器件上去,最终减小了远端器件的压降和近端器件的噪声问题(相对电源而言)。改进的电源网络总线技术不仅对宏观的PCB十分有效,对微观的大规模集成电路中的电源的布线也具有一定的参考价值。

3 滤波电容的选取与放置
    虽然采用了改进的电源总线技术后可以在很大程度上减小噪声的问题,但它总是存在的,这就必然要求引入电容器进行滤波。电容器的种类有很多,由于制造的材料和工艺的不同,各种电容器的滤波性能不尽相同。同时在高频下,电容本身也会产生寄生的阻抗。如图5,图6所示。因而在高频下,电容本身成了一个谐振电路fr=1/(2π√LC)。由于寄生阻抗的存在,当电容器的工作频率f>fr时电容呈现感性,f<fr时,电容呈现容性,如图7所示。因而在选择滤波电容是要特别小心,要尽量使电容工作在容性状态,如果电容选取不当,使电容工作在感性状态,那么也就失去了滤波的作用。因此一定要选取电容值(C)大,串联电阻(R)和串联电感(L)小的电容器。由于制造材料的不同,各种电容的参数也不同,一般来说,电解电容和胆电容对低频噪声的滤波效果比较好,瓷片电容,独石电容等对高频噪声的滤波效果比较好。在实际的PCB板的设计中,滤波常分为两个部分,电源滤波和器件的滤波。对于电源,由于整个PCB板上的噪声都加到了它的上面,其中不仅包含了低频噪声,也包含了大量的高频噪声。为了有效的滤除这些噪声,通常是采用一个大电容(典型为>uF的电解电容或胆电容)和一个小电容(典
型为uF)并联来进行滤波,这样可以极大的提高滤除的噪声范围,如图8所示。对于器件滤波,随着集成电路工艺的进步,IC自己本身能较好的抑制低频噪声,而对高频噪声比较敏感,所以一般采用小电容(典型为pF)来进行电源滤波。
 
         图5理想电容                                                              图6高频下电容器实际电路

 
         图7 单个电容滤波                            图8 两个电容并联滤波

4 数字地和模拟地
    随着Ic集成度的提高,现在的IC一般都有好几对电源和地,其中就有模拟地和电源地。地线实际上也是一条信号线,但它的特殊性在于它是电路的公共端,通常是指零电位点。但由于使用的导线和敷铜连线在高频下都有寄生的电感,电容的存在,将当其用作地线时,导线本身的阻抗也会是电容产生公共耦合,从而使模拟地和数字地相互干扰。由于数字信号的0,1有一定的容差范围,如0.7v以下为0,2.4V以上为1,所以数字信号上有几百毫伏的噪声一般是不会影响信号的正常判断的。而模拟信号对噪声十分敏感,如果一个幅度为2V的正弦信号上叠加了一个几百毫伏的噪声,再经过多级放大器放大后,那么很有可能引起信号门限电平的误判而使这个电路工作在错误的状态之下。所以从理论上来说要将数字地和模拟地分开,以降低电源对噪声的耦合作用。在实际的设计中,通常把电源通过两个uH的电感引出分别作为模拟电压和数字电压,同时在电源的地端用一个零欧姆的电阻分别引出作为模拟地和数字地。

5结束语
    在对高速PCB上的电源存在的两个问题——压降和噪声的产生原因进行了分析,并就如何在高速PCB的实际设计中有效地解决这两个问题提出了一些方法,在实际的设计工作中当然还有其它的解决方法,不一一例举。总之,在设计高速PCB板时,对电源布局布线的处理应尽量遵循下面一些规则:

  1. 有条件的情况下,尽量采用单独的电源层和地层进行供电。采用电源网络总线时,网孔越多越好,形成许多嵌套的网孔,同时总线要尽量的宽,以达到均衡电流,降低噪声的目的;
  2. 电源的走线不能中间细两头粗,以免在上面产生过大的压降。走线不能突然拐弯,拐弯要采用大于90°的钝角,最好采用圆弧形走线,电源的过孔要比普通的人一些。有条件的话,在过孔处加滤波电容;
  3. 对于那些特别容易产生噪声的部分用地线包围起来,以免产生的噪声耦合入电压。

参考文献:
[1]钱振宇.产品的电磁兼容性设计(连载)[DB/OL].
[2]宋万杰.CPLD技术及其应用[M].西安:西安电子科技大学出版社1997.
[3]王幸之.单片机系统抗干扰设计iM].北京:北京航空航天人学出版社2000.

 

posted @ 2009-11-18 10:29 勇敢空心人 阅读(786) | 评论 (0)编辑 收藏

IC封装相关

 

BGA
Ball Grid Array
CLCC
CPGA
Ceramic Pin Grid Array
DIP
Dual Inline Package

 

DIP-tab
Dual Inline Package with Metal Heatsink
FBGA
FDIP
FTO220
Flat Pack
HSOP28
ITO220
ITO3p
JLCC
LCC
LDCC
LGA
LQFP
PCDIP
PGA
Plastic Pin Grid Array

 

PLCC

PQFP
PSDIP

LQFP 100L
METAL QUAD 100L
PQFP 100L
QFP
Quad Flat Package
SOT220
SOT223
SOT223
SOT23
SOT23/SOT323
SOT25/SOT353
SOT26/SOT363
SOT343
SOT523
SOT89
SOT89
LAMINATE TCSP 20L
Chip Scale Package
TO252
TO263/TO268
QFP
Quad Flat Package
TQFP 100L

SBGA
SC-70 5L
SDIP
SIP
Single Inline Package
SO
Small Outline Package
 
SOJ 32L
SOJ
SOP EIAJ TYPE II 14L
SOT220
SSOP 16L

 
SSOP
TO18
TO220
TO247
TO264
TO3
TO5
TO52
TO71
TO72
TO78
TO8
TO92
TO93
TO99
TSOP
Thin Small Outline Package
TSSOP or TSOP II
Thin Shrink Outline Package
uBGA
Micro Ball Grid Array
uBGA
Micro Ball Grid Array
 
ZIP
Zig-Zag Inline Package
TEPBGA 288L TEPBGA 288L
C-Bend Lead 
CERQUAD
Ceramic Quad Flat Pack
Ceramic Case
LAMINATE CSP 112L
Chip Scale Package
Gull Wing Leads 
LLP 8La
PDIP
PLCC
SNAPTK
SNAPTK
SNAPZP
SOH

posted @ 2009-11-09 11:44 勇敢空心人 阅读(346) | 评论 (0)编辑 收藏

2009年11月7日个人思索

 

 

         整天不知道该做什么饭,尤其是他想回家吃饭时,我连续三天晚上给他做的同样的饭,他今天说还那样做,我回答是的,他的下一句话就是“你还没做够啊?”,呵呵,还好他不算是很挑剔的人,基本上属于做什么饭就吃什么的人,遗憾的是我都已经厌倦做同样的菜了,自从这周天气一降温,就不想炒菜了,总是把白菜粉条再加些鱼丸之类的东西一起炖了,然后加上馒头就凑成一顿晚餐,唉,反正我晚上下班之后已经饿得前胸贴肚皮了,饭做好之后很快就一扫而光,吃炖菜,估计也是我多年的爱好吧,算作汤也算作菜,就是不知道他长时间吃会不会腻?

         今天是周六,上午睡睡懒觉然后吃早餐逛菜场,在之后和他一起去合家福购物,很快就到了中午,午饭后和他一起看电影,不过我看了一半就睡着了,等我醒了已经是下午五点了,于是又考虑吃晚饭,晚上看翡翠凤凰和乔家大院,这一天的时间就这样过去了

         我今天的思考是:我的时间都花在了一些琐碎和娱乐上面,那随着时间的流逝,我积累下来的估计只有衰老了

posted @ 2009-11-07 22:41 勇敢空心人 阅读(114) | 评论 (0)编辑 收藏

protel dxp 2004 pcb 使用方法

     摘要: protel dxp
批量修改PCB上的字体大小
从原来的PCB文件中导出元件封装
度量单位的改变
PCB中如何快速定位到某元件
PCB中修改单个元件的封装
  阅读全文

posted @ 2009-11-06 12:45 勇敢空心人 阅读(6614) | 评论 (7)编辑 收藏

上班一周了

      自从上次从**辞职之后,玩了一个月,之后才开始专心的找工作
经过了几次面试,要么被别人鄙视,要么把别人鄙视,然后再次被联发科技(合肥)鄙视之后,大脑突然变得很冷静了,或者是开始为生活担忧了,不能再这样沉沦下去,认认真真的开始考虑找工作

      看来任何事情真是怕“认真”二字,在我开始担心未来的时候,几个看起来还可以的机会来了,参加了乐堂动漫的笔试,感觉还可以,审阅的人也给予了充分的肯定,只是在讨论机试时间的时候,我说到了下周一和二都有面试,他做了记录。然后我就离开了,结果周一去的“天智”公司让我很是生气,面试的人先看了一下我的期望薪资一眼就问我有没有调整的可能,我说不能,然后就随便聊了几句就走了,出了门我很是生气,既然对我的期望薪资有异议,就不要通知我大老远的跑一趟了吧!

      周二又去了我现在上班的公司,是一个新注册的小公司,不过和老大挺聊得来的,他对我的薪资期望也给予了理解,中午在家吃饭的时候接到了他的电话,说决定录用我了,并且下午参加他们技术负责人开的一个会。就这样,我开始上班了,又开始上班了
 
      周三的时候接到了乐堂动漫的电话,hr的小妹妹先问我找到工作了没,我当时正在看原理图,也不想跑去再面试然后再告诉人家不去上班,于是直接告诉回答说找到了,她说“那打扰了”,就这样,和动漫错过了,也许吧

      上了一周的班了,这一周的工作都是画PCB图,总是会遇到这样那样的小问题,也许很白痴吧,但是却需要一个个的解决,总之一句话,自我学习,拒绝眼高手低

      今天中午他给我打电话,说上次帮我推荐的一个部门又可能要通知我去笔试或者面试,唉,让我很生感慨,我刚下定决心在这个公司里呆上一年好好充充电,已经把我鄙视过两回的联发科技又让我去面试,说真的,心里都在嘀咕如果真是再去面试,我该以一个什么样的心态对待呢
      联发科呀联发科,我有机会的时候没准备好(应该毕业),我准备好的时候又没机会了(它上次拒我的理由是“先辞职后找工作,职业不稳定”,可能也有技术方面的原因吧),现在我已经对你死心了,可是你不会又来耍我了吧......有时候难免会想,呆在合肥这样的一个小城市里,可能除了联发科就没有其它让我如此向往的地方了,那就离开去上海深圳北京闯闯吧,可是另一个声音却告诉我,安分守己准备结婚生子吧,哈哈,要一个安稳的生活,还是选择机遇与挑战并存的道路呢?

       而且,他已经占据了hardware部门,我只能进入嵌入式软件方面的岗位,做软件还是硬件,好像是一个相差很远的方向哦


      。。。。。。。。。。。

      这一周白天上班,晚上就在家看电视,彷佛进入养老状态,或许是因为前段时间精神比较紧张,最近才放松下来吧,思索一下,不能这样啊,想起我离开哈尔滨时还对王哥说若干年后我要开着凌志车去看望他呢,生活啊,我不能还没开始奋斗,就已经进入收尾阶段了啊

      幸运的是我今天看了张近东的“情有独钟,迷情电子三五年”,很多年没有的热血沸腾的感觉又回来了,啊,上帝,我还没有老,我还年轻,还有梦想还会激动,所以,我决定写下这篇日志,并好好规划一下我的生活


1、按时上下班,这是最基本的原则
2、积极完成工作任务,在本周内把PCB完成,积极推进对protel  dxp 2004的熟练掌握程度,这是我的第一个自主完成的pcb,坚定信念!
3、每天坚持两个小时的学习(晚7:20---9:20)
4、坚持完成主妇的基本任务,“一屋不扫,何以扫天下”啊,也许,抵抗懒惰就是在远离抑郁,我要“执子之手,与子偕老”!
5、降低吃饭的胃口,扩大挣钱的欲望
6、扩大眼界,着手小处,若干年后,我还是.......

posted @ 2009-11-05 20:50 勇敢空心人 阅读(264) | 评论 (0)编辑 收藏

利用辗转相除法求两个自然数的最大公因数

利用辗转相除法求两个自然数的最大公因数 程序如下:
//利用辗转相除法求两个自然数的最大公因数
int gcd(int a, int b)
{
    int r;
    while(b)
    {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}

相关理论如下:
    「辗转相除法」又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的。利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd。所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作 gcd(8,12)=4。
    在介绍这个方法之前,先说明整除性的一些特点,注以下文的所有数都是正整数,以后不再重覆.
    我们可以这样给出整除以的定义:
    对於两个自然数 a 和 b,若存在正整数 q,使得 a=bq,则 b 能整除 a,记作 b | a,我们叫 b 是 a 的因数,而 a 是 b 的倍数。那麼如果 c | a,而且 c | b,则 c 是 a 和 b 的公因数。
    由此,我们可以得出以下一些推论:
    推论一:如果 a | b,若 k 是整数,则 a | kb。因为由 a | b 可知 ha=b,所以 (hk)a=kb,即 a | kb.
    推论二:如果 a | b 以及 a | c,则 a | (b±c)。因为由 a | b 以及 a | c,可知 ha=b,ka=c,二式相加,得 (h+k)a=b+c,即 a | (b+c).同样把二式相减可得 a | (b-c)。
    推论三:如果 a | b 以及 b | a,则 a=b。因为由 a | b 以及 b | a,可知 ha=b,a=kb,因此 a=k(ha),hk=1,由於 h 和 k 都是正整数,故 h=k=1,因此 a=b。

    辗转相除法是用来计算两个数的最大公因数,在数值很大时尤其有用而且应用在电脑程式上也十分简单。其理论如下:
    如果 q 和 r 是 m 除以 n 的商及余数,即 m=nq+r,则 gcd(m,n)=gcd(n,r)。    证明是这样的:
    设 a=gcd(m,n),b=gcd(n,r)
    则由 a | m 及 a | n,可得 a | (m-nq)(由推论一及推论二得出的),即 a | r ,又 a | n,所以 a | b。
    由 b | r 及 b | n,可得 b | (nq+r),即 b | m,又 b | n,所以b | a。
    因为 a | b 并且 b | a,所以 a=b,即 gcd(m,n)=gcd(n,r)。

举例计算 gcd(546, 429),由於 546=1(429)+117,429=3(117)+78,117=1(78)+39,78=2(39),因此
gcd(546, 429)
=gcd(429, 117)
=gcd(117, 78)
=gcd(78, 39)
=39



此处再添加一个程序例子,不过不是利用辗转相除法
求最大公约数和最小公倍数:
          #include <iostream>
         using namespace std;
         int gec,lcm;
         void process(int x,int y)
         {
               gcd=x<y?x:y;
               lcm=x<y?y:x;
               for(gcd=x<y?x:y;gcd>1;gcd--)if(x%gcd==0&&y%gcd==0)break;
               for(lcm=x<y?x:y;lcm>1;lcm++)if(lcm%x==0&&lcm%y==0)break;
               return;
         }
       

posted @ 2009-10-21 10:51 勇敢空心人 阅读(1675) | 评论 (0)编辑 收藏

printf/scanf格式控制符的完整格式

printf的格式控制的完整格式:
%  -  0  m.n  l或h  格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

---------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。
 ①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
例:
   main()
   { int a = -1;
     printf("%d, %o", a, a);
   }
  运行结果:-1,177777
  程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。
⑤c格式:输出一个字符。
⑥s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
⑧e格式:以指数形式输出实数。可用以下形式:
%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

---------------------------------------
关于printf函数的进一步说明:
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3);
输出0.333333%。

---------------------------------------
对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位.

 

 


由高手指点
对于m.n的格式还可以用如下方法表示(例)
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

 

一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:

int slen;

printf("hello world%n", &slen);

执行后变量被赋值为11





scanf格式控制的完整格式:
%  *  m  l或h  格式字符
①格式字符与printf函数中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,无%u格式、%g格式。
②可以指定输入数据所占列宽,系统自动按它截取所需数据。如:
scanf(“%3d%3d”,&a,&b);
输入:123456
系统自动将123赋给a,456赋给b。
③%后的“*”附加说明符,用来表示跳过它相应的数据。例如:
scanf(“%2d%*3d%2d”,&a,&b);
如果输入如下信息:1234567。将12赋给a,67赋给b。第二个数据”345”被跳过不赋给任何变量。
④输入数据时不能规定精度,例如:
scanf(“%7.2f”,&a);
是不合法的,不能企图输入:12345.67而使a的值为12345.67。

------------------相关-------------------
输入数据流分隔
①根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。如:
scanf(“%d%c%f”,&a,&b,&c);
如果输入如下信息:
1234r1234.567
则scanf函数在接收数据时发现”r”类型不匹配,于是把”1234”转换成整型赋值给a,把”r”赋给变量b,最后把”1234.567”转换成实型数据赋给c。
②根据格式项中指定的域宽分隔出数据项。如语句:scanf(“%2d%3f%4f”,&a,&b,&c);
如果输入如下信息:
123456789012345
   则scanf函数在接收数据时根据域宽把12赋值给a,345赋值给b,6789赋值给c。
③隐示分隔符。空格、跳格符(’\t’)、换行符(’\n’)都是C语言认定的数据分隔符。
④显示分隔符。在scanf函数的两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符分隔。如语句:
scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);
则输入数据应该为:
   a=1234,b=67.8,c=98.123

---------------------------------------
关于scanf函数的进一步说明:
①scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,如果a、b为整型变量,则
scanf(“%d,%d”,a,b);
是不对的,应将”a,b”改为”&a,&b”。
②如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。例如:
scanf(“%d,%d”,&a,&b);
输入时应输入:3,4。3与4之间的逗号应与scanf函数中的“格式控制”中的逗号相对应,输入其它符号是不对的。
③在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。
scanf(“%c%c%c”,&c1,&c2,&c3);
如输入:a b c 。字符’a’赋给c1,字符(空格)’ ’赋给c2,字符’b’ 赋给c3。
④ scanf  中不使用U说明符.对unsigned型数据用d、o、x说明符输入.

posted @ 2009-10-18 18:38 勇敢空心人 阅读(2280) | 评论 (0)编辑 收藏

在杂乱之中总结

辞职已经20天了,时间过得真快!

每天忙忙碌碌的活着,彷佛比上班的时候还忙,呵呵,当然了,既想学习又想玩,的确是比上班的时候忙多了
辞职之后的一周时间都在看电视剧,把射雕英雄传和神雕侠侣都详细的看了一遍,终于把这个多年的梦给圆了,05年复习考研的时候,有一段时间特想看神雕侠侣,可惜当时忙于复习,也没找到完整的小说版,所以一直到4年之后的今天才把它给看了。其实人一生有很多小小的心愿,因为阴差阳错各种原因吧,没得实现。但是我辞职后的第一个周末,看到安徽卫视在播放射雕英雄传,于是在网上搜了一下,终于在土豆网上把全部都看了一遍....人,有梦想,真好!

玩了几天,玩够了,休息够了,终于该干点正事了。于是从当当网上订购了几本Protel99的教程,想彻底的学习一下PCB。也是一个遗憾,硕士的时候一直觉得自己不会PCB,是一块太短的木板,现在也终于有机会把它补得长些了,因为想了又想,实在是不愿意做软件开发,还是向硬件方面发展吧,所以先过了PCB这一关

之间投递了一些简历,面试了一家公司,不过觉得自己的期望工资把人家给吓着了,所以就没消息了,唉,在一个小城市里想找硬件方面的公司的确机会很少,不过我不放弃,我要尝试,我要挑战一下自己

和男朋友一起在健身房办了张会员卡,期限一年,本意为锻炼身体,增强体质。可是去了两次之后看到那么多的魔鬼身材,再看看自己,于是也想减肥了。减肥,也是我多年来的梦想之一啊,可惜一直都没有实现,反而是越来越胖了

想到一句话,连自己的体重都控制不住,那还能让什么在自己的掌控之中呢,呵呵,话又说回来,吃胖容易,减肥的确很难



这几天在网上溜达溜达,随着自己学习PROTEL进程的推进,准备开始好好学习FPGA,困难很多,可是要坚持,坚信自己会成功的

posted @ 2009-09-03 19:03 勇敢空心人 阅读(161) | 评论 (0)编辑 收藏

改变人生的32句励志名言

改变人生的32句励志名言

    1
、大多数人想要改造这个世界,但却罕有人想改造自己。

    2
、积极的人在每一次忧患中都看到一个机会, 而消极的人则在每个机会都看到某种忧患。

    3
、莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法)

    4
、伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。


    5
、世上没有绝望的处境,只有对处境绝望的人。

    6
、当你感到悲哀痛苦时,最好是去学些什么东西。学习会使你永远立于不败之地。

    7
、世界上那些最容易的事情中,拖延时间最不费力。

    8
、人之所以能,是相信能。

    9
、一个有信念者所开发出的力量,大于99个只有兴趣者。

    10
、每一发奋努力的背后,必有加倍的赏赐。

    11
、人生伟业的建立 ,不在能知,乃在能行。

    12
、任何的限制,都是从自己的内心开始的。

    13
、含泪播种的人一定能含笑收获。

    14
、欲望以提升热忱,毅力以磨平高山。

    15
、一个能从别人的观念来看事情,能了解别人心灵活动的人永远不必为自己的前途担心。

    16
、一个人最大的破产是绝望,最大的资产是希望。

    17
、不要等待机会,而要创造机会。

    18
、如果寒暄只是打个招呼就了事的话,那与猴子的呼叫声有什么不同呢? 事实上,正确的寒暄必须在短短一句话中明显地表露出你对他的关怀。

    19
、昨晚多几分钟的准备,今天少几小时的麻烦。

    20
、做对的事情比把事情做对重要。

    21
、人格的完善是本,财富的确立是末。

    22
、没有一种不通过蔑视、忍受和奋斗就可以征服的命运。

    23
、行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。

    24
、没有天生的信心,只有不断培养的信心。

    25
、只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。

    26
、人性最可怜的就是:我们总是梦想着天边的一座奇妙的玫瑰园,而不去欣赏今天就开在我们窗口的玫瑰。

    27
、征服畏惧、建立自信的最快最确实的方法,就是去做你害怕的事,直到你获得成功的经验。

    28
、失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。

    29
、让我们将事前的忧虑,换为事前的思考和计划吧!

    30
、再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。

    31
、任何业绩的质变都来自于量变的积累。

    32
、成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

 

posted @ 2009-08-12 13:51 勇敢空心人 阅读(161) | 评论 (0)编辑 收藏

仅列出标题
共3页: 1 2 3