BX0805 14 贾建昊 秒表系统设计.docx

上传人:b****6 文档编号:7844767 上传时间:2023-01-26 格式:DOCX 页数:18 大小:1,021.51KB
下载 相关 举报
BX0805 14 贾建昊 秒表系统设计.docx_第1页
第1页 / 共18页
BX0805 14 贾建昊 秒表系统设计.docx_第2页
第2页 / 共18页
BX0805 14 贾建昊 秒表系统设计.docx_第3页
第3页 / 共18页
BX0805 14 贾建昊 秒表系统设计.docx_第4页
第4页 / 共18页
BX0805 14 贾建昊 秒表系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

BX0805 14 贾建昊 秒表系统设计.docx

《BX0805 14 贾建昊 秒表系统设计.docx》由会员分享,可在线阅读,更多相关《BX0805 14 贾建昊 秒表系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

BX0805 14 贾建昊 秒表系统设计.docx

BX080514贾建昊秒表系统设计

目录

一课程设计的题目1

二课程设计的任务1

三课程设计的要求1

四课程设计内容1

4.1XL2000单片机综合仿真实验仪系统简介1

4.1.1系统简介1

4.1.2各个模块接口的定义:

2

4.2安装软件3

4.2.1XLISP安装:

3

4.2.2软件操作3

4.3USB接口安装指南6

4.4数码管显示8

五调试指令9

六课设结果15

七课设小结及心得体会16

一课程设计的题目

秒表系统设计

二课程设计的任务

用89C51单片机设计实现秒表系统:

要求6个数码管分别显示分、秒、百分之一秒;用K1打下秒表系统开始准备,显示000000,然后打开开关K2秒表开始计时,打下K2秒表停止,此时显示及时的值。

三课程设计的要求

要求通过课程设计最后完成课程设计要求的功能,绘出接线图,给出程序的框图,写出相应的汇编程序。

四课程设计内容

4.1XL2000单片机综合仿真实验仪系统简介

4.1.1系统简介

XL2000单片机综合仿真实验仪是深圳市学林电子有限公司综合多年

经验开发的多功能8051单片机平台(兼容AVR/PIC单片机的部份烧写实验功能)。

XL2000的特点:

1全开放的模块化设计:

所有硬件资源对用户开放,搭配随心所欲,不会出现硬件束缚软件的情况。

既可学习软件,更可深入的了解硬件。

2高品质的工艺:

本机采用高档透明雅克力面板,铝合金外箱,全贴片机器生产,工艺精美绝伦!

3超强的电路资源配备:

集成了基本上所有单片机应用中可能遇到的功能模块部份,你再也不必要去找其它零件,即可轻松完成您所需要的开发任务。

4完美的例子程序:

集合本公司多年的经验,每个模块都有完整的带中文注释汇编/C语言对照例子程序,原理图,接线方法很多都可以直接拿来应用。

快速提高您的硬件,软件编程水平。

5全USB通信接口,完全适应最新的无串口并口的笔记本电脑。

全中文操作界面,只需要一条USB线即可完成所有的供电,通信,仿真等功能,技术同行业遥遥领先!

6端口采用防插反设计,均配有连接照片和中文注解,即便您是初学者,也能轻松掌握。

7配有ISP下载头。

CPU控制编程,不受电脑配置及操作系统影响,稳定性一流。

可以作为一台独立的ISP下载线使用,支持芯片包括51/AVR/PIC/24C各系列!

8配有40P外接仿真头,可以作为一台独立的51单片机硬件仿真器使用,通过KEILSOFT软件配合,即可对外部硬件以及板上资源实现单步调试,断点,全速等等全部功能。

9全中文软件操作导航,独有智能一键通设计,擦除,写入,校验,运行自动完成,特别设计的烧写实验仿真3IN1的公用卡座,CPU插上后即不需要插拔,使用极其方便简洁。

4.1.2各个模块接口的定义:

所属部份端口名简要说明

1通信下载部份JP17编程/仿真选择,注意编程,实验时为弹起状态!

仿真时为按下状态

K16复位键。

按此键程序重新运行

JP2USB端口。

用于系统供电和usb通信(USB采用高速CP2102)

JP23ISP下载头。

可对其他目标板上的芯片下载

2电源部份JP33电源开关。

按下电源开,电源指示灯D100亮

