项目二 电子时钟制作工作页Word文档下载推荐.docx

上传人:b****6 文档编号:20557856 上传时间:2023-01-24 格式:DOCX 页数:27 大小:263.30KB
下载 相关 举报
项目二 电子时钟制作工作页Word文档下载推荐.docx_第1页
第1页 / 共27页
项目二 电子时钟制作工作页Word文档下载推荐.docx_第2页
第2页 / 共27页
项目二 电子时钟制作工作页Word文档下载推荐.docx_第3页
第3页 / 共27页
项目二 电子时钟制作工作页Word文档下载推荐.docx_第4页
第4页 / 共27页
项目二 电子时钟制作工作页Word文档下载推荐.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

项目二 电子时钟制作工作页Word文档下载推荐.docx

《项目二 电子时钟制作工作页Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《项目二 电子时钟制作工作页Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。

项目二 电子时钟制作工作页Word文档下载推荐.docx

R1/R2

电阻

2k/200

RP1

排阻

1K

C1、C2

瓷介电容

30pF

C3

电解电容

22μF

S1

轻触按键

CY

晶振

12MHz

IC1

单片机

AT89C52

IC插座

40脚

VD1

数码管

四位一体共阴数码管

3、数码管简介

数码管分共阴和共阳二种

4、数码管引脚图

1)一体数码管的管脚图

一体数码管,其内部段已相互连接好。

我们的任务就是找出管脚所对应的数码管的段和位。

2)二位一体数码管的管脚图

二位一体数码管,有用的是二个位选,八个段选共十个管脚。

型号不同管脚图不一样。

用万用表来测,把万用表打到检验二极管的那一档,先找到两个公共端,共阳的公共端接正极,用万用表负极在各段上试,得出abcdefghdp引脚。

二位一体数码管的引脚特点,其A-11B-7C-4D-2E-1F-10G-5DP-3其中12-9为公共端。

3)三位一体数码管的管脚图

三位一体数码管,有三个位选,八个段选共十一个管脚。

三位一体数码管的引脚特点,其A-11 

B-7 

C-4 

D-2 

E-1 

F-10 

G-5 

DP-3其中9-8-6为公共端。

4)四位一体数码管的管脚图

四位一体数码管,有四个位选,八个段选共十二个管脚。

引脚大致如图所示(正面朝自己,小数点在下方)。

a、b、c、d、e、f、g、dP为段引脚,1、2、3、4分别表示四个数码管的位

 

b

dp 

即:

12-9-8-6为公共端,A-11 

DP-3

5、数码管的检测

数码管的共阴与共阳的区分

识别是共阴型的还是共阳型的数码管,可以通过测量它的管脚,找公共共阴和公共共阳:

首先,我们找个电源(3到5伏)和1个1K(几百欧的也行)的电阻,电源串接电阻后和地接在任意2个脚上,组合有很多,但总有数码管的一段会发光,找到一个然后地不动,电源(串电阻)逐个碰剩下的脚,如果其他段(一般是7段,一个点)也亮,那它就是共阴的了。

相反电源不动,地逐个碰剩下的脚,如果其他段(一般是7段,一个点)也亮,那它就是共阳的。

直接用万用表,同测试普通半导体二极管一样。

注意!

万用表应放在R×

10K档,因为R×

1K档测不出数码管的正反向电阻值。

对于共阴极的数码管,红表笔接数码管的“-”,黑表笔分别接其他各脚。

测共阳极的数码管时,黑表笔接数码管的“+”,红表笔接其他各脚。

红表笔是电源的正极,黑表笔是电源的负极。

(二)程序编写

1、程序编写

#include<

reg52.h>

//头文件

#defineucharunsignedchar//声明变量

#defineuintunsignedint

ucharcnt,miao_ge,miao_shi;

//计数变量

Ucharcodeledcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

//0-F

ucharcodeledwei[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};

//位码

voiddelay(uintz)//延时函数

{

while(z--);

}

voidled(ucharduan,wei)

P2=ledwei[wei];

//P2口为段码显示

P0=ledcode[duan];

//P0口为位码显示

}

voidtimer0()interrupt1//定时中断子程序

TH0=0x3C;

//给定时器赋初值50ms

TL0=0xB0;

cnt++;

//中断一次加一

voidmain()//主程序

ucharmiao;

//初始化

TMOD=0x01;

//设置定时器0工作方式1

//50ms定时

EA=1;

//开总中断

ET0=1;

//开定时/计数期0中断

TR0=1;

//启动定时/计数期0

while

(1)//循环

{

if(cnt==20)//计数

{

cnt=0;

//中断标志位0

miao++;

if(miao==60)//满60变为0

{

miao=0;

}

}

miao_ge=miao%10;

miao_shi=miao/10;

led(miao_ge,7);

//第8个数吗管

delay(500);

//延时

led(miao_shi,6);

//第7个数吗管

2、程序仿真

3、烧写芯片

(三)秒表制作要点

1)根据自己设计的电路图,完成焊接与组装任务。

焊接注意事项:

(1)元件的成形,电阻采用卧式安装法。

(2)数码管注意方向和管脚。

(3)所有集成电路先装IC座,严禁将IC直接焊接在电路板上。

(4)排阻注意第一脚的位置。

(5)按键注意方向。

2)程序设计。

程序设计训练步骤:

(1)八位数码管的静、动态扫描显示程序设计与调试。

(2)定时/计数器、中断控制程序的设计与调试。

(3)定时器和数码管显示的综合程序设计与调试。

知识要点:

1.数码管简介

(1)静态显示

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。

优点是编程简单,显示亮度高,缺点是占用I/O端口多。

(2)数码管动态显示

利用发光二极管的余辉效应和人眼的视觉暂留效应,通过分时轮流控制各个数码管的位选端,使各个数码管轮流受控显示。

动态扫描频率太低,LED数码管将出现闪烁现象;

频率太高,由于每个LED数码管点亮的时间太短,LED数码管的亮度太低,无法看清。

因此,在编程时,常采用调用延时子程序来达到要求的保持时间,一般取几毫秒为宜。

(3)显示字形码

显示字符

字形

共 

阳 

阴 

dp

g

f

e

d

c

a

字形码

1

C0H

3FH

F9H

06H

2

A4H

5BH

3

B0H

4FH

4

99H

66H

5

92H

6DH

6

82H

7DH

7

F8H

07H

8

80H

7FH

9

90H

6FH

熄灭

FFH

00H

2.定时、计数的概念

(1)计数概念

(2)计数器的容量

(3)定时

(4)溢出

(5)任意定时及计数的方法

3.定时/计数器概述

(1)定时/计数器的方式控制字

TMOD位 

D7 

D6

D5 

D4 

D3 

D2 

D1 

D0

位名称 

GATE 

C/T

M1 

M0

M0 

功能 

门控位 

定时/计数方式选择 

工作方式选择 

门控位

定时/计数方式选择

高4位控制定时器/计数器1 

低4位控制定时器/计数器0 

(2)定时/计数器的4种工作方式

①工作方式0。

定时/计数器的工作方式0称为13位定时/计数方式。

它由TL的低5位和TH的8位构成13位的计数器,TL的高3位未用。

②工作方式1。

工作方式1是16位的定时/计数方式,M1M0为01,其他特性与工作方式0相同。

③工作方式2。

工作方式2是16位加法计数器,TH0和TL0具有不同功能,其中,TL0是8位计数器,TH0是重置初值的8位缓冲器。

方式2具有初值自动装入功能,每当计数溢出,就会打开高、低8位之间的开关,预置数进入低8位。

这是由硬件自动完成的,不需要由人工干预。

④工作方式3。

定时/计数器工作于方式3时,定时器T0被分解成两个独立的8位计数器TL0和TH0。

(3)三种工作方式定时时间的比较

晶振频率fosc=12MHz

方式0(13位):

8192us

方式1(16位):

65536us

方式2(8位):

256us

当晶振频率为12M时最长定时时间为65.536ms,怎样才能实现1秒定时。

(2)定时/计数器的编程和应用

例1用定时器1方式0实现1s的延时。

解:

因方式0采用13位计数器,其最大定时时间为:

8192×

1s=8.192ms,因此,定时时间不可能像方式1一样选择50ms,但可选择定时时间为5ms,再循环200次。

定时时间选定后,再确定计数值为5000,则定时器1的初值为:

X=M−计数值=8192−5000=3192=C78H=0110001111000B

因13位计数器中TL1的高3位未用,应填写0,TH1占高8位,所以,X的实际填写值应为:

X=0110001100011000B=6318H

即TH1=63H,TL1=18H,又因采用方式0定时,故TMOD=00H。

例2利用T0方式0产生1ms的定时,在P1.0端口上输出周期为2ms的方波。

设晶振频率为6MHz。

要在P1.0得到周期为2ms的方波,只要使P1.0端口每隔1ms取反一次即可。

①设置T0的方式字。

T0的方式字为:

TMOD=00H。

TMOD.0、TMOD.1M1M0=00,T0工作在方式0;

TMOD.2=0,T0为定时状态;

TMOD.3GATE=0,表示计数不受控制;

TMOD.4~TMOD.7可为任意字,因不用T1,这里均取“0”值。

②计算1ms定时T0的初值。

晶振频率为6MHz,则机器周期为2μs,设T0的初值为X,则:

(213 

− 

X)×

10−6=1×

10−3,这样X=7692D=1111000001100B=0F00CH。

因此,TH0的初值为F0H,TL0的初值为0CH。

③编程。

能力拓展

1、到计时秒表的设计与制作

2、8只数码管显示不同的数字设计与制作

3、8只数码管滚动显示数字(移位显示)设计与制作

通过学习任务二,熟悉单片机的按键控制技术等。

按键变数的设计与制作由电路和程序构成。

最小系统、数码管、按键等器件组成。

本任务为使用三个独立按键,按下按键A使数字变大,按下按键B使数字变小,按下按键C清零。

