2008年12月31日星期三

关于电源用滤波电容

关于电源用滤波电容

容器(capacitor)在音响组件中被广泛运用,滤波、反交连、高频补偿、直流回授…随处可见。但若依功能及制造材料、制造方法细分,那可不是一朝一夕能说得明白。所以缩小范围,本文只谈电解电容,而且只谈电源平滑滤波用的铝质电解电容。
  每台音响机器都要吃电源─除了被动式前级,既然需要供电,那就少不了「滤波」这个动作。不要和我争,采用电池供电当然无必要电源平滑滤波。但电池充电电路也有整流及滤波,故滤波电容器还是会存在。
  我们现在习用的滤波电容,正式的名称应是:铝箔乾式电解电容器。就我的观察,除加拿大Sonic Frontiers真空管前级,曾在高压稳压线路中选用PP塑料电容做滤波外,其它机种一概都是采用铝箔乾式电解电容;因此网友有必要对它多做了解。
  面对电源稳压线路中担任电源平滑滤波的电容器,你首先想到的会是什麽?─容量?耐压?电容器的封装外皮上一定有容量标示,那是指静电容量;也一定有耐压标示,那是指工作电压或额定电压。
  工作电压(working voltage)简称WV,为绝对安全值;若是surge voltage(简称SV或Vs),就是涌浪电压或崩溃电压;,超过这个电压值就保证此电容会被浪淹死─小心电容会爆!根据国际IEC 384-4规定,低於315V时,Vs=1.15×Vr,高於315V时,Vs=1.1×Vr。Vs是涌浪电压,Vr是额定电压(rated voltage)。
  电容器的电荷能量是以Q=CV来表示,Q是库伦,C是静电容量,V是电压;故当电压值不变时,加大静电容量就能增高电荷能量。请注意,电容器的容量单位应是F(farad),可是因计量太高造成数值偏低,故多改用μF,1F=一百万μF。国外也有用mF表示μF,其实mF不十分贴切,但机械式打字机上没有μ键,故用m代表micro。
  有了静电容量及工作耐压两个参数,若你正在选购电容,接下来你会考虑什麽?直觉上是价钱。嗯,这个参数很重要,而且数值愈低愈佳。也有人先想到品牌,并坚持日本货打死不用─还存著八年抗战情结?美国货也仅能排第二,瑞典或德国制造的才能排第一。嗯,这个参数也很重要。但既然谈到品牌,那就不能忽略系列型号;因为一个制造厂会生产许多不同系列的产品,系列不同,品质及价格就会不同。OK,我们先整理一下,有关电源平滑滤波电容器的参数已知有:静电容量、额定工作电压、涌浪崩溃电压、价格、品牌、型号系列。
  不应该只有小猫两三只,外型尺寸也应该很重要,因为与它相关的有重量及接脚型态,snap-in是插焊PC板式,screw是锁螺丝式。至於重量,同容量同耐压,但品牌不同的两个电容做比较,重量一定不同;而外型尺寸更与机箱规划有关。有些电容不是全圆型,有点像是多角型,Philips、BHC都有这种看起来似乎很高级的系列。现在我们再整理一下,加上重量、外型尺寸、接脚型态─已有九个参数。
  外皮颜色?这是谁提出来的?很妙。因白色、黑色、蓝色塑胶封装都有厂商在用,它有时也具有某些意义,例如日规黑底金字常代表高级for audio音响级电容。仅凭外观还能想到哪些?制造日期,9627就是1996年第27周出厂;近年来日制电容似乎逐渐有意省略制造日期的标示。但外皮颜色及文字印刷不直接与品质有关,故仅加上制造日期参数。还有,别忘了适用工作温度,因为 105度C比85度C更适用於真空管机。若机器要摆在南极,最好选耐负55度C的品种。
  容量误差也别遗漏,当采多颗并联,为求得单只特性均匀,误差当然是愈低愈佳。现在再加上工作温度及容量误差,咱们手上已有12个参数,对电容器应有三成以上了解。
  请别会错意,电容的工作温度不是指环境或表面温度─不管几度,封装塑胶外皮都是一样,它是指铝箔工作温度,所以装管机选用85度C品种也绝对OK,只要将电容器远离管仔就一定安全。
  可是真正有关电容器品质的几个重要参数,却都只存在原厂规格书中,完全不会显露在成品封装外皮上,而这些重要参数才是本文谈论的重点。
散逸因数─损失角
  散逸因数dissipation factor(DF)存在於所有电容器中,有时DF值会以损失角tanδ表示。想想,损失角,既有损失,当然愈低愈好。塑料电容的损失角很低,但铝电解电容就相当高。DF值是高还是低,就同一品牌、同一系列的电容器来说,与温度、容量、电压、频率……都有关系;当容量相同时,耐压愈高的DF值就愈低。举实例做说明,同厂牌同系列的10000μF电容,耐压80V的DF值一定比耐压63V的低。所本刊选用滤波电容常会找较高耐压者,不是没有道理。此外温度愈高DF值愈高,频率愈高DF值也会愈高。
  但许多电容器制造厂,在规格书上常不注明散逸因数DF值,因为数值甚高很难看。以瑞典RIFA为例,其蓝色PHE-420系列是MKP塑料电容,它的DF值最低是0.00005/最高是0.0008。但白色顶级PEH169系列铝质电解电容,就未标示损失角规格。若真注明DF值,可能会是1.0000,小数点是在1的後面。
漏…漏电流
哇!漏电!最好没有。可是没办法,铝电解电容在工作时一定会产生漏电流。
  漏电流(leakage current)当然要低,它的计算公式大致是:I=K×CV。漏电流I的单位是μA,K是常数,例如是0.01或0.03,每家制造厂会选择不同的常数。但不论如何,电容器容量愈高,漏电流就愈大。如果你有容量愈大平滑效果愈好的想法,这个「漏电流」也请考虑在内。从计算式可得知额定电压愈高,漏电流也愈大,因此降低工作电压亦可降低漏电流。
  但降低电容器的漏电流并不容易,低漏电流low leakage current-LL系列价格高昂,我曾向国内厂商订制一批低漏电流LL系列电容,价格比许多进口电容还贵。漏电流规格,铝电解电容就比钽电解电容差许多,钽质电容也有乾式及湿式两种,不过它的容量及耐压都较低。
  除特别定制外,面对一般品,想要降低它的漏电流可设法提高Vs对Vr的比值。Vs是涌浪电压,其值当然比Vr额定电压高,但施加电压(真正的工作电压)还应该比Vr低,例如取Vr的90%;找高耐压品种可说是完全正确。
