搜档网
当前位置:搜档网 › 单片机时钟电路仿真

单片机时钟电路仿真

单片机时钟电路仿真
单片机时钟电路仿真

#include

#include

sbit RS=P2^0;

sbit RW=P2^1;

sbit E=P2^2;

sbit BF=P0^7;

unsigned char flag;

unsigned char time[]={"time:"};

unsigned char mon[]={"Mon"};

unsigned char tus[]={"Tus"};

unsigned char wed[]={"Wed"};

unsigned char thur[]={"Thur"};

unsigned char fri[]={"Fri"};

unsigned char sat[]={"Sat"};

unsigned char sun[]={"Sun"};

//寄存器宏定义

#define WRITE_SECOND 0x80

#define WRITE_MINUTE 0x82

#define WRITE_HOUR 0x84

#define READ_SECOND 0x81

#define READ_MINUTE 0x83

#define READ_HOUR 0x85

#define WRITE_PROTECT 0x8E

#define WRITE_DAY 0x86

#define WRITE_MONTH 0x88

#define WRITE_YEAR 0x8c

#define WRITE_WEEK 0x8a

#define READ_DAY 0x87

#define READ_MONTH 0x89

#define READ_YEAR 0x8d

#define READ_WEEK 0x8b

//位寻址寄存器定义

sbit ACC_7 = ACC^7;

//管脚定义

sbit SCLK = P3^1; // DS1302时钟信号7脚sbit DIO= P3^2; // DS1302数据信号6脚sbit CE = P3^0; // DS1302片选5脚

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

函数功能:延时1ms

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

void delay1ms()

{

unsigned char i,j;

for (i=0;i<10;i++)

for (j=0;j<33;j++)

;

}

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

函数功能:延时n毫秒

入口参数:n

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

void delaynms(unsigned char n)