要求使用按键识别方法、按键抖动消除等技术。

S1、S2、S3、S4

(3)按键简介

按键简单的说就是一个开关。

按键根据结构可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;

另一类是无触点式开关按键,如电气式按键,磁感应按键等。

目前,单片机系统中最常见的是触点式开关按键。

(4)按键的检测

直接用万用表,R×

1电阻挡,检测按键的通断即可。

AT89X51.H>

unsignedcharNumb;

//定义变量

voiddelay10ms(void)//延时10ms

{

unsignedchari,j;

for(i=20;

i>

0;

i--)

for(j=248;

j>

j--);

}

voiddelay02s(void)//延时0.2s

unsignedchari;

i--)

delay10ms();

//调用延时10ms

}

voidmain(void)//主程序

while

(1)

{

if(P3_7==0)

if(P3_7==0)

Numb++;

if(Numb==4)

Numb=0;

while(P3_7==0);

switch(Numb)//提供四种选择

case0:

P1_0=~P1_0;

delay02s();

break;

case1:

P1_1=~P1_1;

case2:

P1_2=~P1_2;

delay02s();

case3:

P1_3=~P1_3;

(三)按键变数制作要点

(1)独立按键程序设计与调试。

(2)矩阵按键程序设计与调试。

(3)数码管显示、按键控制的综合程序设计与调试。

知识要点

1、独立式键盘

单独按键键盘很简单:

只需要测试与按键相连接口线的电平即可。

如果是高电平则没有被按下;

如果是低电平则该按键被按下。

2、行列式键盘

单个按键在键盘上的结构

(1).行列式键盘工作原理

行列式键盘电路原理如上图所示。

按键设置在行列式交点上,行列线分别连接到按键开关的两端。

当行线通过上拉电阻接+5伏时,被钳位在高电平状态。

键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的。

键盘中哪一个键按下可由列线逐列置低电平后,检查行输入状态来判断。

(2)行列式键盘工作过程

A判断有没有键被按下

B键盘抖动的消除

C键盘按下键的辨认

D键盘松开的等待

A判断案键的按下

首先判断是否有按键动作

P10、P11、P12三线有上拉电阻,平时高电平

输出P13、P14、P15、P16低电平,

如果没有键盘按下,P10、P11、P12仍高电平

如果有键盘按下,P10、P11、P12就有低电平出现

B机械按键的抖动消除

抖动现象:

按键按下过程,列线的状态如下

按下按键前,列线为高电平松开按键之后

按键按下与送开后,列线处于抖动的不稳定状态

根据机械键盘的特性,抖动的时间在10—30毫秒之间

所以,一般在判断到有可能是按键按下之后,再延时10—30毫秒,再判断,这时已经是键盘按下的稳定时期。

——没有抖动了!

下面的事情就是判断是哪个键被按下了

C判断是哪个按键被按下

一行一行地扫描:

什么叫扫描?

送出低电平给行线,再判断列线状态比如:

P13低电平,如果P11被检测到也是低则说明在P13与P11的交叉点上的按键,被按下了!

四行全扫一遍,就得到全部情况

D等待按键松开

原因:

如果按键没有松开就退出程序则又检测到有按键被按下了,如果等松开再退出,则只得到唯一一个被按下的按键值。

3、键盘工作方式

键盘的工作方式:

编程扫描方式、定时扫描方式、中断扫描方式三种。

在键盘扫描子程序中完成下述几个功能。

(1)判断键盘上有无键按下

(2)去键的机械抖动影响。

(3)求按下键的键号。

(4)键闭合一次仅进行一次键功能操作

中断式

查询式

中断方式键盘接口

1、个位数的加减乘除计算器的设计与制作

2、密码锁的设计与制作

任务三电子钟的设计与制作

通过学习任务三,熟悉单片机输入与输出控制技术等。

电子钟的设计与制作由电路和程序构成。

从硬件上看,电子钟采用八位数码管显示,能够显示小时,分钟和秒,用三个按键来调整时、分、和秒,你还可以增加定时闹钟等功能。

涉及数码管显示的方法、独立式按键识别、计时和中断处理方法等。

#defineucharunsignedchar

sbitkey1=P3^5;

sbitkey2=P3^6;

sbitkey3=P3^7;

//sbitbuzzer=P3^0;

ucharcnt,shi,fen,miao,shi_shi,shi_ge,fen_shi,fen_ge,miao_shi,miao_ge;

ucharcodeledcode[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x40};

//共阴dp~a

//ucharcodeledcode[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x40};

//共阴a~dp

//ucharcodeledcode[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x40};

//共阳a~dp

//ucharcodeledcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40};

//共阳dp~a

ucharcodeledwei[]={0XEF,0XDF,0XBF,0X7F,0XFE,0XFD,0XFB,0XF7};

voiddelay(uintz)

voidtimer0()interrupt1

if(cnt==20)

cnt=0;

miao++;

if(miao==60)

miao=0;

fen++;

if(fen==60)

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

if(key1==0)//调秒按键

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

当前位置:首页 > 小学教育 > 语文

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

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