等效串联电阻ESR
  一只电容器会因其构造而产生各种阻抗、感抗,比较重要的就是ESR等效串联电阻及ESL等效串联电感─这就是容抗的基础。电容器提供电容量,要电阻干嘛?故ESR及ESL也要求低…低;但low ESR/low ESL通常都是高级系列。
  ESR的高低,与电容器的容量、电压、频率及温度…都有关,当额定电压固定时,容量愈大 ESR愈低。有人习用将多颗小电容并接成一颗大电容以降低阻抗,其理论是电阻并联阻值降低。但若考虑电容接脚焊点的阻抗,以小并大,不见得一定会有收获。
  反过来说,当容量固定时,选用高WV额定电压的品种也能降低 ESR;故耐压高确实好处多多。频率的影响:低频时ESR高,高频时ESR低;当然,高温也会造成ESR的提升。
  串联等效电阻ESR的单位是mΩ,高级系列电容常是low ESR及low ESL。若比较低内阻及低漏电流两种特性,则低内阻容易达成,故标示low ESR的电容倒很常见。ESR与损失角有关联,ESR=tanδ/(ω×Cs),Cs是电容量。
  有时电容器规格上会有Z,它与ESR的意义不同,但Z的计算示与ESR有关,同时也考虑到容抗及感抗,是真正的内阻。刚才提到电容的ESR单位是mΩ,那是指大电容,若是220μF小容量电容,其ESR单位就不是mΩ而是Ω。何种电容器的ESR最低?答案只有一个:Sanyo的OS有机半导体电容!
涟波电流Irac
  前面谈到的散逸因数DF-损失角tanδ、漏电流、ESR-串联等效电阻…等,其值都是愈低愈好,但现在要提的涟波电流ripple current却是愈高愈好。特别是现在都特别讲究後级扩大机要有大电流输出,电源平滑滤波电容器的涟波电流Irac(或Iac)就显得格外突出。
  涟波电流Irac的标示至少应有低频及高频工作时两种规格数字,低频大约是以120Hz做标准,高频大概是以 10KHz做标准,但不同制造厂商可能会有略微的差别。
  涟波电流与频率刚好成正比,因此低频时涟波电流也比较低。可是对我们音响迷来说,低频段的Irac值才是重要。所以在采购电容器时,涟波电流数字高低是极为重要的依据。在一般状况下,同品牌时,锁螺丝式电容的涟波电流通常比snap-in插PC板式来得高。
  曾经有一种说法:RIFA的10000μF相当於其它厂牌15000μF,因为大部份日制电容的涟波电流都不高,而RIFA又特别高,故好像可以一个当两个用。德国Siemens、英国BHC电容,在Irac这项特性上也常优於日制品。就笔者所知,Irac最大的电容,是Siemens SIKOREL系列电容为最高,6800μF/63V就高达20A!若是小容量电容,Irac最大的是Sanyo OS电容。
  就後级扩大机的动作来说,很多人会认定低频时吃电流。有个方法可以试:以电表直流电压-DCV最低档量任一只射极电阻压降,最好是指针电表,播放唱片,将前级音量转大,注意电表指针的摆动,你就会发现低频固然会吃电流,四把吉它连弹也会猛吃电流!什麽音乐最适合run-in後级扩大机?Holst的《行星组曲》第一曲MARS。
  现在你应该已经明了六成以上,或许你想问:有没有体型不大,漏电低、ESR低、tanδ低、误差低、价格低,但涟波电流高、适用温度范围高的铝电解电容?嗯…,没有!
  关於容量误差,近年来铝质电解电容颇有进步,以往是-20%~+40%,现在大多是+/-20%。但其容量常偏+而不是偏-,故10000μF测量起来有可能会接近12000μF。
  精确量取大容量电容器的静电容量,是我多年来一直想做的事。不要怀疑,这种测试仪器很难买到,美国曾制造过,可量至99999μF,并能同时显示DF值及 ESR值;而且电容量是100Hz、1KHz、10KHz三段(不是两段)频率测试的平均值。这种仪器国内市场曾出现过,小卖新台币十万元─只差漏电流的测试。
  额定工作电压的安全度,在我的标准是:至少理让15%。例如某电容的额定电压是50V,虽然涌浪电压可能高至63V,但我最高只会施加 42V电压。让电容器的额定电压具有较多的余裕,能降低内阻、降低漏电流、降低损失角、增加寿命,一举数得何乐不为?以前曾看过日制扩大机,±48V工作电压配上10000μF/50V滤波电容;短时间内当然不会烧坏,但时日长久,寿命有可能降低,那就得更换新品或另购新机。所以日制品常有「时间到了,该走了」的宿命,你也不能指责它是偷工减料,毕竟做生意总要图利,若一辈子只能卖你一次,如何赚钱?
容量愈高哼声愈低?
  自己装,最讨厌的就是哼声除不掉。有人将滤波电容加大,哼声就没了。我是不十分相信,因扩大机的哼声常是因地回路不当引起,来自电容器微乎其微。但是理论上,容量愈高,电源平滑效果也就愈佳,所以大容量的做法,是许多设计者及DIY迷亦深信不疑。
  因此不少後级扩大机,特别是美国产品Krell、Mark Levinson,最爱采用大水塘─大电容;丹麦的Dynaudio,连前级扩大机都用到十数万μF之容量。至於AC & DC交直流,也比较倾向於「大容量」派,但尚适可而止。
  可是也有不少名厂走低容量路子,例如美国Amcron有台 250W×2专业後级扩大机,两声道合计500W,只用了2只8200μF小滤波电容器(好像是小了点)。瑞士Goldmund算是Hi-End品牌,产品送到各杂志社试听,没有一个评论员胆敢说它坏,它的大後级就是采用小电容。瑞士FM Acoustics更是贵到毙,一台立体声後级後级可换一部Benz车。它的220W×2专业後级,号称数十A电流输出,本人亲眼得见,全机只使用2只10000μF/100V滤波电容。
  大容量滤波与低容量滤波两种理论基本上是对立的,但却同时存在於音响圈。以低容量论点设计扩大机,也可以完全没有哼声,而且低频表现也不比「大水塘」机差。重点是什麽?Irac涟波电流。如果你如今还是满脑子的大容量,那你还不了解电解电容!
  给大家一个建议:组装後级若采用低容量滤波电容时,千万要配用高功率电源变压器。也就是「瘦了电容器、肥了变压器」,这可能就是扩大机好声的秘绝。以这几年详细之观察,後级扩大机若要好声,采用大功率电源变压器比采用大容量滤波电容有效多了。
