单片机课程设计.docx

上传人:b****8 文档编号:10198419 上传时间:2023-02-09 格式:DOCX 页数:22 大小:222.49KB
下载 相关 举报
单片机课程设计.docx_第1页
第1页 / 共22页
单片机课程设计.docx_第2页
第2页 / 共22页
单片机课程设计.docx_第3页
第3页 / 共22页
单片机课程设计.docx_第4页
第4页 / 共22页
单片机课程设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机课程设计.docx

《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(22页珍藏版)》请在冰豆网上搜索。

单片机课程设计.docx

单片机课程设计

目录

第1章系统概述1

1.1设计背景1

1.2功能简介1

第2章总体设计方案2

2.1系统框图2

2.2软件总体设计2

第3章系统硬件设计3

3.189C52单片机3

3.1.189C52芯片主要性能特点3

3.1.289C52芯片的功能方块图3

3.1.389C52芯片的引脚排列4

3.1.489C52单片机存储器4

3.1.589C52单片机接口资源4

3.1.689C52的SFR地址及复位值4

3.2键盘设置5

3.32X3矩阵式键盘5

3.4显示功能设计6

3.4.1数码管显示器数量选择6

3.4.2数码管共阴共阳接法的选择6

3.4.3数码管驱动设置6

3.5系统总体原理图6

第4章软件设计7

4.1主函数设计7

4.2按键获取,按键处理设计7

4.3显示子程序设计8

4.4延时子程序设计9

第5章系统安装、仿真、调试10

5.1软件调试10

5.2硬件调试10

5.3仿真结果10

第6章总结体会11

第7章参考文献12

附录A总体设计原理图13

附录B源程序清单14

第1章系统概述

1.1设计背景

单片机,亦称单片微电脑或单片微型计算机。

它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。

计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。

微型计算机(单片机)在这种情况下诞生了,它为我们改变了什么?

纵观我们现在的生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。

在一般的比赛中,计时和计分大多数都采用人工操作,很简陋的计分方式,但是采用这种方式十分的不方便。

而且大多数由于实际条件限制,不是很准确。

本设计就是针对这方面的问题,在充分地分析各种比赛的特点基础上,设计了基于单片机AT89C52作为控制器、LED八段数码管作为显示器的计分系统。

本系统的设计过程主要分计分、显示两大部分,依据各个部分的具体功能和特点,并结合单片机的控制方式,设计了一套可用于一般的比赛的、实用的电子式系统。

其主要内容包括硬件设计、软件设计、调试等几部分。

在系统中实现了赛程双方成绩、赛后成绩暂存以及赛前成绩预设置等功能。

1.2功能简介

在确定了系统总体设计方案的基础上,选择了合适的芯片,并进行硬件电路设计,系统软件设计。

同时利用Proteus绘制系统原理图,在此基础上也在软件编程环境KeilC52下进行了软、硬件仿真。

本设计内容为比赛计分器,主要用于各种体育比赛记录分数。

采用矩阵式键盘作为输入,用户可分别对两队进行加1、加2、加3和减1、减2、减3操作,其加减1、2、2分别可以通过加减1分、2分和3分的切换按钮来实现,并通过指示灯显示其每次按下加减分键所加减的分值。

可以实现预置分。

比分通过4个8段数码管显示器进行显示,每队比分显示2位。

 

第2章总体设计方案

2.1系统框图

系统框图见图2-1

图2-1系统框图

本设计用89C52单片机为核心,利用4个8段数码管显示器,采用动态显示输出比分,用户信息输入则采用2X3矩阵式键盘。

89C52单片机有32跟I/O线,所以不用扩展I/O口,用一片单片机即可满足本设计的输入输出要求。

2.2软件总体设计

软件设计主要分为3个部分:

信息输入、信息处理、显示输出。

主要包括:

显示函数,按键获取函数,按键处理函数,进制转换函数。

信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出。

 

第3章系统硬件设计

3.189C52单片机

因为我们上课时学的是MCS-51,所以就选择了AT89C52单片机,因为它与IternetMCS-51兼容,并且它们都具有相同的CPU和指令系统,引脚功能兼容,容易掌握和使用

3.1.189C52芯片主要性能特点

兼容8051、89C52等的单片机内核,12MHz额定工作频率(最大24MHz),8KB片内FLASH程序存储器,256Byte片内数据RAM,3个16位定时/计数器,32条可编程I/O线,可允许2个优先级的8个中断源。

3.1.289C52芯片的功能方块图

