还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
电子技术随笔电子技术随笔【第一篇工电子技术创新随笔据当代学者考证,〃创新〃一词最早消失于北齐史学家魏收公元505—572撰写的《魏书》《魏书》第六十二卷云〃开物成务者,先皇之贞也;观夫人文者,先皇之蕴也;革弊创新者,先皇之志也〃“创新〃一词,代有使用,〃革故鼎新推陈出新〃,但我国从前基本都仅用于政治制度的变革与改造〃创新〃望文生义便是制造新的〃创新〃一词于近年尤其流行,深化人心,北京已将〃创新〃列为〃北京精神之一但对于〃创新〃一词的概念笔者孤陋寡闻,未见标准解读,歧义甚多,众说纷纭查《现代汉语词典》的解释最为简洁〃创新〃指制造性,抛开旧的,制造新的笔者所见最新解释是2023年5月伦敦商学院London BusinessSchool举办的全球领导力峰会GlobalLeadership Summit±,当听众受邀选择对创新的定义时,58%的人选择了最短、最宽泛的答案-------------------------来自《经济学人》The Economist的制造价值的新奇想法〃百度上百科名片的解释就繁复多了〃创新是指人们为了进展的需要,运用已知的信息,不断突破常规,发觉或产生某种新奇、独特的有社会价值或个人价值的新事物、新思想的活动创新的本质是突破,即突破旧的思维定势,旧的常规戒律创新活动的核心是〃新〃,它或者是产品的结构、性能和外部特征的变革,或者是造型设计、内容的表现形式和手段的制造,或者是内容的丰富和完善〃读来虽甚觉全8:Y=16Hblllllll011111111;9:Y=16bllllll0111111111;;;;;endcaseendelseY=16bllllllllllllllll;endmodule电子技术随笔【第四篇]深化理解C语言指针的神秘3从格式上看倒是与通过指针访问结构成员的不正规方法的格式一样全部的C/C++编译器在排列数组的单元时,总是把各个数组单元存放在连续的存储区里,单元和单元之间没有空隙但在存放结构对象的各个成员时;在某种编译环境下,可能会需要字对齐或双字对齐或者是别的什么对齐,需要在相邻两个成员之间加若干个“填充字节”,这就导致各个成员之间可能会有若干个字节的空隙所以,在例十二中,即使*pstr访问到了结构对象ss的第一个成员变量a,也不能保证*pstr+l就肯定能访问到结构成员b由于成员a和成员b之间可能会有若干填充字节,说不定*pstr+l就正好访问到了这些填充字节呢这也证明白指针的敏捷性要是你的目的就是想看看各个结构成员之间究竟有没有填充字节,嘿,这倒是个不错的方法过指针访问结构成员的正确方法应当是象例十二中使用指针ptr的方法指针和函数的关系可以把一个指针声明成为一个指向函数的指针intfunlchar*,int;int*pfunlchar*,int;pfunl=funl;••••••••inta=*pfunl”abcdefg,7;〃通过函数指针调用函数可以把指针作为函数的形参在函数调用语句中,可以用指针表达式来作为实参例十三intfunchar*;inta;charstr=abcdefghijklmn;a=funstr;intfunchar*sintnum=O;forinti=0;i{num+=*s;s++;returnnum;这个例子中的函数fun统计一个字符串中各个字符的ASCII码值之和前面说了,数组的名字也是一个指针在函数调用中,当把str作为实参传递给形参s后,实际是把str的值传递给了s,s所指向的地址就和str所指向的地址全都,但是str和s各自占用各自的存储空间在函数体内对s进行自加1运算,并不意味着同时对str进行了自加1运算指针类型转换当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式在我们前面所举的例子中,绝大多数状况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的例十四
1、floatf=123;2^float*fptr=3int*p;在上面的例子中,假如我们想让指针p指向实数f,应当怎么搞是用下面的语句吗?P=不对由于指针p的类型是int*,它指向的类型是int表达式假如有一个指针P,我们需要把它的类型和所指向的类型改为TYEP*TYPE,那么语法格式是TYPE*p;这样强制类型转换的结果是一个新指针,该新指针的类型是TYPE*,它指向的类型是TYPE,它指向的地址就是原指针指向的地址而原来的指针p的一切属性都没有被修改一个函数假如使用了指针作为形参,那么在函数调用语句的实参和形参的结合过程中,也会发生指针类型的转换例十五voidfunchar*;inta=125,b;funchar*voidfunchar*schare;c=*s+3;*s+3=*s+0;*s+0=c;c=*s+2;*s+2=*s+l;*s+l=c;留意这是一个32位程序,故int类型占了四个字节,char类型占一个字节函数fun的作用是把一个整数的四个字节的挨次来个颠倒留意到了吗?在函数调用语句中,实参TYPE*ptr;//TYPE是int,char或结构类型等等类型a=20345686;ptr=20345686;〃我们的目的是要使指针ptr指向地址20345686十进制ptr二a;〃我们的目的是要使指针ptr指向地址20345686十进制编译一下吧结果发觉后面两条语句全是错的那么我们的目的就不能达到了吗?不,还有方法unsignedinta;TYPE*ptr;//TYPE是int,char或结构类型等等类型••••••a二某个数,这个数必需代表一个合法的地址;ptr=TYPE*a;〃呵呵,这就可以了严格说来这里的TYPE*和指针类型转换中的TYPE*还不一样这里的TYPE*的意思是把无符号整数a的值当作一个地址来看待上面强调了a的值必需代表一个合法的地址,否则的话,在你使用ptr的时候,就会消失非法操作错误想想能不能反过来,把指针指向的地址即指针的值当作一个整数取出来完全可以下面的例子演示了把一个指针的值当作一个整数取出来,然后再把这个整数当作一个地址赋给一个指针例十六inta=123,b;int*ptr=char*str;b=intptr;〃把指针ptr的值当作一个整数取出来str=char*b;〃把这个整数的值当作一个地址赋给指针str现在我们已经知道了,可以把指针的值当作一个整数取出来,也可以把一个整数值当作地址赋给一个指针指针的平安问题看下面的例子例十七chars=a;int*ptr;ptr=int**ptr=1298;指针ptr是一个int*类型的指针,它指向的类型是into它指向的地址就是s的首地址在32位程序中,s占一个字节,int类型占四个字节最终一条语句不但转变了s所占的一个字节,还把和s相临的高地址方向的三个字节也转变了这三个字节是干什么的?只有编译程序知道,而写程序的人是不太可能知道的或许这三个字节里存储了特别重要的数据,或许这三个字节里正好是程序的一条代码,而由于你对指针的马虎应用,这三个字节的值被转变了!这会造成崩溃性的错误让我们再来看一例例十八1chara;
2、int*ptr=••••••
3、ptr++;
4、*ptr=115;该例子完全可以通过编译,并能执行但是看到没有?第3句对指针ptr进行自加1运算后,ptr指向了和整形变量a相邻的高地址方向的一块存储区这块存储区里是什么?我们不知道有可能它是一个特别重要的数据,甚至可能是一条代码而第4句竟然往这片存储区里写入一个数据!这是严峻的错误所以在使用指针时,程序员心里必需特别清晰我的指针毕竟指向了哪里在用指针访问数组的时候,也要留意不要超出数组的低端和高端界限,否则也会造成类似的错误在指针的强制类型转换ptrl=(TYPE*)ptr2中,假如sizeof(ptr2的类型)大于sizeof(ptrl的类型),那么在使用指针ptrl来访问ptr2所指向的存储区时是平安的假如sizeof(ptr2的类型)小于sizeof(ptrl的类型),那么在使用指针ptrl来访问ptr2所指向的存储区时是担心全的至于为什么,读者结合例十七来想一想,应当会明白的电子技术随笔【第五篇】LIN简介LIN协会创建于1998年末,最初的发起人为五家汽车制造商,一家软件工具制造商以及一家半导体厂商该协会将主要目的集中在定义一套开放的标准,该标准主要针对车辆中低成本的内部互联网络(LIN,local interconnectnetworks),这些地方无论是带宽还是简单性都不必要用到CAN网络UN标准包括了传输协议的定义、传输媒质、开发工具间的接口、以及和软件应用程序间的接口UN提升了系统结构的敏捷性,并且无论从硬件还是软件角度而言,都为网络中的节点供应了相互操作性,并可预见获得更好的EMC(电磁兼容)特性LIN补充了当前的车辆内部多重网络,并且为实现车内网络的分级供应了条件,这可以有助于车辆获得更好的性能并降低成本LIN协议致力于满意分布式系统中快速增长的对软件的简单性、可实现性、可维护性所提出的要求,它将通过供应一系列高度自动化的工具链来满意这一要求LIN总线的主要特性为*单主站以及多从站概念;*基于常用的UART/SQ硬件接口,以及相应的软件,或作为纯粹的状态机,从而保证较低的成本;*从节点中无须石英或陶瓷振荡器就可以实现自同步;*信号传输实体确定,在增加系统中可以计算信号的传播propagation时间;*信号基于应用交互层LIN网络由一个主节点以及一个或多个从节点组成,媒体访问由主节点掌握--从节点中不必有仲裁或冲突管理可以保证最差状态下的信号传输延迟时间LIN物理层总线驱动/接收器的定义遵循ISO9141单线标准,并带有一些增加性能总线为单线传输,”与“总线通过终端电阻由电池正极节点VBAT供应总线收发器采纳增加型的ISO9141实现标准总线可以取两个互补的规律值主控值其电压接近于接地端,代表规律值“0”,退让值其电压与电池电压接近,代表规律值叮“总线采纳上拉电阻作为终端,主节点的上拉电阻为IkOhm,从节点的上拉电阻为30kOhm电阻需串联一个二极管以防止由于本地电源泄漏对总线产生的o干扰从节点的终端电容通常值为CSIave=220pF,主节点的电容要更高以使整个总线的电容小于从节点的值由于采纳单线媒质传输,最大的传输波特率被限定在20kbit/s以内该值为从满意信号同步而不产生冲突的最高值,到为满意电磁兼容性要求而要达到的传输最低值之间的试验中间值最小的传输波特率为lkbit/s-这有助于避开在实际中产生超时冲突LIN协议通过LIN总线传输的实体为帧一个报文帧由帧头以及回应数据部分组成在一个激活的UN网络中,通讯通常由主节点启动,主节点任务发送包含有同步间隙的报文头,同步字节以及报文标志符ID一个从节点的任务通过接收并过滤标志符被激活,并启动回应报文的传送回应中包含了1到8个字节的数据以及一个字节的校验码传输一帧所花费的总的时间是发送每个字节所用的时间,加上从节点的回应间隙,再加上传输每个字节的间隙时间inter-byte spaceo字节间隙是指发送完前一个字节的停止位后到发送下一个字节的启动位之间的时间帧内部间隔inter-frame space是从上一帧发送完毕后到下一帧启动发送间的时间间隔面,又颇为生涩,即依笔见一孔之见,〃创新〃或许包括〃突破〃,或许更多的是〃渐进〃英语中有制造invention和创新innovation之别,invention是无中生有,制造全新的东西,即所谓制造创造『innovation〃是指以旧翻新,改造、更新现有的东西,即所谓革新前者是所谓突破性〃或〃破坏性〃创造,如蒸汽机、汽车、飞机、电话、电视机、计算机等;后者是〃渐进性〃革新,如大型高炉、数控机床、核能发电等2023年,泰勒•考恩Tyler Cowen发表了颇有人气的短篇小说《大停滞》The GreatStagnation指出,今日西方已经进入了一个科技高原期我们已经吃光了长在低处的经济果实,因而经济增长受到阻碍,从现在起,要想取得进步会更加困难该的核心观点是创新突破比以前稀缺了许多,也有人在质疑〃突破性创新已是过去时〃今日突破创新不能说没有,苹果公司的iPad、iPhone.iPod都算是,但的确非常少见,特殊的难能珍贵!电子技术随笔【其次篇工十种精密全波整流电路图1的经典电路虽然匹配电阻多,但是完全可以用6个等值电阻R实现,其中电阻R3可以用两个R并联.可以通过R5调整增益,增益可以大于1,也可以小于
1.最具有优势的是可以在R5上并电容滤波.图2的电路的优势是匹配电阻少,只要一对匹配电阻就可以了.图3的优势在于高输入阻抗.其它几种,有的在D2导通的半周内,通过A2的复合实现A1的负反馈,对有些运放会消失自激.有的两个半波的输入阻抗不相等,对信号源要求较高.两个单运放型虽然可以实现整流的目的,但是输入输出特性都很差.需要输入输出都加跟随器或同相放大器隔离.各个电路都有其设计特色,盼望我们能从其电路的奇妙设计中,吸取有用的.例如单电源全波电路的设计,复合反馈电路的设计,都是很有用的设计思想和方法,假如能把各个图的电路原理分析并且推导每个公式,会有受益的.电子技术随笔【第三篇工蓄电池在线监测系统的设计与实现蓄电池在电力系统中是一种必备的后备电源且数量较多,其使用寿命和平安牢靠性倍受用户关注但由于使用不当或者不能准时维护,常常会导致蓄电池组中个别蓄电池的过放电或者早期失效过放电或者早期失效的个别蓄电池在后备电源投入使用时,会严峻影响整个电池组的放电容量,甚至会导致整个供电系统的崩溃因此,为保证在市电被切断时用电设备能够平安牢靠运行,避免蓄电池在长期使用过程中因个别电池过放电或者失效而引发事故带来经济损失,对蓄电池进行实时在线监测和准时的故障诊断成为蓄电池维护工作的一个极为重要方面本文介绍的基于STC89c58RD+微掌握器的蓄电池在线监测系统,能实现对蓄电池无论在闲置状态还是充、放电动态过程中的状态监测;对蓄电池内部开路、短路、过压、欠压及过度放电等特别状态准时报警并存储数据以备查询;能对2V、6V和12V多种多节电池电压在线测量;提高了对蓄电池监测的精确性、自动化和智能化程度本文详细介绍了系统的硬件设计和软件实现图1系统硬件结构框图系统硬件设计蓄电池在线监测系统是以STC89系列的STC89c58RD+微掌握器、XILINX的XC9572-84为核心,外围电路主要由电压采集电路、A/D转换电路、显示驱动电路及键盘电路等几部分组成的,如图1所示A/D转换芯片采纳10位ADCTLC1549显示驱动芯片采纳MC14489B,它可以驱动5位共阴极数码管,微掌握器的P1口的低5位作为键盘输入口,扩展的RS485接口用于多机通信下面具体介绍系统中STC89C58RD+.XC9572-84器件和电压采集电路、A/D转换电路的设计与实现微掌握器STC89c58RD+简介STC89c58RD+是STC89系列的微掌握器,它不但与80C51完全兼容,而且还有新的特点片内含有Flash程序存储器32Kb,DataFlash数据存储器32Kb,RAM数据存储器1208B,同时内部还有看门狗(WDT);由于ALE信号开关状态可设置,从而降低了EMI;具有可编程的8级中断源4种优先级,具有系统可编程(ISP)和应用可编程(IAP)等特点,片内资源丰富、集成度高、使用便利STC89C58RD+对系统的工作进行实施调度,实现外部输入参数的设置、电池电压的测试和显示、电池工作状态的指示规律编程器件XC9572-84(CPLD)由于监测的电池节数较多,所需要I/O口较多,用传统的设计方法,需要74HC
273、74HC
00、74HC
138、CD4514等多种芯片来实现,器件种类和数量多,使PCB的尺寸加大,也增加了系统的不稳定因素本系统选用XWNX系歹I」的CPLD器件XC9572-84,其共有72个宏单元,69个I/O口,1600个门,72个寄存器,可以对上述多种芯片进行集成该器件具有在系统可编程力量,含有先进的数据保密特性,它可以完全爱护编程数据不被非法读取和擦除,每个I/O口都有一个可编程输出摆率掌握位从而可减小系统噪声,采纳具有较低功耗的快速闪存技术,每个I/口的驱动力量强,负载电流可达24mA°XC9572-84接收单片机传来的数据和地址,掌握各个固态继电器G3VM-402C的选通以及A/D转换的进行,达到采集电压的功能采纳了CPLD器件后,削减了系统所需器件的数量和种类,简化了PCB的排版和布线,减小了系统体积和节省成本,便利了系统调试,有利于批量化生产电压采集电路电压采集电路直接影响到电压测试的精确程度,因而采集电路设计得是否适当对整个系统至关重要对每节电池电压进行测量,有两种方法:
①对每节电池电压直接采集
②采集n+1节电池的总电压,减去n节电池的总电压得第n+1节电池电压第一种电压采集精确而且平安其次种虽然电路比较简洁但是当电池节数多时采集的电压太高,担心全而且会消失较大的误差因此选用第一种方法电压采集电路要求要平安,采集的电压要足够的稳定本系统的蓄电池组采纳串接方式,BAT1+接第一节电池的正极,BAT2+接其次节的正极第一节的负极,如此依次连接,最多可达41节经过XC9572-84模拟开关选通G3VM-402C后,将1〜n节电池电压依次释放到电压总线BUS1+、BUS1-上,电路选用运算放大器LM358作为信号放大器件,它的前级为差分式放大器,后级为电压跟随器,使TLC1549得到一个稳定的采样电压,如图2所示1VD0和1VD1采纳FR104高速开关管来爱护运算放大器的内部电路差分式放大倍数为A=02详细推导如下Ua-Up/lR12=Up/lR14;
①Ub-Un/lRll=Un-Vo/lR13;2留意运放的虚短〃特点,有Up二Un;结合
①、
②两式得到VO=1R11+1R13/1R11-1R14/1R12+1R14-Ua-1R13/1R11-Ub;选取电阻满意1R13/1R11=1R14/1R12的关系,输出电压可简化为Vo=lR13/lRll-Ua-Ub,iftffi®^^^A=Vo/Ua-Ub=lR13/lRll=
0.2cA/D转换电路本系统A/D转换采纳片外串行总线10位高速高精度专用集成电路TLC1549,其功耗低、体积小、占用单片机的资源少,具有连接便利、编程简洁的特点电压采集电路的输出电压与TLC1549的A/D转换通道相连接,在时钟脉冲信号作用下,TLC1549将电压转换成10位二进制数字信号,并把上次A/D转换的结果以10位二进制数的形式依次输出,再通过光电隔离传送到单片机进行处理,如图3所示硬件设计过程中的留意点1系统用多路电源,要考虑系统的功耗选择适当的电源,电源电压应比较稳定2电压采集部分使用固态继电器G3VM-402C,由于电池节数较多,电压比较高,故应留意对内部电路的爱护,可以采纳适当功率的电阻对放大电路的电阻精度要求较高,可选用精度为1%的金属膜电阻;电路设计应避开消失因多个固态继电器同时开通的直通现象,这样会使多节蓄电池短路,造成电压采集电路的损坏3A/D转换芯片的基准电源要非常稳定,基准电源与芯片工作电源应采纳不同的共地电源,以保证A/D转换芯片基准电源的稳定性为了削减干扰,时钟和片选信号与单片机、CPLD之间进行光电隔离4器件的布局和PCB图的布线采纳模块化,沟通与直流分别,强电与弱电分别,数字地和模拟地分开,留意电源线和地线的布局系统软件设计在单片机的软件编程上,以Keil C编译器的Windows集成开发环境|ivision2作为软件开发平台,采纳C51高级语言编写该语言是80C51系列单片机的特地的高性能的程序设计语言它采纳符合ANSI标准的C语言编程,便于改进、扩充和移植,可以对硬件进行操作,能够产生极高速和极其简洁形式的目标代码,在代码的效率和执行速度上完全可以和汇编语言相媲美,并且有非常丰富的库函数可以供用户直接调用,从而极大地提高了程序的编写效率,能供应给用户高质量的程序代码采纳硬件描述语言Verilog HDL对CPLD进行编程单片机软件编程留意点1键盘在定时中断服务程序中读取,用中断间隔时间实现键盘的去抖,不必编写另外的延时程序,提高了CPU的利用效率键盘值存入数据缓冲区,在主程序中读数据缓冲区的内容,执行键盘功能散转子程序2电池电压的采集在中断程序中执行,因固态继电器的开通与关断时间均需1ms,故通道选通时要有肯定的延时,使电池采集电压建立并稳定后再启动A/D转换3依据A/D转换芯片TLC1549的工作原理,当前输出的数据是上一次A/D转换的结果,故对一节电池电压采样的首次A/D转换结果应丢弃,其余几次转换结果保留并加以处理4依据STC89c58RD+的DataFlash的特点,数据写入时必需启动ISP/IAP命令,CPU等待IAP动作定时后,才连续执行程序,要先关断中断EA要使数据写入DataFlash存储器,不能跨越扇区,假如要对某个扇区进行擦除,而其中有些字节的内容需要爱护,则需将其先读到单片机内部的RAM中保存,再将该扇区擦除,然后再将保存的数据写回该扇区CPLD的Verilog HDL编程用硬件描述语言Verilog HDL的程序设计硬件的好处在于易于理解、易于维护、调试电路速度快、有很多易于把握的仿真、综合和布局布线的工具,还可以用C语言协作Verilog HDL来做规律设计的布线前和布线后仿真,验证功能是否正确限于篇幅,下面给出部分模块的Verilog HDL程序module REG8CLRB,D,CLK,Q;//8位数据锁存input CLRB,CLK;input[7:0]D;output[7:0]Q;reg[7:0]Q;always@posedge CLKor negedgeCLRB Q=!CLRB0:D;endmodulemodule DECODE4_16E1,A,Y;//4-16译码input El;input[3:0]A;output[15:0]Y;reg[15:0]Y;always@El orA ifEl==ObegincaseA0:Y=16blllllllllllllll0;l:Y=16bllllllllllllll01;3:Y=16bllllllllllll0111;4:Y=16blllllllllll01111;5:Y=16bllllllllll011111;。