{

unsigned char i;

for (i=0;i

delay1ms();

}

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

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙。

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

bit BusyTest(void)

{

bit result;

RS=0; //根据规定,RS为低电平、RW为高电平时,可以读状态

RW=1;

E=1; //E=1,才允许读/写

_nop_();

_nop_();

_nop_();

_nop_();

result=BF; //将忙碌标志电平赋给result

E=0;

return result;

}

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

函数功能:将模式设置指令或显示地址写入液晶模块

入口参数:dictate

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

void WriteInstruction(unsigned char dictate)

{

while(BusyTest()==1); //如果忙就等待

RS=0; //根据规定,RS和R/W同为低电平时,可以写入指令

RW=0;

E=0;

_nop_();

_nop_();

P0=dictate; //将数据送入P0口,即写入指令或地址_nop_();

_nop_();

_nop_();

_nop_();

E=1; //E置高电平

_nop_();

_nop_();

_nop_();

_nop_();

E=0;

}

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

函数功能:指定字符显示的实际地址

入口参数:x,y

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

void WriteAddress(unsigned char x,unsigned char y)

{

unsigned char temp;

if(x==0)

{

switch(y)

{

case 0:temp=0x00; break;

case 1:temp=0x01; break;

case 2:temp=0x02;break;

case 3:temp=0x03;break;

case 4:temp=0x04;break;

case 5:temp=0x05;break;

case 6:temp=0x06;break;

case 7:temp=0x07;break;

case 8:temp=0x08;break;

case 9:temp=0x09;break;

case 10:temp=0x0a;break;

case 11:temp=0x0b;break;

case 12:temp=0x0c;break;

case 13:temp=0x0d;break;

case 14:temp=0x0e;break;

case 15:temp=0x0f;break;

}

}

if(x==1)

{

switch(y)

{

case 0:temp=0x40;break;

case 1:temp=0x41;break;

case 2:temp=0x42;break;

case 3:temp=0x43;break;

case 4:temp=0x44;break;

case 5:temp=0x45;break;

case 6:temp=0x46;break;

case 7:temp=0x47;break;

case 8:temp=0x48;break;

case 9:temp=0x49;break;

case 10:temp=0x4a;break;

case 11:temp=0x4b;break;

case 12:temp=0x4c;break;

case 13:temp=0x4d;break;

case 14:temp=0x4e;break;

case 15:temp=0x4f;break;

}

}

WriteInstruction(temp|0x80); //显示位置的确定方法规定为“80H+地址码x”}

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

函数功能:将数据(字符的标准ASCII码)写入液晶模块

入口参数:y

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

void WriteData (unsigned char y)

{

while(BusyTest()==1);

RS=1; //RS为高电平,RW为低电平时,可以写入数据

RW=0;

E=0;

P0=y; //将数据送入P0口,即将数据写入液晶模块_nop_();

_nop_();

_nop_();

_nop_();

E=1;

_nop_();

_nop_();

_nop_();

_nop_();

E=0; //当E由高电平跳变成低电平时,液晶模块开

}

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

函数功能:对LCD的显示模式进行初始化设置

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

void LcdInitiate(void)

{

delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38); //显示模式设置

delaynms(5);

WriteInstruction(0x38);

delaynms(5);

WriteInstruction(0x38);

delaynms(5);

WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁

delaynms(5);

WriteInstruction(0x06); //显示模式设置:光标右移,字符不移

delaynms(5);

WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除

delaynms(5);

}

/*地址、数据发送子程序*/

void Write1302 ( unsigned char addr,dat )

{

unsigned char i,temp;

CE=0; //CE引脚为低,数据传送中止

SCLK=0; //清零时钟总线

CE = 1; //CE引脚为高,逻辑控制有效

//发送地址

for ( i=8; i>0; i-- ) //循环8次移位

{

SCLK = 0;

temp = addr;

DIO = (bit)(temp&0x01); //每次传输低字节

addr >>= 1; //右移一位

SCLK = 1;

}

//发送数据

for ( i=8; i>0; i-- )

{

SCLK = 0;

temp = dat;

DIO = (bit)(temp&0x01);

SCLK = 1;

}

CE = 0;

}

/*数据读取子程序*/

unsigned char Read1302 ( unsigned char addr )

{

unsigned char i,temp,dat1,dat2;

CE=0;

SCLK=0;

CE = 1;

//发送地址

for ( i=8; i>0; i-- ) //循环8次移位

{

SCLK = 0;

temp = addr;

DIO = (bit)(temp&0x01); //每次传输低字节

addr >>= 1; //右移一位

SCLK = 1;

}

//读取数据

for ( i=8; i>0; i-- )

{

ACC_7=DIO;

SCLK = 1;

ACC>>=1;

SCLK = 0;

}

CE=0;

dat1=ACC;

dat2=dat1/16; //数据进制转换

dat1=dat1%16; //十六进制转十进制

dat1=dat1+dat2*10;

return (dat1);

}

/*初始化DS1302 */

void initial1302(void)

{

Write1302 (WRITE_PROTECT,0X00); //禁止写保护Write1302 (WRITE_SECOND,0x56); //秒位初始化Write1302 (WRITE_MINUTE,0x34); //分钟初始化Write1302 (WRITE_HOUR,0x12); //小时初始化Write1302 (WRITE_DAY,0x12);

Write1302 (WRITE_MONTH,0x12); Write1302 (WRITE_YEAR,0x00); Write1302 (WRITE_WEEK,0x01); Write1302 (WRITE_PROTECT,0x80); }

/****************************** lcd时钟显示子程序

****************************/ void display_clock()

{

unsigned char i;

WriteAddress(1,0);

i=0;

while(time[i]!='\0')

{

WriteData(time[i]);

i++;

delaynms(20);

}

WriteAddress(0,5);

WriteData(':');

delaynms(20);

WriteAddress(0,8);

WriteData(':');

delaynms(20);

WriteAddress(1,9);

WriteData(':');

delaynms(20);

WriteAddress(1,12);

WriteData(':');

delaynms(20);

}

void display_year()

{

unsigned char year,y1,y2;

year=Read1302(READ_YEAR);

y1=year/10+48;

y2=year%10+48;

WriteAddress(0,1);

WriteData(2+48);

delaynms(20);

WriteAddress(0,2);

WriteData(48);

delaynms(20);

WriteAddress(0,3);

WriteData(y1);

delaynms(20);

WriteAddress(0,4);

WriteData(y2);

delaynms(20);

}

void display_month()

{

unsigned char month,m1,m2;

month=Read1302(READ_MONTH);

m1=month/10+48;

m2=month%10+48;

WriteAddress(0,6);

WriteData(m1);

delaynms(20);

WriteAddress(0,7);

WriteData(m2);

delaynms(20);

}

void display_day()

{

unsigned char day,d1,d2;

day=Read1302(READ_DAY);

d1=day/10+48;

d2=day%10+48;

WriteAddress(0,9);

WriteData(d1);

delaynms(20);

WriteAddress(0,10);

WriteData(d2);

delaynms(20);

}

void display_week()

{

unsigned char i,j,k,a,b,c,d,week;

week=Read1302(READ_WEEK);

WriteAddress(0,12);

switch(week)

{

case 1:while(mon[i]!='\0')

{

WriteData(mon[i]);

i++;

delaynms(20);

};break;

case 2:while(tus[j]!='\0')

{

WriteData(tus[j]);

j++;

delaynms(20);

};break;

case 3:while(wed[k]!='\0')

{

WriteData(wed[k]);

k++;

delaynms(20);

};break;

case 4:while(thur[a]!='\0')

{

WriteData(thur[a]);

a++;

delaynms(20);

};break;

case 5:while(fri[b]!='\0')

{

WriteData(fri[b]);

b++;

delaynms(20);

};break;

case 6:while(sat[c]!='\0')

{

WriteData(sat[c]);

c++;

delaynms(20);

};break;

case 7:while(sun[d]!='\0')

{

WriteData(sun[d]);

d++;

delaynms(20);

};break;

default:;

}

}

void display_hour()

{

unsigned char hour,h1,h2;

hour=Read1302(READ_HOUR);

h1=hour/10+48;

h2=hour%10+48;

WriteAddress(1,7);

WriteData(h1);

delaynms(20);

WriteAddress(1,8);

WriteData(h2);

delaynms(20);

}

void display_second()

{

unsigned char second,s1,s2;

second=Read1302(READ_SECOND);

s1=second/10+48;

s2=second%10+48;

WriteAddress(1,13);

WriteData(s1);

delaynms(20);

WriteAddress(1,14);

WriteData(s2);

delaynms(20);

}

void display_minute()

{

unsigned char minute,m1,m2;

minute=Read1302(READ_MINUTE);

m1=minute/10+48;

m2=minute%10+48;

WriteAddress(1,10);

WriteData(m1);

delaynms(20);

WriteAddress(1,11);

WriteData(m2);

delaynms(20);

}

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

主函数

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

void main()

{

TR0=1;

EA=1;

ET0=1;

IT0=1;

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

LcdInitiate();

initial1302();

display_clock();

flag=20;

while(1)

{

if(flag==20)

{

flag=0;

display_year();

display_month();

display_day();

display_week();

display_hour();

display_minute();

display_second();

}

}

}

void timer0_int() interrupt 1 {

TH0=0x3c;

TL0=0xb0;

flag++;

}

基于单片机的电子日历时钟设计

#include #define uchar unsigned char #define uint unsigned int //----端口定义--- sbit ACC_7=ACC^7; sbit RST1=P2^5; sbit IO=P2^6; sbit SCLK=P2^7; sbit k1=P3^2; sbit k2=P3^3; sbit k3=P2^2; sbit k4=P2^3; //uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 数码的位选,左到右 uchar tab_1302[7]={45,50,11,19,1,1,15}; uchar tab_time[8]={0,0,10,0,0,10,0,0}; //时间 uchar tab_day[8]={0,0,10,0,0,10,0,0,}; //年月日 uchar tab_num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //0 1 2 3 4 5 6 7 8 9 - {"0123456789-"} ////////////=============函数声明============//////////////// void display_time(); void delayms(uint); void display_day(); void ds1302(); //获取DS1302的时间 void ds1302_init(); //DS1302的初始化 void write1302(uchar,uchar); //指定地址向DS1302写数据 uchar read1302(uchar); //指定地址向DS1302读数据 void ds1302(); void int0_init(); /////////=======中断初始化=======/////////// void int0_init() { EX0=1;

单片机温度感应控制电路原理图

引言 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。 1硬件电路设计 以热电偶为检测元件的单片机温度控制系统电路原理图如图1所示。 1.1 温度检测和变送器 温度检测元件和变送器的类型选择与被控温度的范围和精度等级有关。镍铬/镍铝热电偶适用于 0℃-1000℃的温度检测范围,相应输出电压为0mV-41.32mV。 变送器由毫伏变送器和电流/电压变送器组成:毫伏变送器用于把热电偶输出的0mV-41.32mV变换成4mA-20mA的电流;电流/电压变送器用于把毫伏变送器输出的4mA-20mA电流变换成0-5V的电压。 为了提高测量精度,变送器可以进行零点迁移。例如:若温度测量范围为500℃-1000℃,则热电偶输出为20.6mV-41.32mV,毫伏变送器零点迁移后输出4mA-20mA范围电流。这样,采用8位A/D转换器就可使量化温度达到1.96℃以内。 1.2接口电路 接口电路采用MCS-51系列单片机8031,外围扩展并行接口8155,程序存储器EPROM2764,模数转换器ADC0809等芯片。 由图1可见,在P2.0=0和P2.1=0时,8155选中它内部的RAM工作;在P2.0=1和P2.1=0时,8155选中它内部的三个I/O端口工作。相应的地址分配为: 0000H - 00FFH 8155内部RAM 0100H 命令/状态口 0101H A 口 0102H B 口 0103H C 口 0104H 定时器低8位口 0105H 定时器高8位口 8155用作键盘/LED显示器接口电路。图2中键盘有30个按键,分成六行(L0-L5)五列(R0-R4),只要某键被按下,相应的行线和列线才会接通。图中30个按键分三类:一是数字键0-9,共10个;二是功能键18个;三是剩余两个键,可定义或设置成复位键等。为了减少硬件开销,提高系统可靠性和降低成本,采用动态扫描显示。A口和所有LED的八段引线相连,各LED的控制端G和8155C口相连,故A口为字形口,C口为字位口,8031可以通过C口控制LED是否点亮,通过A口显示字符。

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

单片机电路图详解

单片机:交通灯课程设计(一) 目录 摘要--------------------------------------------------------- 1 1.概述 -------------------------------------------------------- 2 2.硬件设计----------------------------------------------------- 3 2.1单片机及其外围--------------------------------------------3 2.1.1单片机的选择-----------------------------------------3 2.1.2单片机的特点及其应用范围----------------------------- 3 2.1.3存储器的扩展----------------------------------------- 4 2.1.4内存的扩展------------------------------------------- 6 2.1.5MCS-52的I/O接口扩展--------------------------------- 8 2.2电路部分--------------------------------------------------11 2.2.1元器件选用-------------------------------------------11 2.2.2电路完成功能-----------------------------------------13 3.软件设计------------------------------------------------------15 3.1软件概述-------------------------------------------------15 3.2汇编语言指令说明-----------------------------------------16 3.3定时/计数器的原理----------------------------------------16 3.3.1定时/计数器的概述-----------------------------------16 3.3.2 8255A片选及各端口地址-------------------------------18 3.3.3信号控制码------------------------------------------18 3.3.4工作方式寄存器--------------------------------------19 3.3.5定时/计数器初值及定时器T0的工作方式----------------20

电子时钟单片机【完整版】

烟台南山学院 单片机课程设计题目电子时钟 姓名: 所在学院 所学专业: 班级: 学号: 指导教师: 完成时间:

随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。 由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。 在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。 本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。本系统为多功能数字钟的系统。本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。 关键词:单片机 AT89S52 电子时钟汇编语言

基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度)

