[毕业论文]基于单片机精确计时的开关电源设计_第1页
[毕业论文]基于单片机精确计时的开关电源设计_第2页
[毕业论文]基于单片机精确计时的开关电源设计_第3页
[毕业论文]基于单片机精确计时的开关电源设计_第4页
[毕业论文]基于单片机精确计时的开关电源设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 目 录 第一章 绪 论21.1.课题背景21.1.1.单片机概述21.2. mcs51系列单片机介绍31.2.1.基本特性31.2.2. 引脚功能4第二章 硬件系统的设计72.1. 设计方案 72.2. 硬件设计电路框图72.3. 机型及器件选择82.3.1. 单片机的选择82.3.2. 时钟电路的设计82.3.3. 复位电路的设计92.3.4. led显示电路设计与器件选择92.3.5. 按键电路设计与器件选择102.3.6. 继电器电路设计112.3.7. 时钟/日历电路设计与器件选择122.4. 硬件设计电路原理图与pcb图122.5.实物图132.6. 硬件的调试13第三章 软件设计

2、143.1. 程序流程图143.2.程序的编写143.3.用protues 进行仿真17总 结18致 谢19参 考 文 献20附录一 硬件设计原理图21附录二 硬件设计pcb图22单片机精确计时的电源开关的设计第一章 绪 论1.1.课题背景1.1.1.单片机概述单片机也被称作“单片微型计算机”、“微控制器”、“嵌入式微控制器”。单片机一词最初是源于“single chip microcomputer”,简称scm。随着scm在技术上、体系结构上不断扩展其控制功能,单片机已不能用“单片微型计算机”来表达其内涵。国际上逐渐采用“mcu”(micro controller unit)来代替,形成了单

3、片机界公认的、最终统一的名词。为了与国际接轨,以后应将中文“单片机”一词和“mcu”唯一对应解释。在国内因为“单片机”一词已约定俗成,故而可继续沿用。1.1.2. 单片机的主要特点 单片机是在一块芯片中集成了cpu、ram、rom、定时器/计数器和多功能i/o等一台计算机所需要的基本功能部件。是一个集成在一块芯片上的完整计算机系统。下面主要介绍几点他的主要特点:1. 高集成度,体积小,高可靠性 单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的cpu。单片机程序指令,常数及表格等固化在rom中

4、不易破坏,许多信号通道均在一个芯片内,故可靠性高。2. 控制功能强为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,i/o口的逻辑操作及位处理能力,非常适用于专门的控制功能。3. 低电压,低功耗,便于生产便携式产品为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8v3.6v,而工作电流仅为数百微安。 4. 易扩展 片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。 5. 优异的性能价格比 单片机的性能极高。为了提高速度和运行效率,单片机已开始使用risc流水线和dsp等技术。单片

5、机的寻址能力也已突破64kb的限制,有的已可达到1mb和16mb,片内的rom容量可达62mb,ram容量则可达2mb。由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。1.2. mcs51系列单片机介绍1.2.1.基本特性 mcs-51单片机是在一块芯片中集成了cpu、ram、rom、定时器/计数器和多功能i/o等一台计算机所需要的基本功能部件。他主要具有一下几个特性:1. 片内程序存储器含有4kb的flash存储器,允许在线编程,檫写周期可达1000次;2. 片内数据存储器内含128字节的ram;3. i/o口具有32根可编程i/o线;4. 具有两

6、个16位i/o线;5. 中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;6. 串行口是一个全双工的串行通信口;7. 具有两个数据指针dptr0和dptr1;8. 低功耗节电模式有节电模式和掉电模式;9. 包含3级程序锁定位;10. at89s51的电源电压为4.0-5.5v,at89ls51的电源电压为2.7-4.0v;11. 振荡器频率0-33mhz(at89s51),0-16mhz(at89ls51);12. 具有片内看门狗定时器;13. 灵活的在线片内编程模式(字节和页编程模式);14. 具有断电标志模式pof;1.2.2. 引脚功能 1. vcc:供电电压。 2. gn

