您的位置:

c语言电压保护,电压保护原理

本文目录一览:

C语言编程‘能检测电路短路现象,怎么编写其程序呢

出现电路短路的时候,电流很大,可以用电流传感器来检测;也可以先将电流转换成电压,再检测电压值来判断是否发生短路。

在程序里设定一个阈值,当检测到的电压值大于该阈值时,延时一下再判断,如果还是大于,就说明有短路,再执行短路保护,没有的话就跳过执行下面的程序。可以用定时检测,也可以用循环检测。

仅是一个思路,希望对你有用,程序还是自己写好,当你在调试中不断的修正错误时就是在进步。

怎样写电站运行情况

首先是检查避雷器,然后设备散热,绝缘,还有注意房子别漏雨(真的发生过) 中国的防护措施没有外国好,辐射危害更大 变电站运行方面的资料要了解 1�系统构成 整个系统由前、后台机两部分组成,各RTU通过插件板与DF—2000主机连接且相互独立。 (1)前置机部分 1)硬软件环境 系统硬件主要由前台主机、网络配件、智能通道控制板和调制解调设备组成。 运行环境为Workgroup3�11、中文之星V2�0,主程序及动态库均用C语言编写。 2)主要监控对象 监控对象是本电站中控室RTU、大坝RTU以及双牌水电站RTU发来的信息。 3)主要功能 实时数据接收、发送、转发和计算,可设计计算周期及遥测、遥信及电度等总加;设置 遥测、遥信、通道、电度以及RTU参数的总加转发和曲线追忆等属性;保存遥测、遥信、电 度、事项和曲线信息;遥测、遥信、电度、事项和通道故障记录并通过网络发布。 (2)后台机部分 1)硬软件环境 系统硬件由后台主机、工作站、网卡、HUB及相关设备组成。 操作系统使用Windows NT4�0(或WIN98),编程环境为VC++、EXCEL5�0、VFP6�0 。 2)组网方式 采用星型连接方式,使用RJ45双绞线通过HUB及HUB级联方式减少故障可能发生点,保证网络 的畅通和实时数据的可用。 3)系统同步 由后台主机向网络对时或通过串口挂接卫星时钟以保证网络同步。 4)系统处理容量 模拟量:10000个;数字量:2000个;脉冲量:2000个; 状态量:20000个;虚拟量:2000个;通道:32路;RTU:32路。 5)主要技术指标 主备机切换10s;画面响应3s;数据刷新3s;事项分辨10ms;开关变位至调屏3s; 历史数据响应2s。 2�系统功能说明 (1)SCADA功能 数据采集功能;RTU数据通讯;接收处理不同格式的遥测量,遥信量,电度量,并处理为系 统要求的统一格式;接收处理RTU记录的SOE事件信息;实现并发送对RTU的遥控、遥调等下 行操作信号;接收同步/异步通道信号;对通讯过程监视诊断,统计通道停运时间;在线关 闭和打开指定通道,动态复位通讯口;GPS时钟接口。 (2)人机交互功能 1) 画面类型 厂站接线图、负荷曲线图、频率曲线图、系统总加图、I、P、Q、V曲线图(历 史/实时)、动态棒图、全网系统图窗、实时/历史数据报表、地理位置图、系统配置图、系 统工况图、通道工况图、实时事项弹出、报表修改、和户自定义各类画面等。 2)显示内容 遥测、遥信(开关、刀闸、保护信号、变压器档位信号等)、电度量、频率、系统实时或置 入的数据和状态和计算处理量(上网功率、电度量总加,负荷计划与实际差值及系统返供电 量)等。 3)操作类型 调图方式有热点、菜单和热键三种;多显示器显示不同画面;报表数据在线修改;实时数据库 和历史数据库在线修改;负荷曲线设置与修改;机上模拟屏不下位进行模拟操作。 (3)数据处理功能 1)遥信 变压器档位遥信信号转变为遥测量上屏, 仪表/数值多种画面显示;对检修线路进行代路操作 ,将旁路有功、无功等代替检修线路的值;开关量人工置数及挂接地线;开关动作次数统计; 根据事故总信号是否动作,对开关作出事故跳闸或人工拉闸的告警。 2)遥测 数字滤波: 用闸门电压将不合格数据滤掉;零漂处理:数据小于规定零值时视为零值;YC在开 关分时归零处理: 线路开关断开时,系统可自动判断线路YC值合理性,将其归零;各类虚拟点 计算/统计/控制;模拟量人工置数;连续模拟量输出记录:遥测类曲线(电压、负荷、频率) 。 3)电量 对RTU发送的实测脉冲接收并计数处理,进行有功、无功积分累计生成电度量值。包括上网 电量、返供电量累计。 4)统计计算 统计全电站有功功率总加、无功功率总加、电度量总统计、RTU月停运时间、停运次数及动 作率以及遥控、遥调次数、动作率,同时根据实测值计算如功率因数、发电出力、用电负荷 、交换功率等以及安全天数自动计数。 (4)事项发生及告警处理 事故时自动调图、打印、报警等;根据RTU发送的事故总信号,继电器动作信号和相应模拟量, 线路有关刀闸状态,区别事故信息与正常变位信息;保存事故信息并随时打印存档;继电器动 作也可作为事项记录信息存档;能实时打印事件顺序记录;当越限告警时, 切换至报警窗口, 并可根据需要打印记录。 (5)事件顺序记录(SOE) 事件顺序记录以ms级时标记录线路开关或继电保护的动作情况,它们由厂站设备形成,传送 至主站,主站将时标事件记录顺序记录,通过浏览工具可用来依时标顺序显示或打印事件记 录,供运行、检修及生产管理人员按照设备动作的顺序分析系统的事故。 (6)事故追忆(PDR) 事故追忆功能在电力系统发生事故后启动,事故追忆信息是运行、检修及生产管理人员分析 事故前后电网状态的有效方法。系统事故状态的存储和记录,主要是采集数据的快照断面、 趋势数据、状态变化的数据,追忆时间为事故前后共12min。追忆按照实际发生的触发条件 记录存储,追忆对象支持整个监控系统实时状态。 (7)其他 历史数据保存,按时标保存模拟量、电度量、历史事项(故)数据的数据(含曲线和整点数 据),按时段(日、月、季、安全周期、年)保存统计数据(最大值、最小值、均值),并以 窗口列表或曲线画面两种方式进行查询。 3�系统通信 本监控系统的通信主要通过主后台机实现彼此之间的互连,程序使用标准的实时数据库访问 接口可获得实时数据和Scada处理描述参数。双牌电站RTU信息用电话线接入,系统与站部MI S系统通信通过网桥实现,与永州地调通信是通过Modem上电力载波进行传输。 4�系统安全 (1)权限表:通过用户名、口令字、操作权及操作范围设置操作员的系统使用权限( 改历史数据、改参数、置YC、置YX、控盘、控RTU、安全级、系统等)和范围,以便登录时 身份和权限认证。 (2)操作记录表:系统对每一个重要操作均可形成操作时标记录,以保证对历史操作过程的 清查。 (3)系统的主操作员操作有:历史数据;挂牌操作;挂接地线;参数修改;遥控操作;人工置数; 人工变位;系统管理;网络设置;数据修补;图元制图;设备参数;修改曲线;发电计划;数据维护 ;电子报表;上参数;显示报表;制表系统;召唤打印;画面打印等。 此外你要知道:“电气值班员”是电气运行与检修专业的一个工种,是面向发电企业的;“变电站值班员”是变电运行与检修专业的一个工种,是面向供电企业的;虽然二者都是值班员,但对象不同,如果你想去发电厂内从事运行工作,就要考“电气值班员”,如果你想在供电企业的变电站内发展,就要考“变电站值班员” 补充回答: 变电站(Substation)是把一些设备组装起来,用以切断或接通、改变或者调整电压,在电力系统中,变电站是输电和配电的集结点,变电站主要分为:升压变电站,主网变电站,二次变电站,配电站。