1 课设所需软件简介 1.1 Keil uVision4的简要介绍 2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。 Keil C51开发系统基本知识Keil C51开发系统基本知识 1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

基于单片机及时钟芯片DS1302的电子时钟设计

目录 摘要 一、引言 (1) 二、硬件电路设计 (2) 2.1 主要芯片 (2) 2.1.1 微处理器 (2) 2.1.2 DS1302简介 (4) 2.1.3 DS1302引脚说明 (5) 2.1.4 74ls245简介及引脚说明 (5) 2.2 时钟硬件电路设计 (6) 2.2.1 时钟电路设计 (7) 2.2.2 整点报时功能 (8) 2.2.3 硬件原理图 (9) 三、proteus和keil软件仿真及调试 (9) 3.1 电路的仿真 (9) 3.2 软件调试 (9) 四、C语言程序 (10) 五、参考文献 (13)

电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。 本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。 本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。 关键词:电子钟;多功能;AT89C52;时钟芯片

一、引言 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。 1.1 多功能电子时钟研究的背景和意义 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的[1]。 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

51单片机AD89电路设计程序+原理图

AD0809在51单片机中的应用 我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。下现我们就来了解一下AD0809与51单片机的接口及其程序设计。 1、AD0809的逻辑结构 ADC0809是8位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