7、d:接地。 3. p0口8位、开漏极、双向i/o口。 p0口可作为通用i/o口,但必须外接上拉电阻;作为输出口,每个引脚课吸收8个ttl的灌电流。作为输入时,首先应将引脚置1。 p0口也可用作外部程序存储器和数据存储器是的低八位地址/数据总线的复用线。在该模式下,p0口含有内部上拉电阻。 在flash编程时,po口接受代码数据;在编程校验时,p0口输出代码字节数据(需要外接上拉电阻)。4. p1口8位、双向i/o口、内部含有行拉电阻。p1可作为普通i/o口。输出缓冲器可驱动4个ttl负载;用作输入时,先交引脚置1,有片内上拉电阻将其抬到高电平。p1口的引脚可由外部负载拉倒低电平,通过上拉电阻提

8、供拉电流。编程和校验时,p1口可输入低字节地址。在串行编程和校验时,p1.0/mosi,p1.6/osi和p1.7/sck分别是串行数据输入、输出和移位脉冲引脚。5.p2口具有内部拉电阻的8位双向i/o。p2口用作输出口时,可驱动四个ttl负载;用作输入口时,先将引脚置1由内部上拉电阻将其提高到高电平。若负载为低电平,则通过内部上拉电阻向外输出电流。 p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信

9、号和控制信号。 6. p3口8个带内部上拉电阻的双向i/o口p3口用作输出口时,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下表所示:p3口管脚 备选功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)

10、7. rst复位输入。 当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 8. ale/prog当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。9. /p

11、sen外部程序存储器的选通信号。 在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。10. /ea/vpp访问程序存储器控制信号。当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。11. xtal1,xtal2外接晶体引线端。 当使用芯片内部时钟时,此两引线端用于外接石英晶体和微调电容;当实用外部时钟时,用于接外部时钟脉

12、冲信号。 第二章 硬件系统的设计2.1. 设计方案 1. 选择ds1307芯片作为系统的时钟日历,当前时间可从ds1307芯片中读出 2、 系统显示采用8位led数码管。led数码管的段码输入由p0产生、位码输入由p2产生 3、 时间调整与定时时间的输入通过接入键盘电路实现。设计4个键,分别定义为: (1) set键(时间调整设置键):其功能是当该键按下时,进入时间调整功能 (2) alm键(定时时间设置键):其功能是当该键按下时,进入定时时间输入功能 (3) 1键:其功能是当该键按下时,被调整位加一 (4) ret键:其功能是当该键按下时,指向下一个要调整的位5、 报警声响用蜂鸣器产生,蜂鸣

13、器接入p1口的p1.6脚6、 外部电源的通断用小型中功率电磁继电器jzc_23f来完成这个功能,继电器触点的断开与接通,通过p1口的p1.7脚控制2.2. 硬件设计电路框图根据设计方案,硬件电路设计框图如下图所示:硬件电路结构由8个部分组成:按键输入电路、时钟与复位电路、蜂鸣器电路、led显示器及驱动电路、继电器电路和时钟日历电路组成。如图 2.1所示:图2.1 硬件设计电路框图2.3. 机型及器件选择2.3.1. 单片机的选择在此选择atmel公司生产的型号为at89s51的单片机。该单片机与mcs51系列单片机完全兼容,是atmel公司最新推出的替代at89c51系列的新款机型,比at89

14、c51系列又增加了wtd、isp等功能,物美价廉,经济实用,并且使用起来更加方便。2.3.2. 时钟电路的设计单片机工作的时间基准是由时钟电路提供的。在单片机的xtal0和xtal1两个引角之间,接一只晶振及两只电容就构成了单片机的时钟电路。如图 2.2 所示:图 2.2 时钟电路电路中,电容器c1和c2可以对晶振有微调作用,通常的取值范围是3010pf晶振选择12mhz2.3.3. 复位电路的设计单片机的rst引脚为主机提供一个外部复位信号输入端口。复位信号是高电平有效。高电平的持续时间应为2个机器周期以上。 复位以后,单片机内各部分恢复到初始状态,单片机从rom的0000h开始执行程序。单

15、片机的复位方式有上电复位和手工复位两种,图3是51系列单片机常用的上电复位和手动复位组合电路,只要vcc上升时间不超过1ms,它们都能很好的工作。阻容器件的值如图 2.3所示,即r1200,r21k,c3=22uf。图 2.3 复位电路2.3.4. led显示电路设计与器件选择 单片机的应用系统中,通常都要进行人机对话。这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。显示器、键盘电路就是用来完成人机对话的人机通道。led显示器的驱动是一个非常重要的问题,由系统硬件设计框图可知,显示电路由led显示器、段驱动电路和位驱动电路组成。由于单片机的并行口不能直接驱动

