基于单片机的数字时钟设计Word文件下载.docx

上传人:b****4 文档编号:16542561 上传时间:2022-11-24 格式:DOCX 页数:11 大小:155.62KB
下载 相关 举报
基于单片机的数字时钟设计Word文件下载.docx_第1页
第1页 / 共11页
基于单片机的数字时钟设计Word文件下载.docx_第2页
第2页 / 共11页
基于单片机的数字时钟设计Word文件下载.docx_第3页
第3页 / 共11页
基于单片机的数字时钟设计Word文件下载.docx_第4页
第4页 / 共11页
基于单片机的数字时钟设计Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于单片机的数字时钟设计Word文件下载.docx

《基于单片机的数字时钟设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字时钟设计Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

基于单片机的数字时钟设计Word文件下载.docx

原理图说明:

KEY1至KEY6为矩阵键盘,分别对应秒、分、时的加减,DIGILED1和DIGI2为四位数码管,SW—RET为复位键,DIG1至DIG8分别控制一位数字的显示。

USB为输入端,U2提供工作电压,U1为单片机STC89C52芯片。

VCC外接电源,GND接地,SWITCH1为跳帽连接处。

元器件清单如下表所示:

电子时钟元件清单表

原件名称

数量

焊接位置

电源部分

USB座

1

USB

USB线

双排针

(2)

CONN1

跳帽

2

104电容0.1uF

6

C2,5,6,7,8,9,11

LED灯

D1

电阻2K

R2

最小系统部分

40针座

U1

STC89C52

晶振12MHz

Y1

电容20pF

C3,C4

复位键

SW_RST

电阻10K

R1

蜂鸣器

LS1+

三极管9015

9

Q1~Q9

电阻330

R3

键盘显示、通信部分

16针座

U2

MAX232

单排针(5)

UART

按键

4

KEY1~KEY4

单排针(3)

SWITCH1

4位LED

DIGILED1,2

电阻4.7K

8

R14~R21

R6~R13

3、电子时钟的软件设计

本次课程设计程序用C语言编写

源程序:

/*--------------------------------

电子时钟

-------------------------------*/

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineBIT(x)(1<

<

(x))

#definesegP0

#definedigP2

ucharnum=0,SEC=0,MIN=0,HOUR=12,key;

ucharcodetab[]={0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xF8,0x80,0x90,0xbf};

voiddelayms(uintz)//毫秒级的延时程序

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

/*********************************

函数名:

keyscan()

功能描述:

矩阵键盘扫描(线反转法)

入口参数:

返回值:

key为0-15键码,返回88为错误码。

*********************************/

voidkeyscan()//矩阵键盘扫描函数

ucharx,y;

P3=0xf0;

if(P3!

=0xf0)

{

delayms(10);

x=P3&

0xf0;

P3=0x0f;

y=P3&

0x0f;

key=x|y;

while(P3!

=0x0f);

switch(key)

case0xbe:

key=5;

HOUR++;

break;

case0x7e:

key=1;

SEC++;

case0xbd:

key=6;

if(HOUR>

0)HOUR--;

case0x7d:

key=2;

if(SEC>

0)SEC--;

case0x7b:

key=3;

MIN++;

case0x77:

key=4;

if(MIN>

0)MIN--;

default:

key=88;

}

voiddisplay(void)

uchari;

for(i=0;

i<

8;

i++)

dig=dig&

~BIT(i);

//dig|=BIT(i);

|=逻辑或

switch(i)

{

case0:

seg=tab[SEC%10];

break;

case1:

seg=tab[SEC/10];

case2:

seg=tab[10];

case3:

seg=tab[MIN%10];

case4:

seg=tab[MIN/10];

case5:

case6:

seg=tab[HOUR%10];

case7:

seg=tab[HOUR/10];

default:

}

delayms(3);

//dig&

=~BIT(i);

dig|=BIT(i);

voidinit()//初始化函数,做初始化工作的

{

dig=0xFF;

//位选

seg=0x00;

//段选

TMOD|=0X01;

//定时器0方式1

IE|=0X82;

//EA=1,T0=1

TH0=(65536-50000)/256;

//THO=60

TL0=(65536-50000)%256;

//TL0=00

TCON|=0X10;

//定时器控制寄存器TR0=1

voidmain()

init();

//初始化子程序

while

(1)

{

keyscan();

if(SEC==60)

SEC=0;

MIN++;

if(MIN==60)

MIN=0;

HOUR++;

if(HOUR==24)

HOUR=0;

display();

voidT0_time()interrupt1

num++;

if(num==20)

num=0;

SEC++;

if(MIN==60)

{

MIN=0;

HOUR++;

if(HOUR==24)

{

HOUR=0;

}

电子时钟程序流程图:

四、课程设计总结

这次单片机课程设计使我对电子信息技术应用有了更加深刻的认识。

跟之前的理论设计,软件仿真不同,这次课程设计要求作出能实现具体功能的实物。

课程设计过程中,我们遇到了不少问题,在老师与同学的帮助下,最终达到了想要的结果。

通过这次课程设计,我了解了单片机的更多功能,只要程序得当,能用它实现很多实用功能,能让一些工作变得更加简单。

同时,我也深刻体会到深入实践的重要性,理论要发挥价值,必须掌握将它转化成实际应用的途径与方法。

五、指导教师评语

成绩指导教师签名

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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