一颗大的?多颗小的?
  OK,有人放心不下,滤波电容坚持要大μF─那是找一个大的,还是用十来个小的并接?又有人说用小颗并,不但内阻可以降低,反应速度也会也快,透明度及解析度都比较好。
  Mark Levinson及Krell的後级不是以小并大,但有谁认为它反应速度慢、不透明有雾?面对此问题,我自己都长期陷入迷阵中。就机箱规划来说,用多颗小电容并联似乎比较理想,而且进货量大价格也便宜,甚至前级、後级、综合机,都可采用同一种电容。
  进口机与国产机的命运有些不同,当消费者面对数十万元进口机采用多颗小电容时,他会自我解释:这个很有道理;但面对国产品时,他可能会有另一套恶毒的说法:偷工减料!
  就音质表现,大水塘or小水塘、一颗大的or多颗小的,应该没有绝对关系。邓小平说得好:管它黑猫、白猫,会捉老鼠的就是好猫。
  制造厂牌也关乎品质特性,前述有人终其一生不用日制品。美国原本有两大电容器品牌Mallory及Sprague,现在 Sprague已成绝响,因为它被日本Nippon Chemi-con收购,且公司名称注册United Chemi-Con/简称UCC。但只要是仍在美国制造,外皮印有made in USA,商标更改与制造品质应无关联。
  不过外界已有耳语:UCC比Sprague差,可能性如何?日本商社一旦接手,行销政策自然会大幅改变,为了提高出货量必得降低售价;但假格下滑也会导致品质下滑。询问本地代理商瑞普公司,UCC电容销售量比Sprague低,显示国内厂商有排斥UCC的反映。若比较UCC及Sprague的规格特性,果然是一付Japanese样─体型大为缩水,原本40mm×80mm的改成40mm×50mm,价格可能较低廉,但ESR增加、Irac减小─怎不令人掷笔三叹?
  你对日制品有疑虑?没办法,非但美国如此,德国也需要日本资金进入来个德日合作,Siemens就和松下Matsusita共同生产S+M电容器。这是未来趋势,几乎不可避免。RIFA也早就被EVOX吃下,EVOX是大集团,到处设厂,本刊SigEnd单端前级有用到1μF电容,就是EVOX品牌,虽然自美国进口,但一付台制品模样。
储存及工作寿命
  比起电阻、IC、电晶体、塑料电容这些半永久性元件,铝电解电容的寿命就值得重视。一是储存年限,自然与寿命有关,10~20年应无问题。存放过久的电容不宜立刻使用,利用power supply先将它aging(活化);夹上端子,缓慢调整power supply电压,由低至高,最高可调至此电容的额定电压。
  工作寿命就很难说得明白,所谓长寿命LL-long life电容,通常是表示涟波电流Irac稳定。前面曾谈到电容的Irac与工作温度及频率都有关,例如同是10KHz,40度C时是15A,85度C时是9A;15A/9A=1.67。此数字就是电容的寿命因数(本人临时想出来的),数字愈高寿命愈低,数字愈接近1寿命愈长。
  如果没记错,1.93表示10万小时,1.85表示20万小时,故1.67至少50万小时!但电容器的主要功用是充、放电特性,因此不宜经常快速充、放电。有两个方法可有效延长电容器寿命:一是减少开机、关机次数,二是设法降低开机时的瞬间充电电流─你听懂了吗?本刊也注意到此问题,故多年来都是这样做。
  即令是如此,若问:到底是哪一种电容的音质较好?这也实在难以回答。基本上,不同品牌、系列的电容,它的声音表现自然也是不同。我个人不会「日制品打死不用」,只要处理得当,日制品也不输欧美货。多年前曾用过ELNA高级Cerafine音响级电容,它的ESR虽然低,但Irac也不高,装在amp.上,低频很厚实,但雾气较重,不够透明。可是并上speed-up小电容後,就豁然开朗。
  故实际装配时,记得一定要在主滤波电容上加并speed-up小电容,此举「至少」会改善高频响应。数值是多少?最好是一大一小,大的1μF、小的0.1μF,MKP是最低要求。
  有时并上小电容会发现助益不大,这可能是小电容未选对。RIFA的电解及塑料电容,若想加并speed-up,奉劝你不要找WIMA,建议各位试试MIT的PPFX-S锡箔或RTX系列0.1μF。写这篇文章的同时,也留意各杂志的广告,美国Krell及加拿大Class'e Audio的Hi-End後级新机种竟然都采用日本Nichicon电容做主电源平滑滤波!但杂志评论员有谁敢说它差?!
  前级扩大机吃不了数百mA电流,故滤波电容较易选择。高瓦数、高输出电流扩大机就很难伺候,此时滤波电容的Irac特性就要考虑在内。
  对於滤波用电解电容,有几点值得网友注意:一、大致上来说,日制品的Irac比欧美品低;二、低漏电流比低ESR更重要;三、大滤波电容宜并接小电容;四、尽量选高耐压电容;五、最顶级的电容,容量及耐压都不高,故数百瓦的大power通常声音粗糙,不是没有道理。
  笔者不建议哪种电容最好,因为只要用得恰当,每种电容都可发出好声。至於刻意强调电容、电阻、焊锡、保险丝非xxx品牌不用的人,绝对是不懂线路结构的外行人!