2、AD0809的工作原理 IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道

的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。 C B A 选择的通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(+),VREF(-)为参考电压输入。

单片机课程设计 电子日历时钟显示器设计

目录 1.题目设计要求 (1) 2.开发平台简介 (1) 3.系统硬件设计 (2) 3.1设计原理 (2) 3.2器件的功能与作用 (2) 3.2.1 MCS51单片机AT89C51 (2) 3.2.2复位电路 (3) 3.2.3晶振电路 (4) 3.2.4 DS1302时钟模块 (4) 3.2.5 引脚功能及结构 (4) 3.2.6 DS1302的控制字节 (5) 3.2.7 数据输入输出(I/O) (5) 3.2.8 DS1302的寄存器 (6) 3.2.9 液晶显示LCD1602 (6) 3.2.10 串行时钟日历片DS1302 (8) 4.系统软件设计 (10) 4.1程序流程 (10) 4.2程序代码 (10) 5.系统仿真调试 (20) 5.1仿真原理图设计 (20) 5.2仿真运行过程 (21) 5.3仿真运行结果 (21) 6.总结 (21) 7.参考文献 (22)

1.题目设计要求 通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。要求LCD上显示的日期和时间与当前系统时间保持一致。 2.开发平台简介 2.1系统仿真平台Proteus Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史,在全球得到了广泛应用。Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩。和我们手头其他的电路设计仿真软件,他最大的不同即它的功能不是单一的。另外,它独特的单片机仿真功能是任何其他仿真软件都不具备的。 2.2软件开发平台Keil C Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。Keil C51生成的目标代码效率之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

