单片机原理课程设计时钟设计.docx
- 文档编号:30490835
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:15
- 大小:104.34KB
单片机原理课程设计时钟设计.docx
《单片机原理课程设计时钟设计.docx》由会员分享,可在线阅读,更多相关《单片机原理课程设计时钟设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机原理课程设计时钟设计
单片机原理及应用课程设计
学校:
系别:
专业:
班级:
姓名:
学号:
04041001043
指导教师:
目录
1、摘要--------------------------------------------------------------------2
2、关键词-----------------------------------------------------------------2
3、引言--------------------------------------------------------------------3
4、实现的功能----------------------------------------------------------3
5、系统原理分析------------------------------------4
6、硬件介绍-----------------------------------------4
7、主程序-----------------------------------------------------------------6
8、数据的显示程序---------------------------------------------------7
9、键盘响应程序-------------------------------------------------------8
10、收获、小结和体会-----------------------------------------------9
11、附录1----------------------------------------------------------------10
12、附录2----------------------------------------------------------------15
1、摘要:
下面的报告介绍了单片机80C51系数字时钟的设计,比较详细的介绍了它从软件上的实现过程,还介绍了系统原理的分析,硬件的介绍,还有就是实现的流程。
在最后还有对本次课程设计的感想,附件有原理图,还有源程序。
2、关键字:
80C5174LS07数字钟中断定时
3、引言:
在单片机技术日趋成熟的今天,其灵活的硬件和软件设计,让单片机得到了广泛的应用,几乎是从小的电子产品到大型的工业控制。
单片机都起到了举足轻重的作用,单片机小的系统结构几乎是所有具有可编程硬件的一个缩印,可谓是“麻雀虽小五脏俱全”,单片机的学习和研究是对微机系统学习和研究的捷径,相信我们的田聪老师的真正用意正是如此。
4、实现的功能:
在数字钟正常进行显示时,其显示周期为00:
00:
00至23:
59:
59,其中有五个按键,按下“暂停”键时钟停止走动,按下“开始”键时钟开始走动,按下“秒设置”时钟秒位自加1,加至60时向分位进1,按下“分设置”时钟分位自加1,加至60时向时位进1,按下“时设置”时钟秒位自加1,加至24时显示00。
5、系统原理分析
系统设计中用到89C51单片机的部分功能:
包括内部定时器,键盘扩展,程序中断,串口通信等。
用一个六位的共阴极七段显示器,可通过一个输入/输出口作为显示器数据发送端;另一个输入/输出口的六位作为显示器各位的片选信号,另一个输入/输出口作为键盘扩展口使用。
系统原理图如图1所示。
6、硬件介绍
AT89C51:
芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口左边那列逆时针数起,依次为1,2,3,4。
。
。
40,其中芯片的1脚顶上有一个凹点。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8为可编程I/O引脚32根。
主要特性:
与MCS-51兼容;4K字节可编程闪烁存储器;寿命:
1000写/擦循环;数据保留时间;10年;·全静态工作:
0Hz-24Hz;·三级程序存储器锁定;·128*8位内部RAM;·32可编程I/O线;·两个16位定时器/计数器;·5个中断源;可编程串行通道;·低功耗的闲置和掉电模式;·片内振荡器和时钟电路。
主要管脚说明:
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
六位共阴级数码管:
cc表示共阴极的ac是共阳极的设计中所用的是7段六位共阴级数码管,如果要实现动态显示必须位码(1-6)轮流通低电位,也就是片选,段码控制数码管的显示.0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d。
如图3数码管显示原理图所示,使用LED显示器时,要注意是共阴还是共阳,要注意区分这两种不同的接法。
为了显示数字或字符,必须对数字或字符进行编码。
七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。
我们用的是共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
012345
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
6789AB
0x39,0x5e,0x79,0x71,0x00
CDEF无显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效,由另一位控制显示码值。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
我们这里正是利用的数码管动态显示来完成显示功能。
7、主程序
由于系统的主要功能都是由子程序来完成的,主程序基本上没什么事可做,只是利用调用子程序的方式实现的,主程序流程图如图所示。
8、数据的显示程序
时钟数字显示涉及到两个操作:
发数据和改片选信号。
先发片选,再发数据。
用延时程序进行一个消影操作,这样就很好地解决了重影问题。
这样做的关键在于,在极短的一段时间内让显示器都不亮,等一切准备工作都做好了以后再发数据,只要显示频率足够快,是看不出显示器有闪烁的。
代码如下:
shi=hour/10;
ge=hour%10;
P3=0xfe;
P2=table1[shi];
delay(5);
P3=0xfd;
P2=table1[ge];
dp=1;
delay(5);
这段显示程序流程图如图4:
9、键盘响应程序
键盘分编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生按键编码号或键值的称为编码键盘,如计算机键盘。
而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的,我们这里用的就是非编码键盘。
如图4键盘图所示,当按钮按下时;端口会变成低电平,我们设计一段扫描程序来判断那个端口是低电平来判断是否有按键按下。
键盘处理程序流程相对简单,只是简单的判键与处理。
当设置按键按下为低电平时,对应位数加1至满进制。
10、收获、小结和体会
通过这次单片机设计,我加深了对课本专业知识的理解,平常都是理论知识的学习,在此次课程设计中,真正做到了自己查阅资料、完成一个基本电路的设计。
在此次的数字钟设计过程中,我更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。
当然,在这个过程中我也遇到了困难,通过查阅资料,相互讨论,我准确地找出错误所在并及时纠正了,这也是我最大的收获,使自己的实验动手能力有了进一步的提高,让我对以后的工作学习有了更大的信心。
回顾起此次设计,感慨颇多,从理论到实践,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的内容。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
此次的课程设计,还让我知道了最重要的是心态,在你拿到题目时会觉得困难,但是只要充满信心,脚踏实地,就肯定会完成的。
一学期的课程就这样结束了,在课上老师讲的很好,我也用心听了,在课下都是一直在找习题做。
希望不断提升自己的能力,而且在这个过程中遇到了很多的问题,也一直在不断的去问同学,慢慢去解决,希望通过这次课程设计不断提升自己的能力,让自己在平时学到的知识可以学以致用。
11、附录一程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitset1=P1^0;//暂停
sbitset2=P1^1;//开始
sbitsets=P1^2;//秒设置
sbitsetm=P1^3;//分设置
sbitseth=P1^4;//时设置
sbitdp=P2^7;//小数点
ucharcodetable1[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchart0,hour,fen,miao,ge,shi,flag;
voiddelay(uintz)//延时子程序z的取值为这个函数的延时ms数,如delay(200);大约延时200ms
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidinit()
{
TMOD=0x01;//TMOD的值表示定时器工作方式选择
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//允许定时器0中断
TR0=1;//启动定时器
}
voidtimer0()interrupt1//定时器0的中断号是1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==20)
{
t0=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
hour++;
if(hour==24)
hour=0;
}
}
}
}
voiddisplay(ucharhour,ucharfen,ucharmiao)
{
shi=hour/10;
ge=hour%10;
P3=0xfe;
P2=table1[shi];
delay(5);
P3=0xfd;
P2=table1[ge];
dp=1;
delay(5);
shi=fen/10;
ge=fen%10;
P3=0xfb;
P2=table1[shi];
delay(5);
P3=0xf7;
P2=table1[ge];
dp=1;
delay(5);
shi=miao/10;
ge=miao%10;
P3=0xef;
P2=table1[shi];
delay(5);
P3=0xdf;
P2=table1[ge];
delay(5);
}
voidkeyscan()
{
if(set1==0)
{delay(5);
if(set1==0)
{
TR0=0;
flag=1;
}
while(!
set1);
}
if(flag==1)
{if(sets==0)
{
delay(5);
if(sets==0)
{
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
hour++;
if(hour==24)
hour=0;
}
}
}
while(!
sets);
}
}
if(setm==0)
{
delay(5);
if(setm==0)
{
fen++;
if(fen==60)
{
fen=0;
hour++;
if(hour==24)
hour=0;
}
}
while(!
setm);
}
if(seth==0)
{
delay(5);
if(seth==0)
{hour++;
if(hour==24)
hour=0;
}
while(!
seth);
}
if(set2==0)
{
delay(5);
if(set2==0)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0=0;
flag=0;
TR0=1;
}
while(!
set2);
}
}
voidmain()
{
init();
while
(1)
{display(hour,fen,miao);//调用显示子程序
keyscan();//调用键盘扫描子程序
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 课程设计 时钟 设计