c51单片机时钟电路程序

作者&投稿:马真 (若有异议请与网页底部的电邮联系)
基于 单片机AT89C51的电子时钟的电路图和程序怎么做啊~

不知道你做的是led还是lcd的,之前做了一个led的,程序代码如下,希望能帮到你,要是用lcd的改下显示就行了,也可以到我空间看看的,有问题随时交流下
#include
//#include"DS18B20_3.H"
#define uint unsigned int
#define uchar unsigned char
uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp,key4n;//sheding为调节打铃时间时显示
//flag用于读取头文件中的温度值,和显示温度值
uchar code Seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsigned int s_1,s_2,s_3,s_4,s_5,s_6;
#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)
#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)
uchar flag_xs=0,flag_m,flag_m1,flag_f,flag_f1,flag_s,flag_s1;
uchar flag_n,flag_n1,flag_y,flag_y1,flag_r,flag_r1,flag_mb;
uint numt;
//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)
//DS1302时钟芯片与C51之间的引脚连接定义
sbit IO=P1^1;
sbit SCLK=P1^0;
sbit RST=P1^2;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
sbit nyr=P3^1;
sbit sfm=P3^0;
/************************************************************
ACC累加器=A
ACC.0=E0H
ACC.0就是ACC的第0位。Acc可以位寻址。
累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,
是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,
常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。
一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。
***************************************************************/
//校时按键与C51的引脚连接定义
sbit key1=P1^4; //设置键
sbit key2=P1^5; //加键
sbit key3=P1^6; //减键
sbit key4=P1^3; //秒表
/**************************************************************/
void delay(uint xms)//延时函数,有参函数
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void write_sfm(uchar com,uchar miao)
{
uchar ge,shi;
sfm=1;
nyr=0;
//P3=0;
shi=miao/10;
ge=miao%10;
P2=com;
P0=Seg[ge];
delay(3);
P2=com>>1;
P0=Seg[shi];
delay(3);
}
void write_sfm_(uchar com)
{
P2=0;
nyr=0;
sfm=1;
P2=com;
P0=Seg[10];
delay(2);
P2=com>>3;
P0=Seg[10];
delay(2);

}
void write_nyr(uchar com,uchar dat)
{
uchar ge,shi;
P2=0;
nyr=1;
sfm=0;
shi=dat/10;
ge=dat%10;
P2=com;
P0=Seg[ge];
delay(3);
P2=com>>1;
P0=Seg[shi];
delay(3);
}
void write_nyr_(uchar com)
{
P2=0;
nyr=1;
sfm=0;
P2=com;
P0=Seg[10];
delay(2);
P2=com>>3;
P0=Seg[10];
delay(2);

}
void display_1(int d_1,int d_2,int d_3,int d_4,int d_5,int d_6)//LED时间显示(用于秒表)
{
P2=0;
nyr=0;
sfm=1;
P2=0x01;
P0=Seg[d_1];
delay(2);
P2=0x02;
P0=Seg[d_2];
delay(2);
//P0=0x04;
//P2=0xbf;
//delay(2);
P2=0x08;
P0=Seg[d_3];
delay(2);
P2=0x10;
P0=Seg[d_4];
delay(2);
//P0=0x20;
//P2=0xbf;
//delay(2);
P2=0x40;
P0=Seg[d_5];
delay(2);
P2=0x80;
P0=Seg[d_6];
delay(2);
}
void second()//秒表
{
display_1(s_1,s_2,s_3,s_4,s_5,s_6);
s_6++;
if(s_6>9)
{
s_6=0;
s_5++;
}
if(s_5>9)
{
s_5=0;
s_4++;
}
if(s_4>9)
{
s_4=0;
s_3++;
}
if(s_3>5)
{
s_3=0;
s_2++;
}
if(s_2>9)
{
s_2=0;
s_1++;
}
if(s_1>5)
{
s_1=0;
}
}
/***************DS1302有关子函数********************/
void write_byte(uchar dat)//写一个字节
{
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>>1;
}
}
uchar read_byte()//读一个字节
{
RST=1;
for(a=8;a>0;a--)
{
ACC7=IO;
SCLK=1;
SCLK=0;
ACC=ACC>>1;
}
return (ACC);
}
电路如下

