导航:首页 > 操作系统 > 51单片机数码管时钟需要什么元件

51单片机数码管时钟需要什么元件

发布时间:2022-05-29 12:20:35

㈠ 用单片机做电子时钟需要的材料

做电子时钟需要的材料:
1 6个七段数码管(2个显示:0~23小时 、2个显示:0~59分、2个显示:0~59秒)
2 6个三极管 作为 6个七段数码管的驱动
3 一个51单片机(P1口作为6个七段数码管的段形控制、P2口作为七段数码管的位控、动态显示)
4 需要4个微动按钮,可以分别用来设置或修改小时、分、秒的按键。
5 需要电阻或电阻排(220欧姆、10K)
6 最后就是需要焊接工具:电烙铁一把20~30瓦、焊锡一卷。
7 电路板 可以使用简易的实验电路板

呵呵 满意 就选满意回答啊

㈡ 基于MCS-51单片机的数字时钟都需要什么元器件

单片机就不用说了,必须的
然后看你想用什么显示,可以用数码管,也可以用液晶
如果对精度要求不高的话呢,用外接晶振自己去调就可以了.如果要准确的话,还需要一块时钟芯片
要调时的话,还要加按键,要几个就看你程序怎么写了

㈢ 基于51单片机的电子时钟设计需要哪些元件

基于51单片机的电子时钟设师
知道更多了解肯定

㈣ 51单片机不用锁存器如何做一个时钟!

使用锁存的
目的是
为了扩展或者是为了
数码管
的显示不出现闪动。不用也可以的。到俺博客看看有设置好的
。http://hi..com/cgzsxy
用P1口作为数据接每个数码管的ABCDEFG端。用P2口的前四位分别接四个数码管的公共端(可以用三极管增加
驱动能力
)。

㈤ 时钟电路设计需要哪些元件

方案的论证与选择
1.1方案论证
1.1.1采用MCS—51系列单片机和压力传感器来完成
压力传感器是鸡蛋闹钟必须用到的传感器,它具有结构简单、体积小、重量轻、使用寿命长等优异的特点。控制电路主要由单片机和程序来实现,这样的设计具有性能稳定,做工可靠,价格低廉,结构简单的优点,但也存在编程难度大的缺点。这种设计是目前工业中最常用的一种设计,产品整体价成本格较低,硬件结构简单,容易实现。
1.1.2采用TTL集成门电路和压力传感器来实现
这种设计同样采用压力传感器,但是控制电路采用集成门电路,电路主要由振荡器,分频器,计数器,译码器,显示电路组成。它的特点在于精度高,抗干扰能力强,允许的工作电压范围大,不需要编程,但同时也在产品体积大,硬件结构复杂,工作不可靠,技术老化,成本相对较高的缺点。这种设计目前在市场上已经基本淘汰。
1.1.3采用MCS—51系列单片机,时钟芯片和压力传感器来设计
这种设计在控制电路中加入了一个时钟芯片,总体来说,产品需要的编程难度降低,但是产品的硬件结构复杂了,而且时钟芯片的价格也很昂贵,提高了成本,这种设计在目前的市场上很少见。
1.2方案的选择
综上所述,应选用方案一来完成鸡蛋闹钟的设计。

这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。

电路见图1。

一片20引脚的单片机AT89C2051为电子钟主体,其显示数据从P1口分时输出,P3.0~3.3则输出对应的位选通信号。由于LED数码管点亮时耗电较大,故使用了四只PNP型晶体管VT1~VT4进行放大。本来笔者还有一种更简的设计方案(见图2),可省去VT1~VT4及R1~R4八个元件,但这种设计由于单片机输出口的灌入电流有限(约20mA),数码管亮度较暗而不向读者介绍,除非你采用了高亮度的发光数码管。

P3.4、P3.5、3.7外接了三个轻触式按键,这里我们分别命名为:模式设定键set(P3.4)、时调整键hour(P3.5)、分调整键min(P3.7)。C1、R13组成上电复位电路。VT5及蜂鸣器Bz为闹时讯响电路。三端稳压器7805输出的5V电压供整个系统工作。此电子钟可与任何9~20V/100mA的交直流电源适配器配合工作,适应性强。