关於铝质电解电容的构造
  电容器依其元件构造大致可分成:一、卷绕型,二、积层型,三、电解型。而电解型又分铝质及钽质两类,铝质再分成液态电解质及固态电解质。若说液态电解质是铝箔湿式、固态电解质是铝箔乾式,那就错了,因铝箔乾式及铝箔湿式都是液态电解质电容。
  铝质电解电容是以经过蚀刻的高纯度铝箔做为阳极,以其表面经阳极氧化处理之化成薄膜做为电介质,再以浸有电解液的薄纸或布做阴极。由於电解液是用吸浸式,故称铝箔乾式电解电容。
  何谓铝箔湿式?在电容器内直接加电解液─例如硼酸胺+乙二醇混合液,这种用手电容摇一摇还会发出流水声,瑞典RIFA的PEH169系列就是这种电容。
  即使是欧洲名厂,做为阳极的铝箔也非自行生产,而是统一由某公司供应,就好像瑞士表厂甚多,但只有少数几家会做油心。大约10年前义大利某公司无法正常供应阳极铝箔时,全球各名厂如Mallory/RIFA/Sprague或Rubycon/Philips…就只得拖延交货脱时间,没原料怎麽生产交货?至於吸浸电解液的纸,也绝非在一般文具店即可购得,最大供应商是在马来西亚。

PCB分层的地线设计问题探讨

PCB分层的地线设计问题探讨
1、双面板地线布局设计原则
数字电路和低频模拟电路接地方法:地线在印制板上以指叉形状货树杈形状连接各个元器件的地线,推荐支线地宽度不小于50mil,母线宽度不小于100mil。

2、4层板地线布局设计准则
电压又多种规格时,可在电源层划分或者连线,若采用连线方式需要考虑功率大小,否则连线上地电压降会影响器件正常工作。
地层最好不做划分,重要信号层一定要紧靠地层。
3、6层板地线布局准则
信号与地线、电源线的分布准则
信号层-地层-信号层-电源层-地层-信号层

4、8层板地线布局设计准则
信号-地线-信号-地线-电源-信号-地线-信号

备注:主电源平面层(功率最大的电源层)最好紧邻接地层且在接地层的下面,确保电源与地层距离最近,有利于电源的解藕,可以提供最大的电容,最小的阻抗。

VCC、VDD和VSS三种符号的解释

在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢?
一、解释
VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。
二、说明
1、对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。
2、有些IC既有VDD引脚又有VCC引脚,说明这种器件自身带有电压转换功能。
3、在场效应管(或COMS器件)中,VDD为漏极,VSS为源极,VDD和VSS指的是元件引脚,而不表示供电电压。

2008年12月30日星期二

0欧姆电阻的作用

0欧姆电阻的作用
1,在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。
2,可以做跳线用,如果某段线路不用,直接不贴该电阻即可(不影响外观)
3,在匹配电路参数不确定的时候,以0欧姆代替,实际调试的时候,确定参数,再以具体数值的元件代替。
4,想测某部分电路的耗电流的时候,可以去掉0ohm电阻,接上电流表,这样方便测耗电流。
5,在布线时,如果实在布不过去了,也可以加一个0欧的电阻
6,在高频信号下,充当电感或电容。(与外部电路特性有关)电感用,主要是解决EMC问题。如地与地,电源和IC Pin间
7,单点接地(指保护接地、工作接地、直流接地在设备上相互分开,各自成为独立系统。) ;
8,熔丝作用 *模拟地和数字地单点接地* 只要是地,最终都要接到一起,然后入大地。
如果不接在一起就是"浮地",存在压差,容易积累电荷,造成静电。地是参考0电位,所有电压都是参考地得出的,地的标准要一致,故各种地应短接在一起。人们认为大地能够吸收所有电荷,始终维持稳定,是最终的地参考点。虽然有些板子没有接大地,但发电厂是接大地的,板子上的电源最终还是会返回发电厂入地。如果把模拟地和数字地大面积直接相连,会导致互相干扰。
不短接又不妥,理由如上有四种方法解决此问题:1、用磁珠连接;2、用电容连接;3、用电感连接;4、用0欧姆电阻连接。

PC与单片机的串口通讯的简单实例

PC与单片机的串口通讯的简单实例
这几天看了些串口方面的资料,决定设计一个简单的实验,以强化所学的东西。实验实现的功能主要是:用PC上的一个软件通过串口通讯控制单片机I/O口的输出。本次实验主要涉及PC端上位机的程序编写(用VC)与单片机程序的编写(用Keil)。为了简化实验,PC端软件设计成具有8个按钮的对话框,每个按钮分别控制单片机P2口的一个引脚的高低电平。为了体现直观的结果,P2口上接上8个发光二极管。实验的原理图如下:

PC与单片机的通讯协议如下:采用4800波特率,无校验位,8个数据位,1个停止位,一次传输一个控制字节。
一、上位机软件的编写
本来控制单片机只需单向传输数据即可,为了熟悉PC端接受数据的功能,在应用软件将控制数据传输到单片机端后,单片机端回传数据给应用软件,并用16进制格式显示在编辑控件中。
VC实现对串口的控制主要有两种方式:mscomm控件与api函数。由于mscomm控件实现简单,本实验采用该方式。
1. 在VC中创建一个基于对话框的应用程序,在该程序中插入Mscomm控件。修改对话框资源,增加Mscomm及8个按钮控件与一个编辑框。并为Mscomm控件增加一个控件变量m-com。
2. 在对话框的OnInitDialog()函数中初始化串口,代码如下:
if(m_com.GetPortOpen())
m_com.SetPortOpen(FALSE);
m_com.SetCommPort(1);//选择com1
if(!m_com.GetPortOpen())
m_com.SetPortOpen(TRUE);//打开串口
else
MessageBox("无法打开串口!");
m_com.SetSettings("4800,n,8,1");//波特率4800,无校验,8个数据位,1个停止位
m_com.SetInputMode(1); //1:表示以二进制方式检取数据
m_com.SetRThreshold(1);//参数1表示每当串口接收缓冲区中有多于
//或等于1个字符时将引发一个接收数据的OnComm事件
m_com.SetInputLen(0); //设置当前接收区数据长度为0
m_com.GetInput();//先预读缓冲区以清除残留数据
3.为每个按钮添加命令函数。下面为其中一个函数的代码,其他与此类似。
void CComDlg::OnP20()
{
// TODO: Add your control notification handler code here
Output.Format("%c",0x01);
m_com.SetOutput(COleVariant(Output));
}
4.接受数据时采用Mscomm控件的响应函数进行对事件的捕捉。处理代码如下:
void CComDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT Input;
CString temp;
long k,len;
COleSafeArray OleArray;
BYTE rxdata[10];
if (2==m_com.GetCommEvent())
{
Input=m_com.GetInput();
OleArray=Input;
len=OleArray.GetOneDimSize();
for (k=0;k

单片机C51串口中断接收和发送测试例程(含通信协议的实现)

单片机C51串口中断接收和发送测试例程(含通信协议的实现)
龚建伟 http://www.gjwtech.com

通信协议:第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7位的异或校验和。
测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。
下载C的源程序: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 //程序编写: 龚建伟 webmaster@gjwtech.com //技术主页:http://www.gjwtech.com //您有这方面的问题可以和我讨论
#include #include
#define INBUF_LEN 4 //数据长度
unsigned char inbuf1[INBUF_LEN];unsigned char checksum,count3;bit read_flag=0;
void init_serialcomm(void){ SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload PCON = 0x80; //SMOD=1; TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz IE = 0x90; //Enable Serial Interrupt TR1 = 1; // timer 1 run // TI=1; }
//向串口发送一个字符 void send_char_com(unsigned char ch) { SBUF=ch; while(TI==0); TI=0;}
//向串口发送一个字符串,strlen为该字符串长度 void send_string_com(unsigned char *str,unsigned int strlen){ unsigned int k=0; do { send_char_com(*(str + k)); k++; } while(k < strlen);}
//串口接收中断函数 void serial () interrupt 4 using 3 { if(RI) { unsigned char ch; RI = 0; ch=SBUF; if(ch>127) { count3=0; inbuf1[count3]=ch; checksum= ch-128; } else { count3++; inbuf1[count3]=ch; checksum ^= ch; if( (count3==(INBUF_LEN-1)) && (!checksum) ) { read_flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验没错, //就置位取数标志 } } }}
main(){ init_serialcomm(); //初始化串口 while(1) { if(read_flag) //如果取数标志已置位,就将读到的数从串口发出 { read_flag=0; //取数标志清0 send_string_com(inbuf1,INBUF_LEN); } }
}

PCB电路设计流程




    PCB的设计流程分为网表输入、规则设置、元器件布局、布线、检查、复查、输出六个步骤.
1. 网表输入
   网表输入有两种方法,一种是使用PowerLogic的OLE PowerPCB Connection功能,选择Send Netlist,应用OLE功能,可以随时保持原理图和PCB图的一致,尽量减少出错的可能。另一种方法是直接在PowerPCB中装载网表,选择File->Import,将原理图生成的网表输入进来。


2.规则设置
    如果在原理图设计阶段就已经把PCB的设计规则设置好的话,就不用再进行设置
这些规则了,因为输入网表时,设计规则已随网表输入进PowerPCB了。如果修改了设计规则,必须同步原理图,保证原理图和PCB的一致。除了设计规则和层定义外,还有一些规则需要设置,比如Pad Stacks,需要修改标准过孔的大小。如果设计者新建了一个焊盘或过孔,一定要加上Layer 25。
注意:PCB设计规则、层定义、过孔设置、CAM输出设置已经作成缺省启动文件,名称为Default.stp,网表输入进来以后,按照设计的实际情况,把电源网络和地分配给电源层和地层,并设置其它高级规则。在所有的规则都设置好以后,在PowerLogic中,使用OLE PowerPCB Connection的Rules From PCB功能,更新原理图中的规则设置,保证原理图和PCB图的规则一致。

3. 元器件布局
    网表输入以后,所有的元器件都会放在工作区的零点,重叠在一起,下一步的工作就是把这些元器件分开,按照一些规则摆放整齐,即元器件布局。PowerPCB提供了两种方法,手工布局和自动布局。
①、 手工布局
A. 工具印制板的结构尺寸画出板边(Board Outline)。
B. 将元器件分散(Disperse Components),元器件会排列在板边的周围。
C. 把元器件一个一个地移动、旋转,放到板边以内,按照一定的规则摆放整齐。
②、自动布局
  PowerPCB提供了自动布局和自动的局部簇布局,但对大多数的设计来说,效果并不理想,不推荐使用。
③、注意事项
a. 布局的首要原则是保证布线的布通率,移动器件时注意飞线的连接,把有连线关系的器件放在一起
b. 数字器件和模拟器件要分开,尽量远离
c. 去耦电容尽量靠近器件的VCC
d. 放置器件时要考虑以后的焊接,不要太密集
e. 多使用软件提供的Array和Union功能,提高布局的效率

4. 布线
    布线的方式也有两种,手工布线和自动布线。PowerPCB提供的手工布线功能十分强大,包括自动推挤、在线设计规则检查(DRC),自动布线由Specctra的布线引擎进行,通常这两种方法配合使用,常用的步骤是手工—自动—手工。
①、 手工布线
a. 自动布线前,先用手工布一些重要的网络,比如高频时钟、主电源等,这些网络往往对走线距离、线宽、线间距、屏蔽等有特殊的要求;另外一些特殊封装,如BGA,自动布线很难布得有规则,也要用手工布线。
b. 自动布线以后,还要用手工布线对PCB的走线进行调整。
②、自动布线
    手工布线结束以后,剩下的网络就交给自动布线器来自布。选择Tools->SPECCTRA,启动Specctra布线器的接口,设置好DO文件,按Continue就启动了Specctra布线器自动布线,结束后如果布通率为100%,那么就可以进行手工调整布线了;如果不到100%,说明布局或手工布线有问题,需要调整布局或手工布线,直至全部布通为止。

③、注意事项
a. 电源线和地线尽量加粗
b. 去耦电容尽量与VCC直接连接
c. 设置Specctra的DO文件时,首先添加Protect all wires命令,保护手工布的线不被自动布线器重布
d. 如果有混合电源层,应该将该层定义为Split/mixed Plane,在布线之前将其分割,布完线之后,使用Pour Manager的Plane Connect进行覆铜
e. 将所有的器件管脚设置为热焊盘方式,做法是将Filter设为Pins,选中所有的管脚,修改属性,在Thermal选项前打勾
f. 手动布线时把DRC选项打开,使用动态布线(Dynamic Route)

5. 检查与复查
  ①、检查:检查的项目有间距(Clearance)、连接性(Connectivity)、高速规则(High Speed)和电源层(Plane),这些项目可以选择Tools->Verify Design进行。如果设置了高速规则,必须检查,否则可以跳过这一项。检查出错误,必须修改布局和布线。
注意:
  有些错误可以忽略,例如有些接插件的Outline的一部分放在了板框外,检查间距时会出错;另外每次修改过走线和过孔之后,都要重新覆铜一次。


  ②、复查
  复查根据"PCB检查表",内容包括设计规则,层定义、线宽、间距、焊盘、过孔设置;还要重点复查器件布局的合理性,电源、地线网络的走线,高速时钟网络的走线与屏蔽,去耦电容的摆放和连接等。复查不合格,设计者要修改布局和布线,合格之后,复查者和设计者分别签字。

6. 设计输出
  PCB设计可以输出到打印机或输出光绘文件。打印机可以把PCB分层打印,便于设计者和复查者检查;光绘文件交给制板厂家,生产印制板。光绘文件的输出十分重要,关系到这次设计的成败,下面将着重说明输出光绘文件的注意事项。
a. 需要输出的层有布线层(包括顶层、底层、中间布线层)、电源层(包括VCC层和GND层)、丝印层(包括顶层丝印、底层丝印)、阻焊层(包括顶层阻焊和底层阻焊),另外还要生成钻孔文件(NC Drill)
b. 如果电源层设置为Split/Mixed,那么在Add Document窗口的Document项选择Routing,并且每次输出光绘文件之前,都要对PCB图使用Pour Manager的Plane Connect进行覆铜;如果设置为CAM Plane,则选择Plane,在设置Layer项的时候,要把Layer25加上,在Layer25层中选择Pads和Viasc. 在设备设置窗口(按Device Setup),将Aperture的值改为199
d. 在设置每层的Layer时,将Board Outline选上
e. 设置丝印层的Layer时,不要选择Part Type,选择顶层(底层)和丝印层的Outline、Text、Line
f. 设置阻焊层的Layer时,选择过孔表示过孔上不加阻焊,不选过孔表示家阻焊,视具体情况确定
g. 生成钻孔文件时,使用PowerPCB的缺省设置,不要作任何改动
h. 所有光绘文件输出以后,用CAM350打开并打印,由设计者和复查者根据"PCB检查表"检查



--
Jack.ch

"海关事务管理要点及通关技巧"培训课程大纲

ж<课程内容大纲>ж

●一、海关稽查要点及企业应对策略
1、海关稽查的主要内容及稽查流程
2、海关查帐时特别关注的事项有哪些?
3、海关稽查中发现最多的问题有哪些?
4、海关中期下厂核查重点注意的问题
5、引起海关稽查的五大主要原因
6、海关稽查的几大类型、特点及如何应对
7、如果被海关盯上稽查企业还能做什么?
8、面对海关稽查的有关应对措施
9、进出口单证的稽查要点及应对
10、会计帐薄、报表的稽查及应对
11、仓库、损耗定额的稽查及应对
12、如何提高进出口货物归类的准确性以免处罚或交纳不必要的税、证?
13、海关行政复议程序与企业权益维护
14、常见问题的海关处罚标准
15、与学员互动讨论工作的实际问题

●二、海关事务管理要点及通关技巧
1、海关基本业务制度及关务管理要点
2、企业如何规避海关实行的全面风险管理
3、如何建立企业关务内部控制制度
★案例:
4、进出口货物通关的四大环节
5、各种贸易方式通关的要点
△一般贸易货物的查验
△加工贸易保税货物的备案和核销
※单耗的确定和修订程序
※余料、边角料、残次品和副产品的处理
★案例:
6、快速通关技巧
※关税的变化
※知识产权海关保护
※纺织品"后配额时代"的变化和对策
★案例:
中、美、欧纺织品摩擦的有理有利有节处置和有益启示
※面临反倾销的考验
★案例:
美国对我出口虾产品反倾销,应诉和不应诉结果大不一样
※海关货物征税管理
※报关单位注册登记管理
※中国电子口案和加工贸易企业联网监管
※"红""黑"名单监管理措施
※约束性预归类
※预申报和预审价
※多点申报,白云机场验放高速通关模式
7、其他有效办法

●三、海关帐务与会计、仓库的帐务的关系处理
1、海关帐的主要内容及编制方法
2、各部门之间如何协调做好海关帐
3、如何做好"三帐"平衡?
4、海关申报与会计记录如何保持一致?
5、电子口岸及电子帐册的使用
6、加工贸易联网监管的操作与意义

●四、如何减低关税成本常见疑难问题处理
1.最新关税政策及出口贸易形势分析
2.关税筹划的主要思路及技巧
3.海关估价过高的企业应对措施
4.企业如何避免反倾销调查
5.出口环节增值税的筹划技巧
6.选择不同进出口方式的税务成本分析
7.CEPA环境下的新套税思路及方法
8.如何才能享受关税和进口环节税的减免?
9、来料加工工缴费的确定及核销技巧
10、选择来料或进料加工方式的利弊分析
11、加工贸易企业转制的关务处理策略
12、海关针对不同企业采取哪些不同核销方法?
13、哪些情况下海关会重点核销和下厂核销?
14、加工贸易单损耗常见疑难问题处理
15、进出口料件倒挂的分析及平衡处理
16、加工贸易转厂疑难问题的分析处理方法
17、进出口料件、不良品的退换、返修的处理?
18、如何充分利用无代价抵偿减少不必要的纳税?
19、减免税设备的监管及各种疑难问题处理?
20、哪些企业用什么资金可以进口免税设备?
21、出口货物退关或退运后的关务处理
22、进出口快件的关务处理及货物快件处理策略
23、手册不平衡的原因分析及处理策略
24、异地及外发加工的关务处理技巧
25、外汇核销的有关策略及差额核销方法
26、出口退税流程及相关问题处理

●五、如何避减海关处罚
1、海关处罚的种类
△走私罪的认定和处罚
△走私行为的认定和处罚
△违反海关监管规定行为和处罚
△对违反海关法行为的调查
※海关行政处罚实施条例
--量罚规范化,既规定上限,又规定下限
※您对这些规定熟悉吗?自我测试
2、几种处罚的界定
△错报和伪报、瞒报
★案例:
△错发货和闯关走私
△情节轻微和不予处罚
△从重处罚和从轻处罚
△法人违法与"双罚"
★案例:
3、处罚的救济
△充分运用提出复议的权利、
△民告官--敢于诉讼,善于诉讼
★案例:
△信赖利益保护原则--对政府诚信的检验
★案例:

●六、教学互动与问题答疑


--
Jack.ch

补偿电容的正常电流等于多少?

补偿电容的正常电流等于多少?

1)确定电容量(经验公式):

额定工作电压400V时:1KVAr×19.9=19.9μF

25KVAr×19.9=497.5μF         

30 KVAr×19.9=597μF

本公司的低压补偿电容就是这两种。

2)电容量与电流的关系(经验公式):

C=14×I (额定工作电压400V时)

C÷14=I

497.5÷14=35.5A≈36A (25KVAr)

597÷14=42.6A≈43A (30KVAr)

3)无功功率与电流的关系(经验公式):

