网站为什么会出现死链互联网保险案例

web/2025/10/7 18:38:36/文章来源:
网站为什么会出现死链,互联网保险案例,中文域名网站,品牌网站建设定制啥是MCU#xff0c;MCU科普 附赠自动驾驶学习资料和量产经验#xff1a;链接 MCU是Microcontroller Unit 的简称#xff0c;中文叫微控制器#xff0c;俗称单片机#xff0c;是把CPU的频率与规格做适当缩减#xff0c;并将内存、计数器、USB、A/D转换、UART、PLC、DMA等…啥是MCUMCU科普 附赠自动驾驶学习资料和量产经验链接 MCU是Microcontroller Unit 的简称中文叫微控制器俗称单片机是把CPU的频率与规格做适当缩减并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口甚至LCD驱动电路都整合在单一芯片上形成芯片级的计算机为不同的应用场合做不同组合控制诸如手机、PC外围、遥控器至汽车电子、工业上的步进马达、机器手臂的控制等都可见到MCU的身影。 PART.01 单片机发展简史 单片机出现的历史并不长但发展十分迅猛。它的产生与发展和微处理器CPU的产生与发展大体同步自1971年美国英特尔公司首先推出4位微处理器以来它的发展到目前为止大致可分为5个阶段。下面以英特尔公司的单片机发展为代表加以介绍。 1971年~1976年 单片机发展的初级阶段。1971年11月英特尔公司首先设计出集成度为2000只晶体管/片的4位微处理器英特尔4004并配有RAM、 ROM和移位寄存器 构成了第一台MCS—4微处理器 而后又推出了8位微处理器英特尔8008 以及其它各公司相继推出的8位微处理器。 1976年~1980年 低性能单片机阶段。以1976年英特尔公司推出的MCS—48系列为代表 采用将8位CPU、 8位并行I/O接口、8位定时/计数器、RAM和ROM等集成于一块半导体芯片上的单片结构 虽然其寻址范围有限不大于4 KB 也没有串行I/O RAM、 ROM容量小 中断系统也较简单 但功能可满足一般工业控制和智能化仪器、仪表等的需要。 1980年~1983年 高性能单片机阶段。这一阶段推出的高性能8位单片机普遍带有串行口有多级中断处理系统 多个16位定时器/计数器。片内RAM、 ROM的容量加大且寻址范围可达64 KB个别片内还带有A/D转换接口。 1983年~80年代末 16位单片机阶段。1983年英特尔公司又推出了高性能的16位单片机MCS96系列由于其采用了最新的制造工艺 使芯片集成度高达12万只晶体管/片。 1990年代 单片机在集成度、功能、速度、可靠性、应用领域等全方位向更高水平发展。 PART.02 单片机的分类及应用 MCU按其存储器类型可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片必须外接EPROM才能应用典型为8031带片内ROM型的芯片又分为片内EPROM型典型芯片为87C51、MASK片内掩模ROM型典型芯片为8051、片内Flash型典型芯片为89C51等类型。 按用途可分为通用型和专用型根据数据总线的宽度和一次可处理的数据字节长度可分为8、16、32位MCU。 目前国内MCU应用市场最广泛的是消费电子领域其次是工业领域、和汽车电子市场。消费电子包括家用电器、电视、游戏机和音视频系统等。工业领域包括智能家居、自动化、医疗应用及新能源生成与分配等。汽车领域包括汽车动力总成和安全控制系统等。 PART.03 单片机的基本功能 对于绝大多数MCU下列功能是最普遍也是最基本的针对不同的MCU其描述的方式可能会有区别但本质上是基本相同的 **1、TImer(定时器)**TImer的种类虽然比较多但可归纳为两大类**一类是固定时间间隔的TImer**即其定时的时间是由系统设定的用户程序不可控制系统只提供几种固定的时间间隔给用户程序进行选择如32Hz16Hz8Hz等此类TImer在4位MCU中比较常见因此可以用来实现时钟、计时等相关的功能。 **另一类则是Programmable Timer(可编程定时器)**顾名思义该类Timer的定时时间是可以由用户的程序来控制的控制的方式包括时钟源的选择、分频数(Prescale)选择及预制数的设定等有的MCU三者都同时具备而有的则可能是其中的一种或两种。此类Timer应用非常灵活实际的使用也千变万化其中最常见的一种应用就是用其实现PWM输出。 由于时钟源可以自由选择因此此类Timer一般均与Event Counter(事件计数器)合在一起。 **2、IO口**任何MCU都具有一定数量的IO口没有IO口MCU就失去了与外部沟通的渠道。根据IO口的可配置情况可以分为如下几种类型 **纯输入或纯输出口**此类IO口由MCU硬件设计决定只能是输入或输出不可用软件来进行实时的设定。 **直接读写IO口**如MCS-51的IO口就属于此类IO口。当执行读IO口指令时就是输入口;当执行写IO口指令则自动为输出口。 **程序编程设定输入输出方向的**此类IO口的输入或输出由程序根据实际的需要来进行设定应用比较灵活可以实现一些总线级的应用如I2C总线各种LCD、LED Driver的控制总线等。 对于IO口的使用重要的一点必须牢记的是对于输入口必须有明确的电平信号确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口其输出的状态电平必须考虑其外部的连接情况应保证在Standby或静态状态下不存在拉电流或灌电流。 **3、外部中断**外部中断也是绝大多数MCU所具有的基本功能一般用于信号的实时触发数据采样和状态的检测中断的方式由上升沿、下降沿触发和电平触发几种。外部中断一般通过输入口来实现若为IO口则只有设为输入时其中断功能才会开启;若为输出口则外部中断功能将自动关闭(ATMEL的ATiny系列存在一些例外输出口时也能触发中断功能)。外部中断的应用如下 **外部触发信号的检测**一种是基于实时性的要求比如可控硅的控制突发性信号的检测等而另一种情况则是省电的需要。 **信号频率的测量**为了保证信号不被遗漏外部中断是最理想的选择。 **数据的解码**在遥控应用领域为了降低设计的成本经常需要采用软件的方式来对各种编码数据进行解码如Manchester和PWM编码的解码。 **按键的检测和系统的唤醒**对于进入Sleep状态的MCU一般需要通过外部中断来进行唤醒最基本的形式则是按键通过按键的动作来产生电平的变化。 **4、通讯接口**MCU所提供的通讯接口一般包括SPI接口UARTI2C接口等其分别描述如下 **SPI接口**此类接口是绝大多数MCU都提供的一种最基本通讯方式其数据传输采用同步时钟来控制信号包括SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)及Ready信号;有些情况下则可能没有Ready信号;此类接口可以工作在Master方式或Slave方式下通俗说法就是看谁提供时钟信号提供时钟的一方为Master相反的一方则为Slaver。 **UARTUniversal Asynchronous Receive Transmit**属于最基本的一种异步传输接口其信号线只有Rx和Tx两条基本的数据格式为Start Bit  Data Bit(7-bits/8-bits)  Parity Bit(Even Odd or None)  Stop Bit(1~2Bit)。一位数据所占的时间称为Baud Rate(波特率)。 对于大多数的MCU来讲数据位的长度、数据校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度及Baud Rate是可以通过程序编程进行灵活设定。此类接口最常用的方式就是与PC机的串口进行数据通讯。 **I2C接口**I2C是由Philips开发的一种数据传输协议同样采用2根信号来实现SDAT(串行数据输入输出)和SCLK(串行时钟)。其最大的好处是可以在此总线上挂接多个设备通过地址来进行识别和访问;I2C总线的一个最大的好处就是非常方便用软件通过IO口来实现其传输的数据速率完全由SCLK来控制可快可慢不像UART接口有严格的速率要求。 **5、Watchdog看门狗定时器**Watchdog也是绝大多数MCU的一种基本配置(一些4位MCU可能没有此功能)大多数的MCU的Watchdog只能允许程序对其进行复位而不能对其关闭(有的是在程序烧入时来设定的如Microchip PIC系列MCU)而有的MCU则是通过特定的方式来决定其是否打开如Samsung的KS57系列只要程序访问了Watchdog寄存器就自动开启且不能再被关闭。一般而言watchdog的复位时间是可以程序来设定的。Watchdog的最基本的应用是为MCU因为意外的故障而导致死机提供了一种自我恢复的能力。 PART.04 全球主流单片机制造商 排名不分先后整理为主流厂商如有缺少请在评论区补充 欧美地区 **1、FreescaleNXP飞思卡尔恩智浦**荷兰主要提供16位、32位MCU。应用范围汽车电子、LED和普通照明、医疗保健、多媒体融合、家电和电动工具、楼宇自动化技术电机控制、电源和功率转换器、能源和智能电网、自动化、计算机与通信基础设施。 **2、MicrochipAtmel微芯科技爱特梅尔**美国主要提供16位、32位MCU。应用范围汽车电子、工业用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备、计算机外设。 **3、CypressSpansion赛普拉斯飞索半导体**美国主要提供8位、16位、32位MCU。应用范围汽车电子、家用电器、医疗、消费类电子、通信与电信、工业、无线。 **4、ADI亚德诺半导体**美国主要提供8位、16位、32位MCU。应用范围航空航天与国防、汽车应用 、楼宇技术 、通信 、消费电子 、能源 、医疗保健 、仪器仪表和测量 、电机、工业自动化 、安防。 **5、Infineon英飞凌**德国主要提供16位、32位MCU。应用范围汽车电子、消费电子、工程、商用和农用车辆、数据处理、电动交通、工业应用、医疗设备、移动设备、电机控制与驱动、电源、面向摩托车电动自行车与小型电动车、智能电网、照明、太阳能系统解决方案、风能系统解决方案。 **6、ST Microelectronics意法半导体**意大利/法国主要提供32位MCU。应用范围LED和普通照明、交通运输、医疗保健、多媒体融合、家电和电动工具、楼宇自动化技术电机控制、电源和功率转换器、能源和智能电网、自动化、计算机与通信基础设施。 **7、Qualcomm高通**美国主要提供16位32位MCU。应用范围智能手机、平板电脑、无线调制解调器。 **8、Texas Instruments德州仪器**美国主要提供16位、32位MCU。应用范围汽车电子、消费电子、医疗设备、移动设备、通信。 **9、Maxim美信**美国主要提供32位MCU。应用范围汽车电子、消费电子、工业应用、安防。 日韩地区 **1、Renesas瑞萨**日本主要提供16位、32位MCU。应用范围电脑及外设、消费类电子、健康医疗电子、汽车电子、工业、通信。 **2、Toshiba东芝**日本主要提供16位、32位MCU。应用范围汽车电子、工业用、电机控制、无线通信、移动电话、电脑与周边设备、影像及音视频、消费类(家电)、LED照明、安全、电源管理、娱乐设备。 **3、Fujitsu富士通**日本主要提供32位MCU。应用范围汽车、医疗、机械家电。 **4、Samsung Electronics三星电子**韩国主要提供16位、32位MCU。应用范围汽车电子、工业用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备、计算机外设。 中国地区 ▍中国大陆地区 **1、希格玛微电子**主要提供32位MCU应用范围电信、制造、能源、交通、电力等。 **2、珠海欧比特**主要提供32位MCU应用范围航空航天星箭站船、飞行器;高端工控嵌入式计算机;舰船控制、工业控制、电力设备、环境监控。 **3、兆易创新**主要提供32位MCU应用范围工业自动化、人机界面、电机控制、安防监控、智能家居、物联网。 **4、晟矽微电子**主要提供8位、32位MCU应用范围小家电、消费类电子、遥控器、鼠标、锂电池、数码产品、汽车电子、医疗仪器及计量、玩具、工业控制、智能家居及安防等领域。 **5、芯海科技**主要提供16、32位MCU应用范围仪器仪表、物联网、消费电子、家电、汽车电子。 **6、联华集成电路**主要提供8位、16位MCU应用范围消费电子、白色家电、工业控制、通信设备、汽车电子、计算机。 **7、珠海建荣**主要提供8位MCU应用范围家用电器 、移动电源。 **8、炬芯科技**主要提供8位至32位MCU应用范围平板电脑、智能家居、多媒体、蓝牙、wifi音频。 **9、爱思科微电子**主要提供8位、16位MCU应用范围消费类芯片、通讯类芯片、信息类芯片、家电。 **10、华芯微电子**主要提供8位、4位MCU应用范围卫星接收器、手机充电器、万年历、多合一遥控器。 **11、上海贝岭华大半导体控股**主要提供8位、16位、32位MCU应用范围计算机周边、HDTV、电源管理、小家电、数字家电。 **12、海尔集成电路**主要提供14位、15位、16位MCU应用范围消费电子、汽车电子、工业、智能仪表。 **13、北京君正**主要提供32位MCU应用范围可穿戴式设备、物联网、智能家电、汽车、消费类电子、平板电脑。 **14、中微半导体**主要提供8位MCU应用范围智能家电、汽车电子、安防监控、LED照明及景观、智能玩具、智能家居、消费类电子。 **15、神州龙芯集成电路**主要提供32位MCU应用范围电力监控、智能电网、工业数字控制、物联网、智能家居、数据监控。 **16、紫光微电子**主要提供8位、16位MCU应用范围智能家电。 **17、时代民芯**主要提供32位MCU应用范围汽车导航、交通监控、渔船监管、电力电信网络。 **18、华润矽科微电子华润微旗下公司**主要提供8位、16位MCU应用范围消费电子、工业控制、家电。 **19、国芯科技**主要提供32位MCU应用范围信息安全领域 、办公自动化领域、通讯网络领域、 信息安全领域。 **20、中天微**主要提供32位MCU应用范围智能手机、数字电视、机顶盒、汽车电子、GPS、电子阅读器、打印机。 **21、华润微电子**主要提供8位、16位MCU应用范围家电消费类电子、工业自动化控制的通用控制电路。 **22、中颖电子**主要提供4位、8位、16位、32位MCU应用范围家电、电机。 **23、灵动微电子**主要提供32位应用范围电机控制、蓝牙控制、高清显示、无线充、无人机、微型打印机、智能标签、电子烟、LED点阵屏等。 **24、新唐科技**主要提供8位MCU应用范围照明、物联网等。 **25、东软载波**主要提供8位、32位MCU应用范围家电、智能家居、仪器仪表、液晶面板控制器、工业控制等。 **26、贝特莱**主要提供32位MCU应用范围智能家居、工业控制以及消费类产品领域。 **27、笙泉科技**主要提供8位MCU应用范围车用、教育、工控、医疗等中小型显示面板。 **28、航顺芯片**主要提供8位、32位MCU应用范围汽车、物联网等。 **29、复旦微电子**主要提供16位、32位MCU应用范围智能电表、智能门锁等。 **30、华大半导体**主要提供8位、16位、32位MCU应用范围工业控制、智能制造、智慧生活及物联网等。 ▍中国台湾地区 **1、宏晶科技**主要提供32位MCU。应用范围通信、工业控制、信息家电、语音。 **2、盛群半导体**主要提供8位、32位MCU。应用范围消费电子、LED照明等。 **3、凌阳科技**主要提供8位、16位MCU。应用范围家庭影音。 **4、中颖电子**主要提供4位、8位MCU。应用范围充电器、移动电源、家电、工业控制。 **5、松翰科技**主要提供8位、32位MCU。应用范围摇控器、智能型充电器、大小系统、电子秤、耳温枪、血压计、胎压计、各类量测及健康器材。 **6、华邦电子**主要提供8位、16位MCU。应用范围车用电子、工业电子、网络、计算机、消费电子、物联网。 **7、十速科技**主要提供4位、8位、51位MCU。应用范围遥控器、小家电。 **8、佑华微电子**主要提供4位、8位MCU。应用范围录音集成电路产品、消费电子、家用产品。 **9、应广科技单片机**主要提供4位、8位MCU。应用范围机械、自动化、家电、机器人。 **10、义隆电子**主要提供8位、16位MCU。应用范围消费电子、电脑、智能手机。 PART.05 单片机的学习窍门 任何一款MCU其基本原理和功能都是大同小异所不同的只是其外围功能模块的配置及数量、指令系统等。 对于指令系统虽然形式上看似千差万别**但实际上只是符号的不同**其所代表的含义、所要完成的功能和寻址方式基本上是类似的。 要了解一款MCU首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供的外围功能模块Peripheral Circuit、中断源、工作电压及功耗等等。 了解这些MCU Features后接下来第一步就是将所选MCU的功能与实际项目开发的要求的功能进行对比明确哪些资源是目前所需要的哪些是本项目所用不到的。 对于项目中需要用到的而所选MCU不提供的功能则需要认真理解MCU的相关资料以求用间接的方法来实现例如所开发的项目需要与PC机COM口进行通讯而所选的MCU不提供UART口则可以考虑用外部中断的方式来实现。 对于项目开发需要用到的资源则需要对其Manua*进行认真的理解和阅读而对于不需要的功能模块则可以忽略或浏览即可。对于MCU学习来讲应用才是关键也是最主要的目的。 明确了MCU的相关功能后接下来就可以开始编程了。 对于初学者或初次使用此款MCU的设计者来说可能会遇到很多对MCU的功能描述不明确的地方对于此类问题可以通过两种方法来解决一种是编写特别的验证程序来理解资料所述的功能;另一种则可以暂时忽略单片机程序设计中则按照自己目前的理解来编写留到调试时去修改和完善。前一种方法适用于时间较宽松的项目和初学者而后一种方法则适合于具有一定单片机开发经验的人或项目进度较紧迫的情况。 指令系统千万不要特别花时间去理解。指令系统只是一种逻辑描述的符号只有在编程时根据自己的逻辑和程序的逻辑要求来查看相关的指令即可而且随着编程的进行对指令系统也会越来越熟练甚至可以不自觉地记忆下来。 PART.06 单片机的程序编写 MCU的程序的编写与PC下的程序的编写存在很大的区别虽然现在基于C的MCU开发工具越来越流行但对于一个高效的程序代码和喜欢使用汇编的设计者来讲汇编语言仍然是最简洁、最有效的编程语言。 对于MCU的程序编写其基本的框架可以说是大体一致的一般分为初始化部分(这是MCU程序设计与PC最大的不同)主程序循环体和中断处理程序三大部分其分别说明如下 **1、初始化**对于所有的MCU程序的设计来讲初始化是最基本也是最重要的一步一般包括如下内容 **屏蔽所有中断并初始化堆栈指针**初始化部分一般不希望有任何中断发生。 **清除系统的RAM区域和显示Memory**虽然有时可能没有完全的必要但从可靠性及一致性的角度出发特别是对于防止意外的错误还是建议养成良好的编程习惯。 **IO口的初始化**根据项目的应用的要求设定相关IO口的输入输出方式对于输入口需要设定其上拉或下拉电阻;对于输出口则必须设定其初始的电平输出以防出现不必要的错误。 **中断的设置**对于所有项目需要用到的中断源应该给予开启并设定中断的触发条件而对于不使用的多余的中断则必须给予关闭。 **其他功能模块的初始化**对于所有需要用到的MCU的外围功能模块必须按项目的应用的要求进行相应的设置如UART的通讯需要设定Baud Rate数据长度校验方式和Stop Bit的长度等而对于Programmer Timer则必须设置其时钟源分频数及Reload Data等。 **参数的初始化**完成了MCU的硬件和资源的初始化后接下来就是对程序中使用到的一些变量和数据的初始化设置这一部分的初始化需要根据具体的项目及程序的总体安排来设计。对于一些用EEPROM来保存项目预制数的应用来讲建议在初始化时将相关的数据拷贝到MCU的RAM以提高程序对数据的访问速度同时降低系统的功耗原则上访问外部EEPROM都会增加电源的功耗。 **2、主程序循环体**大多数MCU是属于长时间不间断运行的因此其主程序体基本上都是以循环的方式来设计对于存在多种工作模式的应用来讲则可能存在多个循环体相互之间通过状态标志来进行转换。对于主程序体一般情况下主要安排如下的模块 **计算程序**计算程序一般比较耗时因此坚决反对放在任何中断中处理特别是乘除法运算。 实时性要求不高或没有实时性要求的处理程序 **显示传输程序**主要针对存在外部LED、LCD Driver的应用。 **3、中断处理程序**中断程序主要用于处理实时性要求较高的任务和事件如外部突发性信号的检测按键的检测和处理定时计数LED显示扫描等。 一般情况下中断程序应尽可能保证代码的简洁和短小对于不需要实时去处理的功能可以在中断中设置触发的标志然后由主程序来执行具体的事务――这一点非常重要特别是对于低功耗、低速的MCU来讲必须保证所有中断的及时响应。 4、对于不同任务体的安排不同的MCU其处理的方法也有所不同 例如对于低速、低功耗的MCU(Fosc32768Hz)应用考虑到此类项目均为手持式设备和采用普通的LCD显示对按键的反应和显示的反应要求实时性较高因此一般采用定时中断的方式来处理按键的动作和数据的显示而对于高速的MCU如Fosc》1MHz的应用由于此时MCU有足够的时间来执行主程序循环体因此可以只在相应的中断中设置各种触发标志并将所有的任务放在主程序体中来执行。 5、在MCU的程序设计中还需要特别注意的一点就是 要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是将此类数据的处理安排在一个模块中通过判断触发标志来决定是否执行该数据的相关操作而在其他的程序体中(主要是中断)对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。 PART.07 工程师对单片机编程的总结 **1、**要养成总结的好习惯总结不仅是对自己学习的一个总结还是对学习过程的一个回顾与加深还可避免第二次犯错。 **2、**编写程序之前先要有一个对该项目熟悉的了解做到心中有数列一个大致框架。仔细推敲该怎么布局怎样布局最合理该步骤很重要。要分析先做哪个模块具体到该模块的具体步骤各个函数怎么命名与其他模块的衔接等。最好拿张纸记下重要过程。 **3、**对于c语言的模块化编程要先分好各个模块一个模块一个模块的编程确定一个顺序按顺序来该模块成功之后再编写下一个。对于头文件当该模块编写好之后再编写该模块的头文件。 **4、**出现警告不要忽视说明该程序一定有不合理之处要弄清其来源找到解决办法。找来源时要有针对性可上网搜一下该方面的资料或向别人请教。例如居然把另一个工程内的main函数加入了这个工程。还有居然函数命名重复。还有根据实验现象分析原因层层递进。还有端口定义时居然选错了接口。有时实在解决不了就休息一下在想也挺好的。再简单的地方也要注意一下都有可能出错。 在单片机应用开发中代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着。现归纳出单片机开发中应掌握的几个基本技巧。 PART.08 单片机开发技巧 1 如何减少程序中的bug 对于如何减少程序的bug应该先考虑系统运行中应考虑的超范围管理参数如下。 物理参数这些参数主要是系统的输入参数它包括激励参数、采集处理中的运行参数和处理结束的结果参数。 资源参数这些参数主要是系统中的电路、器件、功能单元的资源如记忆体容量、存储单元长度、堆叠深度。 应用参数这些应用参数常表现为一些单片机、功能单元的应用条件。过程参数指系统运行中的有序变化的参数。 2 如何提高C语言编程代码的效率 用C语言进行单片机程序设计是单片机开发与应用的必然趋势。如果使用C编程时要达到最高的效率最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数这样就可以很明确的知道效率。在今后编程的时候使用编译效率最高的语句。各家的C编译器都会有一定的差异故编译效率也会有所不同优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。 对于复杂而开发时间紧的项目时可以采用C语言但前提是要求你对该MCU系统的C语言和C编译器非常熟悉特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言但由于不同的MCU厂家其C语言编译系统是有所差别的特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解那么调试起来问题就会很多反而导致执行效率低于汇编语言。 3 如何解决单片机的抗干扰性问题 防止干扰最有效的方法是去除干扰源、隔断干扰路径但往往很难做到所以只能看单片机抗干扰能力够不够强了。在提高硬件系统抗干扰能力的同时软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。 单片机干扰最常见的现象就是复位至于程序跑飞其实也可以用软件陷阱和看门狗将程序拉回到复位状态所以单片机软件抗干扰最重要的是处理好复位状态。 一般单片机都会有一些标志寄存器可以用来判断复位原因另外你也可以自己在RAM中埋一些标志。在每次程序复位时通过判断这些标志可以判断出不同的复位原因还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性用户在使用时也不会察觉到程序被重新复位过。 4 如何测试单片机系统的可靠性 当一个单片机系统设计完成对于不同的单片机系统产品会有不同的测试项目和方法但是有一些是必须测试的 测试单片机软件功能的完善性 上电、掉电测试 老化测试 ESD和EFT等测试 有时候我们还可以模拟人为使用中可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口由此测试抗静电的能力。用大功率电钻靠近单片机系统工作由此测试抗电磁干扰能力等。 综上所述单片机已成为计算机发展和应用的一个重要方面单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。 从前必须由模拟电路或数字电路实现的大部分功能现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术是传统控制技术的一次革命。 此外在开发和应用过程中我们更要掌握技巧提高效率以便于发挥它更加广阔的用途。 PART.09 芯片操作总结 对芯片的操作主要是对芯片内寄存器的操作芯片内寄存器在存储器上映射的都有自己的唯一地址这也就是对相应的地址的操作。看芯片首先看时序图再了解相应的寄存器了解是如何操作的定义需要的端口程序可以识别编写写操作程序和读操作程序。 如何往芯片内写入数据如何读出数据通过哪个端口输入或读出最主要的地方。 通过总线连接芯片时首先要了解该总线的协议。I2c总线连接的芯片主要通过该总线去控制该芯片。 **1、**点阵中一个74hc595用于列的选择令外两个用于颜色的选择点阵相当于二极管的集合 一端给高电平另一端给低电平二极管才能亮。只是一端选择不同时亮不同的颜色。 定时器工作模式的选择高四位是设置定时器T1低四位设置T0。然后各模式的后两位设置工作模式。当设置两个定时器时注意使用或|。当用中断时注意进入中断后该清零的要清零。 **2、**串口收发波特率的设置一般用模式2自动重装初值因为不同的装置处理数据的能力不同设置波特率主要为了照顾低速装置及为了彼此间的通讯。中断标志位要软件清零。设置串口中断时收发无论哪一个产生都能进入中断函数因此要注意设置中断函数。自我感觉一般设置一种功能当做上位机或下位机。 发送用中断的话要解决第一次该怎么进入中断因此首先要发送一次此后就可以进入中断了。一次只能发一字节而且只有在TI置一之后才能发送下一位。 **3、**Pcf8591ad转换有四个通道的输入读pcf8591时选通哪一个通道读的就是那个通道输入的电压转换后的数据存储在该芯片内再读出。读时先写芯片的地址在写器件的子地址0x40|通道号然后就是读出的数据。 **4、**Da转换是先向芯片内写入器件地址在写子地址0x40在写要转换的数字量。器件地址芯片资料有介绍。 **5、**对于液晶显示写入数据显示后他会一直显示不用持续刷新要想改变只有重新输入。 **6、**对于ds1302时钟芯片读数据时是在写入数据时的第八个时钟下降沿就读出第一位数据的的然后再为下次输出做准备注意程序的写法还要注意返回值放的位置。 **7、**Ds1302中先指明寄存器再向其中写入数据。芯片资料上的寄存器标出的是地址。写保护处程序还不大明白不是一直都有写入吗为什么还打开写保护 根据前面的大侠可以在初始化时间后设一标志有此标志则不用再初始化时间。但是如果断电后MCU的RAM是无法保存这个标志的因此可以用DS1302的RAM保存该标志待上电后读取该标志。我也是初学者最近也打算用DS1302。不知说法对不我也还没具体实施多交流 **8、**初始化最好还要写一下以防以后忘记。有时注意读出或写入时首先操作的是最低位还是最高位可根据时序图判断出。 **9、**对于红外收发接收时他是根据两个下降沿之间的时间长短来确定是高电平还是低电平写程序时先用定时器确定时间长短保存然后再转化成二进制该程序写法多看看很好。 **10、**步进电机主要做开关用步进电机的力矩随转速的升高而降低。主要用在机床上零部件加工的自动进给。对有较高精度的控制场所都可也使用。 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数而不受负载变化的影响当步进驱动器接收到一个脉冲信号它就驱动步进电机按设定的方向转动一个固定的角度称为“步距角”它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量从而达到准确定位的目的同时可以通过控制脉冲频率来控制电机转动的速度和加速度从而达到调速的目的。 **11、**伺服电机servo motor 是指在伺服系统中控制机械元件运转的发动机是一种补助马达间接变速装置。伺服电机可使控制速度位置精度非常准确可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制并能快速反应在自动控制系统中用作执行元件且具有机电时间常数小、线性度高、始动电压等特性可把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两大类其主要特点是当信号电压为零时无自转现象转速随着转矩的增加而匀速下降。 直流电机范围较大小车上都是。 **12、**汉字概览 为了将汉字在显示器或打印机上输出把汉字按图形符号设计成点阵图就得到了相应的点阵代码字形码。 为在计算机内表示汉字而统一的编码方式形成汉字编码叫内码如国标码内码是惟一的相当于该字的身份证号。为方便汉字输入而形成的汉字编码为输入码属于汉字的外码输入码因编码方式不同而不同是多种多样的。为显示和打印输出汉字而形成的汉字编码为字形码计算机通过汉字内码在字模库中找出汉字的字形码实现其转换。 机内码 根据国标码的规定每一个汉字都有了确定的二进制代码但是这个代码在计算机内部处理时会与ASCII码发生冲突为解决这个问题把国标码的每一个字节的首位上加1。由于ASCII码只用7位所以这个首位上的“1”就可以作为识别汉字代码的标志计算机在处理到首位是“1”的代码时把它理解为是汉字的信息在处理到首位是“0”的代码时把它理解为是ASCII码。经过这样处理后的国标码内码就是机内码。 如果我们把这个“口”字图形的“.”处用“0”代替就可以很形象地得到“口”的字形码:0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H。计算机要输出“口”时先找到显示字库的首址根据“口”的机内码经过计算再去找到“口”的字形码然后根据字形码(要用二进制)通过字符发生器的控制在屏幕上进行依次扫描其中二进制代码中是“0”的地方空扫是“1”的地方扫出亮点于是就可以得到“口”的字符图形。 汉字字模按国标码的顺序排列以二进制文件形式存放在存储器中,构成汉字字模字库,亦称为汉字字形库,称汉字库 两种编码方法见头文件 GB1616.h//------------------ 汉字字模的数据结构定义 ------------------------//struct typFNT_GB16 //汉字字模数据结构{ unsignedchar Index[3]; //汉字内码索引 unsignedchar Msk[32]; //点阵码数据 };/// 汉字字模表 汉字库: 宋体16.dot,横向取模左高位,数据排列:从左到右从上到下 ///conststruct typFNT_GB16 codeGB_16[] //数据表{/*------------------------------------------------------------------------------; 源文件 /文字 :徐; 宽×高像素:16×16------------------------------------------------------------------------------*/ 徐,0x10,0x80,0x10,0x80,0x21,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,**这个结构很简单的**一个是内码一个点阵序列以前的点阵库是按内码顺序放的不需要内码索引的如果只放部分汉字就需要内码索引了。前面的汉字“徐”是为了要输出“徐”的时候找到该字的点阵序列这个点阵序列是自己写的当用1602显示时因为该芯片内存在英文的点阵序列所以就不用写了一般内码两个字节就行了多用1个字节是加了个尾0而已这样汉字内码处直接放汉字字符串就可 codeGB_16[k].Index[0] codeGB_16[k]说明有一个结构体typFNT_GB16的数组叫做codeGB_16 codeGB_16[k]是数组中第k1个成员 index是结构体typFNT_GB16的成员所以可以用codeGB_16[k].Index来进行引用 同时index又是个数组所以可以index[0] if((codeGB_16[k].Index[0]c[0])(codeGB_16[k].Index[1]c[1])) 是 逻辑与运算符 意思是 符号的两边的值都为真 的值才为真也就是 true  true true 这句的意思是 codeGB_16[k].Index[0]c[0]  和 codeGB_16[k].Index[1]c[1] 同时成立 if下面的语句才执行 codeGB_16[]是个结构体数组codeGB_16[k].Index[0]是说结构体数组的第K个结构体的index成员的第0个元素值。 **13、**12864液晶 每个显示点对应一位二进制数1 表示亮0 表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。 绘图RAM的地址计数器AC只会对水平地址(X  轴)自动加一, 当水平地址0FH  时会重新设为00H  但并不会对垂直地址做进位自动加一故当连续写入多笔资料时程序需自行判断垂直地址是否需重新设定 **14、**绘图RAMGDRAM 绘图显示RAM提供128×8 个字节的记忆空间在更改绘图RAM时先连续写入水平与垂直的坐标值再写入两个字节的数据到绘图RAM而地址计数器AC会对水平地址X 地址自动加一当水平地址为0XFH 时会重新设为00H 不会对垂直地址做进位自动加 1. 。在写入绘图 RAM的期间绘图显示必须关闭 [cpp] view plain copy// 显示汉字 voiddispString (uchar X, Y,uchar *msg) //X为哪一行Y 为哪一列。msg 为汉字 { if(X0) X 0x80; // 第一行汉字显示坐标 else if(X1) X 0x90; // 第二行 else if(X2) X 0x88; // 第三行 else X 0x98; //第四行 Y X Y; //Y 为1 往右移一位 write_com(Y); // 写入坐标 while (*msg) { write_data(*msg); //显示汉字 } } /// // 显示图象 voiddisppicture(uchar code *adder) { uint i,j; //*******显示上半屏内容设置 for(i0;i32;i) // 上半屏32个列地址 { write_com(0x80 i); //SET 垂直地址 VERTICALADD write_com(0x80); //SET 水平地址 HORIZONTAL ADD for(j0;j16;j) { write_data(*adder); adder; } } //*******显示下半屏内容设置 for(i0;i32;i) // { write_com(0x80 i); //SET 垂直地址 VERTICALADD write_com(0x88); //SET 水平地址 HORIZONTAL ADD for(j0;j16;j) { write_data(*adder); adder; } } }对于C语言定义的变量自动为其分配空间其地址为该变量的名称。通过该名称可以在内存中招到该数据经过运算得到新数据而汇编中需要编程者自己定义存储空间及把数据送到累加器等进行运算每一步都需要编程者操作。而C语言这些过程由编译器去完成。 **15、**一些有用的答疑解惑 ①、单片机C语言其变量的内存开辟是如何进行的难道是编译器在编译过程中智能地加入分配与回收的代码关键之处在于我所做的程序如何保证其没有内存溢出错误如果我进行的是递归运算这样的话内存需求是很难自己计算的。 ②、单片机C语言在变量定义上是否会受到约束比如浮点型数据的乘除运算通过汇编还写代码相当复杂如果直接C语言来写岂不过份简单 ③、单片机C语言生成的hex文件中指令及数据的ROM的地址分布是否编译器自动分配可否用户进行分配 回答1c语言写的单片机程序先由1个程序好像是c51.exe编译编译完成后变量的存储空间大小已经安排好只是还没分配具体地址地址浮动接下来有另一个程序好像是a51.exe进行连接连接以后具体地址确定。 如果变量过多编译会提示数据段too large要保证其没有内存溢出错误主要考虑堆栈是否溢出要靠经验 单片机c语言一般禁止递归一般都避免用递归运算单片机毕竟不是PC会影响速度的要递归的话用DSP芯片更合适总之要会挑合适的芯片 回答2变量的大小位数一般和芯片累加器的位数一样比如51常用8位的因为它是8位单片机 单片机可以定义位变量但是不可以定义位数组。用c语言写只是看着简单实际生成的代码量是最多的用于控制的单片机几乎不用浮点数运算不仅慢还麻烦还占地方如果是DSP芯片本身有适合的硬件结构会好很多。 回答3一般是自动分配的可以c语言和汇编语言混合编程也可以用Keil C在线汇编芯片与外部的数据交换都是通过端口进行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医疗室内设计网站推荐网络营销策划书模板