电子钟功能

1.走时:通过模式设定键set选择为走时,U1、U2显示小时,U3、U4显示分。U2的小数点为秒点,每秒闪烁一次。

2.走时调整:通过模式设定键set选择为走时调整,按下hour键对U1、U2的走时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的走时“分”显示进行调整(每0.2秒递加1)。

3.闹时调整:通过模式设定键set选择为闹时调整,按下hour键对U1、U2的闹时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的闹时“分”显示进行调整(每0.2秒递加1)。

4.闹时启/停设定:通过模式设定键set选择为闹时启/停设定,按下min键U3的小数点点亮,闹时功能启动;按下hour键U3的小数点熄灭,闹时功能关停。

由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计要点。

图3为主程序状态流程。

图3

运行时建立的主要状态标志如下:

flag—掉电标志。掉电后,flag内为一随机数;重新设定时间后flag内写入标志数55H。

set—工作模式设定标志。

hour—走时“时”单元。

min—走时“分”单元。

sec—走时“秒”单元。

deda—走时5mS计数单元

t_hour—闹时“时”单元。

t_min—闹时“分”单元。

d_05s—0.5秒位标志。每秒钟的前0.5秒置1,后0.5秒置0,以使秒点闪烁。

o_f—闹时启/停位标志。闹时启动置1,闹时关停置0。

另外将定时器T0设定为5mS的定时中断。这里晶振频率为12MHz,因此5mS的初值为-5000,但实际上程序还要作其它运算,使得时间偏长,经调整
很高兴回答楼主的问题 如有错误请见谅

㈥ 我想做个时钟!用51单片机

这上面的分,是没有多大用的。不过我可以发个程序你参考参考,原理可以从程序中看出来。