功能方块图见图3-1-2

图3-189C52结构框图

3.1.389C52芯片的引脚排列

图3-289C52引脚排列

3.1.489C52单片机存储器

◆片内ROM存储器SFR映射到内部数据存储空间的高128B,仅通过直接寻址来访问(地址为X0H或X8H的SFR可位寻址),并提供CPU和所有片上外设间的接口。

◆片内FLASH程序存储器作为89C52可寻址64K程序存储器的低8K空间,用于存放用户程序代码。

3.1.589C52单片机接口资源

◆并行I/O接口P0:

当作为通用的I/O口时,P0口的引脚以“开漏”的方式输出,所以必需外加上拉电阻。

当作为外部程序或数据存储器的数据/地址总线时,内部控制信号为高电平,P0口的引脚可以在数据/地址总线的作用下实现上拉,不需要外加上拉电阻。

◆P1:

具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。

作为专用功能引脚,相应的口锁存器必须为1状态。

◆P2:

具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。

作为外部程序或数据存储器的高地址总线。

◆P3:

具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。

作为专用功能引脚,相应的口锁存器必须为1状态。

3.1.689C52的SFR地址及复位值

图3-389C52特殊功能寄存器列表

3.2键盘设置

键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。

键盘分两大类:

编码键盘和非编码键盘。

编码键盘:

由硬件逻辑电路完成必要的键识别工作于可靠性措施。

每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。

这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。

非编码键盘:

只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数仅靠软件完成,故硬件较为简单,但占用CPU较多时间。

有:

独立式按键结构、矩阵式按键结构。

3.32X3矩阵式键盘

矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。

节省I/O口。

根据需要,本设计采用3X3键盘设计,利用反转的方式读入数据。

如图3-3

图3-4计分器3X3键盘

计分器7个按键功能如图,其中1/2/3分切换由发光二极管指示,加1减1分别对应。

预置分是事先设定分数可以分别设定甲乙两队的初始分数。

按下清零后,显示的分数清零。

3.4显示功能设计

LED电子显示屏以其清晰、更新方便等特点,在交通控制、商业贸易以及生产生活中得到广泛使用。

本设计利用MCS系列单片机的P1口实现键盘显示功能的设计方法,这种方法利用MCS系列单片机P1口的准双向口功能,向显示驱动器串行发送所需显示的数据,从按键接收电平信号,通过软件识别不同情况下按键码的含义,以实现一键多功能。

3.4.1数码管显示器数量选择

两个队,每队2位比分,每个显示器只能显示一位,则至少需要采用4个8段数码管显示器。

段数码管显示器采用动态显示输出比分。

3.4.2数码管共阴共阳接法的选择

51单片机I/O口输出高电平时输出的电流很小,数码管不会太亮;因此本设计采用动态显示,单片机I/O口直接接数码管,所以决定采用共阳数码管。

3.4.3数码管驱动设置

为了使数码管亮度达到要求,数码管的位选端需要驱动,因为单片机I/O口的高电平输出的电流很小,需要驱动电路驱动,从而增加显示亮度。

最简单便宜的驱动就是使用三极管,为低电平时开通,所以选择PNP型三极管。

3.5系统总体原理图

系统总体原理图见附录A

第4章软件设计

4.1主函数设计

主函数程序代码:

MAIN:

MOVNUMA,#0

MOVNUMB,#0;分数清零

MOVTEMP,#1;起始时的分数加1

MOVP1,#0DFH

ACALLTRAN

M0:

ACALLDISP;调用显示函数

ACALLKEYSCAN;调用按键获取函数

SJMPM0;

首先初始化将储存甲乙两对分数的内存单元清零,起始时TEMP置1,并使LED5点亮,调用进制转换函数,调用显示函数,调用按键获取函数,之后重复调用显示函数,调用按键获取函数.。

函数间的调用关系见图4-1

图4-1函数关系调用图

4.2按键获取,按键处理设计

按键获取,按键处理函数流程图,见图4-2

图4-2按键获取按键处理函数流程图

说明:

仅以A加分为例表示按键函数功能流程。

4.3显示子程序设计

本程序是采用动态显示,用这种方法的好处在于每次刷新显示的时间相同,每个数码管显示的时间也相同,这样就可以让数码管清晰而且稳定的显示数据。

显示子程序流程图,见图4-3。

图4-3显示子程序流程图

4.4延时子程序设计

延时子程序就是通过执行一些没用但又占用时间的指令的集合。