变电站是电力系统中变换电压、接受和分配电能、控制电力的流向和调整电压的电力设施,它通过其变压器将各级电压的电网联系起来。

变电站起变换电压作用的设备是变压器,除此之外,变电站的设备还有开闭电路的开关设备,汇集电流的母线,计量和控制用互感器、仪表、继电保护装置和防雷保护装置、调度通信装置等,有的变电站还有无功补偿设备。 变电站的主要设备和连接方式,按其功能不同而有差异。

变压器是变电站的主要设备,分为双绕组变压器、三绕组变压器和自祸变压器即高、低压每相共用一个绕组,从高压绕组中间抽出一个头作为低压绕组的出线的变压器。电压高低与绕组匝数成正比电流则与绕组匝数成反比。

变压器按其作用可分为升压变压器和降压变压器前者用于电力系统送端变电站,后者用于受端变电站。变压器的电庄需与电力系统的电压相适应。为了在不同负荷情况下保持合格的电压有时需要切换变压器的分接头。

按分接头切换方式变压器有带负荷有载)调压变压器和无负荷无载)调压变压器。有载调压变压器主要用于受端变电站。

电压互感器和电流互感器。它们的工作原理和变压器相似它们把高电压设备和母线的运行电压、大电流即设备和母线的负荷或短路电流)按规定比例变成测量仪表、继电保护及控制设备的低电压和小电流。在额定运行情况下电压互感器二次电压为l00V/,电流互感器二次电流为5A或1A。电流互感器的二次绕组经常与负荷相连近于短路,请注意:绝不能让其开路,否则将因高电压而危及设备和人身安全或使电流互感器烧毁。

开关设备。它包括断路器、隔离开关、负荷开关、高压熔断器等都是断开和合上电路的设备。断路器在电力系统正常运行情况下用来合上和断开电路故障时在继电保护装置控制下自动把故障设备和线路断开,还可以有自动重合闸功能。在我国,220kV以上变电站使用较多的是空气断路器和六氟化硫断路器。

隔离开关(刀闸)的主要作用是在设备或线路检修时隔离电压,以保证安全。它不能断开负荷电流和短路电流,应与断路器配合使用。在停电时应先拉断路器后拉隔离开关送电时应先合隔离开关后合断路器。如果误操作将引起设备损坏和人身伤亡。

负荷开关能在正常运行时断开负荷电流没有断开故障电流的能力,一般与高压熔断丝配合用于10kV及以上电压且不经常操作的变压器或出线上。