51单片机的若干电路原理图

51单片机的若干电路原理图 单片机 2007-10-23 20:36:31 阅读198 评论0 字号:大中小订阅 利用下面这些原理图,就可以自己动手做个简单的实验板啦~~~~ 1 外接电源供电电路及电源指示灯 在单片机实训板上为系统设计了一个外接电源供电电路,这个电源电路具备两种电源供电方式:一种是直接采用PC的USB接口5V直流电源给实训板供电,然后在电源电路中加入一个500mA电流限制的自恢复保险丝给PC的USB电源提供了保护的作用;另一种是采用小型直流稳压电源供电,输出的9V直流电源加入到电源电路中,通过LM7805稳压芯片的降压作用,给实训板提供工作所需的5V电源。 如图2.4所示为采用LM7805稳压芯片进行降压供电的电源电路。 图2.4 外接电源供电电路 同时,为了显示外接电源给实训板提供了电源,在系统中增加了电源指示灯电路,如图2.5。 发光二极管工作在正常工作状态时,流过LED的电流只需要5~10mA左右就行,在电路中采用白发红高亮LED,所以可以取5mA左右

的电流值,通过计算,可知:连接LED的限流电阻的阻值可以采用680Ω。 图2.5 电源指示灯电路 2 系统复位电路 复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,即可使单片机复位。除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。 在系统中,为了实现上述的两项功能,采用常用的按键电平复位电路,如图2.6所示。 2.6 按键电平复位电路 从途中可以看出,当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc

毕业设计:基于单片机的电子日历时钟

一课程设计题目:电子日历时钟 二实现的功能: 基本功能: (1)显示北京时间,并且能够校准时间; (2)程序使用汇编语言; (3)显示的时、分、秒之间以及年、月、日间以小数点分隔;(4)显示公历日期,并且能够校准日期; 发挥功能: (5)运动秒表; (6)闹钟功能; (7)自动整点报时。 三课程设计的目的: 课程标志性内容的设计理解和综合运用,对所学内容进行一次实操,学以致用。 四、设计方案说明 1、硬件部分 (1)采用6位LED数码管显示日期或者时间。 (2)显示器的驱动采用“动态扫描驱动”,且采用“一键多用”的设计方案,系统电路大为简化。使用小数点表示闹 钟设置状态; (3)电路连接使用PCB,使电路连接简洁美观

