免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的多功能计时显示系统设计2010年 5 月 v 本科毕业设计说明书(论文)第26页共25页 目 次1引言21.1选题背景及意义21.2国内外现状 22系统方案设计22.1系统构成框图22.2基本功能介绍33系统硬件电路的组成43.1计时电路43.2计分电路83.3球赛计时计分器的工作过程144单片机软件设计144.1篮球赛计时计分程序流图144.2篮球赛计时计分器的源码15结论 21致谢22参考文献23附录 1 24附录 2251 引言1.1选题背景及意义单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小质量轻价格便宜为学习应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小重量轻抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。因此本设计选用单片机为基础。1.2国内外现状单片机以自身的优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统,智能化仪器仪表,及通讯设备,日常消费类产品,玩具等。并且已经深入到工业生产的各个环节以及人民生活的个层次中,如车间流水线控制自动化控制智能型家用电器等。而美国atmel公司开发生产了新型的8位单片机-at89系列单片机。它不但具有一般mcs-51单片机的所有特征,而且还具有一些独特的优点。国内外为了提高单片机的可靠性均采用了一些新技术:eft技术低噪声布线技术及驱动技术和采用低频时钟等。2系统方案设计2.1系统构成框图基于单片机系统的篮球赛计时计分器的系统构成框图如图1.1所示。图1.1 球赛计时计分器系统图本系统采用单片机at89c51作为本设计的核心元件。利用7段共阴led作为显示器件。在此设计中共接入10个7段共阴led显示器,其中6个用于记录甲、乙两队的分数,每队3个led显示器显示分数范围可达到0-999分,足够满足赛程需要。另外4个led显示器则用来记录赛程的时间,其中2个用于显示分钟,2个用于显示秒钟,赛程计时采用倒计时方式,即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。计时范围可达到0-99分钟,也完全满足实际比赛的需要。其次,为了配合计时起和计分器的校正、调整时间和比分,特定在本设计中设立了7个按键。其中4个用于输入甲、乙两队的分数;另外3个则用于完成设置、调整、启动和暂停赛程时间等功能。再次,还设计了定时报警系统,即比赛时间到,便立即通过扬声器发出报警声,提醒整个比赛结束。2.1.1器件选择本系统在设计过程中主要选取了以下一些器件:1.单片机:at89c512.四七段bcd译码芯片:cd45113.并行/串行转换芯片:cd40944.四输入与门:74ls215.显示器件:7段共阴led显示器6.按键:欧姆龙按键2.2基本功能介绍2.2.1赛程时间设置在附录1所示的计时电路中,按键开关k5、k6用来设置赛程时间。比如:比赛时间上半场为20分钟,则通过按k5键,使数码管1显示“2”即可;再按k6键,设置比赛时间的个位数,使数码管2显示“0”即可。一般比赛时间为40分钟,所以只需要按k5键使数码管1显示“4”,按k6时数码管2显示“0”即可。时间设置好后,等待赛程开始。当比赛结束时名如果由于一些特殊原因需增加比赛时间,这是增加比赛时间同样由按键开关k5、k6用来设置,且方法跟上面一样,但一般情况下只需按k6设置即可。因为加赛时间只有几分钟。2.2.2赛程时间启/停设置当时间设置完后,比如设置赛程时间为45分钟,则在附录1所示的led显示器上显示为4500,45表示分钟,00表示秒钟。这时,如果裁判吹响开始哨声时,则应立即按下按键k7,表示赛程开始,计时显示则由4500变成4459,4458一直计为0000时表示赛程结束。如附录1所示,按键k7为赛程启动和暂停控制。2.2.3比分交换控制比分交换控制由附录1所示的k7键完成。我们知道,因为比分交换是在上半场赛程结束后进行的,也就是说比分交换受赛程时间控制,只有当上半场计时器指示为0000时,按k7键,则会自动交换甲、乙两队的分数。如果上半场时间没到0000时,则此时按以下k7键只会暂停比赛,不能交换分数。如果要继续赛程,再按一次k7即可。因此,k7完成三重功能,即:启动、暂停、比分交换。2.2.4比分刷新控制由于在比赛中,甲、乙两队的比分是不断变化的,所以需设置比分刷新控制装置,此部分功能图由附录2所示的计分电路中的按键开关k1k4完成:1.k1键:完成甲队加1分操作2.k2键:完成甲队减1分操作3.k3键:完成乙队加1分操作4.k4键:完成乙队减1分操作2.2.5计分计时显示计分计时显示器采用7段共阴led显示器显示。其中计分是用6个led显示器,计时用4个led显示器;显示格式为000 000和00 00。2.2.6赛程结束报警挡比赛结束时,系统会发出10秒钟报警声,提示赛程结束。3系统硬件电路的组成系统硬件电路由以下几部分组成:1.单片机at89c51;2.计时电路;3.计分电路;4.报警电路;5.按键开关;说明:整个系统只有一片at89c51;在图中将计时电路与计分电路分开画,只是为了说明问题,并且在画图过程中将at89c51引脚打乱是为了使图示清晰。3.1计时电路1.显示器及其接口显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中常用的是发光二极管显示(led)和液晶显示器(lcd)两种,由于这两种显示器结构简单、价格便宜、接口容易实现,因而得到广泛应用。下面介绍发光二极管显示器(led)的结构、工作原理及其接口电路。(1) led结构与原理led显示器又称数码管,它主要由8段发光二极管组成,如图1.2(a)所示。图1.2(a)中,ag为数字或字符显示段,h段为小数点显示,通过ag为7个ag为数字或字符显示段,h段为小数点显示,通过ag为7个。例如:当a,b,g,e,d段亮时,显示数字“2”,当a,f,e,g段亮时,则显示字母“f”。led可分为共阴极和共阳极两种结构,如图1.2(b)和(c)所示。其中(b)为共阴极结构。即把8个发光二极管阴极连在一起。这时如果需要点亮ag中的任何一盏灯,则只需要在相应端输入高电平即可;输入低电平则截止。比如我们现在要显示数字“3”,只要在对应的a、b、c、d、g段送入高电平,在其它端送入低电平即可,点亮为“3”。图(c)为共阳极结构。其显示端输入低电平有效,高电平截止。图1.2 八段led显示块表1-1列出了共阳极与共阴极led显示器显示数字、字母与显示代码之间的对应关系。表1-1 显示器显示数字、字母与显示代码之间的对应关系显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03fhc087fh80h106hf996fh90h25bha4a77h88h34fhb0b7ch83h466h99hc39hc656dh92hd5eha1h67dh82he79h86h707hf8f71h8eh(2)led显示器显示方式点亮led显示器有两种方式:一是静态显示;二是动态显示。(本设计采用静态显示)所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。如图1.3所示的4位静态led显示器电路。该电路每一位可单独显示,只要在要显示的那位的段选线上保持段选码电平,该位就能保持显示相应的显示字符。这种电路的优点是:在同一瞬间可以显示不同的字符:但缺点就是占用端口资源较多。从图1.3可以看出,每位led显示器需单独占用8根端口线。因而,在数据较多时往往不采用此种设计,而是采用动态显示方式。所谓动态显示,就是要将显示的多位led显示器采用一个8位的段选端口,然后采用动态扫描方式一位一位的轮流点亮各位显示器。如图1.4所示为4位led动态显示电路。图1.3 4位静态led显示器电路图1.4 4位动态led显示器电路在此电路中,单片机的p1口用于控制4位led的段选码;p2口的p2.0p2.3用于控制4位led位选码。由于所有的段选码连在一起,所以同一瞬间只能显示同一种字符。但如果要显示不同的字符,则要借助位选口来控制。(如果led伟共阴则p2.0p2.3输出高电平,为共阳则p2.0p2.3输出为低电平。)例如,现在要输出5678四个数字,则首先应该将“5”的显示代码由p1.0送出。然后p2.0p2.3输出相应位码(共阴led时p2.0p2.3输出1000,共阳led时p2.0p2.3输出0111),可以看到在数码管1上的显示数字“5”。再将显示的数字“5”延时510ms,以造成视觉暂留效果,同时代码由p1.0送出。用同样的方法将其余3个数字“678”送数码管2、3、4显示,最后则可以在4位led上看到“5678”四个数字。为了使显示效果稳定,可以使每个数码管显示的数字不断重复,当重复频率达到一定程度时,加之人眼视觉暂留作用,便可以看到相当稳定的“5678”四个数字。(3)led显示器接口实例由led的结构及工作原理可知,要想在led上显示数据或字母,则首先必须要把待显示的数据或字母转换成led的7位显示代码,方可显示相应的数字和字母。通过实现这种转换有两种方法:一种是专用硬件译码器;另一种是软件译码器2.报警器采用电磁式蜂鸣器作为报警的音响器件。3.计时电路的原理图见附录14.计时电路的工作原理计时电路如附录1所示,主要有按键开关k5k7,单片机at89c51,译码器以及led显示器构成。其工作过程如下:当调时(十位)开关k5按下时,产生一个低电平;立即取00h取出,同时对应调分(十位)控制端p2.0的le输出高电平,表示此时可以向调分(十位)的cd4511发送数据,但cd4511的输出端ag不会有输出,因为le=1时,cd4511锁存。这是只要将要显示数据的代码经cd4511译码后,从输出端ag输出,送led显示器显示。调时按键开关每按一次,数字自动加1,直到调到需要设置的时间即可。调时(个位)的操作方法与上一样。时间设置完后,启动定时器t0开始定时计数。计时采用倒计时,比如:设置的时间为45分钟,则在led上显示4500四位数。定时t0计数60秒后中断返回,继续定时计数下一个60秒;同时则在4位led显示器上显示4459四位数,表示时间已过去1秒钟,即44分59秒,这样一直持续下去,直到变为“0000”时表示赛程结束。如果比赛中裁判叫暂停,只要按一下k7键即可暂停计时。3.2 计分电路1.串行接口8051系列单片机除了有4个8位并行口外,还有一个能同时进行串行发送和接收的全双工串行通信口。它能同时发送和接收数据,还能作为同步移位寄存器用。球赛计分电路正是利用了8051单片机串行口可以外界串行输入并行输出移位寄存作为输出口来实现球赛比分刷新显示的。现在就有关8051系列单片机的串行接口的结构、特点、工作方式以及串行口扩展显示接口的实例进行逐步介绍。(1) 串行口专用寄存器控制串行口的寄存器有两个,即特殊功能寄存器scon和pcon串行口控制寄存器scon特殊功能寄存器scon用于定义串行口通信方式的选择和控制它的某些功能。其字节地址为98h。电源控制寄存器pcon电源控制寄存器pcon,没有位寻址功能,直接地址为87h。但pcon中的最高位smod与串行口的波特率设置有关。当smod=1时,方式1、方式2、方式3的波特率加倍。(2)串行口的工作方式8051有4种工作方式:方式0、方式1、方式2、方式3。串行口由scon中的sm0、sm1选择4种工作方式。如表1-2所示。表1-2 串行口方式选择sm0sm1方式功能说明波特率000移位寄存器方式fosc/120118位uart可变1029位uartfosc/64或fosc/321139位uart可变 方式0(在计分电路中,需现实的积分数据采用此种方式传给cd4094的)串行口工作方式0的特点如下:1.为移位寄存输入输出方式,可外接移位寄存器,以扩展i/o接口,也可外接同步输入输出设备。2.波特率固定:为fosc/12。3.同步发送/接收8位数据,数据通过rxd引脚输入/输出,txd提供输出移位时钟4.同步发送/接收8位数据,低位在先。串行口工作在方式0时的数据发送:5.当执行一条movsbuf,a指令时,启动发送操作,由txd提供输出移位时钟,由rxd串行发送sbuf中的数据。发送完8位数据后自动置位t1=1,请求中断。要继续发送时t1必须由指令清零(t1=0)。串行口工作在方式0时的数据接收:6.在r1=0条件下,置ren=1时,启动一桢数据的接收,由txd提供输出移位时钟,由rxd接收串行数据到a中,接收完一桢数据后自动置位r1,请求中断,想要继续接收时要用指令清除r1。 方式1串行口工作方式1的特点如下:1.波特率是可变的,取决于定时器1或2的溢出速率。2.8位异步通信接口。3.传送1桢信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。串行口工作在方式1时的数据发送:4.当执行一条movsbuf,a指令时,a中数据从txd端异步发送。发送完一桢数据t1=1。请求送中断。要继续发送时,需t1指令清零(t1=0)。串行口工作在方式1时的数据接收:5.当执行一条movsbuf,a指令时,a中数据从txd端异步发送。发送完一帧数据ti=1,请求中断,要继续发送时,需ti指令清零(ti=0)。串行口工作在方式1时的数据接收:6.当置位ren时,串行口采样rxd,当采样到1至0的跳变时,确认串行数据帧的起始位,开始接收一帧数据,直到停止位到来时,把停止位送入rb8中,置位ri请求中断并通知cpu从sbuf中取走接收的数据。ri由指令清零。 方式2和方式3串行口工作方式2和方式3时的特点如下:1.两种方式的波特率不同,方式2的波特率是固定的:fosc/64或fosc/32;方式3的波特率是可变的。2.9位异步通信接口3.传送1帧信息都为11位:1位起始位(0),8位数据位(低位再先),1位可编程位(即第9位数据)和1位停止位(1)方式2和方式3的数据发送:4.是由执行任何一条以sbuf,作为目的寄存器的指令来启动的。由“写入sbuf”信号把8位数据装入sbuf,同时还把tb8装到发送移位寄存器的第9位位置上,并通知发送控制器要求进行一次发送。发送开始,把一个起始位(0)放到txd端。经过一位时间后,数据由移位寄存器送到txd端,通过第一位数据,出现第一个一位脉冲。在第一次移位时,把一个停止位“1”由控制器的停止位送入移位寄存器的第9位。此后,每次移位时,把0送入第9位。因此,当tb8的内容移到移位寄存器的输入位置时,其左面一位是停止位“1”,再往左的所有位是0,这种状态由噢监测器检测到后,就通知发送控制器做最后一次移位。然后置ti=1,请求中断。第9位数据(即scon中的tb8的值)由软件置位或清0,可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志位。如果把tb8作为奇偶校验位,可以在发送中断服务程序中,在数据写入subf之前,先将数据的奇偶位写入tb8。方式2和方式3的数据接收:5.数据从rxd端输入,接受过程由rxd端检测到负跳变,16分频计数器就立即复位,同时把1ffh写入输入移位寄存器。技术器的16个状态把一位时间等分为16份,在每一位的第7、8、9个状态时,位监测器对rxd端的值采样。如果所接受到的起始位不是0,则复位接受电路,等待另一个负跳变的到来。若起始位0移到最左面时,通知接受控制器进行最后一次移位。把8位数据装入接受缓冲器。第9位数据装入scon中的rb8,并置中断装置ri=1。数据装入接受缓冲器和rb8,并置位ieri。只在产生最后一个移位脉冲时,并且要满足下列条件:(1)ri=0,sm2=0;(2)接受到的第9位数据为1时,才会进行。如果不满足上述条件,接收到的数据信息就会丢失,而且中断标志ri不置1。请注意与方式1的区别。在方式2和3中装入rb8的是第9位数据,而不是停止位(方式1中装入的德式停止位)。所接受的停止位的值可用于多机处理(多机通信中的地址/数据标志位),也可作奇偶校验位。(3)串行口扩展显示接口的实例接口电路mcs-51单片机应用系统中,当不用做串行通信时,可用来扩展并行i/o口(设定串行口工作在移位寄存器,方式0状态下)。用于显示器接口时,使用串行输入、并行输出移位寄存器74ls164,每接一片74ls164可扩展一个8位并行输出口,用以连接一个led段选口做静态显示使用。图1.5所示的为8051串行口扩展显示器接口电路。图中画出两位led静态显示。可根据需要任意扩展。每扩展一片74ls164,可增加一位led显示器。图1.5 串行口扩展显示接口74ls164是串行输入,并行输出移位寄存器,并带有清除端,其外部引脚如图1.6所示。各引脚说明如下:图1.6 74ls164引脚分布图1.q0q7:并行输出端。2.b:串行输入端。3.cr:清除端,零电平时,使74ls164输出清零。4.cp:时钟脉冲出入端,在cp74ls脉冲中的上升作用下实现移位。在cp=0,cr=1时,74ls164保持原来数据状态。串行/并行转换芯片在附录2所示的计分电路中,使用集成电路cd4094。cd4094是8位移位寄存器,它主要完成串行输入,并行输出8位数据的功能,所以又叫8位串/并转换器,其引脚分布如图1.7所示。其中2脚data为串行数据输入脚;3脚clock为时钟脉冲输入;4、5、6、7、14、13、12、11脚为并行8位数据输出;8脚接地;16脚接电源5v。图1.7 cd4094引脚分布图2.比分校正控制电路比分校正控制电路有4输入与门74ls21和4个按键组成,其中k1、k2接74ls21的9、10脚,完成甲队加减分控制;k3、k4键接74ls31的12、13脚,完成乙队加减分控制。有关74ls21集成电路的引脚分布及内部构成如图1.8所示。图1.8 74ls21引脚分布图1.14脚为电源脚2.7脚接地3.1、2、4、5、9、10、12、13为与门输入脚4.6、8脚为与门输出脚3.计分电路原理图见附录24.计分电路的工作原理计分电路主要有单片机at89c51、串/并转换器、led显示器、74ls21以及按键开关组成。其工作过程如下,按键开关k1k4组成甲乙两队加减分控制。按键开关k1k4一端接地,另一端输入与门74ls21的9、10、12、13脚以及单片机at89c51的p3.5、p3.4、p0.2、p0.1。当k1k4四个按键的任何一个一位按下时,与门的8脚输出都会产生低电平使单片机发生中断,从而使相应led显示。因为按键开关按下时为低电平。例如:现在以乙队加分为例,来说明整个过程,假设比赛刚开始,双方比分为000 000,某一时刻后,当乙队加分时,则按下k3,这时k3=0(低电平),其余k1k2k4=111(为高电平),k1k2k3k4相与的结果为低电平,这时与门8脚输出低电平到at49c51的p3.2脚,使其外部中断int0发生中断,从而调用中断服务程序,将要显示的数据从程序中定义的led显示常数表tab中取出数据06h(因为led显示常数表tab的偏移地址为33h,33h首先指向led显示常数表tab中的第一个数据3fh,当k3按下时,相当于将33h地址加1,这时便指向第二数据06h)经串行发送端p3.0送至串/并转换器cd4094的输入端第2脚(数据输入data)。由于串行口的工作方式设置为方式0。所以在串行数据通过rxd引脚输出时,则txd引脚会输出多位时钟作为移位脉冲,将8位数据顺利送到cd4094中。另外在rxd引脚输出数据的同时,单片机p3.7脚输出高电平给cd4094的第一脚str(使能控制端),使前一片cd4094中的8位数据从qs移位至下一片cd4094输入端的第2脚。在rxd引脚输出数据过程中连续使单片机p3.7脚输出6次高电平,这样便使6篇cd4094中显示代码送led显示器显示,便得到显示为000 001。因为在程序中定义33h、35h、36h、37h、38h,6地址单元,分别对应乙队、甲队6个led显示器在程序中定义的led显示常数表tab中的偏移首地址。单片机的rxd每次发送6个数据,分别对应以33h、34h、35h、36h、37h、38h为偏移首地址单元里的数据。例如:乙队加分表示以33h为偏移首地址的单元加1,指向第二个数据06h,其他以34h、35h、36h、37h、38h为偏移首地址单元里的数据仍指向第一个数据3fh,这样将这6个数据:06h、3fh、3fh、3fh、3fh、3fh经单片机的rxd发送出去,再在单片机p3.7脚输出的6次高电平作用下产生6次移位,便在6片cd4094中得到显示代码:3fh、3fh、3fh、3fh、3fh、06h。然后在p3.7=0时显示为:000 001。3.3球赛计时计分器的工作过程首先在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管全部显示为000 000和000 000;然后我们按计时电路中的k5按键来设置比赛时间的十位数,例如比赛上半场时间为20分钟,则通过k5键,使数码管1显示“2”即可;再按k6键,设置比赛时间的个数位,使数码管2显示“0”即可。一般比赛时间为40分钟,随时只需按k5显示4,按k6显示0即可。时间设置好时,等待赛程开始,当裁判吹响开始哨声时,立即按k7键启动计时,这时计时电路便工作,计时采用倒计时方式,即从20分钟减为0分钟表示上半场结束。上半场结束时,蜂鸣器会发出10秒钟响声,通知上半场结束,这时按一下k7键,便完成甲乙两队的分数交换。在整个赛程中,我们还要对两队的比分进行及时刷新,这时我们通过计分电路中的k1k4键完成此功能,可、k2键完成甲队加减分,k3、k4键完成乙队加减分。按键每按一次表示加或减一分。由于加、减分我们采用中断完成,且加、减分的中断优先权小于计时电路的中断优先权,所以不会对计时电路造成影响。如果在比赛过程中,一方教练喊暂停,经裁判批准,我们立即按k7键,即可以暂停计时,暂停时间到时,再按k7键继续计时,直至上半场赛程结束,蜂鸣器会发出10秒钟的响声。下半场和上半场一样。4 单片机软件设计4.1 篮球赛计时计分器程序流程图开始定时清0甲乙两队分数清零设置定时时间如:20分钟yn启动键是否按下倒计时开始定时y定时时间到否喇叭响10秒暂停键是否按下nn交换建是否按下yn k1k2k3k4是否按下yy甲乙两队交换分数并显示对应甲乙两队加减分数n4.2 篮球赛计时计分器源代码org 0000hajmp lk1 ;主程序地址org 000bh ;定时中断入口地址ajmp ctcoorg 0013h ;外部中断入口地址ajmp cxtlk1: mov 33h,#00h ;甲队计分清零mov 33h,#00hmov 34h,#00hmov 35h,#00hmov 36h,#00h ;乙队计分清零mov 37h,#00hmov 38h,#00hmov 40h,#00h ;计时分钟清零mov 41h,#00hclr p0.0mp: clr p2.0 ;计时牌子清零clr p2.1 ;分分秒秒清零clr p2.2clr p2.3mov p1,#00hnopnopsetb p2.0setb p2.1setb p2.2setb p2.3mov 42h,#05h ;送秒钟初值59秒mov 43h,#09hmov scon,#00h ;计分牌子清零程序clr p3.7mov r1,#33hmov r2,#06hlp: mov a,r1mov dptr,#tab ;取显示数movc a,a+dptrmov sbuf,a ;通过串行口发显示数据jnb ti,$ ;是否发送完毕clr ti ;清除标志位inc r1djnz r2,lp ;6次是否发送完毕setb p3.7 ;显示数据lk3: jb p2.4,lk6acall d10msjb p2.4,lk3acall d2slk4: jb p2.4,lk3 ;调整分钟(十位)clr p2.0 ;显示分钟十位数据mov p1,40hsetb p2.0acall d2s ;调用延时程序inc 40h;将十位加1mov a,40hcjne a,0ah,lk4 ;十到了没有mov 40h,#00hajmp lk4lk6: jb p2.5,lk5acall d10msjb p2.5,lk6acall d2slk7: jb p2.5,lk6 ;调整分钟(个位)acall d2s ;显示分钟个位数据jb p2.5,lk6clr p2.1mov p1,41hsetb p2.1acall d2s ;调用延时程序inc 41h ;将个位加1mov a,41hcjne a,#0ah,lk7 ;十到了没有mov 41h,#00hajmp lk7lk5: jb p2.6,lk3 ;等待启动计时acall d10msjb p2.6,lk5clr p2.2 ;显示秒钟十位mov p1,42hnopnopsetb p2.2clr p2.3 ;显示秒钟个位mov p1,43hnopnopsetb p2.3setb p0.0 ;点亮计时指示灯mov tmod,#01h ;定时中断初始化mov tl0,#0b0h ;送定时初值mov th0,#3chsetb easetb et0 ;开放定时中断setb ex1 ;开放外部中断clr it0 ;外部中断低电平有效setb tr0 ;启动定时mov r0,#14hsjmp $ctco: jnb p3.2,lk8 ;定时中断程序djnz r0,next ;一秒钟到了吗?mov r0,#14hdec 43hclr p2.3 ;显示时间mov p1,43h ;显示秒钟个位nopnopsetb p2.3clr p2.2 ;显示秒钟十位mov p1,42hnopnopsetb p2.2clr p2.1 ;显示分钟个位mov p1,41hnopnopsetb p2.1clr p2.0 ;显示分钟十位mov p1,40hnopnopsetb p2.0mov a,43hcjne a,#00h,next ;秒钟个位回到0没有mov 43h,#0ah ;秒钟个位送初值10mov a,42hcjne a00h,lp3 ;秒钟十位回到0没有mov 42h,#05h ;秒钟初值送初值5mov a,41hcjne a,#00h,lp2 ;分钟个位回到0没有mov 41h,#09h ;分钟个位送初值9mov a,40hcjne a,#00h,lp1 ;分钟十位回到0没有clr p0.0clr p3.6 ;时间到发出警备10sacall d10ssetb p3.6kp11: jb p2.6,kp11 ;等待交换ajmp kp12 ;去两队分数交换程序lk8: acall d10msjb p2.6,ctco ;计时暂停处理clr p0.0lk9: jnb p2.6,lk9 ;等待键按下lk10: jb p2.6,lk10 ;等待键放开setb p0.0 ;继续计时ajmp ctcolp3: dec 42h ;将秒钟十位减1ajmp nextlp1: dec 40h ;将分钟十位减一ajmp nextlp2: dec 41h ;将分钟个位减一next: mov tl0,#0b0h ;定时中断送初值返回mov th0,#3chretikp12: mov a,33h ;甲乙两队交换分数xch a,36hmov 33h,amov a,34hxch a,37hmov 34h,amov a,35hxch a,38hmov 35h,aajmp mp ;返回显示交换后的分数cxt: jnb p3.5,kp1 ;甲队+1jnb p3.4,kp2 ;甲队-1jnb p0.2,kp3 ;乙队+1jnb p0.1,kp4 ;乙队-1ajmp kp6kp1: inc 36h ;甲队+1程序mov a,36hcjne a,#0ah,kp5mov 36h,#00hinc 37hmov a,37hcjne a,#0ah,kp5mov 37h,#00hinc 38hajmp kp5kp2: mov a,36h ;甲队-1程序cjne a,#00h,ap1mov 36h,#09hdec 37hajmp kp5ap1: dec 36hajmp kp5kp3: inc 33h ;乙队+1程序mov a,33hcjne a.#0ah,kp5mov 33h,#00hinc 34hmov a,34hcjne a,#0ah,kp5mov a,34hcjne a,#0ah,kp5mov 34h,#00hinc 35hajmp kp5kp4: mov a,33h ;乙队-1程序cjne a,#00h,ap2mov 34h,#09hdec 35hajmp kp5ap2: dec 34hkp5: clr p3.7 ;显示分数mov r1,#33hmov r2,#06hmov a,r1mov dptr,#tab ;查找显示数据movc a,a+dptrmov sbuf,a ;通过串行口发送显示jnb ti,$ ;串行口是否发送完毕clr ti ;串行口标志清0inc r1djnz r2,lp6 ;6次是否发送完毕setb p3.7jnb p3.3,kp6 retidb 3fh,06h,5bh.4fh,66h,6dh,7dh,07h,7fh,6fh,00h mov 50h,#05h ;延时程序10smov r3,#0ah ;延时程序2smov r7,#14hmov r6,#05hmov r5,#0f9hnopnopdjnz r5,loop2djnz r6,loop3djnz r7,d10msdjnz r3,d200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店多元化客源开发策略培训
- 地产合同范本库
- 发货合同范本俄语
- 家具品牌加盟合同范本
- 甘肃省陇南市(2024年-2025年小学五年级语文)人教版专题练习((上下)学期)试卷及答案
- 学校教师劳动协议合同范本
- 收购旧机床设备合同范本
- 物联网技术支持合同范本
- 巡逻摩托车维修合同范本
- 专题19 作文(知识梳理+考点精讲精练+实战训练)(含答案解析)
- 拆除学校施工方案
- 机械气道廓清技术临床应用专家共识2023(完整版)
- 财产混同专项审计报告范文
- 汽车租赁服务投标方案
- 110报警服务台接处警登记表
- 干细胞治疗流程
- 环评申请表范本
- 公司销售部职能说明书表格
- 《大学生心理健康教育》(教案) 第十课 恋爱与性切勿草率-大学生恋爱和性心理健康
- 处方点评工作表
- 高龄老人租房免责协议
评论
0/150
提交评论