为了减少变电站的占地面积近年来积极发展六氟化硫全封闭组合电器(GIS)。它把断路器、隔离开关、母线、接地开关、互感器、出线套管或电缆终端头等分别装在各自密封间中集中组成一个整体外壳充以六氟化硫气体作为绝缘介质。这种组合电器具有结构紧凑体积小重量轻不受大气条件影响,检修间隔长,无触电事故和电噪声干扰等优点,具有发展前765kV已在变电站投人运行。目前,它的缺点是价格贵,制造和检修工艺要求高。

变电站还装有防雷设备,主要有避雷针和避雷器避雷针是为了防止变电站遭受直接雷击将雷电对其自身放电把雷电流引入大地。在变电站附近的线路上落雷时雷电波会沿导线进入变电站,产生过电压。另外,断路器操作等也会引起过电压。避雷器的作用是当过电压超过一定限值时,自动对地放电降低电压保护设备放电后又迅速自动灭弧,保证系统正常运行。目前,使用最多的是氧化锌避雷器。

求助:单片机C语言程序问题

8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个串口输入/输出中断),两级中断优先级;128 字节内置RAM;独立的 64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最低地址处,注意这里的串口输入/输出中断共用一个中断向量。8051的中断向量表如下:

中断源 中断向量

---------------------------

上电复位 0000H

外部中断0 0003H

定时器0 溢出 000BH

外部中断1 0013H

定时器1 溢出 001BH

串行口中断 0023H

定时器2 溢出 002BH

interrupt 和 using 都是 C51 的关键字。C51 中断过程通过使用 interrupt 关键字和中断号(0 到 31)来实现。中断号指明编译器中断程序的入口地址中断序号对应着 8051中断使能寄存器IE 中的使能位,对应关系如下:

IE寄存器 C51中的 8051的

的使能位 中断号 中断源

--------------------------------

IE.0 0 外部中断0

IE.1 1 定时器0 溢出

IE.2 2 外部中断1

IE.3 3 定时器1 溢出

IE.4 4 串口中断

IE.5 5 定时器2 溢出

有 了这一声明,编译器不需理会寄存器组参数的使用和对累加器A、状态寄存器、寄存器B、数据指针和默认的寄存器的保护。只要在中断程序中用到,编译器会把它 们压栈,在中断程序结束时将他们出栈。C51 支持所有 5 个 8051 标准中断从 0 到 4 和在 8051 系列(增强型)中多达 27 个中断源。

using 关键字用来指定中断服务程序使用的寄存器组。用法是:using 后跟一个0 到3 的数,对应着 4 组工作寄存器。一旦指定工作寄存器组,默认的工作寄存器组就不会被压栈,这将节省 32 个处理周期,因为入栈和出栈都需要 2 个处理周期。这一做法的缺点是所有调用中断的过程都必须使用指定的同一个寄存器组,否则参数传递会发生错误。因此对于using,在使用中需灵活取舍。

关于using:

您在文中说明“这一做法的缺点是所有调用中断的过程都必须使用指定的同一个寄存器组”是不是这个意思?

举个例子来说:

定义一个函数

void func(unsigned char i) {

...

if(++i==0x12) {

...

}

...

}

有如下一个中断函数

void int_0(void) interrupt 0 using 1 {

....

}

在默认状态下,func使用寄存器组0(BANK0),那么当int_0调用func时是否存在当传递参数时会造成参数传递错误?

谢谢!

如果在中断服务函数 ISR 中使用寄存器,那么必须处理好 using 的使用问题:

1、中断服务函数使用 using 指定与主函数不同的寄存器组(主函数一般使用 Register bank 0)。

2、中断优先级相同的ISR 可用 using 指定相同的寄存器组,但优先级不同的 ISR 必须使用不同的寄存器组,在 ISR 中被调用的函数也要使用 using 指定与中断函数相同的寄存器组。

3、如果不用 using 指定,在 ISR 的入口,C51 默认选择寄存器组0,这相当于中断服务程序的入口首先执行指令:

MOV PSW #0

这点保证了,没使用 using 指定的高优先级中断。可以中断使用不同的寄存器组的低优先级中断。

4、 使用 using 关键字给中断指定寄存器组,这样直接切换寄存器组而不必进行大量的 PUSH 和 POP 操作,可以节省RAM空间,加速 MCU 执行时间。寄存器组的切换,总的来说比较容易出错,要对内存的使用情况有比较清晰的认识,其正确性要由你自己来保证。特别在程序中有直接地址访问的时候, 一定要小心谨慎!至于“什么时候要用到寄存器组切换”,一种情况是:当你试图让两个(或以上)作业同时运行,而且它们的现场需要一些隔离的时候,就会用上 了。在 ISR 或使用实时操作系统RTOS 中,寄存器非常有用。

寄存器组使用的原则:

1、8051 的最低32 个字节分成 4 组 8 寄存器。分别为寄存器R0 到R7。寄存器组由PSW 的低两位选择。在 ISR 中,MCU 可以切换到一个不同的寄存器组。对寄存器组的访问不可位寻址,C51 编译器规定使用 using 或 禁止中断的函数(#pragma disable)均不能返回 bit 类型的值。

2、主程序(main函数)使用一组,如 bank 0;低中断优先级的所有中断均使用第二组,如 bank 1;高中断优先级的所有中断均使用再另外一组,如 bank 2。显然,同级别的中断使用同一组寄存器不会有问题,因为不会发生中断嵌套;而高优先级的中断则要使用与低优先级中断不同的一组,因为有可能出现在低优先 级中断中发生高优先级中断的情况。编译器会自动判断何时可使用绝对寄存器存取。

3、在 ISR 中调用其它函数,必须和中断使用相同的寄存器组。当没用 NOAREGS 命令做明确的声明,编译器将使用绝对寄存器寻址方式访问函数选定(即用 using 或 REGISTERBANK 指定)的寄存器组,当函数假定的和实际所选的寄存器组不同时,将产生不可预知的结果,从而可能出现参数传递错误,返回值可能会在错误的寄存器组中。

举一例子:当需要在中断内和中断外调用同一个函数,假定按照程序的流程控制,不会出现函数的递归调用现象,这样的调用会不会出现问题?若确定不会发生重入情况,则有以下两种情况:

1、如果 ISR 和主程序使用同一寄存器组(主程序缺省使用BANK 0,若 ISR 没有使用 using 为其指定寄存器区,则缺省也使用 BANK 0),则不需其他设置。

2、如果 ISR 和主程序使用不同的寄存器组(主程序缺省使用BANK 0,ISR 使用 using 指定了其他 BANK),则被调用函数必须放在:

#pragma NOAREGS

#pragma AREGS

控 制参数对中,指定编译器不要对该函数使用绝对寄存器寻址方式;或者也可在 Options-C51,选中“Don't use absolute register accesses”,使所有代码均不使用绝对寄存器寻址方式(这样,执行效率将稍有降低)。不论以上的哪一种情况,编译器均会给出重入警告,需手工更改 OVERLAY 参数,做重入说明。

3、还有一种办法:如果被调用函数的代码不是很长,还是将该函数复制一份,用不同的函数名代替,这种情况适合ROM有足够多余的空间。

因此,对using关键字的使用,如果没把握,宁可不用,交给编译系统自己去处理好了。

interrupt xx using y

跟在interrupt 后面的xx 值得是中断号,就是说这个函数对应第几个中断端口,一般在51中

0 外部中断0

1 定时器0

2 外部中断1

3 定时器1

4 串行中断

其它的根举相应得单片机有自己的含义,实际上c载编译的时候就是把你这个函数的入口地址方到这个对应中断的跳转地址

using y 这个y是说这个中断函数使用的那个寄存器组就是51里面一般有4个 r0 -- r7寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄存器组压入堆栈返回时也不会弹出来节省代码和时间

一般只有using 0,1,2,3

球一份关于单片机或c语言的论文!2000字左右的?

一·基于MSP430 单片机的电源监控管理系统(单片机论文)

引言

大功率直流开关电源由PFC 和DC-DC 变换器组成,为了提高可靠性,并能够对其进行脱机或远程监控管理,在开关电源模块内设置监控管理系统。该系统对电源故障类进行监控,对电源输出的电压电流进行自动设定和调节,通过串行通信接口,与远程中心监控站进行远程监控和管理,这一功能在通信系统基站供电系统中尤为重要。本文提出了一种基于MSP430单片机的电源监控管理系统的设计和实现。

1 系统结构和硬件电路设计

系统的整体设计结构如图1所示。本系统采用的核心芯片为TI公司推出16位系列单片机MSP430。MSP430具有集成度高,外围设备丰富,超低功耗等优点。单片集成了多通道12bit的A/D转换、片内精密比较器、多个具有PWM功能的定时器、片内USART、看门狗定时器、片内数控振荡器(DCO)、大量的I/O端口以及大容量的片内存储器,采用串行在线编程方法,单片可以满足绝大多数的应用需要。 MSP430的这种高集成度使应用人员不必在接口、外接I/O及存储器上花太多的精力,而可以方便的设计真正意义上的单片系统,在许多领域得到了广泛的应用。下面介绍该系统可以实现的功能和基于MSP430F149的电控系统的设计。

1.1 系统功能:

a.开机控制。上电后,单片机开始工作,按下电源键,点亮指示灯后,将电网220V接入PFC,开关电源启动工作,然后接于负载。

b.电压设定和调节。用单片机A/D口采集开关电源的输出电压值,并显示于液晶屏上,通过单片机控制数字电位计调节输出电压值,实现自动调节;或者通过键盘的左右键选出电压调节页面,用上下键进行手动调节;也可以通过通信接口实现远程调节。

c.电流调节。多台开关电源并联使用时,要求各台电源的负载电压相等。单片机A/D口采集转换成电压值的负载电流值,通过通信口得到各台电流值,取电流平均值,控制数字电位计调节输出电压,使输出负载电流达到平均值;或者通过键盘的左右键选出电流调节页面,用上下键进行手动调节。

d.故障报警。单片机通过光电耦合器检测到各项输入输出故障时,扬声器产生蜂鸣,相应的报警灯闪烁,并在液晶屏上显示故障类型及处理方法。

e.监测。单片机A/D口对电网电压,输出电压,输出电流进行采集测量,当出现超限时进行报警。

f.通信。包括单片机与各台开关电源间的通信和单片机与中心监控站的通信。

1.2 电压调节电路

电压调节电路由单片机、数字电位计X9313和可调分流基准芯片TL431组成,其电路原理图如图2所示。Xicor9313是固态非易失性电位器,可用作数字控制的微调电位器。TL431是TI生产的一个有良好的热稳定性能的三端可调分流基准源,它的输出电压用两个电阻就可以任意地设置到从VREF(2.5V)到36V范围内的任何值。工作时,单片机的一个IO控制INC计数输入脚,为其提供计数脉冲,此输入端为下降沿触发。另一个IO控制U/D升降输入端,当U/D为高电平时,X9313内部计数器进行加法计数,VW端的输出电压上升,由于VW接地,使VH端电压降低,而TL431的REF输出端电压为恒定的2.5V,从而使Vcc处输出电压升高;同理当U/D为低电平时,Vcc处输出电压降低,这样就实现了电压输出调节。

1.3 模拟数据采集

MSP430F149内嵌入一个高精度的,具有采样与保持功能的12位ADC转换模块,内部提供各种采样与保持时钟源。MSP430有8个外部输入通道可选, 最高采样速度可达200KHZ,并且还内置温度传感器,可以测量芯片内的温度,如果测量温度高于或低于预设的温度是,可以通过外接部件显示告警信息,同时具有6种可编程选择的内部参考电压。该转换模块为一些需要模拟量采集的场合提供了便利。我们选择的参考电压是0~2.5V,这样MSP430F149的AD分辨率就是2.5/4096 = 0.61V左右。由于输入的模拟电压量较高,不能直接与单片机的ADC采样端口相连,因此用串联一个滑动变阻器的方法进行了降压处理,成功解决了上述问题。

1.4 人机对话设计

系统的人机操作界面由液晶显示屏、指示灯和键盘组成。液晶选用的是基于T6963C 的液晶模块YM12864。键盘采用的是3×3 的阵列接法,系统采用了图形用户界面,操作简单易行,显示实用美观。工作时,液晶屏可以实时显示采集到的电网电压、输出电压、输出电流及各种报警信息,操作相应键盘可以进行显示页面的切换,对输出电压,输出电流进行自动、手动及远程控制调节。当有报警信息产生时,相应得指示灯会闪烁警示,同时与单片机连接的扬声器会产生报警蜂鸣声,以提醒操作人员做出相应的处理。

2 系统软件设计

430 支持汇编语言和C 语言两种语言编程,因此可以在一个工程文件中同时用两种语言,使用汇编语言,便于在调试时寻找逻辑和指令的联系及地址的定位正确与否。使用C 语言进行编程大大减少了工作量,编好后的程序可读性好,易于修改和维护。开发工具使用IARSystems 公司的IAR Embedded Workbench,它集成了编辑、编译、链接、下载与在线调试(Debug)等多种功能,使用方便,并具备高效的C 语言编译能力。

考虑到软件开发效率及可维护性,系统软件设计遵循模块化的编程思想,将系统功能划分为几个相对独立的功能模块。它们包括:液晶显示模块、AD 转换模块、按键监测响应模块、报警监测响应模块、电压电流调节模块、数据处理模块、通信模块。每个模块都要进行独立的测试,最后结合到一起。整个系统的软件流程图如图3 所示。

按键监测模块是其中的重要组成部分,它控制着AD转换的启动,显示页面的切换,及电压电流的自动调节,手动调节,远程调节的启动和切换。报警监测模块对开关电源的保护起着至关重要的作用,它实时的监测着开关电源是否出现故障,当发生输入电压过压,输入电压欠压,PFC故障时应切断总电源,当发生输出电压过压,输出电压欠压,模块过热,及IPM保护故障时应关断DC-DC变换器。

在对各模块进行整合时,要注意各中断之间的冲突。由于在MSP430 的中断优先级中,ADC12 采样转换中断优先级高于TIMERA 中断,因此当在响应TIMERA 中断的过程中会执行ADC12 采样转换中断,或者TIMERA 的中断响应被迫延迟,这样就会影响在TIMERA中断中执行的报警监测响应程序,不能达到对开关电源故障类的实时检测。在本系统中,利用按键控制ADC12 采样转换中断的启动和关闭,从而解决中断冲突。

3 结论

本文在基于MSP430F149电源监控管理系统的设计和实现的基础上对MSP430的系统设计做了讨论,提出并解决了在设计中出现的问题。本文作者的创新点:利用MSP430的系统结构简单,外围电路少,效率高的特点,设计实现了简洁直观、使用方便、操作全程汉字提示、监控能力强、运行稳定、安全可靠的电源监控管理系统,大大降低了成本,取得了相当可观的经济效益,满足实际需求。

二·C语言论文:

嵌入式以门槛高,入门难的方式拦截了无数的学者。然而单片机作为嵌入式的入门课,如何以一种正确的方法学习单片机将关系到是否能学习好嵌入式。

纵所周知,学习嵌入式先玩ptotel,再做单片机。Protel简单的来说就是一个做PCB板的纯英文的软件。学习ptotel前必需具备一定的电路基础和英语能力,电路基础我想大部分同学都是有的,而英语这一块却是许多人所头疼的。这对英语基础差的同学是一种打击,再者如果毅力不强,我想你是自学不下去的。毅力是学任何东西所必需的一种能力、素质,是一种遇挫折而不言败的决心。

不管学的是protel还是单片机,首先要找一个能够指导你的人。何谓指导,指导并不是说他要一步一步地教你去做,而是一个在关键时刻能够为你指出一条道路的人。

我认为学习嵌入式方法最重要,在学protel和单片机之前应该想办法了解关于学习它们的方法。比如说protel吧,许多人理科的学生都是以一种纯理解的角度去学的,画一个导线、元件问一下为什么要这样画,生成网络表也追根溯源地问个网络表的由来。其实许多东西只是懂用就行,理论的东西懂得再多不懂用也是枉然的。

所以学习protel有地方不懂你就问你的指导员,有许多的东西是规定死了的,不是你想半天一夜就可以为你而改变的。这不同于软件设计,软件设计在你的苦思之下也许可以找到另一种更好的方法。

单片机嘛,不得不承认中国没一本单片机好书。我学习单片机的时候看过的单片机书有七本,大多数都是不尽人意的。在这里我冒昧地说:中国人写书确实缺乏一点“读者至上”的原则。我所看过的单片机书我想有很多都是以他的角度去写的,没有几个人是站稳在读者的角度上写的。书上的章节注释极不清楚,许多重要的地方都是没有说明的,说句不好听的话,作者似乎以为读者的水平也像他一样高。而外国人的书呢,同样的书,同样的知识点,有同样的中国人的书的两三倍那么厚,这是为什么。这是因为外国人的书点点滴滴都是面向着读者的。注释、说明、总结应有尽有。所以,我在这里发表一个也许同胞会扔鸡蛋到我身上的观点,那就是:不管学什么,优先选择外文翻译书,或是纯英文书。得到一本好书对我们的影响极为巨大。这一部分我用一句话来总结就是:中国人的书适合教学,而外国人的书不仅适合教学还适合自学。

中国人的单片机书往往都是先介绍单片机的内部结构、中断,定时器,然后再到I/O口。一开始就让我们学习单片机内部结构,中断、定时器的内部结构和原理,把我们弄得一塌糊涂的时候再和我们讲例子,怎样去操作实验板。如果自学的话我想许多同学是学不下去的,干嘛要把非得把单片机的内部结构像解剖学一样弄个彻底才实践去应用它呢?即使你把单片机全解剖清楚了还是不会用你手中的这块实验板的。我觉得如果在学单片机之前没有学过汇编语言就直接用C语言学的话,即使学完了单片机,对单片机的内部结构和单片机的工作原理也是不清楚的。学了汇编之后再学单片机的话效果将会好得多,所以不要心急,有些东西是急不来的。

所以我认为学习单片机要在实践中学习,先实践再去了解它的结构和原理,如果你实在不能了解它的结构和原理那也无所谓的,只要你懂得用就可以了!(没学过汇编的只能这么说了)

我们可以先从 I/O口学习,看一些例子烧录些程序,再看一下现象,之后再尝试了解一下所要用到的单片机的内部结构,最后在这个现象的知识基础上,编一个自己想要的程序、现象出来。这样学习的话既不无聊,成就感也有了。为什么有些人可以把学习当一种快乐,而许多人在唉声叹气,我想有一部分是出自这个原因。

不同的实验板有不同的PCB图,所以I/O的操作也是有所不同的。不过操作的原理都是一样的,有些同学可能会抱怨教程里的实验板和自己手中的实验板不同,这是大可不必多虑的。I/O这一步在调试中看现象的理念很重要,比如改变一个语句会产生何种现象,为什么会产生,这些都是要在调试中掌握的。

中断的学习方法也是类似的,先实践发现有陌生的地方就去查看相应的寄存器,等实现了自己想要的现实再慢慢地解剖一下单片机的寄存器,这样学起来会更有意义,记得更牢。中断也没复杂的东西的,只不过学几个中断函数,优先级之类的。有一定C语言基础的同学在优先级这一块可以联系C语言中运算符的优先级,我相信有了C语言基础定义一两个中断函数也不是什么问题了的。

我学过的单片机的内容在我文档的实例之中,实例的数量不多,但这些都是直接点击单片机知识点的。随着我的学习渐渐地深入后我再把我实现过的东西写入实例之中吧。

希望对你有所帮助,祝成功!

电气工程及其自动化专业要不要学C语言

电气工程及其自动化专业要学C语言。

1、专业学位课程:

高等数学、电路原理、电子技术基础、微型计算机技术、计算机网络 、电机学、自动控制理论、电力系统分析、电力系统继电保护、C语言、C++。

2、专业主干学科:

电气工程、控制科学与工程、计算机科学与技术

3、专业主要课程:

电路原理、电子技术基础、工程电磁场、软件技术基础、微型计算机技术、计算机网络 、电机学、自动控制理论、信号分析与处理、管理学、工程经济学、电力系统(暂态、稳态)分析、电力系统继电保护、发电厂电气主系统、高电压技术等。各年级可根据社会需要设置柔性的专业方向模块课及选修课。

扩展资料

电气工程及其自动化专业是电气信息领域的一门新兴学科,触角伸向各行各业,小到一个开关的设计,大到宇航飞机的研究,都有它的身影。由于和人们的日常生活以及工业生产密切相关,发展非常迅速,现在也相对比较成熟。

“自动化”一是属于信息产业。信息产业被人们誉为“朝阳产业”,发展快、需要人才多、待遇高,是当今科技发展的趋势所在。因此,作为信息产业中的重要一员,自动化专业同样有着光辉的前途。二是自动化应用范围广。

随着我国经济的不断发展,现代化工业的不断发展使电气自动化技术方面的人才市场有着相当大的潜力。尤其是广东地区,自动化生产技术不断提高,自动化产品不断普及,智能楼宇和智能家居的应用,智能交通的不断发展,为电气自动化技术专业提供了广阔的发展前景。

参考资料:百度百科-电气工程及其自动化

C语言竟是如何调用硬件

大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?以下仅供参考!

c语言在实际运行中,都是以汇编指令的方式运行的,由编译器把C语言编译成汇编指令,CPU直接执行汇编指令。

所以这个问题就变成,汇编指令是如何操作硬件的?

如果把硬件平台限制在x86环境下,那么汇编指令操作硬件基本上只有两种方式:

方式一:

通过向内存空间写数据。硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的接口或者操作硬件的工具)映射到某一块内存地址空间上,之后只要用汇编指令,甚至C语言去读写这一段内存地址空间(并非真正操作物理内存),就可以达到操作硬件的目的了。

