单片机09加计数器课程设计Word文档格式.docx
《单片机09加计数器课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机09加计数器课程设计Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。
![单片机09加计数器课程设计Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/311e7578-5469-4e93-a48c-d9bf25ce305e/311e7578-5469-4e93-a48c-d9bf25ce305e1.gif)
(3).在家用电器中的应用
(4).在计算机网络和通信领域中的应用
(5).单片机在医用设备领域中的应用
(6).在各种大型电器中的模块化应用
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
该课程设计的设计目的
1)学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2)掌握汇编语言程序设计方法。
3)培养实践技能,提高分析和解决实际问题的能力。
课程设计的任务及要求
1)上电时,数码管显示为0。
2)利用单片机来制作一个手动计数器,在单片机的管脚上接一个轻触开关,作为手动计数的按钮,用单片机的I/O口接数码管,作为计数器,进行加计数显示。
3)计数器计数到9后,再按计数按钮,则数码管从0重新开始计数。
一、总体设计
1.硬件设计思路
利用单片机的P0口、P2口作为输出端,控制数码管的显示,利用口作为输入端,控制开关量的控制
2.软件设计思路
实现0-9计数功能,查表子程序实现将高低电位转化为数码管的十进制数字,实现手动开关计数
二、硬件设计
1、芯片由UNTITLED—ISISPROFESSIONAL实验系统提供(AT89C51)
1)主要特性:
与MCS-51兼容
4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz—24Hz
三级程序存储器锁定
128*8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内震荡器和时钟电路
2)管脚说明:
①电源引脚
Vcc(40脚):
典型值+5V。
Vss(20脚):
接低电平。
②外部晶振
XTAL1、XTAL2分别与晶振两端相连接。
③输入输出口引脚:
P0口:
I/O双向口。
作输入口时,应先软件置“1”。
P1口:
P2口:
P3口:
④控制引脚:
RST、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。
RST(9脚):
复位信号输入端(高电平有效)。
ALE/-PROG(30脚):
地址锁存信号输出端。
第二功能:
编程脉冲输入。
-PSEN(29脚):
外部程序存储器读选通信号。
-EA/Vpp(31脚):
外部程序存储器使能端。
编程电压输入端(+21V)。
AT89C51单片机的P口特点:
是一个8位漏极开路输出型双向I/O端口。
作为输出端口时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,
在访问期间将激活内部的上拉电阻。
P1口是一个带有内部上拉电阻的8位双向I/O端口。
P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
P2口是一个带有内部上拉电阻的8位双向I/O端口。
P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
在访问外部程序存储器时和16位外部地址的外部数据存储器(如执行MOVX@DPTR)时,P2口送出高8位地址。
在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
P3口是一个带有内部上拉电阻的8位双向I/O端口。
P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
2、电阻模块:
电阻模块就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚。
其余引脚正常引出。
作为P0口的上拉电阻用。
3硬件原理图:
4、原件清单
原件名称
型号
数量/个
用途
单片机
AT89C51
1
控制核心
晶振
12MHZ
晶振电路
电容
30μF
2
10μF
复位电路
电阻
10K
220
7
上拉电阻
电源
+5V
提供电源
拨码开关
BUTTON_1
发出信号
数码管
7SEG-COM-CAT-GRN
显示次数
三、软件设计
程序流程图
汇编程序
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR1,#10;
按键循环次数
MOV30H,#00H
MOVA,30H
MOVDPTR,#TAB
MOVCA,@A+DPTR;
查表
SETB;
开数码管共阳置1共阴置0
MOVP0,A;
送显示
LCALLDELAY;
延时一段时间
LOOP1:
JNB,LOOP2;
如果按下则执行TT
LJMPLOOP1;
如果没有按下则反复监测键盘
LOOP2:
JB,LOOP3;
如果弹起则执行QQ
LJMPLOOP2;
如果没有弹起则反复监测键盘
LOOP3:
INC30H
DJNZR1,LOOP1;
如果循环一遍就重新开始,没有跳到MM继续循环
LJMPSTART;
否则30H清除
DELAY:
;
延时程序
MOVR7,#20
DEL1:
MOVR6,#25
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
RET
TAB:
DB03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH//共阴数码管数值0-9
END
四、使用Keil程序调试、proteus仿真
软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
先在keil中为所编的程序设置环境,然后输入程序检测并编译,之后用Proteus将编译好的程序输入到已设计好的电路的AT89C51中,开始模拟调试。
进一步修改,完成设计。
仿真结果图:
经过keil和proteus联合仿真,结果如图片,上电时,数码管显示为0,按开关数字递增,计数器计数到9后,再按计数按钮,则数码管从0重新开始计数。
程序正确,硬件连接正确。
五、结束语
1、心得体会
通过一周的单片机课程设计,让人感受颇深。
刚开始时,我有点迷茫,我懂得知识理论的知识但要实际操作,总是有差距的,虽然对于我们来说有一定的难度,但是我们经研究从最简单的编程开始,对于80C51单片机的编程,我们使用的是我们所学汇编语言,结合自己所学的及寻找大量资料,拟定了初步的程序,然后进行修改及用Keil软件进行调试,然后进一步修改,最终完成了程序。
结束了软件,硬件我们用Proteus软件进行绘图和仿真,在这一过程中,我们对该软件有了进一步的认识,与此同时,我们从中也学会了许多关于软件方面的知识。
在仿真过程中,我们遇到一些问题,如:
连线的问题、数码管不显示但通电、寻找合适的器件等问题,最终在我们的努力下,我们完成了0-9加计数器课程设计任务。
在这一过程中我们学会了很多的知识,与此同时,我们也成长了,我们对将自己
所学的理论知识应用于实践有了进一步的提高及一些经验,对我们以后工作有一定好处。
虽然设计过程很短暂,但我们还是收获了很多。
2建议和意见:
希望以后能够在以后的教学环节中增加更多的设计方面的实践,能够有更多的机会将学到的东西应用与实践,最好从简单实践应用开始,理论结合实际,才能更多的激发同学们的学习兴趣,更好的掌握所学的知识。
六、参考文献
(1)周越张平王斌陈爱文编著单片机技术实验实训教程中国水利水电出版社2007
(2)石从刚主编MCS-51单片机原理与应用实验实训教程北京航空航天大学出版社
(3)何立民主编单片机实验与实践教程
(二)北京航空航天大学出版社。