STC89C52时钟程序
基于STC89C52单片机的电子时钟设计(带程序)
河南机电高等专科学校基于51单片机的电子时钟设计目录绪论 (1)概述 (1)研究目的 (1)第1章设计要求与方案论证 (2)1.1 设计要求 (2)1.2 系统基本方案选择和论证 (2)1.2.1 单片机芯片的选择方案和论证 (2)1.2.2 显示模块选择方案和论证 (2)1.2.3 时钟芯片的选择方案和论证 (3)1.3 电路设计最终方案决定 (3)第2章主要元件介绍 (4)2.1 STC89C52介绍 (4)2.1.1 STC89C52主要功能及PDIP封装 (4)2.1.2 STC89C52引脚介绍 (4)2.1.3 STC89C52最小系统 (5)2.2 DS1302时钟芯片介绍 (6)2.2.1 DS1302概述 (6)2.2.2 DS1302引脚介绍 (7)2.2.3 DS1302使用方法 (7)2. 3 1602字符液晶介绍 (9)2.3.1 1602液晶概述 (9)2.3.2 1602引脚介绍 (10)2.3.3 1602字符液晶使用方法 (10)第3章系统硬件设计 (13)3.1 电路设计框图 (13)3.2 系统硬件概述 (13)第4章系统的软件设计 (13)4.1程序概述 (13)4.2延时函数 (2)4.3 对DS1302读写操作函数 (3)4.3.1 向DS1302写数据 (3)4.3.2 从DS1302读数据 (3)4.4 显示函数 (4)4.4.1向1602液晶中写一个指令 (4)4.4.2向液晶写数据 (4)4.4.3初使化1602液晶 (5)4.4.4 如何在液晶上显示时间、日期及周 (5)4.5按键函数 (6)4.5.1 12/24小时显示模式切换键 (8)4.5.2 功能键函数 (10)4.5.3 调整键函数 (12)4.5.4确定键 (16)4.6 主函数 (17)总结 (18)致谢 (19)参考文献 (20)绪论概述时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。
基于STC89C52的数字电子钟设计
uchar shi=11,fen=59,miao=50, dshi=12,dfen=1;
uchar bjcs;
void delay(uchar ms);
void delay(uchar ms)
{
uchar i,j;
for(i=ms;i>0;i--)
10、系统所需的元器件清单....................................................................... 19
11、检测阶段............................................................................................... 19
led_port = 0x55; /*将数据输出到LED端口,显示为7.5.3.1号灯亮*/
delay(230);
delay(230);
delay(230);
delay(230); /*延时*/
shi=0;
while(!KEY1)
{
LED_DisplayTimer(shi/10,shi%10,fen/10,fen%10);
}
}
}
else if(KEY2==0)
{
delay(10);
if(KEY2==0)
{
fen++;
if(fen==60)
fen=0;
while(!KEY2)
{
LED_DisplayTimer(shi/10,shi%10,fen/10,fen%10);
按键设计流程图
原理图:
数字时钟_89C52_单片机C语言程序
uchar MON[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
uchar A;
uchar BIN=0; /* 【BIN】作为倒计时开始的标志 */
TH0 = (65536 - 10000) / 256; /*给定计时器高位赋予 初值=15536/256*/
TL0 = (65536 - 10000) % 256; /*给定计时器低位赋予 初值=15536%256 */
ET0 = 1; /*打开定时器外部终断0允许 ET1是中断器1的开关*/
P2 = C[4];
Delay(1);
P0 = Code[Msec%10]; /*第五位的数字显示【分】的【个】位 */
P2 = C[5];
Delay(1);
Delay(1);
P0 = 0x40; /*第六位符号【-】的显示 */
P2 = C[6];
Delay(1);
P2 = C[2];
Delay(1);
if(x/50==0)
P0 = 0x40; /*第三位符号【-】的显示 */
else
P0 = 0x00;
P2 = C[3];
Delay(1);
P0 = Code[min/10]; /*第四位的数字的显示【分】的【十】位 */
uchar month=7;
uchar month2;
uchar day=19;
uchar set1 = 1; /* set1=1 是调节 时分秒 set1=2时时调节 年月日 set=3时事调节闹钟 */
基于STC89C52 单片机的多功能数字钟的设计.
基于STC89C52 单片机的多功能数字钟的设计钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟的设计方法有许多种,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟。
1 功能本设计中选择STC89C52 单片机来进行设计,主要由于其体积小、成本低,功能丰富并且实用方便。
配合时钟芯片来实现时钟、跑表、闹铃、日历能功能,用温湿度传感器分别检测工作环境的温度和湿度,通过按不同的键在1602 液晶显示器上显示对应的数值。
数字钟的基本功能如下:1.1 计时及校时:数字钟的最基本功能既是显示和调整时间,本设计可以让数字钟24 小时制或12 小时制显示,可以通过设置进行转换等。
1.2 跑表:本数字钟还具备跑表的功能,跑表功能包括跑表的启动、停止、保持显示、清除等。
1.3 闹钟:可以通过键盘设定闹钟时间,在设置的时间进行闹钟提示,每一次响5 秒,每隔5 秒响一次,如果不人为的进行干涉闹钟会一直响60 分钟。
1.4 日历:让数字钟可以显示日期(包括年、月、日),并且可以显示星期几。
1.5 温度、湿度等的显示:通过传感器等相关硬件配合相应的电路将测试到的温度和湿度数据转换为数字在时钟液晶显示屏上显出来。
2 系统硬件的设计2.1 硬件的选择本设计选ATC89C52 单片机作为主芯片以外,还要用的其他各种元件来实现相应的功能,因此还要对其他电子元件做一个合理的选择和安排。
在设计过程中结合实际情况对相关硬件做了如下选择:时钟电路中将用到DS12C887 时钟芯片,温度检测电路用的是温度传感器DS18B20,湿度检测电路用到的是HS1101 湿度传感器,闹钟以及按键提示均用到蜂鸣器。
52单片机(89c52)数码管时钟程序
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/************************************************************/
//位选通
void wx()
P0=0xfb;wx();P0=0xbf;dx();delay(1);P0=0xff;dx();
P0=0xfd;wx();P0=table[sss];dx();delay(1);P0=0xff;dx();
P0=0xfe;wx();P0=table[ssg];dx();delay(1);P0=0xff;dx();
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
char hh,mm,ss;
char nhh,nmm,nss;
uchar n,q;
uchar hhs,hhg,mms,mmg,sss,ssg;
uchar nhhs,nhhg,nmms,nmmg,nsss,nssg;
//显示函数
void display( )
{
if(set1==1)//正常走时显示
{
P0=0x7f;wx();P0=table[hhs];dx();delay(1);P0=0xff;dx();
P0=0xbf;wx();P0=table[hhg];dx();delay(1);P0=0xff;dx();
/*下再按K3K4设闹钟时间分位K2按三下再按K3K4设闹钟时间秒位*/
/*K3加键*/
基于STC89C52单片机时钟的设计与实现
基于STC89C52单片机时钟的设计与实现1. 本文概述本文主要介绍了基于STC89C52单片机和DS1302时钟芯片的电子时钟设计与实现。
该电子时钟系统具有年月日等基本时间显示功能,并集成了秒表计时处理、闹钟定时、蜂鸣器和温度显示等附加功能。
系统采用LCD1602作为液晶显示器件,通过单片机对时钟和温度等数据进行处理后传输至LCD进行显示。
用户可以通过按键对时间进行调节,同时,单片机还通过扩展外围接口实现了温度采集等功能。
本文的目标是提供一个功能丰富、易于操作的电子时钟系统,为学习和应用单片机技术提供一个实用的案例。
2. 系统设计要求在设计基于STC89C52单片机的时钟系统时,我们需要考虑以下几个关键的设计要求:时钟系统必须具备基本的时间显示功能,能够以小时、分钟和秒为单位准确显示当前时间。
系统还应支持设置闹钟功能,允许用户设定特定的时间点进行提醒。
系统需要保证长时间稳定运行,具备良好的抗干扰能力,确保在各种环境下都能准确计时。
还应具备一定的容错能力,即使在操作失误或外部干扰的情况下,也能保证系统的正常运行。
用户界面应简洁直观,便于用户快速理解和操作。
时钟的显示部分应清晰可见,即使在光线较暗的环境下也能保持良好的可视性。
同时,设置和调整时间的操作应简单易懂,方便用户进行日常使用。
在设计时钟系统时,应考虑到未来可能的功能扩展,如温度显示、日期显示等。
系统的设计应具有一定的灵活性和扩展性,以便在未来可以轻松添加新的功能模块。
鉴于时钟系统可能需要长时间运行,能耗是一个重要的考虑因素。
设计时应选择低功耗的元件,并优化电源管理策略,以延长电池寿命或减少能源消耗。
在满足上述所有要求的同时,还需要控制成本,确保产品的市场竞争力。
这可能涉及到对单片机的编程优化、选择性价比高的外围元件等措施。
通过满足上述设计要求,我们可以确保开发出一个功能完善、稳定可靠、用户友好、易于扩展、节能环保且成本效益高的STC89C52单片机时钟系统。
基于STC89C52单片机的二十四小时语音数字闹钟设计
电子设计综合实验“基于STC89C52单片机的二十四小时语音数字闹钟设计”项目设计报告11设计任务与要求语音数字闹钟功能包括:计时功能、显示时间功能、校准时间功能、整点报时功能、闹钟功能。
2 设计思路2.1芯片选取1.单片机的选择采用STC89C52主芯片。
STC89C52是STC公司生产的一种低功耗、高性能微控制器,可用软件编程实现各种逻辑功能。
本身自带定时器和计时器,工作电压3.3-5.5v和电路其他器件相适应,具有断电保护功能,和时钟保持时间不间断相匹配。
并且其功耗低,体积小,成本低,可直接用串口下载,较为便利。
2.显示方案的选择采用LCD1602液晶显示屏。
液晶显示屏的显示功能强大,可显示大量文字,显示多样,功能扩展能力强,可不局限于单一时间显示,例如可以扩展年月显示。
稳定抗干扰能力强,清晰可见,且价格适中,对于本设计一个LCD显示屏足够实现所需功能。
3.时钟模块的选择采用DS1302时钟芯片实现时钟。
DS1302芯片是一种高性能、低功耗的实时时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,功能满足本设计要求,而且精度高,工作电压2.5V~5.5V范围内,与实验整体电路相适应。
4.语音模块采用NV020C语音芯片。
性能稳定,抗干扰能力强,无需外围电路外接电阻,电路简单,控制方便,价格便宜。
工作电压与电路整体电压范围一致,满足整点语音报时的功能需求。
且可进一步功能扩展。
2.2系统设计方案概述该设计包括电源模块、显示模块、按键模块、复位电路模块、时钟模块、语音模块、主控模块、闹铃模块。
整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统,其它的模块围绕着单片机最小系统展开。
其中包括,显示设备使用LCD1602液晶,可以同时显示时、分、秒等基本时间信息;时钟模块采用DS1302芯片,初始化之后,就会开始运行计算时间,单片机只需进行时间信息的读取即可。
基于STC89C52单片机的数字时钟设计
uint temp1,temp2,temp2t,temp3,temp4,ser;
uchar count1,sec1,min1,hour1;//定时器 2 使用的变量 停表用
基于STC89C52多功能电子时钟系统程序+原理图
一、设计任务设计制作一台以控制器为核心的多功能电子时钟系统二、设计要求:①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。
(PC主机端可利用高级语言进行人机界面设计)②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。
③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。
高音频率为1KHz;④.在系统校准模式时,系统具有快速校准时间的功能。
⑤.在秒表计时模式时,可兼做比赛时间记录表。
秒表记时的精度为0.1秒,由3个键分别控制秒表的启动、清零、记录功能,可连续记录3组时间,并能够显示记录时间。
⑥.系统显示器采用LCD液晶显示器1602或其它显示器件,并采用键盘对相关数据进行设置与操作。
原理图设计制作一台以控制器为核心的多功能电子时钟系统二、设计要求:①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。
(PC主机端可利用高级语言进行人机界面设计)(注:此三种模式可以通过SET键盘来回切换,在正常时钟模式,第二排显示S:time,校准模式显示S:adjst,秒表模式,是TN~T3:四个秒表模式);②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。
(注:这个已经全部显示了,含星期)③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。
高音频率为1KHz;(注:这个都实现了,要验证的话就是将时钟调整到59分后验证即可)④.在系统校准模式时,系统具有快速校准时间的功能。
STC89c52单片机 计算器C语言程序
STC89c52单片机计算器C语言程序STC89C52单片机计算器C语言程序下面是STC89C52单片机计算器的C语言程序,适用于P2位选P0段选时钟12MHZ。
程序代码如下:includedefine uchar unsigned chardefine uint unsigned intuchar Led[17] = {0x3f。
0x06.0x5b。
0x4f。
0x66.0x6d。
0x7d。
0x07.0x7f。
0x6f。
0x77.0x7c。
0x39.0x5e。
0x79.0x71.0x00};long float Number[]={0,0,0,0};uchar A[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};long int D[] = {0,0,0,0,0,0,0,0};uchar code C[] = {0x0.0xFE。
0xFD。
0xFB。
0xF7.0xEF。
0xDF。
0xBF。
0x7F};uchar k=16;uchar b;long float Out_put;uchar e=0;uchar g=0;uchar L=0;uchar g1=0;uchar g2=0;uchar g3=0;uchar g4=0;char j=-1;uchar m=0;uchar n=0;uchar x=0;程序中包含了头文件和宏定义,以及数码管段选、数码管显示位控制寄存器、数码管显示内容寄存器、数码管位选、按键控制变量等各种变量。
其中,Led数组存储了数码管的段选值,Number数组存储了数字,A数组存储了数码管的位选值,D数组存储了数码管的显示内容,C数组存储了数码管的位选值,k、b、Out_put、e、g、L、g1、g2、g3、g4、j、m、n、x 等变量用于按键控制和运算。
代码中没有明显的格式错误,可以直接使用。
下面是已经修改过的文章:uchar xo = 0./*控制开始计数小数点的变量*/long int result;void Delay(uint o) {uint i。
基于STC89C52单片机的电子时钟研究
基于STC89C52单片机的电子时钟研究一、本文概述本文旨在研究和探讨基于STC89C52单片机的电子时钟设计与实现。
STC89C52单片机作为一种高效、稳定的微控制器,在嵌入式系统设计中具有广泛的应用。
通过对其内部资源的合理配置与外部硬件电路的设计,我们可以构建出功能丰富、性能稳定的电子时钟系统。
本文将详细介绍电子时钟的硬件电路设计、软件编程、功能实现以及性能优化等方面的内容,旨在为相关领域的研究者和实践者提供有益的参考和借鉴。
在硬件电路设计方面,我们将围绕STC89C52单片机的核心功能,设计包括时钟显示、按键输入、时钟校准等功能的电路模块。
在软件编程方面,我们将采用C语言进行程序编写,实现时钟的计时、显示、控制等功能。
我们还将对电子时钟的功耗、稳定性、精度等性能进行优化和提升,以满足实际应用的需求。
通过本文的研究和探讨,我们期望能够为STC89C52单片机在电子时钟设计中的应用提供有益的思路和方法,同时也为推动嵌入式系统设计和技术发展做出一定的贡献。
二、STC89C52单片机在电子时钟设计中的应用优势STC89C52单片机在电子时钟设计中具有显著的应用优势,其独特的特性和功能使其成为电子时钟设计的理想选择。
STC89C52单片机具有较高的集成度和可靠性,能够在较小的空间内实现复杂的功能,并且具有良好的稳定性,保证了电子时钟的长期稳定运行。
STC89C52单片机具有丰富的I/O接口和扩展能力,方便与其他硬件模块进行连接和通信。
这使得电子时钟设计更加灵活,可以根据实际需求添加各种功能模块,如温度显示、日期提醒等,提高了电子时钟的实用性和便利性。
STC89C52单片机还具有低功耗的特点,能够在保证性能的同时降低能耗,延长电子时钟的使用寿命。
其编程简单易懂,便于开发人员快速上手,降低了开发成本和时间。
STC89C52单片机在电子时钟设计中具有集成度高、可靠性好、扩展能力强、低功耗和编程简单等优势,使得其在电子时钟领域得到了广泛应用。
基于STC89C52的时钟系统
《单片机项目》暑期实验报告第1 页基于STC89C52的时钟系统摘要结合锐志RZ-51V2.0学习时钟设计的要求,把单片机中数字时钟的设计作为一个项目,在达到熟练使用相应软件的前提下,通过仿真器进行硬件仿真,以完成一个程序完整的设计过程。
并作出相应的结论。
利用单片机进行设计等,且各有特点。
其中利用单片机实现时钟的设计方法,具有电路简单、编程灵活、便于扩展、精确度高、稳定性好等优点,关键词:单片机;数字时钟;设计;仿真《单片机项目》暑期实验报告第2 页目录1.引言 (3)2.设计要求 (3)3.电路模块 (3)3.1 单片机模块 (3)3.2 DS1302数字芯片模块 (3)3.3 数码管显示模块 (4)4.软件程序工作原理 (4)4.1 时钟设计部分程序..................................................................5.程序代码 (6)结论 (20)参考文献 (21)《单片机项目》暑期实验报告第5页1、引言现代电子系统的基本核心是单片机,而单片机的应用能使爱好者既动脑、又动手地进行软件设计和硬件制作,再加上单片机原理与应用课程是目前职业学校电类专业的主干课之一,其操作性很强,利用AT89C51 单片机,实现断电自动保护显示数据的功能2、设计要求1.时间显示在1602液晶上,并且按秒实时更新。
2.能够使用板上的按键随时调节时钟的时、分、秒,按键可设计三个有效键,分别为功能选择键,数值增大键和数值减小键。
3.每次有键按下时,蜂鸣器都以短“滴”声报警。
4.利用板上AT24C08设计实现断电自动保护显示数据的功能,当下次上电时会接着上次断电前的时间数据继续运行。
5.扩展显示年、月、日、星期功能。
3、电路模块3.1 单片机模块本温度控制系统的核心部分即单片机模块采用STC89C52RC单片机,该单片机指令代码完全兼容传统8051单片机。
STC89C52单片机的工作电压为5.5V-3.4V,工作频率范围0-80MHz,程序存储器flash容量为8KB,随机存储器RAM空间为512字节,完全满足设计温度控制系统的要求。
基于STC89C52的电子时钟设计
目录1.前言12.整体设计方案 (1)3.硬件设计方案 (2)3.1复位电路 (2)3.2晶振电路 (3)3.3LED显示电路 (3)3.4按键输入电路 (4)3.5蜂鸣器电路 (4)4.软件设计方案 (5)4.1软件设计方法 (5)4.2系统软件设计思想 (6)4.3系统主程序 (6)4.4中断子程序 (7)4.4.1 定时器T0地中断程序设计 (7)4.4.2 定时器T1地中断程序设计 (7)4.5按键扫描子程序 (9)4.6调时、分、秒子程序 (9)4.7调节闹钟子程序 (10)5.调试与功能说明 (11)5.1硬盘调试 (11)5.2系统性能测试与功能说明 (12)5.3系统时钟误差分析 (12)5.4软件调试问题及解决 (12)6.设计总结 (12)参考文献 (13)附录1:多功能电子时钟原理图 (13)附录2:C语言源程序141.前言20世纪末,电子技术获得了飞速地发展,在其推动下,现代电子产品几乎渗透了社会地各个领域,有力地推动了社会生产力地发展和社会信息化程度地提高,同时也使现代电子产品性能进一步提高,产品更新换代地节奏也越来越快. 时间对人们来说总是那么宝贵,工作地忙碌性和繁杂性容易使人忘记当前地时间.忘记了要做地事情,当事情不是很重要地时候,这种遗忘无伤大雅.但是,一旦重要事情,一时地耽误可能酿成大祸.目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展.下面是单片机地主要发展趋势.单片机应用地重要意义还在于,它从根本上改变了传统地控制系统设计思想和设计方法.从前必须由模拟电路或数字电路实现地大部分功能,现在已能用单片机通过软件方法来实现了.这种软件代替硬件地控制技术也称为微控制技术,是传统控制技术地一次革命.单片机模块中最常见地是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时地装置,与机械式时钟相比具有更高地准确性和直观性,且无机械装置,具有更更长地使用寿命,因此得到了广泛地使用.数字钟是采用数字电路实现对.时,分,秒.数字显示地计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少地必需品,由于数字集成电路地发展和石英晶体振荡器地广泛应用,使得数字钟地精度,远远超过老式钟表, 钟表地数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先地报时功能.诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气地自动启用等,所有这些,都是以钟表数字化为基础地.因此,研究数字钟及扩大其应用,有着非常现实地意义.数字钟已成为人们日常生活中:必不可少地必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们地生活、学习、工作、娱乐带来极大地方便.由于数字集成电路技术地发展和采用了先进地石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域.2.整体设计方案多功能电子时钟地功能地电路具有实现显示时、分、秒,以(24小时)计时方式地功能;具有快速校准时、分、秒地其本功能;秒表/时钟功能地转换;具有整点报时地功能;还可以实现对时间地调整.由单片机、复位、时钟电路、晶振、LED数码管、按键、蜂鸣器组成.图1 时钟电路框图3.硬件设计方案3.1 复位电路单片机复位电路就好比电脑地重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部地程序从头开始执行.单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞地时候,按下复位按钮内部地程序自动从头开始执行. 单片机在启动时都需要复位,以使CPU 及系统各部件处于确定地初始状态,并从初态开始工作.89系列单片机地复位信号是从RST 引脚输入到芯片内地施密特触发器中地.当系统处于正常工作状态时,且振荡器稳定后,如果RST 引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU 就可以响应并将系统复位.单片机系统地复位方式有:手动按钮复位和上电复位.本课程设计采用手动按键复位.手动按钮复位需要人为在复位输入端RST 上加入高电平(图(3)).一般采用地办法是在RST 端和正电源Vcc 之间接一个按钮.当人为按下按钮时,则Vcc 地+5V 电平就会直接加到RST 端.手动按钮复位地电路如图所示.由于人地动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位地时间要求.复位电路时钟电路 电源电路 AT89C51 LED 数码管显示电路 按键输入电路蜂鸣器电路图2 复位电路3.2 晶振电路51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作地情况下可以采用更高频率地晶振,51单片机最小系统晶振地振荡频率直接影响单片机地处理速度,频率越大处理速度越快.单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需地时钟频率,单片机晶振提供地时钟频率越高,那么单片机运行速度就越快,单片接地一切指令地执行都是建立在单片机晶振提供地时钟频率.单片机晶振地作用是为系统提供基本地时钟信号.通常一个系统共用一个晶振,便于各部分保持同步.有些通讯系统地基频和射频使用不同地晶振,而通过电子调整频率地方法保持同步.图3 晶振电路3.3 LED显示电路LED显示器工作方式有两种:静态显示方式和动态显示方式.静态显示地特点是每个数码管地段选必须接一个8位数据线来保持显示地字形码.当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止.这种方法地优点是占用CPU时间少,显示便于监测和控制.缺点是硬件电路比较复杂,成本较高.动态显示地特点是将所有位数码管地段选线并联在一起,由位选线控制是哪一位数码管有效.选亮数码管采用动态扫描显示.所谓动态扫描显示即轮流向各位数码管送出字形码和相应地位选,利用发光管地余辉和人眼视觉暂留作用,使人地感觉好像各位数码管同时都在显示.动态显示地亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中地.一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们地段选线连在一起,而各自地公共端称为位选线.显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮.图4 LED显示电路3.4 按键输入电路独立式按键采用每个按键单独占有一个I/O口地结构,这是最简单地键盘输入设计.当按下和释放按键时,输入到I/O口端地电平是不一样地,单片机程序根据不同端口地电平变化判断是否有键按下以及是哪一个键被按下.独立式键盘地原理简单,每个按键地电路是独立地,占用一条数据线.这种接法占用硬盘资源大,适合该课程设计地电子时钟电路.图5 独立按键3.5 蜂鸣器电路蜂鸣器是一种一体化结构地电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件.蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成.有地压电式蜂鸣器外壳上还装有发光二极管.多谐振荡器由晶体管或集成电路构成.当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出 1.5~2.5kHZ地音频信号,阻抗匹配器推动压电蜂鸣片发声.压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成.在陶瓷片地两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起.电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成.接通电源后,振荡器产生地音频信号电流通过电磁线圈,使电磁线圈产生磁场.振动膜片在电磁线圈和磁铁地相互作用下,周期性地振动发声.图6 蜂鸣器电路4.软件设计方案4.1 软件设计方法系统地软件设计也是工具系统功能地设计.单片机软件地设计主要包括执行软件地设计和监控软件地设计.单片机地软件设计通常要考虑以下几个方面地问题:根据软件功能要求,将系统软件划分为若干个相对独立地部分,设计出合理地总体结构,使软件开发清晰、简洁和流程合理;●培养良好地编程风格,如考虑结构化程序设计、实行模块化、子程序化.既便于调试、链接,又便于移植和修改;●建立正确地数学模型,通过仿真提高系统地性能,并选取合适地参数;●绘制程序流程图;●合理分配系统资源;●为程序加入注释,提高可读性,实施软件工程;●注意软件地抗干扰设计,提高系统地可靠性.4.2 系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部地T0定时器溢出中断来实现,工作在T0方式下,定时250微妙,则连续中断4000次即为一秒,得到了我们所需时间地最小单位该设计用C51编写程序,由于汇编语言地移植性比较差,而C语言则比较灵活.许多子函数都可以直接移植过去.在程序中除了有主函数外还包含许多子函数,如延时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、调时、分、秒函数、功能切换函数、秒表功能函数.4.3 系统主程序在主控程序循环中主要工作为扫描是否有按键,若有按健则做相应地功能处理,同时也扫描显示器显示时间数据,并检查所设置地时间是否到了.时间计时处理程序是等过了1s后,则更新时间数据,将最新地时、分、秒地数据转换为数字数据并显示在八段数码管上.图7 系统主程序流程图4.4 中断子程序中断子程序地主要功能:提供时间基准和快速按键调时功能.4.4.1 定时器T0地中断程序设计定时器T0中断提供时间基准.当T0连续中断4000次时,即为一秒,此时秒加一;当秒值为60时,分钟加一,同时秒清零。
基于STC89C52的电子时钟设计
目录1.前言 (1)2.整体设计方案 (2)3.硬件设计方案 (2)3.1复位电路 (2)3.2晶振电路 (3)3.3LED显示电路 (3)3.4按键输入电路 (4)3.5蜂鸣器电路 (5)4.软件设计方案 (6)4.1软件设计方法 (6)4.2系统软件设计思想 (6)4.3系统主程序 (6)4.4中断子程序 (7)4.4.1定时器T0的中断程序设计 (7)4.4.2定时器T1的中断程序设计 (8)4.5按键扫描子程序 (9)4.6调时、分、秒子程序 (10)4.7调节闹钟子程序 (11)5.调试与功能说明 (12)5.1硬盘调试 (12)5.2系统性能测试与功能说明 (13)5.3系统时钟误差分析 (13)5.4软件调试问题及解决 (13)6.设计总结 (13)参考文献 (14)附录1:多功能电子时钟原理图 (15)附录2:C语言源程序 (16)1.前言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
基于STC89C52的电子时钟的设计(有闹钟调时间)
单片机课程设计基于STC89C52的电子时钟的设计电路图程序:#include <reg52.h>sbit beep=P1^0; //蜂鸣器sbit l1=P1^1; //第一个红灯sbit l2=P1^2; //第一个绿灯sbit w4=P1^4; //第1位sbit w3=P1^5; //第2位sbit w2=P1^6; //第3位sbit w1=P1^7; //第4位sbit k1=P3^2; //按键1 +sbit k2=P3^3; //按键2 —sbit k3=P3^6; //按键3 时分调整sbit k4=P3^7; //按键4 功能选择秒表闹钟时间unsigned int a,b,c,d,e,f,num,num1,num2,num3,sum;unsigned char code table[]={0xc0 ,0xf9,0xa4,0xb0,0x99, //15-i0x92,0x82,0xf8,0x80,0x90}; //0011 1111 1100 0000 void keyscan();void sound();void time();void display(); // 时间显示void display2(); // 秒表显示void delay(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=110;j>0;j--);}void init(){num=45;num2=59;num3=11;TMOD=0x11;TH1=(65536-45872)/256;TL1=(65536-45872)%256;EA=1;ET1=1;TR1=1;beep=0;delay(300);beep=1;delay(500);}void main(){init();while(1){keyscan();display();time();}}void sound(){beep=0;delay(100);beep=1;}void time(){if(num==59) //整点报时 2 miao {beep=0;}else if(num==0) //整点报时{beep=1;}}void keyscan() //按键检测{if(k3==0){TR1=0;sum++;delay(30);}switch(sum){case 1: if(k1==0){num2++;sound(); //蜂鸣叫while(!k1)if(num2==60){num2=0;}break;}if(k2==0){num2--;sound(); //蜂鸣叫while(!k2)if(num2==-1){num2=59;}break;}break;case 2: if(k1==0){num3++;sound(); //蜂鸣叫while(!k1)if(num3==24){num3=0;}break;}if(k2==0){num3--;sound(); //蜂鸣叫while(!k2)if(num3==-1){num3=23;}break;}break;case 3: sum=1;TR1=1;break;}if(k4==0){P0=table[0];w1=0;w2=0; //初始化w3=0;w4=0;while(1){display2();}}}void display(){a=num/10;b=num%10;c=num2/10; //时分秒的个位和十位d=num2%10;e=num3/10;f=num3%10;P0=table[e];w1=0; //第1位delay(2);w1=1;P0=table[f];w2=0; //第2位delay(2);w2=1;P0=table[c];w3=0; //第3位delay(2);w3=1;P0=table[d];w4=0; //第4位delay(2);w4=1;}void display2() {P0=table[e];w1=0; //第1位delay(2);w1=1;P0=table[f];w2=0; //第2位delay(2);w2=1;P0=table[c];w3=0; //第3位delay(2);w3=1;P0=table[d];w4=0; //第4位delay(2);w4=1;}void T1_time()interrupt 3{TH1=(65536-45872)/256;TL1=(65536-45872)%256;num1++;if(num1==20){l1=~l1;num1=0;num++;if(num==60){l2=~l2;num=0; //秒到60跳到0num2++;if(num2==60){num2=0; //分到60跳到0num3++;if(num3==13) //时位到13 跳到0{num3=1;}}} //num记秒num2计分num3计时}}。
单片机课程设计---基于STC89C52的旋转LED时钟
题目名称基于STC89C52的旋转LED时钟一、课程设计的内容用STC89C52单片机制作一测温仪旋转LED时钟:1.设计并绘制硬件电路图;2.焊接好元器件;3.编写程序并将调试好的程序固化到单片机中。
二、课程设计的要求与数据单片机采用STC89C52芯片,时钟芯片采用DS1302。
用电机带动驱动板旋转系统上电后,驱动板的LED将会在电机带动下动态扫描出时钟画面,并且可以用红外遥控调时。
三、课程设计应完成的工作1. 完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;2.撰写设计说明书。
四、课程设计进程安排五、应收集的资料及主要参考文献谭浩强.C语言程序设计(第二版)。
北京:清华大学出版社,1999年12月广东工业大学课程设计任务书 (1)摘要 (4)一、课题设计的要求及目的 (5)1.1设计要求 (5)1.2课程设计目的 (5)二、设计方案 (5)三、系统框图与工作原理 (8)3.1单片机系统工作架构 (8)3.2系统工作原理 (10)四、设计元器件说明 (10)4.1PLCC STC89C52RC简介 (10)4.2 74HC573芯片与光电传感器简介 (12)4.3 红外简介 (13)4.4 DS1302、LM7805芯片简介 (15)4.5 LED 动态显示原理 (17)五、系统硬件电路设计 (18)六、系统软件设计 (19)6.1 单片机解码红外信号程序 (19)6.2 单片机读写DS1302程序 (22)6.3自适应转速 (25)6.4 数字显示模式 (26)6.5指针显示模式 (26)七、总结与体会 (27)八、参考文献 (27)附录A 完整源程序 (28)附录B 实物图 (41)旋转LED钟,在国外一般称为“螺旋桨时钟”(propeller clock),是利用“视觉暂留”原理制作而成。
将单片机控制的LED流水灯设备稍作改进,让它动起来,就能神奇地显示各种字符或图案,其效果如浮在空中一般。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar q,w,e,r,t,y,h ,num,temp;
uchar code led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} ;//0--9数码管段共阳极
uchar code led2[]={0x7e,0xbd,0xdb,0xe7,0xaa,0x55,0xcc,0x33,0xf0,0x0f} ; //LED灯uchar keyscan();
void init();
void delay( uchar i);
void puanduan(uint aa);
void delayms(uint z);
void qingling();
void weixuanze();
//*****************主函数**************************************
void main()
{
init();//初始化函数
while(1)
{
weixuanze();
}
}
//***********初始化函数********************
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
}
//**********中断函数*********************************
void To_INT(void) interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
q++;
if(q==20) //每20次是一秒
{
q=0;
w++;//秒数
if(w==60) // 每60次是一分
{
w=0;//进位秒数重新为零
e++; //分数
if(e==60) //每60分是一个小时
{
e=0;
r++;
if(r==10) //
{
r=0;
t++;
if(t==10)
{
t=0;
y++;
if(y==24)
{
y=0;
q=0;e=0;r=0;t=0;
} }}}} }}
//************************按键选择功能函数******************************************************************** void puanduan(int aa)
{
if(aa==1)
TR0=1;
if(aa==2)
TR0=0;
if(aa==3)
qingling();
else
P1=0xff;}
//*********************************检测按键函数**********************************************************************
uchar keyscan()
{
P3=0xef;
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(2);
temp=P3;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
break;
case 0xed:num=2;
break;
case 0xeb:num=3;
break;
case 0xe7:num=4;
break;
}
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}}}
return num;
}
//******************清零*************************** void qingling()
{
TR0=1;w=e=0;
P2=0xfe;
P0=led[w%10];//ge w
delay(1);
P2=0xfd;
P0=led[w%100/10];//shi w
delay(1);
P2=0xf7;
P0=led[e%60]; //bai e
delay(1);
P2=0xfb;
P0=0xbf;
delay(1);
P2=0xef;
P0=led[e/10]; //qian e
delay(1);
P2=0xdf;
P0=0xbf;
delay(1);
P2=0xbf;
P0=led[e/10/10]; //wan e
delay(1);
P2=0x7f;
P0=led[e/10/10/10]; // 十万 e
delay(1);}
//*********************各位选择函数******************* void weixuanze()
{
P2=0xfe;
P0=led[w%10];//ge w
P1=led2[w%10];
delay(1);
P2=0xfd;
P0=led[w%100/10];//shi w
delay(1);
P2=0xf7;
P0=led[e%60]; //bai e
delay(1);
P2=0xfb;
P0=0xbf;
delay(1);
P2=0xef;
P0=led[e/10]; //qian e
delay(1);
P2=0xdf;
P0=0xbf;
delay(1);
P2=0xbf;
P0=led[e/10/10]; //wan e
delay(1);
P2=0x7f;
P0=led[e/10/10/10]; // 十万 e
delay(1);
puanduan(keyscan());
}
//********************延时************************ void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//********延时函数*******************
void delay(unsigned char i)
{
uint j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++); }。