如果题主还有WindowsXP环境(虚拟机也可以),就可以用汇编指令直接操作显存:

MOV AX,B800

MOV ES,AX

XOR DI,DI

MOV CX,0800

MOV AX,5555

REPZ STOSB

硬件的各种寄存器会被映射到某一块物理内存中,这种方式称为MMIO,在Windows的设备管理器里,右键点设备,看属性-》资源里,不少硬件设备都有“内存范围”的参数,这里的内存范围就表示这个硬件的资源可以通过访问这一段内存来控制它。

方式二:

x86汇编中,还有两个特殊的指令是IN和OUT,这是x86平台上独有的,上面图里的I/O范围,就是用IN/OUT这两个指令来访问和控制的。

以上两种访问硬件的方式,第一种是可以用C语言实现的,上面一段汇编,本质上类似于C语言代码:

char ptr = 0xB8000;

int i;

for (i = 0; i 《0x800; i++)

{ptr + i = 0x55;

}

第二种IN/OUT方式没有直接的C语言语法对应,需要自己封装汇编。

那么为什么平时很难用C语言操作硬件呢?这是因为平时写的代码大多数都在保护模式下,保护模式下,直接访问物理地址会受到限制,C语言操作的地址都是虚地址。

对于Windows来说,要访问物理地址,需要工作在内核模式,也就是的写驱动才行。

