单片机控制数码管

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、任务说明
利用51单片机、1个独立按键及1位7段数码管等器件,设计一个单片机输入显示系统,要求每按一下独立按键数码管显示数据加1(数码管初始值设为0,计到9后再加1 ,则数码管显示0)。

本次设计采用12MHz的晶体振荡器为单片机提供振荡周期,外加独立按键、复位电路和显示电路组成。

二、原理图绘制说明
本次设计主要用到单片机AT89C51、晶振时序电路。

AT89C51是一种带4KB闪烁可编程可擦出只读存储器的低电压、高性能CMOS微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微处理器,为很多嵌入式控制系统提供了一种灵活性高且廉价的方案,AT89C51的管脚分配,如图1:
图1 AT89C51芯片及管脚图
AT89C51单片机主要由4个输入输出端口(P0口、P1口、P2口、P3口)及个控
制引脚组成的,本次设计用到P1、P2的部分引脚,及18、19脚外接晶振电容为单片机提供时钟,9管脚为复位引脚,外接复位电路。

晶振时序电路:XTAL1和XTAL2分别为片内反相放大器的输入和输出端,当单片机采用外部时钟信号时,前者接地,后者引入外部输入信号,本次设计采用12M的石英晶体振荡器为单片机提供时钟,如图2:
图2 AT89C51的晶振时序电路图
本次设计的原理图是在PROTEUS ISIS中绘制的,其工作界面分为原理图编辑窗口(Editing window)、预览窗口(Overview window)和工具栏。

1、新建*.dsn
打开绘图界面后,首先新建一个绘图文件,选择“【文件】——【新建设计】”,并保存成.dsn型文件。

2、绘制原理图
(1)添加元器件:元件拾取共有两种办法,一种是按类别查找和拾取元件,另一种是直接查找和拾取元件。

我采用的是前一种方法,元件通常以其英文名称或器件代号在库中存放。

我们在取一个元件时,首先要清楚它属于哪一大类,然后还要知道它归属哪一子类,这样就缩小了查找范围,然后在子类所列出的元件中逐个查找,根据显示的元件符号、参数来判断是否找到了所需要的元件。

双击找到的元件名,该元
件便拾取到编辑界面中了。

右侧列表中自上而下分别为元件图形和元件封装。

具体如图3所示:
图3 分类拾取元件示意图
(2)元件的放置
在原理图编辑区的蓝色方框内,单击鼠标左键即完成元件的释放。

具体如图4所示:
图4 元件的放置示意图
(3)电路连线
PROTEUS的连线是非常智能的,它会判断你下一步的操作是否想连线从而自动连线,而不需要选择连线的操作,只需用鼠标左键单击编辑区元件的一个端点拖动到要连接的另外一个元件的端点,先松开左键后再单击鼠标左键,即完成一根连线。

如果要删除一根连线,右键双击连线即可。

根据设计完成连线后即可得到完整的电路原理图,具体如图5:
:
图5 连线后的完整电路原理图
三、流程图绘制以及说明
主程序设计说明
主程序主要分为四部分,包括复位电路部分、独立按键的判别部分、单片机控制主程序部分和译码显示部分,模块流程图如图6所示:
图6 主程序流程图
四、PROTEUS 仿真说明
1、Hex 文件的导入过程
在仿真前,须先在KEIL4中生成.HEX 文件。

编译完源程序并且没有错误后,选择“Project-Options for Target ‘Target1’-Output ”,在“Create HEX File ”前面的空挑勾,再“确定”,即可生成HEX 文件,如图7所示:
结束
返回重新检测按键
将单片机处理的数据进行显示
单片机主控制电路
向单片机申请显示0
计数加1,向单片机申
请显示该数值。

Y
是否按键? 开始
N
图7 生成HEX文件示意图
在进入PROTEUS ISIS中,双击AT89C51芯片,出现如图8所示的对话框。

在“Program File”一项中查找“seg.hex”文件的路径并加上该文件即可开始仿真,如图8所示:
图8 keil的seg.hex文件载入单片机的示意图
2、在导入hex文件后,便可运行该设计系统,打开仿真开关,显示如图9所示:
图9 上电后显示图
上电且没有按键时,按设计要求显示“0”,当开始按键时,显示值加1,如图10所示:
图10 按键6次显示图
当有复位按钮按下时,系统显示“0”,如图11所示:
图11 复位显示图
五、体会及合理化建议
实验体会:本次设计主要是针对刚刚学过的单片机知识,用汇编语言在KEIL4中编程,在PROTEUS中绘制原理图并进行仿真,通过对这两个软件的学习,了解了其功能的强大,掌握了AT89C51的内部结构及工作原理,对于我们以后的学习和实践有很大的指导意义。

这次课程设计使我在学习新知识的同时,还锻炼了我的意志品质,当调试程序出现错误时,并没有使我灰心,让我放弃,而是通过自己不懈的努力,弄懂了每一部分知识。

因此,本次课设对我以后无论是学习还是工作,都有着较大的帮助。

通过这次课程设计,使我意识到了课本上的知识远远不能满足当今社会的需要,让我知道了未来学习知识要更加注重实践与实用。

合理化建议:以后应增加类似本次课设的实践活动,同时应将软件实践活动,贯穿到整个学期之中,使得学到的软件都能更好、更多的应用到实践当中去。

在现如今高速发展的电子领域中,大部分工作都不是一个人所能完成的,因此,团队合作尤其重要,因此希望在以后的实践中能够增加些团队合作的项目与课题。

#include<reg52.h>
#define uchar unsigned char
sbit key=P1^0; //独立按键的位定义
uchar code duan[]={~0x3F,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f};
//此数组为!!! 0~9 !!!
uchar num; //记录按键的次数
void display(uchar); //显示函数声明
void delay(uchar); //延时函数声明
void main()
{
uchar num=0;
while(1) //while大循环
{
if(key==0)
{
delay(80); //按键消抖
if(key==0) //重新检测
{
if(num==9)
num=0;
else
num++;
while(!key); //等待松手,松手后才能送去显示
}
}
display(num);
}
}
void display(uchar x)
{
P2=duan[x];
delay(1); //在1位数码管上显示
}
void delay(uchar a)
{
uchar y,z;
for(y=a;y>0;y--)
for(z=150;z>0;z--);
}
附录III 元器件清单
元件标号元件名称所在库
AT89C51 51单片机MCS8051
74HC245 数据缓冲器74HC
7SEG 7段数码管DISPLAY
RES 电阻DEVICE
BUTTON 按键ACTIVE
CAP 电容DEVICE
CRYSTAL 晶振DEVICE
参考文献
[1] 张靖武周灵彬. 单片机原理、应用与PROTEUS仿真, [M]北京:电子工业出版社,2007年4月.P73-87
[2] 高卫东辛友顺韩彦征. 51单片机原理与实践,[M]北京:北京航空航天大学出版社,2008年. P95-99
[3]张红润刘秀英张亚凡.单片机应用设计200例, [M] 北京:北京航空航天大学出版社,2006年. P120-125
[4] 周润景张丽娜基于PROTUSE的电路及单片机系统设计与仿真,[M]北京航空航天大学出版社,2006年.P54-59
[5] 孙俊逸盛秋林张铮. 单片机原理及应用,[M] 北京:清华大学出版社,2006年3月.P28-52。

相关文档
最新文档