电子时钟课程设计之欧阳术创编.docx
- 文档编号:28602117
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:137.13KB
电子时钟课程设计之欧阳术创编.docx
《电子时钟课程设计之欧阳术创编.docx》由会员分享,可在线阅读,更多相关《电子时钟课程设计之欧阳术创编.docx(13页珍藏版)》请在冰豆网上搜索。
电子时钟课程设计之欧阳术创编
学号
时间:
2021.02.02
创作:
欧阳术
成绩
‘
沈阳城市建设学院
基于51单片机的电子时钟系统设计
课程名称《单片机原理及应用》
专业
班级16-1班
姓名
2017年12月18日
摘要
数字钟已成为人们日常生活中不可少的必需品,给人们的生活,学习,工作带来极大的方便。
本文介绍的数字钟是一种利用数字电路来显示时、分、秒的装置,与传统的机械钟相比,它具有走时准确,性能稳定,显示直观,无机械传动装置等特点。
数字电子钟由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路等组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计数器,可以实现一天24h的累计。
电路是来对“时、分、秒”显示数字进行校对调整。
关键词:
计数器;单片机;数码管;上拉电阻
一、方案设计
1.1、单片机的选择方案
1.2、数码管的选择方案
1.3、上拉电阻的选择方案
1.4、总体设计框图
1.1、AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
如图1.1.1:
图1.1.1
1.2、共阴极数码管是一类数字形式的显示屏,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜、使用简单、在电器,特别是家电领域应用极为广泛,空调、热水器、冰箱等等。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
如图1.2.1:
图1.2.1
1.3、上拉电阻(排阻,上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。
上拉是对器件注入电流,下拉是输出电流;弱强只是上拉电阻的阻值不同,没有什么严格区分;对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
所以根据本次课设设计选择上拉电阻。
如图1.3.1:
图1.3.1
二、程序
见附页1
三、硬件模块程序设计
3.1、单片机最小系统
51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好,P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。
其他接口内部有上拉电阻,作为输出口时不需外加上拉电阻。
3.2数码管显示模块
1.3、6位共阴数码管显示所示
四、软件模块设计
本次设计使用的软件是Keil软件,它能够使用简单易懂的高级C语言对单片机进行软件开发,还是C52系列兼容单片机C语言软件开发系统。
五、系统硬件电路的设计
系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C51,系统采用12MHz的晶振,采用6位共阴数码管显示。
操作方法:
对照原理图,按下SW2按键第一次设置小时数据,SW3按键加,SW4按键减,按下SW2按键第二次设置分钟,SW3按键加,SW4按键减,SW2按键第三次设置秒,SW3按键加,SW4按键减,SW2第四次退出设置。
单独的一个按键SW1是复位按键
硬件电路图如图所示图5.1
图5.1
六、课程设计总结
经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。
总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。
在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。
整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。
通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。
在整个设计过程中学到了团体精神和独立解决问题的重要性。
为以后的求职之路打下了基础。
七、参考资料
[1]《单片机原理与应用》谢维成杨加国编著
[2]《单片机应用与仿真调试》严天峰编著
[3]《模拟电子技术(第三版)》胡宴如耿苏燕编著
[4]《数字电子技术(第三版)》杨志忠卫桦林编著
附页1
#include
#defineucharunsignedchar//宏定义缩写成uchar
#defineuintunsignedint//宏定义缩写成uint
//数码管位端口定义
sbitw1=P2^2;
sbitw2=P2^3;
sbitw3=P2^4;
sbitw4=P2^5;
sbitw5=P2^6;
sbitw6=P2^7;
////////按键/////////////////////
sbitkey1=P3^5;//设置时间
sbitkey2=P3^6;//加
sbitkey3=P3^7;//减
/////共阴数码管段信号编码////////
ucharcodetable[10]=//0---9
{0xFC,0x60,0xDA,0xF2,0x66,
0xB6,0xBE,0xE0,0xFE,0xF6};//
ucharnum,miao,fen,shi;//计时时分秒变量
ucharfen1,shi1;//闹钟变量
uchard1,d2,d3,d4,d5,d6;//显示拆分数据
voiddelay(uintms)//1ms延时函数数据保持用的括号里面是几大概就延时多少ms
{
ucharx;
for(ms;ms>0;ms--)
for(x=110;x>0;x--);
}
voiddisplay()//显示函数
{
d1=shi/10;//小时
d2=shi%10;//
d3=fen/10;//
d4=fen%10;//分钟
d5=miao/10;//
d6=miao%10;//秒
w1=0;P0=table[d1];delay(10);//第1位显示数据
P0=0x00;w1=1;//关闭显示消除动态扫描阴影
w2=0;P0=table[d2]|0x01;delay(10);//第2位显示数据
P0=0x00;w2=1;//关闭显示消除动态扫描阴影
w3=0;P0=table[d3];delay(10);//第3位显示数据
P0=0x00;w3=1;//关闭显示消除动态扫描阴影
w4=0;P0=table[d4]|0x01;delay(10);//第4位显示数据
P0=0x00;w4=1;//关闭显示消除动态扫描阴影
w5=0;P0=table[d5];delay(10);//第5位显示数据
P0=0x00;w5=1;//关闭显示消除动态扫描阴影
w6=0;P0=table[d6];delay(10);//第6位显示数据
P0=0x00;w6=1;//关闭显示消除动态扫描阴影
}
voidkeyscan()//调时按键扫描函数
{
uchark_flag;
if(key1==0)//按键按下一下所有按键执行的模式都是一样的
{
delay(10);//延时消除按键抖动
if(key1==0)//确定按键按下
k_flag=1;
while(key1==0);//等待按键松手
}
while(k_flag==1)//开始调整小时数据
{
display();
if(key1==0)
{
delay(10);//延时消抖
if(key1==0)
k_flag=2;
while(key1==0);
}
if(key2==0)
{
delay(10);
if(key2==0)
{
shi++;
if(shi==24)shi=0;
}
while(key2==0);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
if(shi==0)shi=24;
shi--;
}
while(key3==0);
}
}
while(k_flag==2)//开始调整分钟数据
{
display();
if(key1==0)
{
delay(10);//延时消抖
if(key1==0)
{
k_flag=3;
}
while(key1==0);
}
if(key2==0)
{
delay(10);
if(key2==0)
{
fen++;
if(fen==60)fen=0;
}
while(key2==0);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
if(fen==0)fen=60;
fen--;
}
while(key3==0);
}
}
while(k_flag==3)//开始调整秒数据
{
display();
if(key1==0)
{
delay(10);//延时消抖
if(key1==0)
{
k_flag=0;
}
while(key1==0);
}
if(key2==0)
{
delay(10);
if(key2==0)
{
miao++;
if(miao==60)miao=0;
}
while(key2==0);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
if(miao==0)miao=60;
miao--;
}
while(key3==0);
}
}
}
voidmain()
{
TMOD=0x01;//定时器016位计时模式
TH0=(65536-50000)/256;//50ms定时
TL0=(65536-50000)%256;//50ms定时
EA=1;//开启总中断
ET0=1;//开启定时器中断
TR0=1;//开启定时器
while
(1)
{
display();//显示函数
keyscan();//按键扫描函数
}
}
voidT0_time()interrupt1
{
TH0=(65536-50000)/256;//50ms定时
TL0=(65536-50000)%256;//50ms定时
num++;//加一次50ms定时
if(num==20)//1S
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)shi=0;
}
}
}
}
时间:
2021.02.02
创作:
欧阳术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 课程设计 欧阳 创编
![提示](https://static.bdocx.com/images/bang_tan.gif)