而在显存方面,首先,题主要先明白物理地址和虚拟地址的概念。

原来的8086cpu设计的时候,地址空间有一块区域(640K-1M)之间,有一块作为显存使用

这里你说的预留的地址,是指物理地址,这一段地址的准确范围是000A0000-000BFFFF,不管是32位还是64位CPU,这一段物理内存地址一直都保留给显存使用,不区分32位还是64位,也不区分保护模式还是实模式。

可见这一段内存至今仍然是留给显卡使用的。

那么现在为什么不能直接用这段内存了?

因为现在的软件都运行在保护模式下,访问的地址都是虚拟地址,而并非物理地址,包括你使用cmd命令打开的环境,都是虚拟地址,虽然32位XP里能用debug命令向000B8000上写数据并能显示在cmd的界面里,但本质上,这都是虚拟出来的。

如果要想用这段显存怎么办?

自己写一个简易的操作系统,不启动显卡的各种图形加速功能,CPU进入保护模式后在GDT里映射一个4G的数据段,与物理地址一致,那么向000B8000上写数据,就会像过去DOS一样显示在屏幕上,所以保护模式下也可以访问这一段内存。所以,保护模式下,也可以用它。

显卡那么多显存是怎么映射的?

有很多内存地址被映射给显存了,就是通过这种映射关系,把一些物理地址留给显存,使得CPU能像访问内存一样访问显存资源。

