ZLG单片机频率计和LED显示的设计_第1页
ZLG单片机频率计和LED显示的设计_第2页
ZLG单片机频率计和LED显示的设计_第3页
ZLG单片机频率计和LED显示的设计_第4页
ZLG单片机频率计和LED显示的设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计说明书 第 23 页 共 23 页1 绪论随着计算机技术的发展,单片机技术已成为计算机技术的一个独特分支,在应用领域也越来越广泛,特别在工业控制和仪器仪表智能化中扮演着重要的角色。7290键盘显示的设计能加深用户对I2C总线的理解,熟悉I2C器件ZLG7290的使用,提供用户实际开发的能力。频率计用来测量、显示各种信号频率。它在工业测量、科学研究等领域作为一种测量工具有着比较广泛的应用。基于单片机的频率计的设计可以加强用户对单片机的理解能力,在以后的开发和应用上有很大的帮助。11 课题背景及意义 本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现。该课程设计的主要社务是通过解决一,两个实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬件知识的理解,获得初步的应用经验,为以后从事生产和科技工作打下一定的基础。12 课题设计任务1.2.1 周立功7290键盘显示的设计技术要求:利用51单片机,7290接口芯片设计一个键盘显示系统,要求8位显示,16个按键,通过汇编语言定义每个按键的功能,并显示出各种结果。工作要求:画出设计原理图,编写出软件,并调试出各种功能。实验设备及器件:IBM PC机 一台,DP_51PROC单片机综合仿真实验仪一台1.2.2 频率计的设计技术要求:利用51单片机,键盘显示系统,设计一个频率计,可以显示3位有效数字,通过汇编语言设计。工作要求:画出设计原理图,编写软件程序,并调试出各种功能。实验设备及器件:IBM PC机 一台,DP_51PROC单片机综合仿真实验仪一台,信号发生器一台。2 总体方案论证21 周立功7290键盘显示的设计方案ZLG7290提供数据译码和循环、移位、断寻址等控制,可以检测任意一个按键的连击次数和自动消除抖动的功能。他采用I2C总线接口,与嵌入式控制器的连接只需要2根线,不但减少了传统数码管电路设计中对端口的占用,同时硬件电路设计也十分简单。利用实验箱上的SCL,SDA,RST_L,INT_KEY端分别连接ZLG单片机的P16,P17,P10,INTO端口。通过控制键盘驱动程序使得实验结果在LED数码管上显示。2.1.1 周立功7290键盘显示的设计流程图开始初始化按键输入数值程序读取LED显示结束22 频率计设计方案单片机内部具有2 个16 位定时/ 计数器,定时/ 计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。设计综合考虑了频率测量精度和测量反应时间的要求。用定时器0作为定时器,定时1秒;用定时器1作为计数器,对输入的脉冲进行技术。利用ZLG7290键盘显示芯片在LED上显示五位的频率数值。2.2.1 周立功7290键盘显示的设计流程图开始初始化调用延时子程序外部输入脉冲启动输入定时/计数器数码管显示结果3 硬件电路设计31 单片机系统单片机系统拓展一般是以基本的最小系统为基础的。最小系统是指一个真正可用的单片机最小配置系统。本次设计使用了ZLG单片机的最小系统。32 硬件设计的原理图数码管数码管显示电路模块7290键盘显示的设计原理图33 硬件部分的设计步骤3.2.1 周立功7290键盘显示的设计步骤(A) 使用导线连接D5区的SCL、SDA到A2区得P16、P17(SCLP16、SDAP17),连接D5区的RST_L、INT_KEY 到A2区得P10、INTO(RST_L P10、INT_KEY INTO),短接D5区得JP1跳线。(B) 把模拟I2C软件包“VIIC_51.C”文件加入到Keil C51的项目中,程序源文件的开头包含“VIIC_C51.H”头文件。修改VICC_C51.C文件中的sbit SDA=P1.7;sbit SCL=P1.6。(C) 对ZLG7290键盘LED控制器的操作也同理,只是在程序开始的地方增加复位操作和程序中间增加查询是否有键按下。另外还要增加ZLG7290软件包“ZLG7290.C”文件加入到Keil C51的项目中,程序源文件的开头包含“ZLG7290.H”头文件。3.2.2 频率计的设计步骤(A) 首先按实验十一的555多谐振荡器电路图连接,其中将474电容换为104电容。(B) 用导线连接A2区的T1与C6区的OUT(即555的输出)。(C) 用导线连接A2区的P16与D5区的SCL。(D) 用导线连接A2区的P17与D5区的SDA。(E) 将D5区的RET_L连接到+5V。(F) 短接C6区的JP5的555电源跳线和D5区JP1的电源跳线。(G) 编写程序并运行,可以在D5区的数码管上显示频率值。4 软件设计部分41 7290键盘显示的程序SDA BIT P1.7SCL BIT P1.6RST BIT P1.0KEY_INT BIT P3.2MTD EQU 40HMRD EQU 49HZLG7290 EQU 70HACK BIT 10HSLA DATA 50HSUBA DATA 51HNUMBYTE DATA 52HORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#70H CLR RST LCALL DELAY SETB RSTLCALL DELAYMAIN1:MOV r4,#67H MOV R7,#08H MAINLOOP: JNB KEY_INT,KEY_HANDLESJMPMAINLOOPKEY_HANDLE:MOV SLA,#ZLG7290MOV SUBA,#01HMOV NUMBYTE,#01HLCALL IRDNBYTELCALL DELAY;MOV R7,#08H;MOV A,#67HHANDLELOOP:mov a,r4MOV MTD,APUSH ACC;MOV 30H,R7MOV A,MRDcjne A,#10H,NEXTMOV MRD,#0HNEXT:MOV MTD+1,MRDMOV SLA,#ZLG7290MOV SUBA,#07HMOV NUMBYTE,#02HLCALL IWRNBYTELCALL DELAY;SUING 2;MOV R7,30HPOP ACCdec r4DJNZ R7,MAINLOOPSJMP MAIN1DELAY:MOV R5,#50Hdelay1:mov r6,#0ffhdjnz r6,$djnz r5,delay1RETSTART:SETB SDANOPSETB SCLacall waitCLR SDAacall waitCLR SCLNOPRETSTOP: CLR SDANOPSETB SCLacall waitSETB SDAacall waitRETMACK:CLR SDANOPNOPSETB SCLacall waitCLR SCLRETMNACK:SETB SDANOPNOPSETB SCLacall waitCLR SCLNOPNOPRETCACK:SETB SDANOPNOPSETB SCLCLR ACKNOPNOPMOV C,SDAJC CENDSETB ACKCEND:NOPCLR SCLNOPRETWRBYTE:MOV R0,#08HWLP:RLC AJC WR1SJMP WR0WR1:SETB SDANOPSETB SCLacall waitCLR SCLSJMP WLP1WR0:CLR SDANOPSETB SCL acall waitCLR SCLWLP1:DJNZ R0,WLPNOPRETRDBYTE:MOV R0,#08HRLP:SETB SDAacall waitSETB SCLacall waitMOV C,SDAMOV A,R2CLR SCLRLC AMOV R2,Aacall waitDJNZ R0,RLPRETIWRNBYTE:MOV A,NUMBYTEMOV R3,ALCALL STARTMOV A,SLALCALL WRBYTELCALL CACKJNB ACK,RETWRNMOV A,SUBALCALL WRBYTELCALL CACKMOV R1,#MTDWRDA:MOV A,R1LCALL WRBYTELCALL CACKJNB ACK,IWRNBYTEINC R1DJNZ R3,WRDARETWRN:LCALL STOPRETIRDNBYTE:MOV R3,NUMBYTELCALL STARTMOV A,SLALCALL WRBYTELCALL CACKJNB ACK,RETRDNMOV A,SUBALCALL WRBYTELCALL CACKLCALL STARTMOV A,SLAINC ALCALL WRBYTELCALL CACKJNB ACK,IRDNBYTEMOV R1,#MRDRDN1:LCALL RDBYTEMOV R1,A;NOP;+1;NOP;+1DJNZ R3,SACKLCALL MNACKRETRDN:LCALL STOPRETSACK:LCALL MACKINC R1SJMP RDN1wait:nopnopnopnopnopretend42 频率计的设计程序SDA BIT P1.7SCL BITP1.6RST BITP1.0KEY_INT BITP3.2MTD EQU40HMRD EQU49H;定义器件地址,变 ZLG7290 EQU 70H ACK BIT 10H SLA DATA 50H SUBA DATA 51H NUMBYTE DATA 52H ORG 0000H LJMP MAIN ORG 000BH LJMP PIT0 ORG 0100HMAIN: MOV SP,#70H MOV R2,#00H MOV 60H,#00H CLR RST LCALL DELAY SETB RST LCALL DELAYmain2: setb rs0 clr rs1 mov r4,#61h MOV R7,#02H mov r2,#0h clr rst LCALL DELAY SETB RSTloop1: MOV SLA,#ZLG7290 MOV SUBA,#07H MOV NUMBYTE,#02H ;POP ACC mov MTD,r4 mov a, r2 MOV dptr,#disword1 movc a,a+dptr mov MTD+1,a LCALL IWRNBYTE LCALL DELAY LCALL DELAY LCALL DELAY inc r2 dec r4 DJNZ R7,LOOP1 LCALL DELAYLCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAYmain3: setb rs0 clr rs1 mov r4,#64h MOV R7,#03H mov r2,#02h clr rst LCALL DELAY SETB RSTloop2: MOV SLA,#ZLG7290 MOV SUBA,#07H MOV NUMBYTE,#02H ;POP ACC mov MTD,r4 mov a, r2 MOV dptr,#disword1 movc a,a+dptr mov MTD+1,a LCALL IWRNBYTE LCALL DELAY LCALL DELAY LCALL DELAY inc r2 dec r4 DJNZ R7,LOOP2 LCALL DELAYCOUNTER: MOV TMOD,#51H MOV TL0,#00H MOV TH0,#40H SETB ET0 SETB TR0 MOV TL1,#00H MOV TH1,#00H SETB EA SETB ET1 SETB TR1HERE: AJMP HEREmain1: mov r4,#67h MOV R7,#03H LCALL DELAY MOV A,60H MOV B,#100 DIV AB MOV R1,#20H MOV R1,A INC R1 MOV A,#10 XCH A, B DIV AB SWAP A ADD A,BMOV B,A SWAP A ANL A,#0FH MOV R1,A INC R1 MOV A,B ANL A,#0FH MOV R1,A MOV R1,#20Hloop: MOV SLA,#ZLG7290 MOV SUBA,#07H MOV NUMBYTE,#02H mov MTD,r4 MOV A, R1 mov MTD+1,a LCALL IWRNBYTE LCALL DELAY LCALL DELAY LCALL DELAY inc r1 dec r4 DJNZ R7,LOOP MOV R2,#00H MOV 60H,#00H LJMP SSETPIT0: CLR TR0 CLR TR1 INC R2 MOV A,R2 CJNE A,#14H,ADDER ;RETI LJMP MAIN1ADDER: MOV A,60H ADD A,TL1 MOV 60H,ASSET: MOV TMOD,#51H MOV TH0,#40H MOV TL0,#00H SETB ET0 SETB TR0 MOV TH1,#00H MOV TL1,#00H SETB EA SETB ET1 SETB TR1 RETISTART: SETB SDA NOP SETB SCL acall wait CLR SDA Acall wait CLR SCL NOP RETSTOP: CLR SDA NOP SETB SCL acall waitSETB SDA acall wait RETCACK: SETB SDA acall wait SETB SCL CLR ACK acall wait MOV C,SDA JC CEND SETB ACK CEND: NOP CLR SCL NOP RET WRBYTE: MOV R6,#08HWLP: RLC A JC WR1 SJMP WR0 WR1: SETB SDA NOP SETB SCL acall wait CLR SCL SJMP WLP1WR0: CLR SDA NOP SETB SCL acall wait CLR SCLWLP1: DJNZ R6,WLP NOP RETIWRNBYTE: MOV A,NUMBYTE MOV R3,A LCALL START MOV A,SLA LCALL WRBYTE LCALL CACK JNB ACK,IWRNBYTE MOV A,SUBA LCALL WRBYTE LCALL CACK MOV R0,#MTDWRDA: MOV A,R0 LCALL WRBYTE LCALL CACK JNB ACK,IWRNBYTE INC R0 DJNZ R3,WRDARETWRN: LCALL STOP RETDELAY: MOV R5,#50Hdelay1: mov r6,#0ffh djnz r6,$ djnz r5,delay1 RETwait: mov r5,#08h djnz r5, $ retdisword: db 00h,01h,02h,03h,04h,05h,06h,07h db 08h,09h,0ah,0bh,0ch,0dh,0eh,0fhdisword1:db 04h,02h,11h,02h,07h end5 调试与分析51 周立功实验箱简介本课程设计是基于周立功公司开发的PROC单片机实验箱平台,该实验箱采用P89V51RB2FN单片机为主控模块,具有ISP功能,可配合Keil C51调试工具进行在线硬件仿真,实验箱的面板配置如下图所示:52 实验结果5.2.1 7290键盘显示学号的实验结果5.2.2 频率计显示的实验结果通过函数信号发生器输送一个频率为209.5HZ,幅度为2.6V的正弦波信号,由于误差在数码管上显示213HZ的频率信号,后面4位显示为学号的后两位。课程设计心得尽管在上一学年已学习过单片机的课程,也在实验室进行了相关的实验。在这次的设计课程中,将之前的单片机只是加以巩固,而且增加了自己对程序调试,试验箱连线等一些动手能力的提高。通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的动手能力,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 这个设计过程中,我们通过在原有的程序进行了改进,使之增添了学号与设计相互结合的功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。为期两周的单片机课程设计,在刚开始时候都不熟练,也无从下手。出现了很多的问题,经过翻书与同学讨论研究最终解决了这些个问题。所以最初的不适应过了以后下面的做起来是相对容易起来了!首先要把各个指令都要搞懂,其次就是会编写程序,最后在老师的指导和一些同学的帮助下,也都顺利地完成了硬件方针。首先我们调试了键盘的显示程序,根据老师的要求显示自己的学号,当然这是第一次上手比较困难,包括怎样去操作和运用Keil软件,基本上这是个慢慢熟悉的过程,通过借用第一个实验来熟悉这个软件,通过对程序的调试完成了第一个程序的调试!接着将键盘部分的程序进行调试,在原有的基础上,通过新建,运行,编译和检查错误,最后将零错误、零警告的程序加载到实验箱中,通过控制键盘来显示自己的学号。当然在不断改进的过程中我们也学习了很多的知识。单片机技术作为计算机技术的一个分支,广泛地应用

温馨提示

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

评论

0/150

提交评论