16、led显示器,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能够正常工作。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏。因此,在实际应用中必须接入led驱动电路。led的显示方式选择动态显示,要同时考虑位和段的驱动能力,而且段的驱动能力决定位的驱动能力。1. 显示器的选择:显示器要显示时、分、秒,所以用2个4位一体的数码管来作显示器。2. 驱动电路的选择: 用锁存器74ls373和74ls138译码器来驱动数码管的显示,但是需要注意的是,用74ls138译码器来做数码管的驱动的时候数码管必须要用共阴的数码管。如图 2.4所示: 图2.

17、4 led驱动显示电路2.3.5. 按键电路设计与器件选择 在单片机的人对机对话的人机通道中,除了led的显示电路需要完成人机对话外,还有一个重要的环节按键输入,他也需要进行人机对话。 按键电路如图2.5所示: 图 2.5 按键电路2.3.6. 继电器电路设计继电器是电子电路中常用的一种元件,一般由晶体管、继电器等元器件组成的电子开关驱动电路中,往往还要加上一些附加电路以改变继电器的工作特性或起保护作用。而这里用的是继电器并联二极管电路,如图2.6所示: 图 2.6 继电器电路 像图6那样主要是为了保护晶体管等驱动元器件。当图中晶体管vt由导通变为截止时,流经继电器线圈的电流将迅速减小,这时线

18、圈会产生很高的自感电动势与电源电压叠加后加在vt的c、e两极间,会使晶体管击穿,并联上二极管后,即可将线圈的自感电动势钳位于二极管的正向导通电压,此值硅管约0.7v,锗管约0.2v,从而避免击穿晶体管等驱动元器件。并联二极管时一定要注意二极管的极性不可接反,否则容易损坏晶体管等驱动元器件。2.3.7. 时钟/日历电路设计与器件选择单片机要实现实际的时间,就必须要个实时时钟芯片ds1307。ds1307 是美国dallas公司推出的i2c 总线接口实时时钟芯片,它可独立于cpu工作,不受cpu主晶振及其电容的影响,且计时准确,月累积误差一般小于10秒。芯片还具有主电源掉电情况下的时钟保护电路,d

19、s1307的时钟靠后备电池维持工作,拒绝cpu对其读出和写入访问。同时还具有备用电源自动切换控制电路,因而可在主电源掉电和其它一些恶劣环境场合中保证系统时钟的定时准确性。ds1307具有产生秒、分、时、日、月、年等功能,且具有闰年自动调整功能。同时,ds1307芯片内部还集成有一定容量、具有掉电保护特性的静态ram,可用于保存一些关键数据。如图2.7所示: 图2.7 时钟/日历电路设计2.4. 硬件设计电路原理图与pcb图 见 附录一、附录二2.5.实物图(如图 2.8所示) 图 2.8 实物图2.6. 硬件的调试硬件的调试在上电后的工作是不是正常,主要进行不插单片机的调试,无单片机调试主要检

20、查电路工作是否正常,具体步骤如下:a:打开电源,将输出电压调到5伏,然后关闭电源。b:将电路板的火线与电源正极相连,地线与负极相连。c:打开电源,用万用表检测电路板是否有输出电压,如果有就是好的,没有就要检测是否有短路。d:电路检查完后,关闭电源,用一根导线与电源负极相连,然后打开电源,用导线的另一端逐个与p0、p2口的管脚接触,看数码管显示是否正确。第三章 软件设计3.1. 程序流程图 如图3.1 所示主程序中断服务程序显示程序 如图3.1 所示3.2.程序的编写#includeunsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d

21、,0x7d,0x07,0x7f,0x6f,0x40;/共阴极unsigned char dispbitcode=0x00,0x21,0x42,0x63,0x84,0xa5,0xc6,0xe7;/管子的选择unsigned char dispbuf8=0,0,10,0,0,10,2,1; /16为显示间断号符unsigned char dispbym8=1,2,7,0,6,0,0,2;unsigned char dispbitcnt;unsigned char second;unsigned char minite;unsigned char hour;unsigned char day;uns

22、igned char month;unsigned char yearh;unsigned char yearl;unsigned int tcnt;unsigned char mstcnt;unsigned char i,j;void main(void) tmod=0x02; /设置模式为定时器t0的模式2 (8位自动重装计数初值的计数值) th0=0x06; /设置计数器初值,靠th0存储重装的计数值x0=256-250=6 tl0=0x06; tr0=1; /启动t0 et0=1; /开启定时器t0中断允许 ea=1; /开启中断总控制 yearh=20; yearl=6; month