1 KVAr×1.44=1.44A (额定工作电压400V时)

25 KVAr×1.44=36A

30 KVAr×1.44=43.2A≈43A



正常公式:

1、Q = UI = U×U/Xc = U×U×2πfC ;
2、若:U = 400V ,f = 50HZ ,
则:U×U×2πf = 400×400×2×3.14×50 = 50240000
3、Q = 50240000×C (var)= 50240×C(Kvar)
4、C = Q/50240(F)= Q/50240×1000000(μF)= Q/0.05(μF)
C = 20Q(μF)
5、当:Q = 30Kvar,U = 400V ,f = 50HZ 时:
C = 20Q = 20×30 = 600 μF

单片机系统中红外通信接口的设计

单片机系统中红外通信接口的设计

在许多基于单片机的应用系统中,系统需要实现遥控功能,而红外通信则是被采用较多的一种方法。一般市场上的遥控器协议简单、保密性不强、抗干扰能力较弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应用场合。

  红外通信的基本原理

  红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉时调制方法。数据比特的传送仿照不带奇偶校验的 RS232通信,首先产生一个同步头,然后接着8位数据比特,如图1所示。

  硬件电路设计

  复费率电能表系统可分为手持遥控器和复费率电能表两部分。手持遥控器为发射部分,其基本电路如图2所示。采用塑封的SE303ANC-C发射二极管,波长为940nm。CPU按照协议规定导通或截止发射二极管,从而产生特定频率的发射信号,这里选用的频率为38.9kHz。复费率电能表红外接收部分的基本电路如图3所示。接收管采用日本光电子公司的PIC-12043,其接收频率为37.9kHz,它直接将37.9kHz的调制信号解调为基带信号,提供给接收CPU。该芯片接收灵敏度高,性能稳定。其基本工作过程为:当接收到37.9kHz信号时,输出低电平,否则输出为高电平。电能表部分采用的是51系列单片机,以中断方式检测接收信号。这里的非门对接收信号起整形作用。

  软件设计

  发射部分的程序相对来说非常简单,主要是产生不同时间间隔的37.9kHz脉冲串信号去控制发射管的通断。在发射端,CPU不断扫描键盘,一旦发现有键按下,即启动发射子程序将相应的数值发送出动。在我们的设计中,采用的是4×4的小键盘,正好和0~F编码对应,为了提高可靠性,采用最简单的纠错编码——将每位数重复发送一次,即和键盘数字对应的编码为 00~FF。这样,一个键值要发送8比特。接收端接收满8比特信号后,再进行纠错处理,不正确的编码认为无效。收足规定的号码后,即调用号码分析程序进行处理。当每收到一个脉冲串信号后即启动一个定时器。下次中断发生时,通过定时器的计数值判断是0还是1。如果定时器溢出,则清除本次接收的号码,恢复到接收初始状态。接收部分的基本程序流程如图4所示。

  在程序设计时,应该注意MCU的中断方式采用下边沿触发;接收端通过T0计数值来判断发送比特,一般采用硬判决,即取0和1比特时宽的平均值为判决门限A,当T0值大于A时判接收信号为0,小于A时判为1。

  复费率电能表中的红外接收程序如下(MCU为Intel 8052,采用C语言编写):