3Cpu仿真部份IC16实验卡座。

插入AT89S52实验或者插入仿真模块仿真,注意第一脚对扳手

JP44P1口输出(P1.0—P1.7)

JP53P3口输出(P3.0—P3.7)

JP51P0口输出(P0.0—P0.7)

JP52P2口输出(P2.0—P2.7)

JP5940PIN外接仿真头,也可作为辅助的io引出端口做实验

4AD转换部份ADC0804J3ADC0804控制端。

本套件例子中,WR,RD分别接P36,P37

JP35ADC0804数据端。

本套件例子中,接CPU的P1口

JP30外部模拟信号输入端

JP60AD跳线。

默认为闭合状态,如果需要外接信号则跳开,从AD输入口JP30输入

W1Ad试验。

用于AD试验时模拟信号,10K的可调整电阻

5DA转换部份DAC0832JP24DAC0832控制端。

本套件例子中,WR,CS分别接P36,P27

JP27DAC0832数据端。

本套件例子中,接CPU的P0口

J2DAC0832输出端。

接示波器看输出波形

4.2安装软件

4.2.1XLISP安装:

插入随机的驱动光盘,打开驱动程序\XLISP目录。

双击其中的setup.exe,按照提示,点下一步直

硬件安装:

打开XL2000的包装。

插入随机的串口线(9针对9针),然后插上随机的USB电缆(用于提供5V电源)。

按下电源开关,此时电源指示灯亮。

确认232/usb选择跳线JP14,JP13都跳在232一端。

确认编程/仿真按钮处于弹起(编程)状态。

确认CPU卡座上的CPU为AT89S52并且已经压下扳手安装好。

连线如图所示

4.2.2软件操作

下面介绍基本的软件操作:

双击桌面的XLISP启动程序,此时弹出。

选择串口的对话框,此时可以选择“自动检测”即可检测到目前正在使用的端口。

一般默认情况下是串口1(USB通信方式,可能是串口3,4等。

具体请看第三章USB接口安装指南)在XLISP操作过程中如遇到软件关闭等情况,重新进入软件时可选

择:

选项/串口/自动检测,将非常方便!

1此时如果串口的设置正确,那么会出现以下主界面:

操作状态汇报窗口显示---编程器监测OK!

否则就是没有正确的设置串口,请检查串口设置的号码是否正确?

电源指示灯是否亮?

编程仿真模式是否处于编程(弹起)状态?

USB/232选择跳线是否选择在232上?

3在芯片类型的对话框中选择MCU\ATMEL_51\AT89S52然后点确定。

4点击主界面的“打开”,找到:

9999.HEX,然后点确定。

5此时点击:

“智能一键通”,将出现烧写进度条指示,对话框中出现擦除开始….擦除操作完成.程序编程操作开始….程序编程操作OK!

退出编程,目标板运行!

4.3USB接口安装指南

XL2000提供了串口或者USB通信方式的自由选择,在上面一章我们介绍了用串口通信方式来做实验。

如果用USB方式,则可去掉串口线,同时注意把JP13,JP14选择到USB,按照下面方法安装好USB驱动即可!

请遵循如下步骤去安装USB转串口的驱动程序

第一步:

用随机USB通讯电缆连接仪器的USB插座和计算机USB口;显示找到新硬件向导,选择“从列表或指定位置安装(高级)”选项,进入下一步;

第二步:

选择“在搜索中包括这个位置”,点击“浏览”,定位到配套驱动光盘的驱动程序文件夹,如E:

\驱动程序\XLISP驱动程序\USBDRIVER2.0\,进入下一步;

第三步:

弹出“硬件安装”对话框,如果系统提示“没有通过Windows徽标测试…”,不用理会,点击“仍然继续”,向导即开始安装软件;然后弹出“完成找到新硬件向导”对话框,点击完成。

第四步:

系统第二次弹出“找到新的硬件向导”对话框,重复以上几个步骤;右下角弹出对话框“新硬件已安装并可以使用了”,表明USB驱动已成功安装。

你可以进入系统的:

控制面板\系统\硬件\设备管理器中看到以下端口信息,表示系统已经正确的安装了USB驱动。

4.4数码管显示

其电路原理如下:

PO将显示数据并行送入8个数码管,P2则控制需要显示数据的数码管。