23、=7; day=21; hour=12; /初始值为12:00:00 while(1) if(p0_0=0) /扫描秒钟按钮 for(i=5;i0;i-) /按钮抖动消除 for(j=248;j0;j-); /计时 if(p0_0=0) second+; if(second=60) second=0; dispbuf0=second%10; dispbuf1=second/10; while(p0_0=0); if(p0_1=0) /扫描分钟按钮 for(i=5;i0;i-) for(j=248;j0;j-); if(p0_1=0) minite+; if(minite=60) minite=

24、0; dispbuf3=minite%10; dispbuf4=minite/10; while(p0_1=0); if(p0_2=0) /扫描时钟按钮 for(i=5;i0;i-) for(j=248;j0;j-); if(p0_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour%10; dispbuf7=hour/10; while(p0_2=0); if(p0_3=0) for(i=5;i0;i-) for(j=248;j0;j-); if(p0_3=0) day+; if(month=2&(yearl=0&yearh%4=0)|(yearl!=0

25、&yearl%4=0)&day=30)day=1; else if(month=2&day=29)day=1; else if(month=4|month=6|month=9|month=11)&day=31)day=1; else if(day=32)day=1; dispbym0=day%10; dispbym1=day/10; while(p0_3=0); if(p0_4=0) for(i=5;i0;i-) for(j=248;j0;j-); if(p0_4=0) month+; if(month=13)month=1; dispbym2=month%10; dispbym3=month

26、/10; while(p0_4=0); if(p0_5=0) for(i=5;i0;i-) for(j=248;j0;j-); if(p0_5=0) yearl+; if(yearl=100) yearl=0; yearh+; if(yearh=100)yearh=20; dispbym4=yearl%10; dispbym5=yearl/10; dispbym6=yearh%10; dispbym7=yearh/10; while(p0_5=0); void t0(void)interrupt 1 using 0 /t0的中断程序 mstcnt+; if(mstcnt=8) /8次250us

27、为2ms,即每隔2ms扫描一个数码管 mstcnt=0; p1=dispcodedispbufdispbitcnt; p2=dispcodedispbymdispbitcnt; p3=0xff; p3=dispbitcodedispbitcnt; /管子的选择 dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; tcnt+; if(tcnt=4000) /定时器的定时计数,4000次250us为1秒 tcnt=0; second+; if(second=60) /从秒到时层层嵌套,程序较为精练 second=0; minite+; if(minite=60)

28、 minite=0;hour+;if(hour=24) hour=0; day+; if(month=2&(yearl=0&yearh%4=0)|(yearl!=0&yearl%4=0)&day=30)day=1; else if(month=2&day=29)day=1; else if(month=4|month=6|month=9|month=11)&day=31)day=1; else if(day=32)day=1; if(day=1) month+; if(month=13) month=1; yearl+; if(yearl=100) yearl=0; yearh+;if(yea

29、rh=100)yearh=20; dispbuf0=second%10; /送显示数据 dispbuf1=second/10; dispbuf3=minite%10; dispbuf4=minite/10; dispbuf6=hour%10; dispbuf7=hour/10;dispbym0=day%10; dispbym1=day/10; dispbym2=month%10; dispbym3=month/10; dispbym4=yearl%10; dispbym5=yearl/10; dispbym6=yearh%10; dispbym7=yearh/10; 3.3.用protues

30、进行仿真1 安装protues 软件2 画出原理图 3 在at89c51芯片中写入 hex 文件(如图 3.2 所示) 图 3.2 生成的hex文件 4.仿真与调试 如 图 3.3 所示 图3.3 仿真结果总 结 在这次课程设计中,完成了单片机开关电源的制作。其中有苦也有乐。苦的是这个月太累了,好几个晚上忙到凌晨2点左右;乐的是在付出过程中,我学到了许多的东西。在整个设计过程中,经常经常出现这样那样的问题,但是最后还是都得以解决,这个过程是值得我回味的,尤其是当看到自己的设计课题成功时,心中有一种成就感。挫折是一份财富,经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆!通过这次课程设计使我懂得

温馨提示

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

评论

0/150

提交评论