http://wenku.baidu.com/view/d2949ceb6294dd88d0d26b42.html

http://wenku.baidu.com/view/e40cd384b9d528ea81c77942.html

这是比较经典的列子,必须要尝试自己去写,否则遇到一点麻烦就叫人家帮你写,以后遇到像单片机播放音乐这种思路不是很清晰的就更麻烦了。

void Delay_100us() //100us延时
{
unsigned char i;
for(i=0;i<100;i++)
_nop_();
}
void Delay_10ms() //10ms延时
{
unsigned char i;
for(i=0;i<100;i++)
Delay_100us();
if(endkey==1) //
yanshi=0;

}
void Delay_1s() //1s延时
{
unsigned char i;
for(i=0;i<100;i++)
Delay_10ms();
}


时钟电路原理及原理图
在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式,如图1所示。内部时钟原理图 (就是一个自激振荡电路) 在内部方...

8051单片机时钟电路
8051单片机时钟电路如下所示:电容C2、C3对频率有微调的作用,电容容量的选择范围在30pF±10pF。震荡频率的选择范围为1.2-12MHz。时钟周期=石英振荡器频率的倒数。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I\/O口和中...

时钟电路工作原理是怎样的?
时钟电路的工作原理是单片机外部接上振荡器(也可以是内部振荡器)提供高频脉冲经过分频处理后,成为单片机内部时钟信号,作为片内各部件协调工作的控制信号。作用是来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟。以MCS一5l单片机为例随明:MCS一51单片机为l2个时钟周期执行一条指令。也就是说...

AT89S51单片机外部时钟电路由什么构成?时钟电路起什么作用?
单片机外部时钟电路通常由一个晶振配两个片电容构成,时钟电路是为单片机提供时钟脉冲信号,单片机必须有时间信号才能正常工作。

51单片机最小系统原理图?
1)时钟电路 单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。内部时钟方式的原理电路如图2-8所示。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,...

51单片机的时钟电路包括两部分,即芯片内的什么和芯片外跨接的什么_百度...
51单片机的时钟电路包括两部分,即芯片内的振荡器和芯片外跨接的晶振及负载电容器。

51单片机做数字电子钟
51单片机做数字电子钟 设计一个数字电子钟,要求可以进行时、分、秒显示,最大显示时间为23:59:59,并且可以通过按键进行时、分调整。画出硬件连接电路图,说明各个控制信号的作用。᠑...  设计一个数字电子钟,要求可以进行时、分、秒显示,最大显示时间为23:59:59,并且可以通过按键进行时、分调整。

51单片机最小系统
1. 时钟电路 在设计时钟电路之前,让我们先了解下51 单片机上的时钟管脚:XTAL1(19 脚) :芯片内部振荡电路输入端。XTAL2(18 脚) :芯片内部振荡电路输出端。XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2 中采用...

为什么51单片机要有外接时钟电路
外接时钟电路?你应该说的是晶振吧?它相当于单片机的“心脏”,给单片机提供稳定的脉冲使单片机工作,就跟人心脏一跳一跳一样!拙见!

51单片机最小系统怎么实现?
包括12MHz晶振1只、30pF瓷片电容2只 4、复位电路 10uF电解电容1只,4k7电阻1只。电路如下:向左转|向右转 注:上图中\/EA(31引脚)也可直接连接电源VCC,2k电阻可去除。51单片机最小系统:1、时钟电路51 单片机上的时钟管脚:XTAL1(19 脚) :芯片内部振荡电路输入端。XTAL2(18 脚) :芯片...

鼓楼区15524443730: C51 单片机汇编程序制作时钟
无彼肝宁: 包含小时,可直接注释掉小时显示部分. ORG 0000H SJMP MAIN ORG 000BH AJMP TIMER0 ORG 0030H MAIN: MOV DPTR,#TABLE MOV P0,#0ffh MOV R0,#0 MOV R1,#0 MOV R2,#200 MOV R3,#50 MOV R4,#0 MOV R5,#0 MOV R6,#0 ...