这个子程序可以用于很多延时的地方因为它延时的时间可以通过R7进行改变,所以通用性好,可以将几个延时子程序合为一个,只用在调用前给R7赋值,即可根据用户的需要延时,流程图见图4-4。

第5章系统安装、仿真、调试

5.1软件调试

软件调试主要是在仿真软件完成的。

在写好源程序,画出原理图之后,在电脑上进行软件仿真。

系统原理图附后。

5.2硬件调试

首先将编译成功程序载入单片机系统开发板。

通电后,LED5,电源指示灯点亮,数码管显示“0000”.。

对应的“4”键为甲加分按钮,当LED5亮时,每次按下“4”键,甲队分数加1;当LED6亮时,每次按下“4”键,甲队分数加2;当LED7亮时,每次按下“4”键,甲队分数加3;其中LED5,LED6,LED7的点亮与熄灭是通过对应的“1”键来控制,可以通过按“1”键来实现LED5,LED6,LED7之间的切换。

对应的“8”键为甲队减分键,当LED5亮时,每次按下“8”键,甲队分数减1;当LED6亮时,每次按下“8”键,甲队分数减2;当LED7亮时,每次按下“4”键,甲队分数减3;“7”键为乙加分键,“B”键为乙队减分键,其实现功能与甲队一样。

对应的“0”键为预置分按钮,按下“0”键之后,通过按甲乙队加、减分按钮配合分数切换键实现快速预置分。

”RESET”为复位键,按下可以实现复位。

数码管显示甲乙队当前分数,复位后,数码管显示“0000”。

5.3仿真结果

1/2/3分切换仿真及分数显示仿真结果如下图:

图5-1仿真1/2/3分切换显示结果

图5-2仿真加减分数显示结果

第6章总结体会

这次课程设计虽然只有短短的两周时间,但我受益匪浅。

刚开始时觉得自己的课题无处入手,但通过老师的讲解和查询资料,开始有了自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。

在这次设计中困难最大的就是调试,收获最多的也是调试,因为调试的时候你必须对程序相当的熟悉,对每一条指令相当了解,并且硬件的连接也要清晰的印在脑海里,只有这样你才能让软件和硬件结合在一起,实现预期功能。

在编程结束时需要编写END指令,这也是初学者编程时经常忘记的。

当然也有值得高兴的地方,我的设计通过加减分键和分数切换键配合实现加减1,2,3分只用了3个键,而两队分别设置加减1,2,3分就需6个键。

我认为这样的设计更科学。

本次课设,电路调试经验等方面有些感触。

1、程序方面,这次单片机课设内容包括基本键盘处理、LED显示、串口通信等。

说实话,接近两周时间,对于以前没有做过的人来说要全部做完的确有一定的难度。

我在程序方面的总结是:

1)、写程序注释写得越详细越好、不要怕麻烦。

   

2)、画流程图绝对有助于写程序以及日后查错。

    

3)、随时备份,建议版本形式备份,并写清楚该版本实现了什么,改进了什么,还没有实现什么。

电路调试方面与错误排除:

从输入一部分一部分测试,先第一个功能单元,测试成功再测试下一个。

至于排错,出错了,多观察、对错误重复n次,估计是由什么原因引起的,从电路整体来看、分析可能是什么错误,再缩小范围。

     最后建议:

实再找不出来,就换个角度,不能急于求成,但不要放弃。

 要保持你的头脑清醒。

感想之深:

   不要以为基本的电路、简单的电路没有用。

其实非常有用。

总之,在课程设计中遇到了不少的困难,在老师的细心讲解和辅导下,最终完成了本次设计。

在此,由衷感谢汪超老师的指导和帮助。

 

第7章参考文献