2、软件部分 (1)“时钟”基准时间由单片机内部的定时中断提供,考虑因素:定时时间是“秒”的整除数,且长短适宜。最长不 能超过16位定时器的最长定时时间;最短不能少于中断服 务程序的执行时间。基准时间越短,越有利于提高时钟的 运行精确度。基准时间定为0.05秒。 (2)用一个计数器对定时中断的次数进行计数,由基准时间为0.05秒知计数值为20即可实现实现“秒”定时,同理 进行“分”﹑“时”定时,以及“日”﹑“月”﹑“年” 定时。 (3)LED 数码管显示器采用“动态扫描驱动”考虑问题:驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间 短),而驱动信号的间歇时间必须小于“余辉时间”(电流 大余辉时间长),但驱动电流大小受硬件电路能力和LED 数码管极限功耗的制约。 (4)动态扫描显示方式在更新显示内容时,考虑到因LED数码管余辉的存在可能会造成显示字符的模糊,所以新内容 写入显示器之前将所有的LED数码管熄灭。 (5)关于自动识别“月大﹑月小”和“平年﹑润年”问题的考虑 a)月大和月小 2月另外计算;

单片机电路图详解

单片机:交通灯课程设计(一)(2007-04-21 13:28:54) 目录 摘要--------------------------------------------------------- 1 1.概述 -------------------------------------------------------- 2 2.硬件设计----------------------------------------------------- 3 2.1单片机及其外围--------------------------------------------3 2.1.1单片机的选择-----------------------------------------3 2.1.2单片机的特点及其应用范围----------------------------- 3 2.1.3存储器的扩展----------------------------------------- 4 2.1.4内存的扩展------------------------------------------- 6 2.1.5MCS-52的I/O接口扩展--------------------------------- 8 2.2电路部分--------------------------------------------------11 2.2.1元器件选用-------------------------------------------11 2.2.2电路完成功能-----------------------------------------13 3.软件设计------------------------------------------------------15 3.1软件概述-------------------------------------------------15 3.2汇编语言指令说明-----------------------------------------16 3.3定时/计数器的原理----------------------------------------16 3.3.1定时/计数器的概述-----------------------------------16 3.3.2 8255A片选及各端口地址-------------------------------18 3.3.3信号控制码------------------------------------------18 3.3.4工作方式寄存器--------------------------------------19 3.3.5定时/计数器初值及定时器T0的工作方式----------------20

基于单片机的电子日历时钟

微机原理课程设计 报告 题目:电子日历时钟 学院电子与信息学院 专业08信息工程1班 组员陈晓伟05冯劲增06 指导教师林耀荣 提交日期2010.6.21

一课程设计题目:电子日历时钟 二实现的功能: 基本功能: (1)显示北京时间,并且能够校准时间; (2)程序使用汇编语言; (3)显示的时、分、秒之间以及年、月、日间以小数点分隔; (4)显示公历日期,并且能够校准日期; 发挥功能: (5)运动秒表; (6)闹钟功能; (7)自动整点报时。 三课程设计的目的: 课程标志性内容的设计理解和综合运用,对所学内容进行一次实操,学以致用。 四、设计方案说明 1、硬件部分 (1)采用6位LED数码管显示日期或者时间。 (2)显示器的驱动采用“动态扫描驱动”,且采用“一键多用”的设计方案,系统电路大为简化。使用小数点表示闹钟设置状态; (3)电路连接使用PCB,使电路连接简洁美观 2、软件部分 (1)“时钟”基准时间由单片机内部的定时中断提供,考虑因素:定时时间是“秒”的整除数,且长短适宜。最长不能超过16位定时器 的最长定时时间;最短不能少于中断服务程序的执行时间。基准时 间越短,越有利于提高时钟的运行精确度。基准时间定为0.05秒。 (2)用一个计数器对定时中断的次数进行计数,由基准时间为0.05秒知计数值为20即可实现实现“秒”定时,同理进行“分”﹑“时” 定时,以及“日”﹑“月”﹑“年”定时。 (3)LED 数码管显示器采用“动态扫描驱动”考虑问题:驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间短),而驱动信号 的间歇时间必须小于“余辉时间”(电流大余辉时间长),但驱动电 流大小受硬件电路能力和LED数码管极限功耗的制约。 (4)动态扫描显示方式在更新显示内容时,考虑到因LED数码管余辉的存在可能会造成显示字符的模糊,所以新内容写入显示器之前将 所有的LED数码管熄灭。 (5)关于自动识别“月大﹑月小”和“平年﹑润年”问题的考虑 a)月大和月小 2月另外计算;