当然,实际情况是,2G显存未必完全映射,而是只映射一部分地址,显卡有一些开放的寄存器能够控制哪部分显存映射过来,这样就能使得CPU在使用比较少的物理地址范围的情况下,访问全部的显存。

还有一个很有意思的事情:在虚拟机里,找到映射的高地址部分的第一块内存区域,写一个能直接访问物理地址的程序(比如一个驱动),去读这一块内存,然后写到文件里,再用屏幕截图,也写到文件里,会发现截图的内容和显存里读出来的内容基本上是一样的。

网友awayisblue

要回答你的问题,我们需要要知道:

硬件是一种什么样的存在

什么是驱动。

C语言怎么操作硬件

我就不严格去定义这些概念了,我就以一个例子来通俗地讲解一下吧。

首先讲硬件:

先介绍一款单片机芯片STM8。

这款芯片里面有cpu, 内存,寄存器(先不要觉得看到新名词压力大,继续往下看)等等,相当于我们的电脑了,但还要外接其它硬件。

这里你需要知道的概念是:

芯片的引脚跟寄存器是相对应的,寄存器是8位的内存单元(对,存在于内存上面),当你往这个内存单元里面写入数据时,芯片的引脚的电压会发生变化,比如说我写入的是01100001,则芯片上与之对应的8个引脚的电压状态(分为高电平与低电平两种)会输出:低高高低低低低高。

cpu可以执行代码指令,指令可以操作内存。

