毕业设计(论文)-智能开关电源设计.docx_第1页
毕业设计(论文)-智能开关电源设计.docx_第2页
毕业设计(论文)-智能开关电源设计.docx_第3页
毕业设计(论文)-智能开关电源设计.docx_第4页
毕业设计(论文)-智能开关电源设计.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩等级本科毕业设计题 目 智能开关电源设计 学 院 工学院 专 业 自动化 班 级 自动化统本1101班 学 号 学生姓名 指导教师 完成日期 西安思源学院教务处制二一年五月中文摘要本毕业设计是由STC公司生产的一款低功耗、高性能的8位微控制器STC89C52单片机作为控制部分,采用 Buck串联降压电路, 运用PFM脉冲频率信号控制2SA1085三极管开关,ADC0804 A/D芯片,12864 LCD显示器和键盘输入,设计制作的一个输出电压为5V-24V可调的开关电源系统。单片机输出的方波控制Buck电路,通过电压回路的反馈控制,将输出电压稳压到所需要的电压值。STC89C52单片机通过ADC0804芯片对输出电压进行采样,与设定值进行比较,将处理的信号传输给电源模块,改变电源模块的内部输出电压值,从而实现本设计输出稳定可调的电压。关键词: STC89C52单片机 ADC0804 PFM脉冲频率信号 Buck电路AbstractThe design microcontroller system by STC89C52, adopts the Buck series Buck circuit, A PFM pulse frequency signal is used to control two sa1085 triode switch, A/D chip ADC0804, 12864 LCD display and keyboard input, design and production of an output voltage of 5 v - 24 v adjustable switching power supply system. Microcontroller output of square wave to control the Buck circuit, through the voltage feedback control loop, the output voltage regulated to the required voltage value. STC89C52 single-chip microcomputer by ADC0804 chip output voltage sampling, compared with the set value, will deal with the signal transmission to the power supply module, change the internal output voltage value of power supply module, so as to realize the design of adjustable output stable voltage.Keywords:STC89C52CM ADC0804 PFM signal Buck circuit目录1、绪论11.1引言11.2开关电源简介12、开关电源DC/DC电路设计思路32.1工作原理32.1.1脉冲频率调制优点32.2 开关电源常见的拓扑结构简介32.2.1降压斩波电路(Buck Chopper)32.2.2升压斩波电路( Boost Chopper)42.2.3升降压斩波电路(Boost-Buck Chopper)42.3 开关电源DC/DC设计思路42.3.1 DC/DC基本设计方案42.4 DC/DC电路实现52.5 系统供电部分设计62.5.1 整流滤波电路设计72.5.2 浪涌电流电压抑制电路设计73、控制系统的设计思路93.1 控制系统的基本设计方案93.2 单片机模块的设计103.2.1 STC89C52性能简介103.2.2 最小系统设计103.2.3时钟电路设计113.3 A/D模块设计113.3.1芯片介绍113.3.2芯片参数123.3.3各个引脚名称及作用123.3.4 转换原理133.4 接口电路的设计143.4.1按键接口电路设计143.4.2 显示接口电路设计144、程序设计164.1 主程序流程图的设计164.2 键盘扫描程序设计174.3 A/D程序设计185、仿真结果及分析195.1 Proteus仿真软件195.2 设计仿真195.2.1 仿真实验一195.2.2 仿真实验二205.3仿真分析21参考文献22致 谢23附 录23附录一:系统整体原理图24附录二:系统仿真图26附录三:程序代码27主程序:27键盘扫描子程序34LCD12864驱动程序35西安思源学院本科毕业论文(设计)智能开关电源设计1、绪论1.1引言随着电子技术迅速的发展,数字电路应用领域逐步拓展,如今人们使用产品的数字化、智能化已成为人们追求的一种趋势,设备的价格、性能、稳定性等备受人们的关注,尤其是对电子设备的在使用过程中的稳定度和精密度最为关心。想要得到性能良好的电子设备,肯定离不开稳定且可靠的电源,想要得到寿命更长设备,就需要开关电源的稳定性提高。基于此,高稳定性、高精度的开关电源需求也越来越迫切。 众所周知,生活中离不开电源,并且在实际应用中对电压高低、通电时间、电流大小等有着不同的要求,如今大家生活中所使用的直流电源输出的精度和稳定性都不是很高;在输出电压的改变上,传统的开关电源大多数都是采用指针式或者是数码管来显示电压和电流,使用滑动电阻改变电阻值进而调整出所需要的电压值及电流值。因滑动电阻的阻值特性为非线性,如想要得到理想的输出值,在调节时需要花费一些时间,因此使用起来非常的不方便。所以,开关电源不只是需要具备较好的输出质量,而且还需要具有一定的智能化和多功能,给生活带来不同程度的便捷与高效。1.2开关电源简介开关电源是运用电力电子技术,通过控制三极管的打开和关闭的时间比,达到稳定输出电压的一种电源,本毕业设计的开关电源是运用脉冲频率调制PFM (Pulse frequency modulation)控制三极管的打开和关闭的构成,就开关电源与线性电源相比而言,两者的成本虽然都随着输出功率的逐步增加而增长,但是两者成本的增长速率各不相同。线性电源成本在某输出功率点上,反而高于开关电源,这点称为成本反转点,随着电力电子技术的发展和创新,使得开关电源技术也在不断地创新,这成本反转点日益向低输出电力端移动,这为开关电源提供了广阔的发展空间1。2、开关电源DC/DC电路设计思路2.1工作原理 脉冲频率调制的英文全称为Pulse frequency modulation,缩写为PFM,脉冲频率调制是一种脉冲调制技术,调制信号的频率随着输入信号幅值的变化而变化,但其占空比不变,由于调制信号通常为频率变化的方波信号,因此,PFM也叫做方波FM2。2.1.1脉冲频率调制优点脉冲频率调制相比较脉冲宽度调制主要优点在于效率:在脉冲频率和脉冲宽度调制的外围电路一样的基础上,脉冲频率调制的峰值效率与脉冲宽度调制的峰值效率相当,但是在峰值效率以前,脉冲频率调制的效率远远高于脉冲宽度调制的效率,这就是脉冲频率调制的主要优势。由于脉冲宽度调制电路中有放大器的影响,所以回路增益及其响应速度受到了限制,但脉冲频率调制的电路中没有放大器,所以它具有有较快的响应速度。2.2 开关电源常见的拓扑结构简介2.2.1降压斩波电路(Buck Chopper) 三极管V受到PFM波的控制,处于导通和截止的两个状态,再经过电感和电容的滤波,在R负载上得到稳定的直流输出电压。该电路属于降压型电路,所以能够达到论文要求的输出电压5-24V。如图2-1所示:图2-1 降压斩波电路2.2.2升压斩波电路( Boost Chopper)升压斩波电路原理与降压斩波电路原理相类似,但是这个电路是升压型电路。在三极管导通时电感储能,截止时电感能量输出。只有在电感绕制合理时,才能达到论题要求的5-25V输出电压。如图2-2所示:图2-2 升降压电路2.2.3升降压斩波电路(Boost-Buck Chopper)实际上此电路是在降压斩波电路后接入了一个储能电感,用电感的储能来实现电能的输出,但是此电路控制复杂。如图2-3所示:图2-3 升降压电路2.3 开关电源DC/DC设计思路2.3.1 DC/DC基本设计方案本毕业设计由电源、STC89C52单片机控制等几部分构成,如硬件系统框图2-4所示:输入滤波DC/DC变换输出滤波电阻控制IC控制脉冲电压反馈二极管微机调节信号给定电压采样-图2-4 硬件系统框图2.4 DC/DC电路实现 Q2与Q3组成无稳态振荡器(astable multivibrator)。Q2的导通时间由R7、R5和Q4的集电极电压决定。Q4起放大作用,信号由Q4放大后控制Q2的导通时间。Q2导通Q3截止,Q2截止Q3导通。Q3截止时,Q1导通,通过Q3的截止时间控制Q1的导通时间。Q1导通时间越长,输出电压越高。 Q1输出的电压经L1和C1滤波变成稳定的直流电源输出。D3为增强二极管,防止L1在Q1截止时产生的高反压击穿Q1。D1为泄流二极管,防止L1产生的感应电流损坏Q1。D2为振荡器和放大取样电路提供相对稳定一点的工作电压。R12与R13是Q4的基极偏置电路,R9与R10是输出电源的取样电路。如图2-5 所示:图2-5 DC-DC回路原理图2.5 系统供电部分设计220V交流50HZ的市电经变压器降至18V交流电,经过整流二极管整流和滤波作为DC-DC部分的输入24V直流电,24V 直流电经7805 降压稳压,给STC89C52单片机等提供工作电源。如图2-6所示:图2-6 工作电源2.5.1 整流滤波电路设计本毕业设计采用四只整流二极管组成的整流电路将交流电转化为直流电。运用电感器、电容器及共模滤波器对输出的电压进行进一步的处理。如图2-7所示:图2-7 桥式整理滤波电路2.5.2 浪涌电流电压抑制电路设计电路在遭雷击和在接通、断开电感负载或大型负载时常常会产生很高的操作过电压,这种瞬时过电压(或过电流)称为浪涌电压(或浪涌电流),是一种瞬变干扰,浪涌电压大大地超过稳态电源电压,当它袭击到用电设备上时,往往造成误操作和设备的损坏,可能使整个系统停顿、通信中止3。由上所述浪涌电流及电压对开关电源及用电设备的破坏性,必须在开关电源的设计中考虑到浪涌电流及电压对开关电源及用电设备影响,从而增加有效的防护措施,设计出能够对浪涌电流及电压有效抑制的电路,对开关电源本身及用电设备进行保护。本毕业设计中运用氧化锌(ZnO)压敏电阻器,该电阻在实际应用中通常并联在被保护设备的输入端,抑制浪涌电压。运用NTC热敏电阻器,NTC热敏电阻器在电路中通常串联在被保护电器的输入端,抑制浪涌电电流。如图2-8所示:图2-8 浪涌电流电压抑制电路3、控制系统的设计思路3.1 控制系统的基本设计方案此设计用到STC89C52单片机,通过按键的键值来设定所需的电压值,然后单片机进行处理,产生输出所需相对电压值的相对频率的方波,使DC-DC部分输出所需的电压。ADC0804模数芯片对输出电压进行采样,然后反馈给单片机,进行电压自动调节。如图3-1系统整体框图。反馈负载DC/DC微控制单元键盘输入输入显示AD转换PFM220V变压器整流滤波系统供电图3-1 系统整体框图3.2 单片机模块的设计3.2.1 STC89C52性能简介STC89C52是由STC公司制造生产的一款低电压,高性能的8位单片机,片内含有可反复擦写的4KB只读程序存储器和128字节的随机存储器,2*4KB可编程闪速存储器;寿命:10万次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;2*128*8B内部RAM;32个可编程I/O口线;3个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式4。 3.2.2 最小系统设计单片机在启动时,需要使单片机和与之相连接的其他部件全部保持在一个的初始状态,所以需要制造一个复位信号并从收到这个复位信号后进行工作。STC89C52自身带有一个复位引脚RESET,采用施密特触发输入。当晶振起振后,只需要复位脚上产生了2个机器周期以上的高电平,这样就可以保证STC89C52的复位。复位完成后,如果RESET复位端仍然保持在高电平,STC89C52单片机就会一直处于复位进行的状态,只有在RESET复位端恢复低电平后,单片机才能进行后续程序处理。单片机的复位方式一般分为两种,一种是自动复位,另一种是手动复位。图3-2是STC89C52的复位电路,采用的是自动复位和手动复位的组合电路形式。 图3-2 复位电路3.2.3时钟电路设计CPU每执行一条指令,都必须在一个同一时钟脉冲控制下运行,时钟脉冲是由单片机外围设计的时序电路产生的。本毕业设计中时钟系统采用内部时钟方式,利用STC89C52内部集成的反相放大器,所需的外围电路简单,只需要一只晶振和 两只电容即可,如图3-3时钟电路所示:图3-3 时钟电路3.3 A/D模块设计3.3.1芯片介绍ADC0804是 NS公司生产的一款8位、单通道、低价格A/D转换器。主要特点是:模数转换时间需约100us;方便的TTLS标准接口或CMOS标准接口,可以满足差分电压的输入;内含时钟发生器;具有参考电压输入端;不需要调零等等5。该芯片的引脚图见图3-4所示:图3-4 ADC0804 引脚顶视图3.3.2芯片参数工作电压:+5V,即VCC=+5V。模拟转换电压范围:0+5V,即0Vin+5V。分辨率:8位。转换时间:100us(fCK=640KHz时)。转换误差:1LSB。参考电压:2.5V,即Vref=2.5V。3.3.3各个引脚名称及作用Vin(+)、Vin(-):两个模拟信号输入端,可以接收单极性、双极性和差模输入信号。如图3-5硬件连接图:CLKIN:时钟信号输入端。CS:片选信号的输入端,只有低电平有效。WR:写信号输入端,低电平启动AD转换。RD:读取信号的输入端,只有低电平时输出有效。VREF/2:参考电平输入,决定量化单位。VCC:芯片电源5V输入。AGND:模拟电源地线。DGND:数字电源地线。图3-5 ADC0804硬件连接图3.3.4 转换原理ADC0804是属于逐次逼近式(Successive Approximation Method)A/D转换器,这种类型的转换器除了分辨率高转换速度快以外,还有价格便宜的优点。使用二分法的寻址方式,8位的转换器需要8次的寻址,就能完成转换的操作。操作时序图及读取数据时序图如图3-6所示:图3-6 操作时序图及读取数据时序图3.4 接口电路的设计3.4.1按键接口电路设计本毕业设计就采用矩阵键盘,作用是能够减少按键与单片机连接时所占用的I/O线的数量,在按键比较多的时候,采用这样方法。由于使用的按键是机械式的按键,每当按键被按下时,按键会震动一段时间才会稳定下来,为了避免STC89C52单片机误判为多次输入同一个按键,所以需要在程序中Delay一段时间,在键盘震动停止后,单片机再进行判读按键按下的键值,这样就可以实现键盘的稳定输入。如图3-7所示:图3-7 按键与单片机连接图3.4.2 显示接口电路设计 本毕业设计采用液晶显示器,简称为LCD显示器。 12864 LCD引脚说明如表3-1所示:表3-1 12864LCD引脚LCD与单片机接硬件连接如图3-8所示:图3-8 LCD与单片机连接图4、程序设计4.1 主程序流程图的设计系统初始化后,通过矩阵键盘键入电压预设值,按确定键,系统输出预设值。YY开始系统及个功能模块初始化调用键盘扫描函数有键按下预置电压值记录行列号,延时10ms步进加一步进减一D/A数值+10超过预置改变当前值显示预置值A/D采样计算电压值显示各参数返回NN图4-1为系统主程序流程图。图4-1系统主程序流程图4.2 键盘扫描程序设计本毕业设计为了避免STC89C52单片机误判为多次输入同一个按键,所以需要在程序中Delay一段时间,在键盘震动停止后,单片机再进行判读按键按下的键值,这样就可以实现键盘的稳定输入。如图4-2键盘扫描程序流程图。开始记录行号,延时10mS记录列号,获得按键位置完成一个数字输入YN按键是否按下?按键是否按下?YN图4-2 键盘扫描程序流程图4.3 A/D程序设计A/D转换子程序是对输出模块电压进行转换处理,并将相对应的处理值传输到对应的内存单元,然后传输给单片机,转换流程图如图4-3所示:开始启动A/D转换(初始化)读取模拟数据量A/D转换发完数据?结束发送数据YN图4-3 转换流程图5、仿真结果及分析5.1 Proteus仿真软件 ProteusISIS是英国Labcenter公司开发的实物仿真、电路分析的软件。它在Windows的操作平台上,可以完美的对各种集成电路和模拟器件进行仿真和分析,该程序软件具有的以下特点: 实现了SPICE电路和仿真单片机仿真相结合。具有数字电路仿真、模拟电路仿真、单片机及单片机的外部电路的组成系统的完美仿真、SPI调试器、键盘、LCD系统仿真、I2C调试器和RS232动态。 支持现在主流单片机系统的完美仿真。目前支持的单片机类型有:PIC16系列、8051系列、PIC12系列、68000系列、Z80系列、HC11系列、AVR系列、PIC18系列以及各种外围芯片。 提供了软件调试的功能。在硬件仿真的系统中具有全速、单步及设置断点等调试的功能,同时还可以观察各个寄存器、变量等的当前运行状态。 具有很强大的原理图的绘制功能。总之,该软件是一款集SPICE分析和单片机仿真于一身的软件,功能极其强大。5.2 设计仿真5.2.1 仿真实验一 设定的输出电压为2V,仿真中显示器和电压表显示电压在1.99-2.00V之间波动,示波器检测单片机输出引脚显示为方波,频率f=350HZ。仿真图如图5-1所示:图5-1 仿真实验一5.2.2 仿真实验二 设定的输出电压为4V,仿真中显示器和电压表显示电压在3.99-4.01V之间波动,示波器检测单片机输出引脚显示为方波,频率f=725HZ。仿真图如图5-2所示:图5-2 仿真实验二5.3仿真分析 输出的电压值随单片机输出的方波频率升高而增大。本次设计的仿真系统可以实现设计要求,输出的电压的可调并且步进可控,输出的电流电压值和实际值保持一致,总的说已经完成了这本毕业设计的要求。参考文献1 赖文武,诸小天,李临东等. 电磁干扰防护与电磁兼容技术M. 北京:北京原子能出版社, 2009。2 张红缨,李华, 高小祥等. 采用双环控制的多电平D类功率放大器J. 电工技术学报. 2010。3 Jiang X, Akyildiz L F. A novel distributed dynamic location management scheme for minimizing signaling costs in mobile IPJ. IEEE Trans. on Mobile Computing, 2002.4 Khan A, Qadeer M, Ansari J et al. Next Generation Wireless NetworkA. In:Interna- tional Conference on Future Computer and CommunicationC, Berlin: Springer-Verlag, 2009.5 普利斯曼,比得斯,莫瑞.开关电源设计(第三版)M.北京:电子工业出版社,2009。6 Narten T, Nordmark E, Simpson W,Soliman H. Neighbor Discovery for IPv6EB/OL, /rfc/rfc4861.txt, 2007.7 郭军华. 电磁干扰防护与电磁兼容技术研究D. 上海: 华东师范大学物理系, 2007,15-20。8 张建生等.电源技术教程M.北京:电子工业出版社,2007。9 沈锦飞.电源变换应用技术M.北京:机械工业出版社,2007。10 林立等.单片机原理及应用基于Proteus和Keil CM.北京:电子工业出版社,2009。11 胡乾斌,李光斌,李玲等. 单片微型计算机原理与应用M. 武汉:华中科技大学出版社,2005。致 谢在本论文的写作过程中,我的导师老师耗费了大量的精力,从选题到开题,到一遍遍地指出稿中的每一个问题,严格把关,在此我表示由衷感谢。同时感谢在我大学学习期间给我极大关心和支持的各位老师以及同学们。经过十二周的查找参考资料和复习以前的课本知识,对本次毕业设计有了很多的体会和收获。 大学生活即将结束,内心是感慨颇多, 即将离开生活所依四年的母校和谆谆教导我的亲爱的老师和互相帮助的同学们,有些不舍。可是我同时也知道这是必须经历的一个过程, 在学校的这几年里我学习了本专业基本课程和与老师同学之间相处方面的知识,这些并些都是我受用终生。 感谢各位专家的批评指导 附 录附录一:系统整体原理图DC/DC电路原理图控制系统原理图附录二:系统仿真图附录三:程序代码主程序:#include#includeincludes.h#define uchar unsigned char #define uint unsigned int#define SCANPORT P2#define TIME1H 80#define TIME1L 80 sbit wr=P31;sbit rd=P30;sbit P27=P27;unsigned long int shuchu=100; /默认的开机电压/uint zhuhuandata;unsigned long int ch=0;uchar i=0; /按键标记/uchar uca_LineScan3=0xEF,0xDF,0xBF;void chuli(); /函数定义/uchar getkey(); /函数定义/void qiuhe(uchar t) if(i=1) ch=t; vShowOneChar(6,89,ucat); if(i=2) ch=ch*10+t; vShowOneChar(6,103,ucat); if(i=3) ch=ch*10+t; vShowOneChar(6,111,ucat); void key_chuli(uchar x) uchar t; switch(x)case 42: t=0; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /0case 31: t=1; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /1case 32: t=2; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /2case 33: t=3; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /3case 21: t=4; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /4case 22: t=5; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /5case 23: t=6; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /6case 11: t=7; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /7case 12: t=8; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /8case 13: t=9; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /9case 41: if(i=3) /ok ch=ch*256/512; shuchu=ch; ch=0; TH0=65200; TL0=65200; vShowOneChin(2,49,uca_0); vShowOneChin(2,64,uca_0); vShowOneChin(4,48,uca_SHU); vShowOneChin(4,64,uca_CHU); vShowOneChar(6,88,uca_HEN); vShowOneChar(6,104,uca_HEN); vShowOneChar(6,112,uca_HEN); i=0; break; void vTimer0(void) interrupt 1 using 2 uchar a,d;unsigned long int c=0;uchar data tab3;a=(zhuhuandata&0xf0)4)*100/16); d=(zhuhuandata&0x0f)*100/256); c=(a+d)*5.12; tab0=c%10; tab1=c/10%10; tab2=c/100%10;vShowOneChar(2,89,ucatab2);vShowOneChar(2,103,ucatab1);vShowOneChar(2,111,ucatab0); TH0=TIME1H;TL0=TIME1L;void main(void) SCANPORT=0x8F;ClearLCD(0x00);vShowOneChar(2,89,uca5);vShowOneChar(2,96,uca_XIAOSHU);vShowOneChar(2,103,uca0);vShowOneChar(2,111,uca0);vShowOneChar(2,120,uca_V); vShowOneChin(0,0,uca_DANG);vShowOneChin(0,16,uca_QIAN);vShowOneChin(0,32,uca_GONG);vShowOneChin(0,48,uca_ZUO);vShowOneChin(0,64,uca_DIAN);vShowOneChin(0,80,uca_YA);vShowOneChin(0,96,uca_MAOHAO);vShowOneChin(4,0,uca_QING);vShowOneChin(4,16,uca_SHE);vShowOneChin(4,32,uca_ZHI);vShowOneChin(4,48,uca_SHU);vShowOneChin(4,64,uca_CHU);vShowOneChin(4,80,uca_DIAN);vShowOneChin(4,96,uca_YA);vShowOneChin(4,112,uca_MAOHAO);vShowOneChar(6,96,uca_XIAOSHU);vShowOneChar(6,88,uca_HEN);vShowOneChar(6,104,uca_HEN);vShowOneChar(6,113,uca_HEN);vShowOneChar(6,119,uca_V);TMOD=0X01; TH0=TIME1H;TL0=TIME1L;ET0=1;/T/C0开中断TR0=1; /开定时器0中断IT0=1;/外中断方式:下降沿。EX0=1;/开启外部中断。 EA=1; while(1) wr=0; wr=1; chuli(); if(zhuhuandatashuchu)P27=1; if(zhuhuandata=shuchu)P27=0; void chuli() rd=0; zhuhuandata=P0;unsigned char getkey() uchar ucTemp=0; /扫描状态暂存。uchar ucRow=0,ucLine=0; /行号,列号。 for(ucLine=0;ucLine3;ucLine+)/列扫描 SCANPORT=uca_LineScanucLine; ucTemp=SCANPORT&0x8F; if(ucTemp!=0x8F) switch(ucTemp)case 0x8E: ucRow=10;break; case 0x8D: ucRow=20;break;case 0x8B: ucRow=30;break;case 0x87: ucRow=40;break;default: P2=P2; break; break; SCANPORT=0x8F; /恢复P2口 return (ucRow+ucLine+1);/ void vINT0(void) interrupt 0 EX0=0; key_chuli(getkey(); while(SCANPORT&0x8F)!=0x8f) /等待按键松开/ ; EX0=1; 键盘扫描子程序#include #define SCANPORT P1 unsigned char uca_LineScan4=0xEF,0xDF,0xBF,0x7F;/列线扫描电压unsigned char ucKeyScan()unsigned char ucTemp=0; /扫描状态暂存。unsigned char ucRow=0,ucLine=0; /行号,列号。EX0=0; for(ucLine=0;ucLine4;ucLine+)/列扫描SCANPORT=uca_LineScanucLine; /输出扫描电位。ucTemp=SCANPORT&0x0F; /输入扫描电位 if(ucTemp!=0x0F) switch(ucTemp)case 0x0E: ucRow=10;break; /如果有,则判断行号。case 0x0D: ucRow=20;break;case 0x0B: ucRow=30;break;case 0x07: ucRow=40;break;default: ucRow=50;break;break;SCANPORT=0x0F; /恢复P2口EX0=1;/恢复按键中断。return ucRow+ucLine+1; /返回按键编码。LCD12864驱动程序#include #defineLCDPORT P1sbitE= P37;sbitRW= P36;sbitDI= P35;sbitCS1= P33;sbitCS2= P34;sbit BUSYSTATUS= P17;/#define DISONSTATUS P0_5 /#define RSTSTATUS P0_4 /复位状态位。#define LCDSTARTROW 0xC0 /设置起始行指令。#define LCDPAGE 0xB8 /设置页指令。#define LCDLINE 0x40 /设置列指令。bit bCheckBusy()LCDPORT=0x00;RW=1;DI=0;E=1;E=0;return BUSYSTATUS; void vWriteData(unsigned char ucData)while(bCheckBusy();LCDPORT=0x00;RW=0;DI=1;LCDPORT=ucData;E=1;E=0;void vWriteCMD(unsigned char ucCMD)while(bCheckBusy();LCDPORT=0x00; RW=0;DI=0;LCDPORT=ucCMD;E=1;E=0;/*voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论