每过10ms产生一个中断,并且数码管的百分位数据加上1,由于时间短暂,眼睛看不清楚百分位的数据。

接线方法:

KI接P32,K2接P34

五调试指令

CODE_SEGSEGMENTCODE

DATA_SEGSEGMENTDATA

STACK_SEGSEGMENTIDATA

RSEGDATA_SEG

KEY_S:

DS1

KEY_V:

DS1

DIS_DIGIT:

DS1

DIS_INDEX:

DS1

SEC_BCD:

DS8;秒计数值,BCD码

KEY_TIME:

DS1;K2按下次数

KEY_TIMES:

DS1;K2按下次数

DIS_BUF:

DS8;显示缓冲区

RSEGSTACK_SEG

STACK:

DS20

K1BITP3.2

K2BITP3.4

;==============================================================================

CSEGAT0000H

LJMPMAIN

CSEGAT0000BH

LJMPTIMER0

CSEGAT0001BH

LJMPTIMER1

;==============================================================================

RSEGCODE_SEG

MAIN:

USING0

MOVSP,#(STACK-1)

MOVP0,#0FFH;初始化端口

MOVP2,#0FFH

MOVTMOD,#011H;

MOVTH1,#0DCH

CLRA

MOVTL1,A

MOVTH0,#0FCH

MOVTL0,#017H

LCALLCLR_TIME;清零计时值

MOVDIS_DIGIT,#07FH;上电时选通P27数码管

CLRA

MOVDIS_INDEX,A

MOVKEY_TIMES,A

MOVKEY_TIME,A

MOVKEY_V,#03H

MOVIE,#08AH;使能timer0,timer1中断

SETBTR0

CLRTR1

MAIN_LP:

LCALLSCAN_KEY;键扫描

JZMAIN_LP;无键返回

MOVR7,#10;延时10ms

LCALLDELAYMS;延时去抖动

LCALLSCAN_KEY;再次扫描

JZMAIN_LP;无键返回

MOVKEY_V,KEY_S;保存键值

LCALLPROC_K1;键处理

SJMPMAIN_LP;调回主循环

;==============================================================================

CLR_TIME:

CLRA

MOVSEC_BCD,A;清零所有计时值

MOVSEC_BCD+01H,A

MOVSEC_BCD+02H,A

MOVSEC_BCD+03H,A

MOVSEC_BCD+04H,A

MOVSEC_BCD+05H,A

MOVSEC_BCD+06H,A

MOVSEC_BCD+07H,A

LJMPUPDATE_DISBUF;更新显示缓冲区

;==============================================================================

SCAN_KEY:

CLRA

MOVC,K1;读按键K1

MOVACC.0,C

MOVC,K2;读按键K2

MOVACC.1,C

MOVKEY_S,A;保存按键状态到key_s

XRLA,KEY_V

RET

RET

;==============================================================================

PROC_K1:

MOVA,KEY_V

JBACC.0,PROC_KEY

INCKEY_TIME

MOVA,KEY_TIME

LCALLCLR_TIME;第一次按下K1,清零计时值

CLRA

MOVKEY_TIMES,A;清零KEY_TIMES

MOVKEY_TIME,A;清零KEY_TIME

RET

PROC_KEY:

MOVA,KEY_V

JBACC.1,END_PROC_KEY

INCKEY_TIMES

MOVA,KEY_TIMES

CJNEA,#01H,PROC_KEY1

SETBTR1;KEY_TIMES=1,第一次按下K2,启动开始计时

RET

PROC_KEY1:

MOVA,KEY_TIMES

CJNEA,#02H,END_PROC_KEY

CLRTR1;KEY_TIMES=2,第二次按下K2,停止计时

RET

END_PROC_KEY:

RET

;==============================================================================

TIMER0:

;定时器0中断服程序,用于数码管的动态扫描

;DIS_INDEX---显示索引,用于标识当前显示的数码管和缓冲区的偏移量

;DIS_DIGIT---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,

;选通P2.0口数码管

;DIS_BUF---显于缓冲区基地址

PUSHACC

PUSHPSW

PUSHAR0

MOVTH0,#0FCH

MOVTL0,#017H

MOVP2,#0FFH;先关闭所有数码管

MOVA,#DIS_BUF;获得显示缓冲区基地址

ADDA,DIS_INDEX;获得偏移量

MOVR0,A;R0=基地址+偏移量