结论:所以从上面两点可以我们可以知道,cpu可以执行指令,使芯片的引脚电平(电压)发生变化。

关于这款显示器,我们需要知道的是:

它是有引脚的,这些引脚可以跟到前面介绍的那款单片机芯片的引脚相连。

该显示器有自带的内存,用于存储要显示的字符,显示器从该内存里面读取字符来来显示。

单片机芯片与该显示器相连后,可以通过引脚往该显示器的内存里写数据(通过多个引脚电平的高低不同来代表不同的数据,比如说:低高高低低低低高 代表01100001,这个数据写在显示器的.内存里面,被显示器所显示,当然,会根据ASCII来显示数字对应的字符,01100001对应的字符是‘a’),除了接收数据的引脚外,还有控制显示器的引脚(这个我们会在驱动那里介绍,继续往下看)。

结论:单片机芯片与显示器相连,可以通过引脚输出的电平来控制显示器的字符显示。

那么,综合上面,也就是说,单片机芯片cpu可以通过执行指令来控制显示器的字符显示。

而这里,题主所说的硬件,指的就是这个显示器了。

接下来讲驱动:

那么,什么是驱动呢?驱动无非就是硬件跟软件的中间层,但我们不纠结这种关系,直接来看一下,对于我们这个例子,驱动指的是什么。首先我们要知道:

显示器支持很多种操作,比如说清除显示,光标移动,读取数据,写数据等等。

这些操作数据引脚和控制引脚来实现。

引脚可以通过单片机芯片来控制。

结论:我们可以通过在单片机芯片里面写显示器的“驱动”程序来屏蔽掉硬件(显示器硬件)层。

于是这里驱动程序,指的是显示器所支持操作的程序表示。比如说清除显示,我们可以编写一个clear()函数,光标移动,我们编写一个move_cursor()函数,读取数据和写数据分别为read()和write(),然后分别实现就可以了(通过向寄存器里写数据的形式,进而控制引脚的电平变化,再而控制显示器,这个过程前面已有介绍)。这些函数就是驱动程序了。为什么上面说驱动程序可以屏蔽掉硬件呢?因为程序员可以使用前面的驱动程序来直接操作显示器(硬件),而不用知道太多关于硬件的事情,而一般的驱动程序也可以由厂家来提供。

再说明一点:一般这些驱动程序可以用汇编写(出于运行效率的考虑),也可以用C语言来编写的,比如说我上面的例子,就可以直接用C语言来编写。当然C语言内联汇编的形式也可以。

最后讲C语言怎么操作硬件:

相信到这里,C语言是怎么操作硬件的已经比较明白了。

这里总结一下:

C语言由CPU运行(实际上是先编译成机器码存在芯片里面然后执行),可以去操作内存。

内存里有一段是跟寄存器相对应的,而寄存器是跟芯片的引脚相对应的,于是操作该段内存就能控制芯片引脚的电压变化。

硬件(比如说显示器)有引脚(或者说排线,这些也是一样的东西),这些引脚跟芯片的引脚相连可以接受芯片的控制。

可以把对某个硬件的操作做成一系列操作函数,这些操作函数就是驱动程序了。

于是我们的C语言只要去调用这个驱动程序就可以直接操作硬件了。(当然驱动程序也可以由C语言来编写,所以C语言操作硬件并不一定要经过驱动程序)。

c语言电压保护,电压保护原理

2023-01-04
c语言电压表,电压ce

2022-12-02
做c语言的电脑,电脑做c语言在哪里

2023-01-07
c语言电气图纸,电气图中C

2022-11-26
c语言课堂论文,C语言论文

2022-11-25
c语言电气工程,电气工程学c语言

本文目录一览: 1、我是电气工程及其自动化专业的!我想知道C语言对我们很重要吗?我需要把它学的很好吗? 2、电气工程及其自动化专业要不要学C语言? 3、c 语言 对电气工程及其自动化的 作用 4、电气

2023-12-08
c语言用途论文,c语言用途和特点的论文

2022-11-23
电信招聘c语言,c语言老师招聘

2023-01-08
电气自动c语言,电气工程及其自动化c语言

2023-01-06
电压会对电脑产生影响吗?

1、一般来说,在电脑的电源管理中,有一个负载控制(TDP)设定。这个电压通常是指工作时产生的电压。当电压过低或过高,则可能导致其他部件停止运作而使计算机出现异常状况。2、电压对于电脑的使用寿命是很大的

2023-12-08
电压会对电脑产生影响吗?

1、一般来说,在电脑的电源管理中,有一个负载控制(TDP)设定。这个电压通常是指工作时产生的电压。当电压过低或过高,则可能导致其他部件停止运作而使计算机出现异常状况。2、电压对于电脑的使用寿命是很大的

2023-12-08
c语言英文论文,C语言英文

2022-11-26
电气工程考研要学好c语言么,电气工程考研学什么

2023-01-08
c语言内存保护,内存释放 c语言

2022-12-02
c语言温度保护,温度报警器c语言程序

2022-11-23
c语言cpu内存,能用c语言设计cpu吗

2022-11-30
c语言电阻器分类,电阻分几种类型

2022-11-29
电话面试c语言,c++电话面试

2022-11-26
java桌面下雪屏保(电脑下雪屏保)

2022-11-12
c语言电脑官网,c语言软件电脑版

2022-11-29