
ZLG单片机频率计和LED显示设计.doc
20页1 绪论随着计算机技术的开展,单片机技术已成为计算机技术的一个独特分支,在应用领域也越来越广泛,特别在工业控制和仪器仪表智能化中扮演着重要的角色7290键盘显示的设计能加深用户对I2C总线的理解,熟悉I2C器件ZLG7290的使用,提供用户实际开发的能力频率计用来测量、显示各种信号频率它在工业测量、科学研究等领域作为一种测量工具有着比拟广泛的应用基于单片机的频率计的设计可以加强用户对单片机的理解能力,在以后的开发和应用上有很大的帮助1.1 课题背景及意义本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现该课程设计的主要社务是通过解决一,两个实际问题,稳固和加深"单片机原理与应用〞课程中所学的理论知识和实验能力,根本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬件知识的理解,获得初步的应用经历,为以后从事生产和科技工作打下一定的根底1.2 课题设计任务 周立功7290键盘显示的设计技术要求:利用51单片机,7290接口芯片设计一个键盘显示系统,要求8位显示,16个按键,通过汇编语言定义每个按键的功能,并显示出各种结果。
工作要求:画出设计原理图,编写出软件,并调试出各种功能实验设备及器件:IBM PC机 一台,DP_51PROC单片机综合仿真实验仪一台 频率计的设计技术要求:利用51单片机,键盘显示系统,设计一个频率计,可以显示3位有效数字,通过汇编语言设计工作要求:画出设计原理图,编写软件程序,并调试出各种功能实验设备及器件:IBM PC机 一台,DP_51PROC单片机综合仿真实验仪一台,信号发生器一台2 总体方案论证2.1 周立功7290键盘显示的设计方案ZLG7290提供数据译码和循环、移位、断寻址等控制,可以检测任意一个按键的连击次数和自动消除抖动的功能他采用I2C总线接口,与嵌入式控制器的连接只需要2根线,不但减少了传统数码管电路设计中对端口的占用,同时硬件电路设计也十分简单利用实验箱上的SCL,SDA,RST_L,INT_KEY端分别连接ZLG单片机的P16,P17,P10,INTO端口通过控制键盘驱动程序使得实验结果在LED数码管上显示 周立功7290键盘显示的设计流程图开场初始化按键输入数值程序读取LED显示完毕2.2 频率计设计方案单片机部具有2 个16 位定时/ 计数器,定时/ 计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。
设计综合考虑了频率测量精度和测量反响时间的要求用定时器0作为定时器,定时1秒;用定时器1作为计数器,对输入的脉冲进展技术利用ZLG7290键盘显示芯片在LED上显示五位的频率数值 周立功7290键盘显示的设计流程图开场初始化调用延时子程序外部输入脉冲启动输入定时/计数器数码管显示结果3 硬件电路设计3.1 单片机系统单片机系统拓展一般是以根本的最小系统为根底的最小系统是指一个真正可用的单片机最小配置系统本次设计使用了ZLG单片机的最小系统3.2 硬件设计的原理图数码管数码管显示电路模块7290键盘显示的设计原理图3.3 硬件局部的设计步骤 周立功7290键盘显示的设计步骤〔A〕 使用导线连接D5区的SCL、SDA到A2区得P16、P17〔SCL~P16、SDA~P17〕,连接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〞头文件频率计的设计步骤〔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 软件设计局部4.1 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 RST LCALL DELAYMAIN1:MOV r4,*67H MOV R7,*08H MAINLOOP: JNB KEY_INT,KEY_HANDLE SJMP MAINLOOPKEY_HANDLE: MOV SLA,*ZLG7290 MOV SUBA,*01H MOV NUMBYTE,*01H LCALL IRDNBYTE LCALL DELAY; MOV R7,*08H; MOV A,*67HHANDLELOOP: mov a,r4 MOV MTD,A PUSH ACC; MOV 30H,R7 MOV A,MRD cjne A,*10H,NE*T MOV MRD,*0HNE*T: MOV MTD+1,MRD MOV SLA,*ZLG7290 MOV SUBA,*07H MOV NUMBYTE,*02H LCALL IWRNBYTE LCALL DELAY; SUING 2; MOV R7,30H POP ACCdec r4 DJNZ R7,MAINLOOP SJMP MAIN1DELAY: MOV R5,*50Hdelay1:mov r6,*0ffh djnz r6,$ djnz r5,delay1 RETSTART: SETB SDA NOP SETB SCL acall wait CLR SDA acall wait CLR SCL NOP RETSTOP: CLR SDA NOP SETB SCL acall wait SETB SDA acall wait RETMACK:CLR SDA NOP NOP SETB SCL acall wait CLR SCL RETMNACK: SETB SDA NOP NOP SETB SCL acall wait CLR SCL NOP NOP RETCACK: SETB SDA NOP NOP SETB SCL CLR ACK NOP NOP MOV C,SDA JC CEND SETB ACKCEND: NOP CLR SCL NOPRETWRBYTE: MOV R0,*08HWLP: RLC A JC WR1 SJMP WR0WR1: SETB SDA NOP SETB SCL acall wait CLR SCL SJMP WLP1WR0: CLR SDA NOP SETB SCL acall wait CLR SCLWLP1: DJNZ R0,WLP NOP RETRDBYTE: MOV R0,*08HRLP: SETB SDA acall wait SETB SCL acall wait MOV C,SDA MOV A,R2 CLR SCL RLC A MOV R2,A acall wait DJNZ R0,RLP RETIWRNBYTE: MOV A,NUMBYTE MOV R3,A LCALL START MOV A,SLA LCALL WRBYTE LCALL CACK JNB ACK,RETWRN MOV A,SUBA LCALL WRBYTE LCALL CACK MOV R1,*MTDWRDA: MOV A,R1 LCALL WRBYTE LCALL CACK JNB ACK,IWRNBYTE INC R1 DJNZ R3,WRDARETWRN: LCALL STOP RETIRDNBYTE: MOV R3,NUMBYTE LCALL START MOV A,SLA LCALL WRBYTE LCALL CACKJNB ACK,RETRDN MOV A,SUBA LCALL WRBYTE LCALL CACK LCALL START MOV A,SLA INC A LCALL WRBYTE LCALL CACK JNB ACK,IRDNBYTE MOV R1,*MRDRDN1: LCALL RDBYTE MOV R1,A ;NOP ;+1 ;NOP ;+1 DJNZ R3,SACK LCALL MNACKRETRDN: LCALL STOP RETSACK: LCALL MACK INC R1 SJMP RDN1wait: nop nop nop nop nop ret end4.2 频率计的设计程序SDA BIT P1.7 SCL BIT P1.6 RST BIT P1.0 KEY_INT BIT P3.2 MTD EQU 40H MRD EQU 49H ;定义器件地址,变 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 。
