您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计报告2
单片机课程设计报告——用8031单片机CPU及接口电路设计一个时钟学号:0828030078姓名:张会晓专业:计算机科学与技术班级:08级1班指导老师:石军亮时间:2010年12月28日目录第一章设计说明…………………………………………………………..11.1设计内容……………………………………………………………….11.2设计要求……………………………………………………………….11.3设备及工作环境………………………………………………………..1第二章硬件方案………………………………………………………….12.1设计思路……………………………………………………………….12.2原理及电路图………………………………………………………….22.3主要元件功能说明……………………………………………………..22.4硬件工作原理阐述……………………………………………………..3第三章软件方案………………………………………………………….33.1分析论证……………………………………………………………….33.2程序流程图……………………………………………………………53.3程序清单………………………………………………………………7第四章调试过程及结果分析……………………………………………13第五章设计总结…………………………………………………………13参考文献…………………………………………………………………..141第一章设计说明1.1设计内容用8013单片机CPU及接口电路设计并实现显示时间的实时时钟。1.2设计要求(1)在ZY15MCU12BD型综合单片机试验箱的硬件结构上编写软件完成设计。(2)程序的首地址应使目标机可以直接运行,即从0000H开始。在主程序的开始部分必须设置一个合适的栈底。程序放置的地址须连续且靠前,不要在中间留下大量的空间地址,以使目标机可以使用较少的硬件资源。(3)6位LED数码管从左到右分别显示时.分.秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后变成000000.(4)在XD1—2键盘上选定3个键分别作为小时.分.秒的调校键。每按一次键,对应的显示值便加1。分.秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变).(5)软件设计必须使用8031片内定时器,采用定时中断结构,不得使用软件延时法。(6)上机调试程序。(7)写出设计报告。1.3设备及工作环境(1)硬件:计算机一台、ZY15MCU12BD型综合单片机实验箱一台、通讯电缆一根。(2)软件:Windows操作系统、KeilC51软件。第二章硬件方案2.1设计思路电子时钟主要由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到242时,要清零。这样,才能循环记时。2.2原理及电路图8031逻辑框图及管脚配置2.3主要硬件元件功能说明2.3.18255A的主要功能:本数字时钟采用8255接口芯片作为显示/键盘接口电路。适用线选法对80553选中其工作。方法为:在P2.6引脚上接一反相器与8255的片选线CS(底电平有效)相连。当P2.6=1则表示地址4000H,此时CS=0。此时选中8255工作且选中地址4000H。对8255接口电路8255的地址分配:A口:4000HB口:4001HC口:4002H控制口:4003H.。8031的P0口与8255的数据线相连,同时P0口接一个锁存器,即74LS373的Q0、Q1与8255的地址线A0、A1相连。当ALE=1时,锁存器74LS373工作,锁存地址A0、A1,A1A0有四种组合00、01、10、11这与线选初始地址4000H结合可得到四个地址4000H、4001H、40002、4003H,此时可正好分配8255的4个端口地址,即A口:4000H、B口:4001H、C口:4002H控制口:4003H2.3.289C51的主要功能:89C51是8位CPU,具有片内振荡器和时钟电路,2个16位的定时器/计数器,5个中断源,两个中断优先级。本实验中使用的是8031单片机。8031的内部没有ROM,需外接外部ROM,但本实验硬件中不需要扩展外部ROM电路图。2.3.3时钟电路的主要功能:8031单片机的时钟信号通常用内部振荡方式得到:在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。2.4硬件工作原理阐述电子时钟主要由8031片内定时器定时中断,并取一存储单元作为计数器使用,每中断一次,在中断服务程序中使计数器加1、8031芯片、74LS373锁存器、8255A接口芯片、74LS240驱动器、LED数码显示管和4*4键盘组成。主要用8031片内定时器定时中断服务程序完成秒、分、时的运算即计时功能,TIME0的中断服务程序完成调时、调分、调秒功能。8255A负责将内存里的时位、分位和秒位数值输出到数码管。同时按键01键、02键、03键是分别对时、分、秒的加1校对;05键、06键、07键时分别对时、分、秒的减1校对;00键是清零键。并且开机时时钟时从000000开始计时的,到235959时在回到000000.第三章软件方案3.1分析论证4此实时时钟的设计与实现,主要采用了6只LED数码管,8031内部二进制16位定时器/计数器,可编程中断控制器8031等芯片,包括显示模块,运算模块和校时模块三大功能模块。3.1.1、显示模块:用8255控制,用数码管的显示功能来设计。显示部分硬件用六只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这8只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的数字。该模块主要是将运算模块和校时模块运算出来并存放在内存单元里的十六进制表示的时位、分位和秒位数值转化为十进制,并通过8只数码管显示出来。该模块实现的硬件是DVCC-8086JH实验箱中的LED单元,采用软件译码,即在程序中设置一个段选码表。CPU直接往LED输出八段代码,省去了硬件译码器。A0~A3作为8段数据输出口,经74LS07驱动后到达各LED。只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使6只LED依次出现数字显示。3.1.2、运算模块:该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现。本实验中用8031定时器/计数器,但因为8031供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8031工作方式为方式1,产生一个50ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8031的IR1号中断来实现,但由于每50ms一次中断请求,所以在中断服务程序必须利用已申请内存单元26H来统计中断请求的次数,只有当26H的值为20时,才能让秒单元内的数值加1。在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。当时加到24时,直接清零。然后转到调用处。53.1.3、校时模块:该模块主要功能是修改时、分、秒内存单元的数值。每按一次键,对应的显示值便加1。分、秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变)。注意:在主程序中对时间进行调校前应关闭中断,以防在调校过程中定时中断服务程序也对时间进行修改而造成混淆。3.1.4、整体功能:在6块LED数码管上能实现数字时钟的时、分、秒显示,并能对时、分、秒进行加1校对、减1校对和清零。本实验中01键、02键、03键是分别对时、分、秒的加1校对;05键、06键、07键时分别对时、分、秒的减1校对;00键是清零键。并且开机时时钟时从000000开始计时的,到235959时在回到000000.3.2程序流程图NNN初始化(定时器、显示区、中断系统、计数单元等)开中断调用显示子程序调用键盘扫描子程序有键按下?分加1处理关中断秒键?秒加1处理秒加1处理秒键?分键?有键按下?开中断初始化(定NNNN开始6NNNN定时器中断处理重送初值保护现场计数单元加1到1秒?秒加1秒到60?秒清0、分加1分到60?分清0、小时加1小时到24?开始7图2定时器中断程序流程图3.3程序清单ORG0000HLJMPSTARTORG000BHLJMPTIME0START:MOVSP,#60HAGAIN:CPLP1.0MOVR0,#10LOOP1:MOVR1,#100LOOP2:MOVR2,#250DJNZR2,$DJNZR1,LOOP2DJNZR0,LOOP1MOVDPTR,#4003H;8255初始化MOVA,#10000001BMOVX@DPTR,AMOVTMOD,#01H;选择方式.MOVTH0,#3CHMOVTL0,#0B0HMOV20H,#00H;赋初值MOV21H,#00HMOV22H,#00HMOV23H,#00HMOV24H,#00HMOV25H,#00HMOV26H,#00HLOOP:MOVIE,#82H;开中断SETBTR0;启动T0计数8LCALLDISLCALLKEYCJNEA,#0FFH,DDDD;若有键按下,DDDDSJMPLOOP;无键按下,则转LOOPDDDD:MOVIE,#00H;关中断CJNEA,#03H,LOOP3;按下的键为秒键往下执行INC25HMOVA,25HCJNEA,#10,LOOPMOV25H,#0INC24HMOVA,24HCJNEA,#6,LOOPMOV24H,#0SJMPLOOPLOOP3:CJNEA,#02H,LOOP4;按下的键为分键往下执行INC23HMOVA,23HCJNEA,#10,LOOPMOV23H,#0INC22HMOVA,22HCJNEA,#6,LOOPMOV22H,#0SJMPLOOPLOOP4:CJNEA,#01H,LOOP4B;按下的键为小时键往下执行INC21HMOVA,21HCJNEA,#10,LOOP5MOV21H,#0INC20HLOOP4B:CJNEA,#00H,LOOP4CMOV20H,#00HMOV21H,#00HMOV22H,#00HMOV23H,#00HMOV24H,#00HMOV25H,#00HLOOP5:MOVA,20HSWAPAORLA,21HCJNEA,#24H,LOOP9MOV20H,#0MOV21H,#0SJMPLOOP--各键减1校时程序----------LOOP00:LJMPLOOPLOOP4C:CJNEA,#07H,LOOP30MOVA,25HDEC25HCJNEA,#0,LOOP00MOV25H,#9MOVA,24HDEC24HCJNEA,#0,LOOP00MOV24H,#5SJMPLOOP00LOOP30:CJNEA,#06H,LOOP40MOVA,23HDEC23HCJNEA,#0H,LOOP00MOV23H,#9MOVA,22HDEC22HCJNEA,#0,LOOP00MOV22H,#5SJMPLOOP00LOOP40:CJNEA,#05H,LOOP00MOVA,21HCJNEA,#0,LOOP5AMOVA,20HCJNEA,#0,LOOP5BMOV21H,#3MOV20H,#2SJMPLOOP00LOOP5A:DEC21HLJM
本文标题:单片机课程设计报告2
链接地址:https://www.777doc.com/doc-2606756 .html