单片机的电路原理

单片机的电路原理 单片机技术自发展以来已走过了近20年的发展路程。单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。小到遥控电子玩具,大到航空航天技术等电子行业都有单片机应用的影子。针对单片机技术在电子行业自动化方面的重要应用,为满足广大学生、爱好者、产品开发者迅速学会掌握单片机这门技术,于是产生单片机实验板普遍称为单片机开发板、也有单片机学习板的称呼。比较有名的例如电子人DZR-01A单片机开发板。 单片机开发板是用于学习51、STC、AVR型号的单片机实验设备。根据单片机使用的型号又有51单片机开发板、STC单片机开发板、AVR单片机开发板。常见配套有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。例如电子人单片机开发板,针对部分学者需要特别配套有VB上位机软件开发,游戏开发等教程学习资料。开发此类单片机开发板的公司一般提供完善的售后服务与技术支持。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 单片机(Microcontrollers)诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。 而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 常见配套资源如下: 1、硬件实验板及其配件如:连接线、CPU芯片、流水灯、点阵显示、ds18b20温度检测、彩色TFT液晶屏,SD卡,游戏开发(推箱子游戏)、收音机、mp3解码等。 2、实验程序源码,包含汇编源程序、C语言源程序。 3、电路原理图、PCB电路图。 4、实验手册、使用手册。 5、针对单片机开发板的详细讲解视频。 6、附加PCB设计制作、VB软件开发等计算机学习资料 1、8个LED灯,可以练习基本单片机IO操作,在其他程序中可以做指示灯使用。

基于单片机的电子时钟万年历设计

一、项目介绍与设计目的 基于单片机的电子时钟万年历为实现电子万年历的功能,采用单片机STC89C51,辅助以必要的外围电路,用C语言编写程序,并进行模块化设计而成的电子万年历系统.它通过LCD能正确显示年、月、日、周日、时、分、秒等,具有功能稳定,精确度高和可调的特点。 二、设计方案 1.项目环境要求 1.1时钟芯片选择 方案一:不使用芯片,采用单片机的定时计数器 这种方法原理是利用单片机芯片的定时器来产生固定的时间,模拟时钟的时, 分,秒。如:利用AT80C52芯片,定时器用工作方式1,每50ms产生一个中断,循环20次,即1s周期。每一个周期加1,那么1min为60个周期,1h就是60*60=3600个周期,一天就是3600*24=86400个周期。 此方法优点是可以省去一些外围的芯片,但这种方法只能适用于一些要求不是十分精确,不做长期保留的场合。 方案二:并行接口时钟芯片 DS12887 特点:采用单片机应用系统并行总线(三总线)扩展的接口电路,采用这种接口电路具有操作速度快,编程方便的优点。 但是对于80C52单片机来说,低位地址线要通过锁存器输出,还要地址译码器,而且并行口芯片的体积相对较大。 方案三:串行接口时钟芯片DS1302 芯片主特性: (1)实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力,还有闰年调整的能力

(2)31 8 位暂存数据存储RAM (3)串行 I/O 口方式使得管脚数量最少 (4)宽范围工作电压2.0 5.5V (5)工作电流 2.0V 时,小于300nA (6)读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 (7)8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配 (8)简单 3 线接口 (9)与 TTL 兼容Vcc=5V (10)可选工业级温度范围-40~+85 优点:串行接口的日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛的应用。 所以,最终选择串行时钟芯片DS1302,DS1302的管脚图如图2所示。 图2 DS1302管脚图 1.2显示模块选择 方案一:LED数码管显示 数码管显示比较常用的是采用CD4511和74LS138实现数码转换,数码显示分动态显示和静态显示,静态显示具有锁存功能,可以使数据显示得很清楚,但浪费了一些资源。目前单片机数码管普通采用动态显示。编程简单,但只能显示

电子万年历设计(基于AT89C51单片机和DS1302时钟芯片)1

随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。 二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步…… 我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。 本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。基本的要了解一些主要器件的基本功能和作用。 除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。AT89C51是由ATMEL 公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。 本文介绍了基于AT89C51单片机设计的电子万年历。 首先我们在绪论中简单介绍了单片机的发展与其在中低端领域中的优

单片机各种复位电路原理