/************** 数码管时钟的设计 *******************
/* MCU: AT89C51
/* MCU-crystal: 12M
/* Version: 01
/* Last Updata: 2007-9-15
/* Author: zhaojun
/* Description:
/* 定时器T0、T1溢出周期为50MS,T0为秒计数用,
/* T1为调整时闪烁用,P1.7为调整按钮,P0口为字符输出口,
/* P2口为位选,采用共阳显示管.
/****************************************************/
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define scan_data P0 //显示数据输出端口
#define bit_select P2 //位选端口
char code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "灭" "-" */
char code scan_con[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
// 列扫描控制字
char data time_data[8]={0x00,0x00,0x0B,0x00,0x00,0x0B,0x00,0x00};
// 计时单元数据初值 秒个 秒十 - 分个 分十 - 时个 时十
char data dis[12]={0x00,0x00,0x0B,0x00,0x00,0x0B,0x00,0x00,0x0a,0x0a,0x00,0x00};
// 显示单元数据 X X - X X - X X "灭" "灭" x x
char data con_04s=0x00,con_1s=0x00,con=0x00;
sbit set=P1^4;
bit flag,sign;
void scan();
/***************************************************
* 函 数 名:delay_1ms(),delay_500ms(),delay_1s()
* 功能描述:用以判断按键的长短,从而进入不同的设置
* 函数说明:500ms,1s程序变不精确,因嵌入了显示程序
* 调用函数:scan()显示程序
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
// 1ms 延时程序
void delay_1ms(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
// 500ms延时子程序
void delay_500ms(void)
{
uchar i;
for(i=150;i>0;i--)
scan();
}
// 1s延时子程序
void delay_1s(void)
{
uchar h,i;
for(h=5;h>0;h--)
for(i=40;i>0;i--)
scan();
}
/***************************************************
* 函 数 名:scan()
* 功能描述:显示时钟数据
* 函数说明:时钟显示格式为:xx-xx-xx
* 调用函数:delay_1ms()
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
// 显示子程序
void scan(void)
{
uchar k;
for(k=0;k<8;k++)
{
scan_data=dis_7[dis[k]];
bit_select=scan_con[k];
delay_1ms(1);
bit_select=0xFF;
}
}
/***************************************************
* 函 数 名:add_data()
* 功能描述:对时、分数据进行加
* 函数说明:flag=0时判断分钟,flag=1时判断小时
* 调用函数:无
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void add_data(void)
{
uchar i;
time_data[con]++; //时间数据加1
if(time_data[con]>=10) //个位数据等于10,则个位清零,十位加1
{
time_data[con]=0;time_data[con+1]++;
}
if(flag==0) //如果是分钟数据,判断十位是否到6时,清零
{
if(time_data[con+1]>=6)
{
time_data[con]=0;time_data[con+1]=0;
}
}
if(flag==1) //如果是小时数据,判断是否为24时,清零
{
if(time_data[con+1]==2)
{
if(time_data[con]>=4)
{
time_data[con]=0;time_data[con+1]=0;
}
}
}

for(i=0;i<8;i++) //把调节数据放入显示区
{
dis[i]=time_data[i];
}
dis[8]=0x0a;dis[9]=0x0a; //寄存器中存入熄灭符
}
/***************************************************
* 函 数 名:keyscan()
* 功能描述:对一个按键进行时间扫描
* 函数说明:对按键长短进行比较,从而进行不同的设置
* 调用函数:delay_1s(),scan(),delay_500ms()
* 全局变量:sign,flag
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void keyscan(void)
{
if(set==0) //有键按下,判断按键时间
{
delay_1s(); //1s延时程序
if(set==0) //大于1s,进入时间设置
{
ET0=0; TR0=0; //关定时器0
while(set==0) scan(); //等键释放
ET1=1;TR1=1; con=3; //开定时器1,让调整位闪烁
do
{
while(set!=0) scan(); //等待按键
delay_500ms();
if(set!=0) //小于0.5s,进入分钟设置
{
while(set==0) scan(); //等待按键释放
sign=1;
flag=0;
add_data(); //分钟加1
scan();
}
else sign=0; //大于0.5s,进入小时设置
}while(sign);
while(set==0)scan(); //等待按键释放
con=6;
do
{
while(set!=0) scan(); //等待按键
delay_500ms();
if(set!=0) //小于0.5s,进入小时设置
{
while(set==0) scan(); //等待按键释放
sign=1;
flag=1;
add_data(); //小时加1
scan();
}
else sign=0; //大于0.5s,结束时间设置
}while(sign);
ET1=0;TR1=0; //关定时器1
ET0=1;TR0=1; //开定时器0
}
else //小于1s,进入省电模式
{
ET0=1; TR0=1; //开定时器0
while(set!=0); //等待按键
do
{
scan(); //有键按下,调显示程序消抖
}while(set!=0); //是干扰则继续循环
}
while(set==0) scan(); //等待按键释放
}
else ; //无键按下,跳出按键扫描程序
}
/***************************************************
* 函 数 名:clearmen()
* 功能描述:对主程序进行初始化设置
* 函数说明:对显示单元,定时器0、1进行赋初值
* 调用函数:无
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void clearmen(void)
{
uchar i;
for(i=0;i<8;i++)
{
dis[i]=time_data[i];
}
TH0=0x3C; TL0=0xB0; //定时器0赋初值
TH1=0x3C; TL1=0xB0; //定时器1赋初值
TMOD=0x11;ET0=1;ET1=1;TR0=1;TR1=0;EA=1;//设置定时器工作方式,开定时器
}
/***************************************************
* 函 数 名:main()
* 功能描述:主程序
* 函数说明:不断进行时间显示和按键扫描
* 调用函数:clearmen(),scan(),keyscan()
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void main( )
{
clearmen(); //初始化
while(1)
{
scan(); //时间显示
keyscan(); //按键扫描
}
}
/***************************************************
* 函 数 名:time_intt0()
* 功能描述:T0中断服务程序
* 函数说明:1s计数,并对时间值进行判断
* 调用函数:无
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void time_intt0(void) interrupt 1
{
uchar i;
ET0=0;TR0=0; //关T0定时器
TH0=0x3C;TL0=0xB7;//赋初值
TR0=1; //开T0定时器
con_1s++; //1s计数器计数
if(con_1s==20) //1s到,时间加1
{
con_1s=0; //1s计数器值0
time_data[0]++;//秒加1
if(time_data[0]>=10) //秒个位
{
time_data[0]=0;time_data[1]++;
if(time_data[1]>=6) //秒十位
{
time_data[1]=0;time_data[3]++;
if(time_data[3]>=10) //分个位
{
time_data[3]=0;time_data[4]++;
if(time_data[4]>=6) //分十位
{
time_data[4]=0;time_data[6]++;
if(time_data[6]>=10) //时个位
{
time_data[6]=0;time_data[7]++;
}
if(time_data[7]==2) //时十位
{
if(time_data[6]==4) //时个位
{
time_data[6]=0;time_data[7]=0;
}
}
}
}
}
}
for(i=0;i<8;i++) //计时数据放入显示单元
{
dis[i]=time_data[i];
}
dis[8]=0x0a;dis[9]=0x0a; //放入熄灭符
}
ET0=1; //开总中断
}
/***************************************************
* 函 数 名:time_intt1()
* 功能描述:T1中断服务程序
* 函数说明:用以调节时间是的闪烁
* 调用函数:无
* 全局变量:无
* 输 入 值:无
* 输 出 值:无
* 返 回 值:无
* 设 计 者:zhaojun 日期:2007-9-15
* 修 改 者:zhaojun 日期:2007-9-19
* 版 本:1.0
*****************************************************/
void time_intt1(void) interrupt 3
{
EA=0; TR1=0; //关闭定时器
TH1=0x3C; TL1=0xB0; //定时器1赋初值
TR1=1; //开定时器1
con_04s++; //0.4s计数器计数
if(con_04s==8) //到0.4s,赋闪烁值
{
con_04s=0; //0.4s计数器值0
dis[10]=dis[con];dis[con]=dis[8];dis[8]=dis[10];
dis[11]=dis[con+1];dis[con+1]=dis[9];dis[9]=dis[11];
}
EA = 1; //开总中断
}

//********************** 程序结束 ***********************

㈦ 51单片机通常用到哪些电子元件

要看板子的主要功能,一般来说,单片机的最小系统包括单片机主芯片,RAM,ROM/Flash,接口扩展芯片等,还包括一些常用的电阻电容,电源芯片,也需要一些输入输出设备,比如按键,LED显示管,灯。

㈧ 8051单片机时钟电路

8051单片机时钟电路如下所示:


电容C2、C3对频率有微调的作用,电容容量的选择范围在30pF±10pF。震荡频率的选择范围为1.2-12MHz。时钟周期=石英振荡器频率的倒数。


单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

㈨ 以51单片机为核心器件,组成一个电子时钟系统。

调用定时器中断,发出一个频率1s的脉冲,用这个来计数。加上几个按键,按键接收到一个电平信号这个数也+1。满60清零,分钟那个数+1,分钟满60清零,小时加1。在循环中不停的和你设定的定时时间做对比,一旦相同就启动蜂鸣器提醒。

㈩ 用80C51单片机做一个时钟需要哪些材料啊元器件、

用KEIL
C51编程,用
PROTEUS仿真。
要用到晶振电路,复位电路,这两个你可以从书上查到怎么和单片机连上。
然后就是八段数码管了,其他还有按键,用作调表,还有三极管(9013或者PN222)用作驱动数码管。具体这些器件怎么连接去查些资料吧!和简单的,祝你成功

阅读全文

与51单片机数码管时钟需要什么元件相关的资料

热点内容
余冠英pdf 浏览:755
开发一个app上市需要什么步骤 浏览:28
phpsleep方法 浏览:430
时间同步服务器ip地址6 浏览:926
钢琴谱pdf下载 浏览:524
香港阿里云服务器怎么封udp 浏览:875
APp买海鲜到哪里 浏览:501
辽油社保app总提示更新怎么办 浏览:586
导入源码教程视频 浏览:613
天翼贷app在哪里下载 浏览:186
app开发源码查看器 浏览:516
程序员发展到了一个瓶颈 浏览:120
程序员去机房干嘛 浏览:697
英雄训练师怎么看曾经服务器 浏览:546
魔兽世界单机输入gm命令 浏览:372
51单片机最大负跳距是多少 浏览:418
android聊天控件 浏览:128
导致压缩机坏的原因 浏览:295
如何多次选取文件夹 浏览:280
android编译生成odex 浏览:233