MOVA,@R0;获得显示代码

MOVP0,A;显示代码传送到P0口

MOVP2,DIS_DIGIT;

MOVA,DIS_DIGIT;位选通值右移(P20<-P27),下次中断时选通下一位数码管

RRA

MOVDIS_DIGIT,A

INCDIS_INDEX;DIS_INDEX加1,下次中断时显示下一位

ANLDIS_INDEX,#0x07;当DIS_INDEX等于8(00001000)时,清0

POPAR0

POPPSW

POPACC

RETI

;==============================================================================

TIMER1:

PUSHACC

PUSHB

PUSHDPH

PUSHDPL

PUSHPSW

PUSHAR7

ORLTH1,#0DCH;恢复定时器初值

CLRA

MOVR7,A

MOVA,#LOW(SEC_BCD)

MOVR0,A;计时值寄存器地址到R0

TIMER_INC:

;

INC@R0;计时值加1

MOVA,@R0

CLRC

SUBBA,#10;

JCEND_INC;如果低位不满10,则结束

MOV@R0,#00H;低位满10,清零低位

INCR0;指向高位

INCR7;

CJNER7,#08H,TIMER_INC;如果达到最高位,则结束

END_INC:

LCALLUPDATE_DISBUF

POPAR7

POPPSW

POPDPL

POPDPH

POPB

POPACC

RETI

;==============================================================================

UPDATE_DISBUF:

;根据计时寄存器的值更新显示缓冲区

MOVDPTR,#DIS_CODE;保存表格地址

MOVA,sec_bcd

MOVDPTR,#dis_code

MOVCA,@A+DPTR;获得显示代码

MOVdis_buf,A;更新显示缓冲区

MOVA,sec_bcd+01H

MOVCA,@A+DPTR

MOVdis_buf+01H,A

MOVA,sec_bcd+02H

MOVCA,@A+DPTR

ANLA,#07FH;显示小数点

MOVdis_buf+02H,A

MOVA,sec_bcd+03H

MOVCA,@A+DPTR

MOVdis_buf+03H,A

MOVA,sec_bcd+04H

MOVCA,@A+DPTR

MOVdis_buf+04H,A

MOVA,sec_bcd+05H

MOVCA,@A+DPTR

MOVdis_buf+05H,A

MOVdis_buf+06H,#0f7H

MOVdis_buf+07H,#0f7H

;MOVA,sec_bcd+06H

;MOVCA,@A+DPTR

;MOVdis_buf+06H,A

;MOVA,sec_bcd+07H

;MOVCA,@A+DPTR

;MOVdis_buf+07H,A

RET

;ENDOFUPDATE_DISBUF

;==============================================================================

DELAYMS:

;延时子程序

;传入参数:

R7---延时值(MS)

;返回值:

MOVA,R7

JZEND_DLYMS

DLY_LP1:

MOVR6,#185

DLY_LP2:

NOP

NOP

NOP

DJNZR6,DLY_LP2

DJNZR7,DLY_LP1

END_DLYMS:

RET

;==============================================================================

DIS_CODE:

db28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h,0ffh

END

六课设结果

七课设小结及心得体会

课程设计做的还算顺利,整个持续了四天。

整个程序虽然程序案例中有相似的,但还是要我们修改。

修改的最重要的将开关加进去,以及显示六个数码管。

课设初始,我们对KEIL中的UV2的软件进行了了解与掌握。

它的作用就是将.ASM文件生成.HEX文件。

然后就是将.HEX文件在XLISP软件中运行。

接着我们对XL2000单片机进行了解。

XL2000单片机综合仿真实验仪是深圳市学林电子有限公司综合多年经验开发的多功能8051单片机平台(兼容AVR/PIC单片机的部份烧写实验功能)。

程序中的代码看了两天终于搞明白了什么意思。

程序中涉及了单片机的定时、延时,数码的显示,开关的接通。

最后我们完成了功能:

六个数码管显示数据、按K1则数据清零、按K2则开始计时、再按K2则停止计时。

课设最终完成,我们还是很开心的。

参考文献

[1]张毅刚,彭喜元.单片机原理与应用设计.北京:

电子工业出版社,2008.

[2]孟银阔,等.单片机实验指导教材DJ-51系列单片机实验指导书.江苏:

东疆计算机有限公司出版社,2010.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1