单片机各种复位电路原理 复位电路的作用 在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是 一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁 兼容性能。 无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设 计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可 靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始 工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一般采用的办法是在RST 端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒, 所以,完全能够满足复位的时间要求。

图1 图2 2 、上电复位 AT89C51 的上电复位电路如图 2 所示,只要在RST 复位输入引脚上接一电容至Vcc 端,下接一个电阻到地即可。对于CMOS 型单片机,由于在RST 端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1μF。上电复位的工作过程是在加电时,复位电路通 过电容加给RST 端一个短暂的高电平信号,此高电平信号随着Vcc 对电容的充电过程而 逐渐回落,即RST 端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地 复位,RST 端的高电平信号必须维持足够长的时间。上电时,Vcc 的上升时间约为10ms ,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz ,起振时间为1ms ;晶振频率为1MHz ,起振时间则为10ms 。在图 2 的复位电路中,当Vcc 掉电时,必然会使RST 端电压迅速下降到0V 以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生 损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l态”。如果系统在上电时得不到有效的复位,则程序计数器PC 将得不到一个合适的初值,因此,CPU 可能会从一个未被定义的位置开始执行程序。 2 、积分型上电复位 常用的上电或开关复位电路如图 3 所示。上电后,由于电容C3 的充电和反相门的作用,使RST 持续一段时间的高电平。当单片机已在运行当中时,按下复位键K 后松开,也能使RST 为一段时间的高电平,从而实现上电或开关复位的操作。 根据实际操作的经验,下面给出这种复位电路的电容、电阻参考值。 图3 中:C:=1uF ,Rl=lk ,R2=10k

单片机电子万年历时钟单片机课设

前言 单片机隶属微型计算机。目前单片机在工程与生活中有着广泛应用[1]。伴随着人们对时间的意识更为强烈,其计时设备也从目测太阳、日晷、摆钟直至现如今更为智能的电子钟。目前所处的时代信息化且更为智能化。与此同时,时间规划了生活与生产。在各行业,时间尤为重要,因为每个过程都必须严格遵循所设的时间限制。不论是生产还是科研,时间都是不可或缺的定量参数而且其尤为重要。保障时间精确性的技术在目前来说是值得研究与设计的。时间概念无处不在,而且在工程与实验科研中作为一种参数,其要求更是严苛。目前机械表作为一款普遍产品被广泛应用在生活中,而且其也具备日历功能。然而,因机械表本身机械结构的不稳定性及不精准性,再加上其受功率和体积限制,在生活设备与工程设施应用方面且远不如电子钟。因此本文将对电子时钟做进一步设计。 正文 电子钟可通过电子电路与程序软件实现时刻的显示与精确计时。该装置可广泛应用于日常生活与实验工程,并且是不可或缺的器件。通过集成逻辑电路与石英晶体谐振器的设计研发,可使得数字钟性能远优于传统时钟。研发生产比以往更加精确的数字时钟,将为在工程与生活中的用户带有良好的体验。与此同时,时钟不单单只具备原始的计时功能,其可附加其他优化功能。列如:定点自动报警,按时播报,自动启动/停止指示灯,定时开/关机及更多智能化定时管理设备。因此,研究设计更为先进的多功能的电子钟是尤为必要的。 设计电子万年历主要目的在于精准的显示时间与此同时可提供温度参数、星期、日期、响铃等其他优化功能。与此同时电子万年历顺应时代的发展,且被各领域所急需应用。并随着仪器仪表等学科技术的发展,及软件编程算法的优化改进,在生活及生产中电子时钟的设计随之受到影响及改变。目前单片机相关产品普及,电子万年历也得益于此,可以相结合做进一步优化改进。电子万年历目前不仅仅是提供计时功能,更多的可为用户带来不同场景工况时所具备的相应优化功能。将微控制器与时钟相结合,其设计便于开发者对功能进一步改进研发,对于用户可以直观的对电子万年历进行操作。本次在电子万年历的七个不同单位时间显示的基础上,再对定时闹钟、响铃、温度、节气显示优化功能做进一步的设计。其设计本身具有新颖性和实用性。具有多功能优化的电子万年历可将其应用在各电器中,如热水器的温度调节显示模块、空调定时温度模块等等。优化后的电子万年历与实际生活生产相结合,使原有的电器设备更为完善,使用更为便利。

相关主题