资源描述
郑州科技学院
单片机课程设计
题 目 基于单片机的
00-99计数器的设计
学生姓名 xxxxxxxxxx
专业班级 11级自动化3班
学 号 xxxxxxxxxxx
院 (系) 电气工程学院
指导教师 xxxxxxx
完成时间 2014年12月26日
郑州科技学院
单片机应用技术课程设计任务书
专业 11自动化 班级 3班 学号 xxxxx 姓名 xxxxx
一、设计题目 基于单片机的00~99计数器的设计
二、设计任务与要求
1. 把单片机系统中的P0.0/AD0~P0.7/AD7端口与LED数码显示器a1~h1相连;要求:P0.0/AD0对应着a1,P0.1/AD1对应着b1,P0.7/AD7对应着h1。
2. 把单片机系统中的P2.0/A8~P2.7/A15端口与LED数码显示器a2~h2连。
3. 把单片机系统中的P1.7端口与独立式键盘SP1相连。
三、参考文献
[1] 李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作, 2003,9.
[2] 耿长清.单片机应用技术[M].北京,化学工业出版社,2001,8.
[3] 杨西明.单片机编程与应用技术入门[M].北京:机械工业出版,2004,9.
[4] 公茂法.单片机人机接口实例集[M].北京:北京航天航空大学出版社,1998,10.
[5] 李全力.单片机原理及应用技术[M].北京:高等教育出版社,2001,7.
四、 设计时间
2014 年 12 月 15 日 至 2014 年 12 月 26 日
指导教师签名:
年 月 日
目 录
1 课程设计的目的 1
2 设计思路 1
3 方案设计 1
3.1 方案分析 1
3.2 最小控制系统的设计 2
4 电路的设计 4
4.1 数码管显示电路 4
4.2 键盘输入 4
4.3 复位电路 5
4.4 晶振电路 5
4.4 总原理图 7
5 程序设计 8
6 系统调试与结果 10
7 结论 11
8 心得体会 11
参考文献 13
附录1: 总体电路原理图 14
附录2: 实物图 15
附录3: 元器件清单 16
1 课程设计的目的
(1) 利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
(2) 通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
(3) 通过本次试验,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性,实用性。明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加课程设计工作,按要求完成规定的设计任务。培养正确的设计思想,严谨的工作作风。应用和分析能力、提倡独立思考和创新的精神。
2 设计思路
课程设计利用单片机的计数原理,采用仿真软件来模拟实现数码显示。利用单片机STC89C52单片机来制作一个计数器,在STC89C52单片机的P1.7管脚接一个开关,作为手动计数的按钮,用单片机的P2.0-P2.7接共阴数码管的a2-h2管脚,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接共阴数码管的a1-h1管脚,作为00-99计数的十位数显示。
3 方案设计
3.1 方案分析
单片机采用STC89C52型。STC89C52是一种低功耗、高性能8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
利用STC89C52单片机来制作一个手动计数器。通过具体的项目设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制程序的设计等,以便掌握单片机系统设计的总体思路和方法,掌握基于单片机控制的电子产品开发的技术方法,培养个人的创新意识和动手能力。
利用STC89C52单片机来制作一个手动计数器。按一次按钮,计数一次。计数的范围是0~99,计数满时,又从零开始计数。一个完整00~99手动计数器想当于一个简单的单片机系统,该系统设置电路、单片机、显示电路等构成。
3.2 最小控制系统的设计
STC89C52单片机最小系统包括晶体振荡电路、复位开关和电源部分。图3-1为STC89C52单片机的最小系统:
图3-1 单片机最小控制系统图
STC89C52 引脚功能说明:
VCC(40引脚):电源电压
VSS(20引脚):接地
P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。
P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。
XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2(18引脚):振荡器反相放大器的输入端。
RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。
4 电路的设计
4.1 数码管显示电路
图4-1 数码管电路图
数码管为共阴极如上图所示。利用单片机STC89C52单片机来制作一个计数器,在STC89C52单片机的P1.7管脚接一个开关,作为手动计数的按钮,用单片机的P2.0-P2.7接共阴数码管的a2-h2管脚,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接共阴数码管的a1-h1管脚,作为00-99计数的十位数显示。
4.2 键盘输入
图4-2 键盘输入图
键盘输入每输入一个低电平实现一次计数功能,键盘右端接入P1.7口处。
4.3 复位电路
图4-3 复位电路图
复位电路的原理是单片机RST引脚接收到电平信号,只要保证电容的充放电时间大于2us,即可实现复位。复位电路由电容串联电阻构成,结合“电容电压不能突变”的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的R、C值来决定。在这个电路中,这里选用10K的电阻和10uf的电容。
4.4 晶振电路
图4-4 晶振电路图
单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。也就是说.晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。比如 这里选用的是12MHZ的晶振。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。
晶振与单片机XTAL1和XTAL2引脚构成的振荡电路中会产生偕波,这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。晶振电路中两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。这里我们选用22pf的电容。
4.4 总原理图
图4-5 电路原理图
STC89C52单片机的P1.7管脚接一个轻触开关,作为手动计数的按钮,在STC89C52单片机的P1.7管脚接一个开关,作为手动计数的按钮,用单片机的P2.0-P2.7接共阴数码管的a2-h2管脚,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接共阴数码管的a1-h1管脚,作为00-99计数的十位数显示。
单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。
5 程序设计
5.1 程序设计内容
(1) 单片机对按键的识别过程处理。
(2) 单片机对正确识别的按键进行计数,计数满时,又从零开始计数。
(3) 单片机对计数的数值要进行数码显示,计数器使十进制,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管显示。
(4) 通过查表方式,分别显示出个位和十位数字。程序框图如图5-1
图5-1 程序流程图
编程:
#include <reg52.h>
unsignedcharcode LEDcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Count;
sbit SP1=P1^7;
void delay10ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
void main (void)
{Count=0;
P0=LEDcode[Count/10];
P2=LEDcode[Count%10];
while(1)
{if(SP1==0)
{delay10ms();
if(SP1==0)
{Count++;
if(Count==100)
{ Count=0;}
P0=LEDcode[Count/10];
P2=LEDcode[Count%10];
while(SP1==0);
do {delay10ms();}
while(SP1==0);
}
}
}
}
6 系统调试与结果
软件编写与调试时,发现有很多原来所没有注意到的问题,硬件完成焊接后,先用万用表简单的进行是否短路检测,没有问题后进行通电测试,发现上电指示灯亮,然后程序到单片机内检测是否能下载程序;刚开始的时候不能下程序,首先按照原理图检查了一遍最小系统,发现复位电路存在问题,经修改后还是不能下程序,怎么试不行,我又检查了电路和最小系统发现都没有问题,最后听同学说可能是杜邦线的问题,经过检查后发现我的四根杜邦线有两根都是坏的。这是我所没有想到的,换了好的后,就可以程序了。
当编写完程序进行调试时,又发现存在很多的问题,首先是数码管的段码的问题,这个需要自己根据自己的电路来计算而不是统一的一样,这个问题直到我知道后才解决掉。然后是矩阵键盘扫描的程序的调试,这个也要自己根据自己的电路接口来计算所要输送的十六进制数码,而且还要通过软件去抖动,还要判断按键是否松开等问题,这个花费的时间较长些,最后通过把按键扫描和数码管动态显示组合到一起,发现还是有问题,这个当然是软件上的问题。
实现这个功能之后,我要实现自己的计数功能和显示功能,在这个过程中,设置的数的显示和所要计的数的显示又存在问题,原因是他们会同时显示,出现重叠乱码现象,为此我请教了很多同学,最后,通过分别定义不同变量,用数组解决了这个问题。
最后经过讨论与研究终于找到了解决问题的办法。在这个上面,我们花费很多时间,虽然出现了许多问题但在老师和同学的帮助下都慢慢克服。
7 结论
调试方法:首先用软件将C编译成HEX文件,打开软件,新建一个文文件,输入C程序,保存成C格式文件,然后新建工程,连接单片机为STC89C52,选择Options for target,选择OUTPUT子菜单,在Create HEX 前打钩,子菜单中,Settings选择Proteus VSM Simulator,USE前打钩,再次运行文件,成功后在目录下会生成HEX文件,打开Proteus软件,或直接点击DSN檔,双击单片机模板,点击文件夹式样的图标选择对应的HEX驱动文件,然后点击开始,进行调试经调试运行基本成功,不过也有小小的不足之处。经过查找错误,已经调试成功。完成以STC89C52为核心的计数器的设计和制作,并能实现计数显示和设置功能。
8 心得体会
通过这一次的课程设计,加深了我对单片机的理论知识的理解,以及动手能力的提高。使我深刻的意识到,做好一次课程设计是十分不容易的,我从实践当中锻练了自己。虽然刚开始不太懂,但是通过上图书馆找资料,我慢慢的了解了频率计这方面的知识。
这次实训让我总结出来:在调试过程中,最好先测试各单元电路,保证各部份电路能够正常工作,检查问题时采取逐步缩小故障范围,最后定位,再对相应的位置做检查,解决问题。
在这一次课程设计当中,不仅让我学到了许多课本知识,同时也让我意识到:一个程序写完之后并不是马上就完工了,需要很多次的修改优化才能达到设计要求。同时我也感受到了团队合作的重要性,我们组的成员之间相互配合的很好,充分发挥了自己的所长,这是我们组为什么能够在限定的时间内完成任务的一个原因。当然能够完成任务,首先肯定还是离不开老师们的指导,在此我忠心的感谢我们的指导老师,以及帮助我们完成课程设计的同学们。但在本次设计当中,仍然存在很多的不足,比如说:作品的精度不是很高等等,以及自身也有很多的不足。但是我会不断的学习自己,让自己不断的进步!
参考文献
[1] 李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作, 2003,9:13~15.
[2] 耿长清.单片机应用技术[M].北京,化学工业出版社,2001,8:14~16.
[3] 杨西明.单片机编程与应用技术入门[M].北京:机械工业出版,2004,9:27~28
[4] 公茂法.单片机人机接口实例集[M].北京:北京航天航空大学出版社,1998,10:10~11
[5] 李全力.单片机原理及应用技术[M].北京:高等教育出版社,2001,7:34~35.
[6] 李学龙.使用单片机控制的智能遥控电风扇控制器[J]. 电子电路制作, 2003,9:13~15.
[7] 龚运新.单片机实用技术教程[M].北京:北京师范大学出版社,2005,14:88~89.
[8] 胡汉才.单片机原理及其接口技术(第2版)[M]. 北京:清华大学出版社.2004.49~77.
[9] 胡全.51单片机的数码管动态显示技术[J] .信息技术,2009,13:25~26.
[10] 马云峰.单片机与数字温度传感器DS18B20的接口设计[J]. 计算机测量与控制,2007,10(4):278~280.
附录1:总体电路原理图
附录2:实物图
附录3:元器件清单
序号
名称
型号规格
数量
1
单片机
ST89C52
1
2
数码管
共阴极
2
3
极性电容
10UF
1
4
电阻
10K
4
5
晶振
12MHZ
1
6
电容
22PF
2
7
开关
RST
2
8
电阻
1K
16
9
底座
——
1
16
展开阅读全文