本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下使用vue-cli构建的vue项目,webpack的配置文件是分散在很多地方的,而我们需要修改的是build/webpack.base…

led外贸网站合肥做网站yuanmus

缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值。 下例会打印默认的age,如果age没有被传入. def printinfo( name,age 35 ): # 打印任何传入的字符串 print "Name: ", name print "Age ", age #调…

深圳seo网站桂林北站到象鼻山多远

1 永远不要质疑二哈▼2 睡觉也不耽误练功▼3 谁还没为数学考试受过伤呢?▼4 可能我的嘴巴安装了笑话过滤器吧▼5 我书读得少,你别吓唬我▼6 希望狗没事儿▼7 海王的微信壁纸事实证明,会计确实不赚钱▼你点的每个赞,我都认真…

做网站 做app企业+php网站建设

最近的研究需要做一个软件,从一些方面中学习了下面的。当然,这些都是需求只是初步框架。也创下了基本的设计和开发,只是让软件公司可能对软件整体的了解需求和促进软件有一个粗略的估计。公司 实现的根本目的 现有的软件的情况下(…

深圳租赁住房和建设局网站企业网站建设公司网络服务

2023年8月25日&#xff0c;周五上午 今天上午学习设计模式中的策略模式时&#xff0c;发现这个有点像很多卡通片里面的变身器... #include<iostream>//alien hero是外星英雄的意思 //在《少年骇客》中&#xff0c;主角可以通过变身器变成10种外星英雄 class AlienHero{ …

网站备案需要网站建设完毕不万网域名注册官网的阿里云

Python 程序设计入门&#xff08;009&#xff09;—— 元组的操作 目录 Python 程序设计入门&#xff08;009&#xff09;—— 元组的操作一、元组和列表的区别二、创建元组1、使用赋值语句创建元组2、使用 tuple() 函数创建元组 三、访问元组中的元素1、使用索引访问元组的元素…

企业网站设计公司浅谈中兴电子商务网站建设

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

网站建设管理风险点免域名x网站

1. 普通用户和root用户权限之间的切换2. 权限的三个w2.1. 什么是权限&#xff08;what&#xff09;2.1.1. 用户角色2.1.2. 文件属性 2.2. 怎么操作权限呢&#xff1f;&#xff08;how&#xff09;2.2.1. ugo-rwx方案2.2.2. 八进制方案2.2.3. 文件权限的初始模样2.2.4. 进入一个…

室内设计师联盟app搜索引擎优化免费

select和poll都只提供了一个函数:select或者poll函数。而epoll提供了三个函数&#xff0c;epoll_create,epoll_ctl和epoll_wait&#xff0c;epoll_create是创建一个epoll句柄&#xff1b;epoll_ctl是注册要监听的事件类型&#xff1b;epoll_wait则是等待事件的产生。epoll除了提…

网站建设运营协议书东营市建设信息网站

前端jd要求&#xff1a;了解一门后端开发语言优先 解决方案之Node.js 前言常见的后端开发语言一、什么是 Node.js二、学习 Node.js 的前置知识三、学习 Node.js 的步骤1、Node.js 的安装2、Node.js 的基本语法和 API模块导入和导出文件读写操作HTTP 服务器命令行参数 3、Node.j…

成都市网站备案国内网站开发 框架

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个二叉搜索树的根节点root&#xff0c;和一个整数k&#xff0c;请你设计一个算法查找其中第k个最小元素&#xff08;从1开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#x…

企业网站的高跳出率应该如何解决快速排名seo软件

文章目录 获取源码方法一方法二方法三了解S3C6410内核相关1 设备文件2 mach-文件3 plat-文件配置real6410编译镜像测试问题1获取源码 方法一 进入官网,如下界面,点击http, 再依次

技术支持 东莞网站建设防水工程网站开发申请微信支付

2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status][Discuss]Description 现在我们的手头有N个软件&#xff0c;对于一个软件i&#xff0c;它要占用Wi的磁盘空间&#xff0c;它的价值为Vi。我们希望从中选择一些软件…