[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002

[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000

[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000

[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000

[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001

[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001

[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001

[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002

[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002

 

附录A总体设计原理图

图总体设计原理图

 

附录B源程序清单

NUMAEQU30H

NUMBEQU31H;甲乙两队的分数

D1EQU32H;显示缓存区32h—35h

D2EQU33H

D3EQU34H

D4EQU35H

DUANEQUP0;段显示端口

WEI1EQUP2.4;位选端口P2.4---P2.7

WEI2EQUP2.5

WEI3EQUP2.6

WEI4EQUP2.7

TEMPEQU36H;存放切换的加减分数1/2/3

KEYDATEEQU37H;存放按键值

ORG0000H

MAIN:

MOVNUMA,#0

MOVNUMB,#0;分数清零

MOVTEMP,#1;起始时的分数加1

MOVP1,#0DFH

ACALLTRAN

M0:

ACALLDISP;调用显示函数

ACALLKEYSCAN;调用按键获取函数

SJMPM0;

;********************************************************

KEYSCAN:

MOVP2,#0FFH;采用反转法读取按键值

MOVP2,#0F0H

MOVA,P2

ANLA,#0F0H

CJNEA,#0F0H,K0

SJMPK4

K0:

MOVR5,#5

K1:

ACALLDELAY2MS;10ms延时去抖动

DJNZR5,K1

MOVA,P2

ANLA,#0F0H

CJNEA,#0F0H,K2

SJMPK4;是抖动返回

K2:

MOVKEYDATE,A;存储按键值

MOVP2,#0FH

MOVA,P2

ANLA,#07H

ORLA,KEYDATE;取得键值存放在KEYDATE中

MOVKEYDATE,A

K3:

MOVA,P2

ANLA,#07H

CJNEA,#07H,K3;等待按键松开

ACALLCHULI;调用按键处理函数

ACALLTRAN

K4:

RET

;********************************************************

CHULI:

MOVA,KEYDATE

CJNEA,#0E6H,C0

MOVNUMA,#0

MOVNUMB,#0

MOVTEMP,#1;按下清零键,A,B队分数清零,加分为1

MOVP1,#0DFH

RET

C0:

CJNEA,#0D6H,C2

INCTEMP;按下分值切换键,按一下分值加1,

MOVP1,#0BFH

MOVA,TEMP

CJNEA,#3,C01

MOVP1,#7FH

C01:

CJNEA,#4,C1

MOVTEMP,#1;分值循环1-2-3-1

MOVP1,#0DFH

C1:

RET

C2:

CJNEA,#0E5H,C4

MOVA,NUMA;按下A队加分按键,A队加分

ADDA,TEMP;分值相加

CJNEA,#99,C3;

MOVA,#0

C3:

MOVNUMA,A

RET

C4:

CJNEA,#75H,C6

MOVA,NUMB;按下B队加分按键,A队加分

ADDA,TEMP;分值相加

CJNEA,#99,C5;

MOVA,#0

C5:

MOVNUMB,A

RET

C6:

CJNEA,#0E3H,C9

MOVA,NUMA;按下A队减分按键,A队减分

SUBBA,TEMP;分值相减

CJNEA,#0FCH,C7

RET

C7:

JCC8

MOVA,#99

C8:

MOVNUMA,A

RET

C9:

CJNEA,#073H,C12

MOVA,NUMB;按下B队加减按键,A队减分

SUBBA,TEMP;分值相减

CJNEA,#0FCH,C10

RET

C10:

JCC11

MOVA,#99

C11:

MOVNUMB,A

C12:

RET

;***********************************************************

TRAN:

MOVA,NUMA;进制转换将10进制分数转化成

2进制,然后显示

MOVB,#10

DIVAB

MOVD1,A

MOVD2,B

MOVA,NUMB

MOVB,#10

DIVAB

MOVD3,A

MOVD4,B

RET

;***********************************************************

DISP:

MOVDPTR,#TAB;显示函数,

CLRWEI1;位选通

MOVA,D1;

MOVCA,@A+DPTR;取段码

MOVDUAN,A;送段码

ACALLDELAY2MS;

SETBWEI1;关位选

CLRWEI2

MOVA,D2

MOVCA,@A+DPTR

MOVDUAN,A

ACALLDELAY2MS

SETBWEI2

CLRWEI3

MOVA,D3

MOVCA,@A+DPTR

MOVDUAN,A

ACALLDELAY2MS

SETBWEI3

CLRWEI4

MOVA,D4

MOVCA,@A+DPTR

MOVDUAN,A

ACALLDELAY2MS

SETBWEI4

MOVDUAN,#0FFH;

RET

;************************************************************

DELAY2MS:

MOVR6,#5

D0:

MOVR7,#248

DJNZR7,$

DJNZR6,D0

RET

TAB:

DB28H;0

DB0EBH;1

DB32H;2

DB0A2H;3

DB0E1H;4

DB0A4H;5

DB24H;6

DB0EAH;7

DB20H;8

DB0A0H;9

DB60H;A

DB25H;B

DB3CH;C

DB23H;D

DB34H;E

DB74H;F

DB0D7H;-.

DB0F7H;-

DB61H;H

DB70H;P

DB0DFH;.

DB27H;O

DB0FFH;全黑

END

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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