电子时钟课程设计文档格式.docx

上传人:b****3 文档编号:18038062 上传时间:2022-12-13 格式:DOCX 页数:10 大小:51.46KB
下载 相关 举报
电子时钟课程设计文档格式.docx_第1页
第1页 / 共10页
电子时钟课程设计文档格式.docx_第2页
第2页 / 共10页
电子时钟课程设计文档格式.docx_第3页
第3页 / 共10页
电子时钟课程设计文档格式.docx_第4页
第4页 / 共10页
电子时钟课程设计文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

电子时钟课程设计文档格式.docx

《电子时钟课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《电子时钟课程设计文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

电子时钟课程设计文档格式.docx

关键词:

计数器;

单片机;

数码管;

上拉电阻

一、方案设计

、单片机的选择方案

、数码管的选择方案

、上拉电阻的选择方案

、总体设计框图

、AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

如图图、共阴极数码管是一类数字形式的显示屏,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。

由于它的价格便宜、使用简单、在电器,特别是家电领域应用极为广泛,空调、热水器、冰箱等等。

绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。

如图

图、上拉电阻(排阻,上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。

上拉是对器件注入电流,下拉是输出电流;

弱强只是上拉电阻的阻值不同,没有什么严格区分;

对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为输出型电路输出电流通道。

图二、程序

见附页1

三、硬件模块程序设计

、单片机最小系统

51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。

51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好,P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。

其他接口内部有上拉电阻,作为输出口时不需外加上拉电阻。

数码管显示模块

、6位共阴数码管显示所示

四、软件模块设计

本次设计使用的软件是Keil软件,它能够使用简单易懂的高级C语言对单片机进行软件开发,还是C52系列兼容单片机C语言软件开发系统。

五、系统硬件电路的设计

系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C51,系统采用12MHz的晶振,采用6位共阴数码管显示。

操作方法:

对照原理图,按下SW2按键第一次设置小时数据,SW3按键加,SW4按键减,按下SW2按键第二次设置分钟,SW3按键加,SW4按键减,SW2按键第三次设置秒,SW3按键加,SW4按键减,SW2第四次退出设置。

单独的一个按键SW1是复位按键

硬件电路图如图所示图

六、课程设计总结

经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。

总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。

在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。

整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。

通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。

在整个设计过程中学到了团体精神和独立解决问题的重要性。

为以后的求职之路打下了基础。

七、参考资料

[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>

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;

//第2位显示数据

w2=1;

w3=0;

P0=table[d3];

//第3位显示数据

w3=1;

w4=0;

P0=table[d4]|0x01;

//第4位显示数据

w4=1;

w5=0;

P0=table[d5];

//第5位显示数据

w5=1;

w6=0;

P0=table[d6];

//第6位显示数据

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)

if(key2==0)

{

shi++;

if(shi==24)shi=0;

}

while(key2==0);

if(key3==0)

if(key3==0)

if(shi==0)shi=24;

shi--;

while(key3==0);

}

while(k_flag==2)//开始调整分钟数据

k_flag=3;

fen++;

if(fen==60)fen=0;

if(fen==0)fen=60;

fen--;

while(k_flag==3)//开始调整秒数据

k_flag=0;

miao++;

if(miao==60)miao=0;

if(miao==0)miao=60;

miao--;

voidmain()

TMOD=0x01;

//定时器016位计时模式

TH0=(65536-50000)/256;

//50ms定时

TL0=(65536-50000)%256;

EA=1;

//开启总中断

ET0=1;

//开启定时器中断

TR0=1;

//开启定时器

while

(1)

{

//显示函数

keyscan();

//按键扫描函数

voidT0_time()interrupt1

num++;

//加一次50ms定时

if(num==20)//1S

num=0;

miao++;

if(miao==60)

miao=0;

fen++;

if(fen==60)

fen=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1