鼓楼区15524443730: 求c51单片机电子钟程序(c语言) -
无彼肝宁: 以下是四位数码管可调时带秒闪烁的c51单片机电子钟程序(c语言)./**** 本程序中,晶振为12MHz, ****//**** 时间控制采用定时中断控制方式. ****//**** 模式和时间调整采用查询方式. ****/#include<reg52.h> sbit P20=P2^0; //分个位控制端 ...

鼓楼区15524443730: c51单片机时钟电路程序 -
无彼肝宁: void Delay_100us() //100us延时 { unsigned char i; for(i=0;i<100;i++) _nop_(); } void Delay_10ms() //10ms延时 { unsigned char i; for(i=0;i<100;i++) Delay_100us(); if(endkey==1) // yanshi=0; } void Delay_1s() //1s延时 { unsigned char i; for(i=0;i<100;i++) Delay_10ms(); }

鼓楼区15524443730: 谁能给个c51单片机的时钟程序 -
无彼肝宁: 下面是在网上找的.供参考uchar code seven_seg[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7C,0x39,0x5e,0x79,0x71};uchar keyState = 0 ; // 0表示没有操作 1 修改秒 2 修改分钟 3 修改小时 4 定闹 小时 5定闹分钟uint ledState ...

鼓楼区15524443730: 请问怎样用C语言编写C51单片机的时钟输出125KHZ的脉冲? -
无彼肝宁: 跟据你的精度要求了,如果要求不精确,可以采用whlie+for 循环, 如 while(1){for(int i=0;i<N;i++) p1^0=0,for(int i=0;i<N;i++) p1^0=1,} 如果需要精确的值,采用定时器中断,你根据你的频率要求算值,赋给定时器,然后产生中断就行了 如...

鼓楼区15524443730: 请高手用单片机C语言编写c51时钟程序,含有6个数显管,3个按键,要自己写的,不要百度什么的复制粘贴 -
无彼肝宁: 这是我初学时写的,刚好也是数码管/*位选接P2口,三个按钮分别接P25~P27.段码接P1,T0计数 */ #include<reg51.h> #define DOU 1818//按键消抖时间 sbit led_1=P2^0; sbit led_2=P2^1; sbit led_3=P2^2; sbit led_4=P2^3; sbit led_5=P2^4; sbit...

鼓楼区15524443730: C51单片机计时器50ms程序编写 -
无彼肝宁: 12MHz晶振,经典51核是12分频,因此时钟周期为1μs. 50ms = 50000μs,因此定时器累加至溢出需要50000个周期. 因此65536 - 50000 = 15536 = 0x3CB0 因此TH0 = 0x3C,TL0 = 0xB0. 0x4C00这个初值对应的不是12MHz晶振,*而是11.0592MHz晶振.你抄错了.

鼓楼区15524443730: C51单片机电子时钟设计思路 -
无彼肝宁: 程序设计思想和相关指令介绍 本系统的主程序主要完成时间显示和定时输出判断功能.而年月日显示和各时间单元进 位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成. 1.数据与代码转换. 由前述可知,从P2 口输出位选码...

鼓楼区15524443730: 求一份关于单片机设计的数字时钟设计电路和程序c51或者c52 都行 -
无彼肝宁: oop8: mov r5,#00h loop7: mov r4,#08h loop6: mov r3,#02h loop5: mov r2,#09h loop4: mov r1,#05h loop3: mov r0,#08h loop2: mov r7,#68h loop1: mov dptr,#0ff21h mov a,#01h movx @dptr,a mov dptr,#tab mov a,R0 movc a,@a+dptr mov dptr,#0ff22h ...

鼓楼区15524443730: 求C51单片机数字电子时钟课程设计1、利用CPU的定时器定时,设
无彼肝宁: #include #include #define unit unsigned int #define uchar unsigned char //#define HZ ... uchar data CLOCK[4]={0,0,0,12};//存放时钟时间(百分秒,秒,分,和时位) //数...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网