#include
#include
#include
#pragma OPTIMIZE(5,SPEED)
sbit RECV=P3^3;
bdata unsigned char SIGN, RECVBYTE;
sbit RECVBG=SING^0;
sbit US1AT=SIGN^6;
sbit RECVBITO=RECVBYTE^0;
unsigned char RECVBIT;
//-------------------------------------

timer0() interrupt 1 //entrance: 8*n+3=0Bh;
{
IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0)
Recvbg=0;
}
//--------------------------------------
EX_INT1() interrupt 2 //接收红外信号
{
TCON=0×45; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)
If(RECVBG==0) {RECVBG=1;
RECVBIT=8;
}
else{ RECVBYTE=RECVBYTE<<1;
if(TH0<=4)RECVBIT0=1;
else RECVBIT0=0;
RECVBIT--;
if(RECVBIT==0) { RECVBG=0;
US1AT=1;
}
}
TH0=0;
TL0=0;
TCON=0×55; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)
IE=0×8f; //Enable the timer0 interrupt
}
//----------------------------------------------------
void main() {
RECVBYTE=0;
SIGN=0;
TMOD=0×11;
TCON=0×55;//0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)
IP=0×00;
IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0)
//基本循环程序
while(1){
·
·(略)
·
if(US1AT==1) { //红外接收处理
·
·(略)
·
}
}
}

  结语

  以上设计方案在复费率电能表中应用后,效果良好,达到了设计要求。整个系统外围元件少,调试方便;软件工作量也较小。如果应用来传送大量数据时,还可以根据需要改变相应的编码形式,提高数据传送速率。



