版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 (职业技术学院)单片机原理及应用课程设计报告 -基于proteus和keil c设计题目:4位数码块动态显示驱动电路设计专业班级: 10级通信技术(1)班 参与人员: 张某某 刘某某 袁某 指导老师: 朱某某 完成日期: 2012年5月21日至27日 摘要 本电路应用了at89c51芯片作为译码器实现了led动静态显示的基本原理,电路原理简单,价格低廉,可用于多位led显示。 四段led显示器也叫数码管,它是由发光二极管组成的一个阵列,常用的led显示器用共阳极和共阴极两种结构。为了使显示器能发光,并且显示数码,需要加译码驱动电路,常用的译码驱动电路有静态译码显示和动态译码显示。静态译码显示
2、是指一个译码驱动电路驱动一个四段显示器进行数码显示。动态译码显示是指多个七段显示器共用一个译码驱动电路,由扫描电路控制每个显示器分时进行显示,每个显示器按不同的时间轮流使用译码驱动电路。从而使显示电路更加简单。数码管的显示分为动态显示和静态显示两种工作方式。在静态显示控制中,只要驱动器的设计能力与显示器的工作电流想匹配就可以。而且,只需考虑段驱动,位驱动按照所选用的数码块,共阴则将公共端接地,共阳则将公共端接电源即可。在动态显示驱动设计中,由于数码管的实现是由段和位选信号共同配合完成的,因此,必须同时考虑和位的驱动能力。段驱动电流以脉冲形式输出,其峰值电流并不一定反映二极管的显示亮度,一般需要
3、提高驱动电流,才能达到要求,并且采用独立运行的实时时钟,就可避免不少麻烦,同时配合相关软件就可以有效地完成所要达到的目的。 目录1.主要器件简介.5 1.1 at89c51.5 1.2 ds1302.62.系统方案选择和论证7 2.1 设计要求7 2.2 各模块方案选择和论证7 2.2.1 主控模块的选择和说明.7 2.2.2 时钟芯片的选择和说明.8 2.2.3 显示模块的选择和说明.8 2.3 最终选择方案.93.系统硬件设计9 3.1工作原理9 3.2 硬件电路10 3.3 程序设计114.系统硬件设计调试与分析15 4.1 调试步骤15 4.1.1 软件调试.15 4.1.2 硬件调试
4、.16 4.2 性能分析165.设计心得18 参考文献20 附录.21 附录1 系统硬件电路图21 附录 2 电路板实物图.22 附录3 程序pcb图.23 附录4 程序清单23 1主要器件简介1. 1 at89c51 at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。at89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术
5、制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 外形及引脚排列如图所示: 1.2 ds1302 ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态ram,采用spi三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和ram数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能
6、。工作电压宽达2.55.5v。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。有主电源和备份电源双引脚,而且备份电源可由大容量电容(1f)来替代。需要强调的是,ds1302需要使用32.768khz的晶振。 ds1302芯片引脚图引脚号名称功能1vcc1备份电源输入2x132.768khz晶振输入3x232.768khz晶振输出4gnd地5rst控制移位寄存器/复位6i/o数据输入/输出7sclk串行时钟8vcc2主电源输入 ds1302引脚功能说明 2 系统方案选择和论证 2.1 设计要求 电子时钟主要是利用电子技术将时钟电子化、数字化,拥
7、有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致。也有体型较大的,诸如公共场所的大型电子报时器等。电子时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,usb扩展口功能等。 2.2 各模块方案选择和论证 2.2.1 主控模块的选择和说明 目前在单片机系统中,应用比较广泛的微处理器芯片主要为8xc5x系列单片机。该系列单片机均采用标准mcs-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,
8、货源充足,调试和编程方便,所以应用极为广泛。 at89c2051单片机,带有2kb flash可编程、可擦除只读存储器(e2prom)的低压、高性能8位cmos微型计算机。拥有15条可编程i/o引脚,2个16位定时器/计数器,6个中断源,可编程串行uart通道,并能直接驱动led输出。 为了完成时钟设计,应用at89c2051单片机完全可以实现。 2.2.2 时钟芯片的选择和说明 在电子时钟设计中,常用的实时时钟芯片有ds12887、ds1216、ds1643、ds1302。每种芯片的主要时钟功能基本相同,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同。ds12887与d
9、s1216芯片都有内嵌式锂电池作为备用电池; x1203引脚少,没有嵌入式锂电池,跟ds1302芯片功能相似,只是相比较之下,x1203与stc89c52搭配使用时占用i/o口较多。ds1643为带有全功能实时时钟的8k8非易失性sram,集成了非易失性sram、实时时钟、晶振、电源掉电控制电路和锂电池电源,bcd码表示的年、月、日、星期、时、分、秒,带闰年补偿。同样,ds1643拥有28只管脚,硬件连接起来占用微处理器i/o口较多,不方便系统功能拓展和维护。故而从性价比和货源上考虑,本设计采用实时时钟日历芯片ds1302。 2.2.3 显示模块的选择和说明本实验中要显示的信息比较多,选择数码
10、管显示的话需要的数码管数量将会很多,将是线路复杂,pcb布线混乱,因此选择7se-mpx4-ca作为显示模块。2.3 最终选择方案 经过方案比较和论证,选择stc89c51作为主控芯片,时钟芯片选择ds1302,显示模块用7seg-mpx4-ca,用四个独立式键盘。3 系统软件设计3.1 工作原理 数码管的驱动方式: 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o端口进行驱动,或者使用如bcd码二-十进制译码
11、器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动5个数码管静态显示则需要5840根i/o端口来驱动,要知道一个89s51单片机可用的i/o端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对
12、位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 3.2 硬件电路 单片机电子钟仿真电路 3.3 程序设计 org 0000h start:ljmp main org 0030h main:mov sp,#5fh mov r0,#30h mov r2,#30h mov a,#00h lp0:mov r0,a inc r0 djnz r2,lp0 lcall display ;sjmp main mov 41h,#00h lcall start1302 mov 42h,#46h mov 43h,#13h mov 44h,#01h
13、 mov 45h,#06h mov 46h,#05h mov 47h,#12h mov 52h,#00h mov 53h,#00h clr 30h setb 31h ; lcall set1302 lcall display lp1: lcall get1302 mov 40h,41h lp11: lcall display lcall get1302 mov a,41h cjne a,40h,lp2 ljmp lp21 lp2: cpl 30h mov 40h,41h ; ljmp lp11 lp21: jb 31h,lp22 lcall dsbj lcall display lp22: l
14、call keyscan mov dptr,#tab mov a,30h rl a add a,30h jmp a+dptr tab: ljmp lp11 ljmp tssz ljmp sjy ljmp fjy ljmp rqxs tssz: cpl 31h tssz0: jb p1.4,tssz1 lcall tsdisplay sjmp tssz0 tssz1: jnb 31h,tssz00 lcall display ljmp lp11 tssz00:mov 51,#20h tssz10:mov 50h,#00h tssz11:jb p1.5,tssz3 mov a,53h add a,
15、#01h da a cjne a,#24h,tssz2 mov a,#00h tssz2: mov 53h,a tss1: lcall tsdisplay jnb p1.5,tss1 tssz3: lcall tsdisplay jb p1.4,tssz11 jnb p1.4,$ mov 51h,#20h tsszf0:mov 50h,#00h tsszf1:jb p1.6,tsszf3 mov a,52h add a,#01h da a cjne a,#60h,tsszf2 mov a,#00h tsszf2: mov 52h,a tsf1: lcall tsdisplay jnb p1.6
16、,tsf1 tsszf3: lcall tsdisplay jb p1.4,tsszf1 jnb p1.4,$ lcall tsdisplay ljmp lp11 dsbj: mov a,53h cjne a,43h,dsbj1 mov a,52h cjne a, 42h,dsbj1 mov 50h,#06h dsbj0: clr p1.3 lcall display setb p1.3 lcall d2ms djnz 50h,dsbj0 ; setb 31h dsbj1: ret sjy: mov a,43h add a,#01h da a cjne a,#24h,sjy0 mov a,#0
17、0h sjy0: mov 43h,a lcall set1302 sjy1: jb p1.5,sjy2 lcall display sjmp sjy1 sjy2: ljmp lp11 fjy: mov a,42h add a,#01h da a cjne a,#60h,fjy0 mov a,#00h fjy0: mov 42h,a lcall set1302 fjy1:jb p1.6,fjy2 lcall display sjmp fjy1 fjy2:ljmp lp11 rqxs:lcall rqdisplay rqxs1:jb p1.7,rqxs2 lcall rqdisplay sjmp
18、rqxs1 rqxs2:mov r3,#00h rqxs3:lcall rqdisplay lcall rqdisplay djnz r3,rqxs3 lcall display ljmp lp11keyscan:push acc mov 30h,#00h orl p1,#0f0h mov a,p1 swap a anl a,#0fh jb acc.0,k1 mov 30h,#01h sjmp keyend k1: jb acc.1,k2 mov 30h,#02h sjmp keyend k2: jb acc.2,k3 mov 30h,#03h sjmp keyend k3: jb acc.3
19、,keyend mov 30h,#04hkeyend: pop acc retkeyplay:mov r5,#04h mov r0,#52h mov r3,#08h dis2:mov dptr,#table mov a,r0 anl a,#0fh movc a,a+dptr mov p0,a mov a,r3 mov p2,a lcall d2ms mov a,r0 anl a,#0f0h swap a movc a,a+dptr mov p0,a mov a,r3 rr a mov r3,a mov p2,a inc r0 mov a,r3 rr a mov r3,a lcall d2ms
20、djnz r5,dis2 clr p2.0 ret display:push acc push psw mov dptr,#table mov r1,#42h mov a,r1 anl a,#0fh movc a,a+dptr mov c,31h mov acc.7,c mov p0,a mov p2,#0feh ;mov p2,#08h lcall d2ms mov p2,#00h mov a,r1 swap a anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0fdh ;mov p2,#04h lcall d2ms mov p2,#00h mov r1,
21、#43h mov a,r1 anl a,#0fh movc a,a+dptr mov c,30h mov acc.7,c mov p0,a mov p2,#0fbh ; mov p2,#02h lcall d2ms mov p2,#00h mov a,r1 swap a anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0f7h ; mov p2,#01h lcall d2ms mov p2,#00h pop psw pop acc retrqdisplay:push acc push psw mov dptr,#table mov r1,#44h mov a
22、,r1 anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0feh ;mov p2,#08h lcall d2ms mov p2,#00h mov a,r1 swap a anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0fdh ;mov p2,#04h lcall d2ms mov p2,#00h mov r1,#45h mov a,r1 anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0fbh ; mov p2,#02h lcall d2ms mov p2,#00h mov a,r1
23、swap a anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0f7h ; mov p2,#01h lcall d2ms mov p2,#00h pop psw pop acc ret tsdisplay:push acc push psw mov dptr,#table mov r1,#52h mov a,r1 anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0feh ;mov p2,#08h lcall d2ms mov p2,#00h mov a,r1 swap a anl a,#0fh movc a,a+dptr
24、mov p0,a mov p2,#0fdh ;mov p2,#04h lcall d2ms mov p2,#00h mov r1,#53h mov a,r1 anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0fbh ; mov p2,#02h lcall d2ms mov p2,#00h mov a,r1 swap a anl a,#0fh movc a,a+dptr mov p0,a mov p2,#0f7h ; mov p2,#01h lcall d2ms mov p2,#00h pop psw pop acc ret d2ms: mov r6,#02h
25、 dl1: mov r5,#249 dl2: nop nop djnz r5,dl2 nop djnz r6,dl1 ret table: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh t_clk bit p1.0 t_io bit p1.1 t_rst bit p1.2 second data 41hset1302: clr t_rst clr t_clk setb t_rst mov b, #8eh lcall rtinputbyte mov b, #00h lcall rtinp
26、utbyte setb t_clk clr t_rst mov r0, #second mov r7, #7 mov r2, #80h set13021: clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte mov a, r0 mov b, a lcall rtinputbyte inc r0 inc r2 inc r2 setb t_clk clr t_rst djnz r7, set13021 clr t_rst clr t_clk setb t_rst mov b, #8eh lcall rtinputbyte mov b
27、, #80h lcall rtinputbyte setb t_clk clr t_rst retget1302: push acc push psw ; setb psw.4 ; setb psw.3 mov r0, #second mov r7, #3 mov r2, #81h get1: clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte nop lcall rtoutputbyte mov r0,a inc r0 inc r2 inc r2 setb t_clk clr t_rst lcall display djnz
28、r7,get1 ; clr psw.3 ; clr psw.4 pop psw pop acc retget13021: push acc push psw ; setb psw.4 ; setb psw.3 mov r0, #51h; mov r7, #01 mov r2, #81h get2: clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte nop lcall rtoutputbyte mov r0,a inc r0 inc r2 inc r2 setb t_clk clr t_rst lcall display djn
29、z r7,get2 ; clr psw.3 ; clr psw.4 pop psw pop acc retstart1302: clr t_rst clr t_clk setb t_rst mov b, #8eh lcall rtinputbyte mov b, #00h lcall rtinputbyte setb t_clk clr t_rst mov r0, #second mov r7, #01h mov r2, #80h start13021: clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte mov a, r0 m
30、ov b, a lcall rtinputbyte inc r0 inc r2 inc r2 setb t_clk clr t_rst djnz r7, start13021 clr t_rst clr t_clk setb t_rst mov b,#8eh ;控制寄存器 lcall rtinputbyte mov b,#80h ;控制,wp=1,写保护 lcall rtinputbyte setb t_clk clr t_rst retramwrite: clr t_rst clr t_clk setb t_rst mov b, #8eh lcall rtinputbyte mov b, #
31、00h lcall rtinputbyte setb t_clk clr t_rst ; mov r0, #ram8951 ; mov r7, #counter ; mov r2, #ram1302 ramwrite1: clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte mov a, r0 mov b, a lcall rtinputbyte inc r0 inc r2 inc r2 lcall display setb t_clk clr t_rst djnz r7, ramwrite1 clr t_rst clr t_cl
32、k setb t_rst mov b, #8eh lcall rtinputbyte mov b, #80h lcall rtinputbyte setb t_clk clr t_rst retram1302rd: push acc push psw ; mov r0, #ram8951 ; mov r7, #counter ; mov r2, #ram1302 ram1302rd1:clr t_rst clr t_clk setb t_rst mov b, r2 lcall rtinputbyte lcall rtoutputbyte mov r0,a inc r0 inc r2 inc r
33、2 setb t_clk clr t_rst djnz r7,ram1302rd1 pop psw pop acc retrtinputbyte: mov r4, #8inbit1: mov a, b rrc a mov b, a mov t_io, c setb t_clk clr t_clk djnz r4, inbit1 retrtoutputbyte: mov r4,#8outbit1: setb t_io mov c,t_io rrc a setb t_clk clr t_clk djnz r4, outbit1 ret ljmp main end4 系统硬件设计调试与分析 4.1
34、调试步骤 4.1.1软件调试 软件调试相对比较简单,但是要掌握仿真软件的用法,首先在仿真软件(proteus)上建立仿真模型(电路图),然后用keil c编程序和proteus进行联机仿真调试,分别对显示、按键、时钟等各个部分进行调试,检测电路原理图的正确与否。 4.1.2硬件调试 单片机基础电路包括电源、单片机、外部时钟震荡电路、复位电路和外部接口电路。调试过程需要注意以下几点: (1)检查电源是否完好。 (2)单片机电源要连接正确,并且保证at89c51的31号引脚接高电平。at89c51的31号引脚是外部程序存储器选择信号端,当该引脚为高电平时,单片机会一直从片内程序存储器内取指令。 (
35、3)如果使用p0口做i/o口,要接上拉电阻。 (4)使用万用表排查电路中是否存在断路或者短路情况。笔者在制作外部接口电路时使用的是排针,焊接时容易出现管脚之间短路,所以在上电以前必须先排查电路。 (5)编辑一个简单程序,上电运行,检查单片机是否正常工作,复位电路是否正确。 4.2 性能分析 当某一串联支路上有一只led品质不良而短路时,不管采用稳压式驱动方式还是恒流式驱动方式,通过该串联电路的电流将增大,很容易损坏该串联支路中的led。大电流通过损坏的这串led后,由于通过的电流较大,多表现为断路。断开一个led串联支路后,如果采用稳压式驱动方式,驱动器的输出电流将减小,而不影响余下的所有le
36、d正常工作。 如果采用恒流式led驱动方式,由于驱动器的输出电流保持不变,分配在余下的led中的电流将增大,容易损坏所有的led。解决办法是尽量多并联led,这样当断开某一只led时,分配在余下的led中的电流不大,不至于影响余下的led正常工作。 这种先串联后并联的线路的优点是线路简单、亮度稳定、可靠性高,并且对器件的一致性要求较低,不需要特别挑选器件,即使个别led单管失效,对整个发光组件的影响也较小。在工作环境因素变化较大的情况下,使用这种连接形式的发光组件效果较为理想。 先并后串混合连接构成的发光组件的问题主要是在单组并联led中,由于器件和使用条件的差别,单组中个别led芯片可能丧失
37、pn结特性,出现短路。个别器件短路会使未失效的led失去工作电流if导致整组led熄灭,总电流全部从短路器件中通过,而较长时间的短路电流又会使器件内部的键合金属丝或其他部分烧毁,出现开路。这时,未失效的led重新获得电流,恢复正常发光,只是工作电流if较原来大一点。这就是这种连接形式的发光组件出现先是一组中几只led一起熄灭,一段时间后除其中一只led不亮外,其他led又恢复正常的原因。 混联方式还有另外一种接法,即是将led平均分配后分组并联,再将每组串联在一起。当有一只led品质不良而短路时,不管是采用稳压式驱动方式还是恒流式驱动方式,并联在这一支路中的led将全部不亮。如果采用恒流式led驱动方式,由于驱动器的输出电流保持不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市晋元中学2025届高三第一次调研测试数学试卷含解析
- GB/T 12412-2024牦牛绒
- 贵州省六盘水市钟山区2023-2024学年九年级上学期语文期末试卷
- 信阳师范大学《行政职业能力训练》2023-2024学年第一学期期末试卷
- 2024年度企业代理记账服务合同模板9篇
- 2024年度担保合同种类与网络金融平台要求3篇
- 2024年度资产证券化担保合同从属性合规要求3篇
- 转租合同样本二手租赁协议3篇
- 软件开发合同范例3篇
- 酒店宴席合同模板3篇
- 医学英语学习通超星期末考试答案章节答案2024年
- 数控机床发展历史
- 公司控股公司的协议书范本
- 2024版固定资产的转让协议书
- 2024年1月国开电大法律事务专科《企业法务》期末考试试题及答案
- 2023-2024学年河北省保定市满城区八年级(上)期末英语试卷
- 2020-2024年安徽省初中学业水平考试中考历史试卷(5年真题+答案解析)
- 上海市虹口区2023-2024学年八年级下学期期末考试语文试题
- 2024合同范本之太平洋保险合同条款
- 万用表的使用
- 废气治理设施运行管理规程
评论
0/150
提交评论