行业门户网站营销案例挖矿网站开发

使用ts的最佳境界&#xff1a;化类型于无形 在项目中使用ts可以带来类型智能提示与校验的诸多好处。同时&#xff0c;为了减少类型标注&#xff0c;达到化类型于无形的效果&#xff0c;CabloyJS引入了ioc和依赖查找的机制。在上一篇文章中&#xff0c;我们创建了一个业务模块t…

在线flash相册网站源码做网站的公司利润多少呢

目录 引言 一、生成对抗网络的基本原理 1 初始化生成器和判别器 2 训练判别器 3 训练生成器 4 交替训练 5 评估和调整 二、生成对抗网络的应用领域 1 图像生成与编辑 2 语音合成与音频处理 3 文本生成与对话系统

网站开发详细流程图中国机房建设公司排名

运行Hello World Hello World 工程可以运行在模拟器中&#xff0c;或者运行在真机设备中。本示例先以选择将 Hello World 工程运行在模拟器中进行说明&#xff0c;如果选择运行在真机设备中&#xff0c;需要先对工程进行签名&#xff0c;然后才能运行在真机设备中。 DevEco S…

戴南做网站wordpress 下载统计

前言ANSYS程序中的SHELL181单元是用于复合材料层合板结构分析比较好的单元之一。原文在ANSYS程序的在线帮助中&#xff0c;这篇文章是它的译文&#xff0c;是我们从专业角度对原文的翻译。目的在于帮助那些英语水平不高&#xff0c;而且从事复合材料结构计算分析的技术人员能够…

江苏 网站建设网站分享到朋友圈

需求&#xff1a;文字内容位置保持不变&#xff0c;向下增加&#xff0c;背景框随之同步扩展。 1.UGUI 九宫格 拉伸 对背景框图片资源处理&#xff0c;避免图片拉伸。 (10条消息) unity UGUI 九宫格 拉伸_unity九宫格拉伸_野区捕龙为宠的博客-CSDN博客 2.背景框添加组件 3.…

网站pv uv 多少算好站wordpress版权加密

今天我们要来聊聊一个让人又爱又恨的话题——局部变量与全局变量的八大迷雾。在Python的世界里&#xff0c;变量就像是你的小宠物&#xff0c;有时候它们乖乖听话&#xff0c;但一不小心就给你挖了个大坑&#xff01;别担心&#xff0c;今天我们就一起把这些陷阱挖出来&#xf…

网站简介 title织梦网站必须下载

协同工作和发布 - 协同工作 1. 了解权限管理需求 在中大型的公司里&#xff0c;人员的分工非常仔细&#xff1a;同一个小程序项目&#xff0c;一般会有不同岗位、不同角色的员工同时参与设计与开发。 此时出于管理需要&#xff0c;我们迫切需要对不同岗位、不同角色的员工的…