------------------------------
多费率电能表中基于单片机串行口红外通信的设计
摘要:利用单片机的串行口、定时器/计数器T0、定时器/计数器T1、红外发射管和红外接收管等简单的软硬件就可靠地实现了多费率电能表的红外通信功能。本设计详细介绍了串行口红外通信的软硬件设计方法,并给出了具体的电路原理图、波形图和51单片机程序。
关键词: 红外通信 串行接口 电能表 SSU7301单片机
0 引言
多费率电能表是我国目前节约用电和计划用电政策下不可缺少的电能计量产品,多费率电能表的通信接口一般兼有红外接口和RS485接口。红外通信具有直观、操作简便、可靠性高等优点,是电能表中使用最为普遍的一种通信方式,是电能表和掌机之间实现抄表、编程、校时、数据管理等功能的有效手段。采用新茂单片机 SSU7301(51系列)、日本光电子公司的红外发射管SE303和红外接收管PIC12043,以及单片机串行口、2个定时器/计数器可以有效地实现红外通信功能。
1 红外通信原理
红外通信是利用波长为900nm~1000nm的红外波作为信息的载体,发射装置把二进制信号经过高频调制后发送出去,接收装置把接收的红外高频信号进行解调为原来信息的一种通信传输方式。其中调制方式有脉宽调制(通过改变脉冲宽度调制信号PWM)和脉时调制(通过改变脉冲串之间时间间隔调制信号PPM)两种,本文采用PPM脉时调制方式。
2 串行口红外通信硬件设计
多费率电能表的红外发射和红外接收电路主要包括新茂单片机SSU7301、日本光电子公司的红外发射管SE303和红外接收管PIC12043,以及驱动三极管8550、电阻和电容,红外通信硬件原理图见图1。
2.1 红外发射硬件设计
红外发射是利用单片机SSU7301的串行数据发送口TXD(P3.1)控制驱动三极管BG1进行二进制数据“0”和“1”的传输(数据由串行发送缓冲器 SBUF中送出),以及利用P3.4口控制驱动三极管BG2进行高频38.4kHz调制(高频驱动信号由定时器/计数器T0的方式2自动重装模式产生),从而可靠地实现了红外发射管D1在传输数据“0”时进行高频红外发射和数据“1”时被截止的发射功能。状态关系见表1,波形见图2。
2.2 红外接收硬件设计
红外接收是利用红接收管PIC12034收到高频信号输出低电平确定为数据“0”,而没收到高频信号输出高电平确定为数据“1”的方式经过解调,把数据通过单片机SSU7301的串行数据接收口RXD(P3.0)进行串行方式接收(接收数据存储在串行口缓冲器SBUF中)。
3 红外通信软件设计
DL/T645-1997《多功能电能表通信》中规定电能表的红外载波频率为38kHz±1kHz;初始速率为1200 bps;通信的字节格式为8位二进制码D0~D7,传输时加上一个起始位(0),一个偶校验位P和一个停止位(1),共11位,传输时先传低位,后传高位,传输序列见图3。根据以上要求,本设计中红外载波频率采用38.4kHz,波特率为1200bps,串行口采用模式3为9位异步通信方式,加1位起始位和1位结束位,传送一个字节数据为11位。
3.1 红外载波和定时器/计数器T0设置
红外载波频率f2为38.4kHz,当定时器/计数器T0模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T0设置成模式2方式。此时,TL0和TH0预置成1个可以自动重装的8位的定时器/计数器。用软件将TL0和TH0预置相同的初值后,当TL0计数值增1溢出时,一方面使TF0置1,申请中断;另一方面产生的溢出脉冲将TH0的数据值自动打入到TL0中去,不需要用软件对TL0重新置初值。系统的晶振f1为 11.0592MHz,则TL0和TH0的初值计算如下:
f2=38.4kHz 得T=1/f2=1/38.4k≈26×10-6=26 μs
所以高频调制反转的周期TC=T/2=26/2=13μs
即定时器/计数器T0的初值TL0=TH0=28-(TC×f1)/12=256-(13×10-6×11.0592×106)/12=256-11.9808≈244=0F4H
在定时器/计数器T0的中断服务程序中只用两条指令即可实现高频调制,即 CPL P3.4和RETI。
3.2 串行口和定时器/计数器T1波特率发生器设置
串行口采用模式3为9位异步通信方式,波特率为1200bps。由串行口控制寄存器SCON的操作模式选择位SM0、SM1都置1设置为模式3,当定时器 /计数器T1模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T1设置成模式2方式作为波特率发生器,其波特率表示为:
波特率=(T1的溢出率)/ n
当SMOD=0时,n=32;当SMOD=1时,n=16,(本设计中SMOD=0)则
波特率=(T1的溢出率)×2SMOD / 32
T1的溢出率=(f1/12)/(28-T1初值)
得:波特率=(T1的溢出率)×2SMOD / 32
=[(f1/12)/(28- T1初值)] ×2SMOD / 32
得:定时器/计数器T1初值
TL1=TH1=28-(f1×2SMOD )/(12×32×波特率)
=256-(11.0592×106)/( 12×32×1200)
=256-24=232=0E8H
3.3 程序设计
根据以上两点参数的设置,51系列单片机SSU7301的汇编语言程序设计如下:
;以下为参数设置程序
MOV TMOD, #22H ;定时器/计数器T0方式2自动重装模式用于PWM38.4KHZ调
;制用 , 定时器/计数器T1方式2自动重装模式用于串行口通讯波特率发生器
MOV TH1,#0E8H ;波特率1200时,定时器/计数器T1自动重装初值
MOV TL1,#0E8H
MOV TH0,#0F4H ;38.4KHz高频频调制时, 定时器/计数器T0自动重装初值
MOV TL0,#0F4H
SETB ET0 ; 定时器/计数器T0溢出中断允许位
SETB TR1 ; 定时器/计数器T1开始定时控制位
SETB TR0 ; 定时器/计数器T0 开始定时控制位
MOV PCON,#00H ;SMOD为0不倍增模式
MOV SCON,#0D0H ;串行口设置为模式3,允许接收
SETB ES ;串行口允许中断
SETB EA ;开总中断允许位
;以下为定时器/计数器T0中断溢出服务程序
ORG 000BH; 定时器/计数器T0中断入口地址
T0SERVE:CPL P3.4 ; 定时器/计数器T0定时取反P3.4口进行高频调制
RETI ;中断返回
;以下为串行口中断服务程序,以接收一个字节数据为例,多字节以此类推
ORG 0023H;串行口中断入口地址
SENDSERVE:NOP
NOP
MOV A,SBUF ;把接收缓冲器的数据送到A寄存器
… ;进行数据处理及其它功能操作
RETI ;中断返回
;以下为串行口发送程序,以发送一个字节数据为例, 多字节以此类推
COMSEND: MOV A,#DATAH ;把数据送到A寄存器
MOV C,P ;根据A中数据产生的偶校验位送到进位标志位
MOV TB8,C ;送偶校验位到发送的第9位数据
MOV SBUF,A ;送数据到发送缓冲器
JNB TI,$ ;以查询方式等待发送结束
CLR TI ;清发送中断标志位
… ;继续发送或其它功能操作
RET 子程序返回
4 结束语
本设计的最大特点在于省略了脉冲振荡器,而仅仅利用多费率电能表上所带单片机的串行口和2个定时器/计数器,这不仅使多费率电能表在硬件设计上更加简单、成本更加低廉,而且在软件上也更加方便、可靠。同时这种红外通信方式也可以应用在带串行口和定时器/计数器的单片机应用领域。