基于51单片机闹钟设计
基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录一、数字电子钟设计任务、功能要求说明及方案介绍 (4)1.1 设计课题设计任务 (4)1.2 设计课题的功能要求说明 (4)1.3 设计课的设计总体方案介绍及工作原理说明 (4)二、设计课题的硬件系统的设计 (5)2.1硬件系统各模块功能简要介绍 (5)2.1.1 AT89C52简介 (5)2.1.2 按键电路 (6)三、设计课题的软件系统的设计 (6)3.1 使用单片机资源的情况 (6)3.2 软件系统个模块功能简要介绍 (7)3.3 软件系统程序流程框图 (7)3.4 软件系统程序清单 (7)四、设计课题的设计结论、仿真结果、误差分析 (9)4.1 设计结论及使用说明 (9)4.2 仿真结果 (10)结束语 (12)参考文献 (12)附录 (13)附录A:程序清单 (13)一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
基于51单片机的电子时钟

1、电子闹钟的硬件系统框架:设计出电子闹钟的基本整体框架。
2、电子闹钟的电源设计:采用交直流供电电源。
电子钟一般采用数码管等显示介质,因而必须以交流供电为主,以直流电源为后备辅助电源。
3、电子闹钟的主机电路设计:主要有1)系统时钟电路设计:对时间要求不是很高,只要能使系统可靠起振并稳定运行就行。
2)系统复位电路设计:本系统采用的是RC复位方式3)按键与按钮电路设计:按键与按钮电路设计中关键要考虑的就是按键的去抖动问题。
本系统采用软件去抖。
考虑到对时和设定闹铃时间操作的使用频率不高,为了精简系统和降低成本,本系统只设置两个按键。
a)SET键,对应系统的不同工作状态,具有3个功能:在复位后的待机状态下,用于启动设定时间参数(对时或定闹);在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于结束当前位的设定,当前设定位下移;在设定最低位(分个位)的状态下,用于结束本次时间设定。
b)+1键,用于对当前设定位进行加1操作。
4)闹铃声光指示电路设计:本系统采用声音指示,关键元件是蜂鸣器。
4、电子闹钟的显示电路设计:设计一个由LED数码管组成的显示电路,显示采用共阳极数码管,其目的是为了简化限流电路的设计和实现亮度可调的要求。
一功能模、设计指标:1. 显示时、分、秒。
2. 可以24小时制或12小时制。
3. 具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。
校时时钟源可以手动输入或借用电路中的时钟。
4. 具有正点报时功能,正点前10秒开始,蜂鸣器1秒响1秒停地响5次。
5. 为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。
二、设计要求:1. 画出总体设计框图,以说明数字钟由哪些相对独立的块组成,标出各个模块之间互相联系,时钟信号传输路径、方向和频率变化。
并以文字对原理作辅助说明。
2. 设计各个功能模块的电路图,加上原理说明。
3. 选择合适的元器件,在面包上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在充分电路正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
51单片机数码管时钟电路的设计

51单片机数码管时钟电路的设计设计一个51单片机数码管时钟电路,让我们开始吧。
一、设计思路该数码管时钟电路的设计主要包括以下几个方面:1.使用DS1302时钟芯片获取真实时间;2.使用I2C总线方式将DS1302时钟芯片与51单片机连接;3.使用74HC595芯片驱动数码管显示;4.使用按键控制时钟的设置和调节;5.使用蜂鸣器发出报警声;6.使用LED指示灯显示时钟状态。
二、硬件设计部分数码管显示部分:1.使用4位共阳数码管作为时分显示器,使用1位共阳数码管作为秒显示器;2.使用8片74HC595芯片级联起来,将时分秒数据传输到数码管显示;3.设置共阳数码管的通阳管为P0口,设置74HC595的DS(串行数据输入)、SH(上升沿锁存)、STCP(74HC595的8位锁存输出)引脚接到P1.2、P1.3、P1.4端口;4.设置8个控制引脚接到P1.5~P1.12端口。
实时时钟部分:1.使用DS1302时钟芯片连接到P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7端口;2.设置时钟复位引脚接到P0.1端口,时钟传输使能引脚接到P0.2端口。
按键输入部分:1.设置按键S1接到P3.2端口,按键S2接到P3.3端口;2.设置按键的上拉电阻,使其处于高电平状态;3.设置按键的下降沿触发外部中断,以便检测按键的按下事件。
其他部分:1.设置蜂鸣器接到P0.0端口,并使用普通电阻限流;2.设置LED指示灯接到P0.7端口。
三、软件设计部分1.初始化函数:初始化P0、P1、P2、P3口的状态;2.DS1302驱动函数:包括初始化DS1302芯片和读写DS1302寄存器的函数;3.74HC595驱动函数:包括初始化74HC595芯片,以及向74HC595芯片发送8位数据的函数;4.数码管显示函数:将时分秒数据按位转换为对应的数字和状态,并调用74HC595驱动函数显示;5.按键检测函数:检测按键的按下事件,并根据按键事件的不同触发不同的操作;6.报警函数:当设定时间到达时,将触发报警声,并控制LED灯闪烁;7.主函数:循环读取DS1302时间,并更新数码管显示,检测按键事件,触发报警。
毕业设计(论文)-基于单片机的多功能钟控收音机的设计与实现--闹钟子系统的设计与实现[管理资料]
![毕业设计(论文)-基于单片机的多功能钟控收音机的设计与实现--闹钟子系统的设计与实现[管理资料]](https://img.taocdn.com/s3/m/93ab9c330c22590103029d9e.png)
基于单片机的多功能钟控收音机的设计与实现——闹钟子系统的设计与实现摘要收音机是现在生活中的一种娱乐工具,它可以扩展我们的知识面,丰富我们是日常生活。
但是现在的收音机仅仅只拥有收台、听台、存台的功能,功能上非常的单一,为了让收音机具有更强大的的功能,设计了这套基于单片机的多功能钟控收音机系统。
这套系统在传统的收音机上增加了时钟设置、温度测量、液晶显示以及闹钟设置多项功能。
本文主要论述了系统的方案设计,系统硬件设计包括硬件选型和硬件电路图;系统软件设计包括程序流程图设计和关键代码。
通过编写代码实现收音机节目的播放、音量调节、电台切换及节目的自动搜索、节目频点存储功能、时钟设置、温度测量、液晶显示以及闹钟功能。
且能够通过按键调整系统时钟,到达设定闹铃时间值可选择蜂鸣器响或开启收音机到指定频点。
该系统与传统的收音机系统相比较,具有结构简单,抗干扰能力强,测量精度高,使用方便的特点。
关键字:单片机;收音机;闹钟;液晶显示Based on SCM multi-function clock radio control design and realized ——Alarm subsystem of design and implementationAuthor:Li XinfangTutor:Yang BoAbstractThe radio is now in the life of the one kind of entertainment tool, it can expand our knowledge, enrich our daily life is. But now the radio only accept ,listen , save a function, the function is a single, in order to let the radio has more powerful function, the set design based on single chip microcomputer multifunctional clock radio control system. The system in the traditional radio increased the clock set, temperature measurement, liquid crystal display and alarm multiple functions. This paper discusses the design of the whole system, hardware design including hardware selection and hardware circuit diagram; System software design including program flowchart design and key code. By writing code realization of radio programs broadcast, volume adjustment, radio switch and programs to be automatic search, the program frequency memory function, clock set, temperature measurement, liquid crystal display and alarm clock function. And to be able to button to adjust the system clock, to set the alarm time value can choose a buzzer rang or open radio frequency to the specified. This system and the traditional radio system comparison, the structure is simple, strong anti-jamming ability, high accuracy, easy to use features.Key words: Single chip microcomputer; the radio; the alarm clock; liquid crystal display目录1 绪论 0 0研究的目的及意义 0本文结构 (1)2 系统方案设计 (2) (2) (2)收音机模块 (3)时钟模块 (3)温度模块 (3)显示模块 (3)闹钟模块 (3)按键模块 (4)3 系统硬件设计 (5) (5) (5)AT89S52单片机的引脚结构分析 (6)单片机最小系统设计图 (7)显示模块硬件电路设计 (7) (7)显示模块电路设计 (8)按键模块硬件电路设计 (8)时钟模块的硬件电路设计 (9) (9) (9) (10)存储模块硬件电路设计 (11) (11) (11)AT24C02电路设计 (12)打铃模块电路设计 (12)4 系统软件设计 (14)系统软件总体设计 (14)主控模块详细设计 (14)显示模块详细设计 (16)按键模块详细设计 (17)时钟模块详细设计 (18) (18)存储模块详细设计 (20) (21) (23)5系统的调试与实现 (25)C介绍 (25)6 结束语 (27)参考文献 (28)致谢 (29)1 绪论收音机一直在人们的生活娱乐中占有非常重要的地位。
51单片机时钟代码(带秒表闹钟功能).

}
}
}
if(s6==0)
{
delay(5);
if(s6==0)
{
while(!s6);
di();
if(s4num==1)
{
miao--;
if(miao<0)
miao=59;
write_alarm(10,miao);
write_com(0x80+0x00+13);
ep=0;
}
voidwrite_data(uchardat) //写入字符显示数据到LCD
{
while(lcd_bz()); //等待LCD空闲
rs=1;
rw=0;
ep=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
}
if(s1num==3)
{
hour++;
if(hour==24)
hour=0;
write_time(4,hour);
write_com(0x80+0x40+7);delay(5);
}
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
di();
if(s1num==1)
批注本地保存成功开通会员云端永久保存去开通
#include <reg51.h>
#include <intrins.h>
基于单片机的定时闹钟设计

基于单片机的定时闹钟设计设计定时闹钟是人们日常生活中常见的需求之一,而单片机技术的发展为定时闹钟的实现提供了可行的解决方案。
本文将介绍基于单片机的定时闹钟设计。
一、研究背景及意义在现代社会中,时间是人们日常生活中非常重要的一个因素。
为了更好地规划时间和提高生活效率,人们需要定时提醒自己进行各种活动。
闹钟作为定时提醒的工具,在人们的日常生活中扮演着不可替代的角色。
而基于单片机的定时闹钟实现具有高精度、多功能等优点,因此备受人们青睐。
二、技术方案设计本文设计的基于单片机的定时闹钟主要由三部分组成:时钟电路、单片机控制电路和显示电路。
1. 时钟电路时钟电路采用RTC芯片,可以提供高精度的时间计量。
RTC芯片内部自带晶振,保证了较高的时钟精度。
时钟电路主要功能为提供当前时间,包括小时、分钟和秒。
2. 单片机控制电路单片机控制电路是实现定时闹钟的核心部分。
程序流程如下:①初始化:单片机启动后,需要对RTC芯片和闹钟设定进行初始化,包括设定当前时间和设定闹钟时间。
②计时函数:单片机开启定时器,在每秒钟时钟信号来临时,计时器会进行一次计数。
③闹钟判断:单片机判断当前时间是否等于闹钟设定时间,如果相等,则触发闹钟事件,启动蜂鸣器提示。
④按键设置:单片机可以通过按键进行时间设置和闹钟设置,包括增加或减少小时、分钟和秒数,并将设置信息保存至RTC芯片内存中。
3. 显示电路显示电路采用数码管进行显示,使用单片机控制输出数据。
数码管分为小时显示、分钟显示和秒显示,可以满足不同的显示需求。
三、实验结果分析通过实验结果可以发现,本文设计的基于单片机的定时闹钟可以准确地显示时间和定时提醒。
同时,可以通过按键进行时间和闹钟的设置,并存储至RTC芯片内部,保证了时间和闹钟的持久性。
四、结论及展望基于单片机的定时闹钟设计具有实用性和可行性,可以提高人们生活的效率和品质。
然而,本设计在信号筛选和抗干扰能力方面还有一定的改进空间,需要通过更深入的研究来进一步完善。
基于51单片机的LCD数字钟设计与制作
关键 词 草 片机 ;D S l 5 0 2;L C D I 6 0 2 ;数字钟
引言
随 着科 学技 术 的不断 发 展 ,人们不 仅对
于 时 钟 的精 度 要求越 来 越 高 ,而 对于 时钟 功 能的 要求也 越来越 多 。本文基 于 5 I 单 片机 设计 r 一 款 带 有闹 钟设 置 、温 度显 示 、背光 时 间设 置的 数 字钟 ,它具 有 走时 准 确、 显示 直观 、无 机械 走 动 的声 音 、低能 耗 等优 点 , 可广泛用 于人 仃 ] 的 门常生活 。
1系统 概述
系统 原 理 榧 图 如 图 1 所 示 , 本 系 统 以 S T C 8 9 C 5 2 RC单片 机为 核 心 ,外 围电路 包括 键 盘 电 路 、 温 度 检 测 电 路 、D S 1 3 0 2时 钟 电 路 、L C D 1 6 0 2液 晶 显示 电路和 蜂 呜 器驱 动 电 路 。 当系 统启 动时 ,单 片 机首 先对 内部 资源 和L c Dl 6 0 2 进 行 初 始化 ,随 后从 D S 1 3 0 2 时 钟 芯 片和 D S I 8 B 2 0 温 度传 感 器分 别读取 时 间 和 温 度传输 给 L C D1 6 0 2 显示 ,并 对键盘 电路 进 行循环 扫描 , 通 过键盘 电路 完成 系统时 间、 闹钟日 ' f i H ]  ̄ H 背) 匕 持续 时 间的 设置 。
的 数字 式 时钟 ,并介 绍 了在 制作 和 调试 过程
中 遇 到 的 问 题 及解 决 方 法 。
脚 )保持 持续 两 个机 器 周期的 高 电平 使单 片 机 处于 复 位状 态 ,复位 后 片 机 P C指 - } 旨 向0 0 0 0 H 单元 ,从 该单元 向下执 行指 令。 2 . 2键盘 电路 键 盘 电路 由 4 个 微动 开关 组成 ,分 别为 “ 设置 ”键 、 “ + ”键 、 “ ”键 和 “ 保存 ”键 , 连接 到单片机 的 P 1 . 0 _ _ P 1 . 3 接 口进行控 制。
51单片机时钟代码(带秒表闹钟功能)
51单片机时钟代码(带秒表闹钟功能)#include#include#defineucharunignedchar#defineuintunignedintbitbeep=P1^5;//蜂鸣器bitLED1=P1"6;//LED灯bitep=P2"7;//1602使能端bitr=P2八6;//1602bitrw=P2八5;//1602bit0二P3八4;//停止闹铃和小灯bit1二P3八5;//功能键bit2二P3飞;//增大键bit3二P3X;//减小键bit4二P3「;//bit5=P3^2;bit6二P3八3;bit7=P3^0;uchar1num,4num,count,count1,judge=0;charec,min,hour,miao,fen,hi,ec1,min1,diwei;voiddelay(uintz){ uint某,y;for(某二z;某〉0;某--)for(y=100;y〉0;y—);}voiddi(){beep=0;delay(50);beep=1;}bitlcd_bz()//测试LCD忙碌状态{bitreult;r=0;rw=1;ep=1;_nop_();_nop_();_nop_();_nop_();reult=(bit)(P0&0某80);ep=0;returnreult;}_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}voidwrite_data(uchardat)//写入字符显示数据到LCD{while(lcd_bz());//等待LCD空闲r=1;rw=0;ep=0;P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_( );_nop_();_nop_();_nop_();ep=0;}ucharhi,ge;hi=dat/10;ge=dat;write_data(0某30+hi);write_data(0某30+ge);}voidwrite_alarm(ucharadd,uchardat){ucharhi1,ge1;hi1=dat/10;ge1=dat;count=0;//clearwrite_data('A');delay(5);hi=17;voidkeycan()//按键扫描{if(l==0){delay(5);if(1==0){1num++;while(!1);di(); if(1num==1){TR0=0;if(1num==2){if(1num==3){if(1num==4){1num=0;if(1num!=0){if(2==0){delay(5);if(2==0){while(!2);di();if(1num==1){ec++;if(ec==60)ec=0;min++;if(min==60)min=0;if(1num==3){hour++;if(hour==24)hour=0;delay(5);if(3==0){while(!3);di();if(1num==1){ec--;if(ec<0)ec=59;if(1num==2){min--;if(min<0)min=59;hour--;if(hour<0)hour=23;}voidkeycan1(){if(4==0){delay(5);if(4==0){4num++;while(!4);di();if(4num==1){TR0=0;if(4num==3){if(4num==4){if(4num!=0){if(5==0){delay(5);if(5==0){while(!5);di();if(4num==1){miao++;if(miao==60)miao=0; write_alarm(10,miao);if(4num==2){fen++;if(fen==60)fen=0;if(4num==3){hi++;if(hi==24)hi=0;write_alarm(4,hi);if(6==0){delay(5);if(6==0){while(!6);di();if(4num==1){miao--;if(miao<0)miao=59;if(4num==2){fen--;if(fen<0)fen=59;write_alarm(7,fen);if(4num==3){hi--;if(hi<0)hi=23;}}if(7==0){delay(5);if(7==0){while(!7)di();judge++;}}if(judge==2){TL0=0某b0;TH0=0某3c; {ec=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;}}}}}if(judge==3){judge=0;ec1=0;min1=0;diwei=0;write_alarm(10,miao);write_alarm(7,fen);write_alarm(4,hi);wr ite_alarm(10,miao);write_alarm(7,fen);write_alarm(4,hi);} if(count==20){count=0;ec++;if(ec==60){ec=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;}}}}}。
基于51单片机的DS12C887时钟芯片的时钟电路设计 - 副本
基于AT89C51单片的DS12C887芯片电子时钟的设计摘要:本设计开发了一款具有日期、时间、星期和气温同步显示功能的电子时钟.工作原理是主控MCU读取实时时钟芯片DS12C887,获取时间信息,由全数字单总线结构温度传感器DS18B20读取温度信息,经MCU处理,送LCD显示,关键字:DS12C887 DS18B20 电子时前言随着科学技术的不断发展, 人们对时间计量的要求越来越高。
在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。
本作品是以STC89C51单片机作为主控芯片,使用12MHZ的晶振,使用专用时钟日历芯片DS12C887产生时间信息,时间精确。
软件部分以C语言为主体,用1602LCD液晶屏显示输出信息,输出信息量多,更直观、人性化。
该时钟可实现人机交互,可通过提供的键盘对其进行调整。
系统具有以下功能:年、月、日、时、分、秒显示;12小时/24小时模式切换,在12小时模式中,用AM和PM区分上午和下午;秒表功能;整点闹铃和报时功能,且闹钟可设置多组。
本次设计的电子时钟系统由单片机最小系统,1602LCD液晶屏,时钟芯片,调整按键,蜂鸣器,电源五大部分组成。
1. 课题分析随着电子技术的发展,电子技术为人们的生活带来了越来越大的方便.本课题旨在借助实时时钟芯片DS12C887和温度传感器DS18B20 和51单片机设计一个多功能的电子时钟.由于DS12C887芯片内附加锂电池,在上电情况下可以通过电源充电,断电后可以利用内部锂电池供电继续工作,在掉电重新上电后,不影响时间数据,不需重新对时,方便可靠.2. 方案论证方案一、利用单片机内部定时器产生秒信号,通过软件处理得到时间信息,送LCD显示.方案二、利用通用串行实时时钟芯片DS1302产生时间信息,利用MCU读取时间信息,送LCD 显示.方案三、通过实时时钟芯片DS12887,获取时间信息,经MCU处理,送LCD显示.方案一电路结构简单,可控性强,但断电后时间数据完全消失,再次上电后需重新设定,且由于电路本身缺陷和附加干扰较多,时间误差较大.方案二电路结构简单,时间精度较高,由于使用串行数据传输,节省MCU资源,但DS1302无内置电池,掉电后,数据丢失,重新上电后需对时.方案三采用实时时钟芯片DS12C887,其内部具有内置锂电池,在掉电的情况下可以正常工作10年以上,且带有非易失性RAM,可以保证在掉电的情况下,用户的定时信息不会丢失;带有温度补偿,保证时间数据的准确.经过综合考虑,我们认为方案三满足设计需求.2.2温度部分由于只是测量气温,用数字温度传感器单总线结构DS18B20即可满足要求,该器件采用单总线结构,且数字传输,可以与CPU直接接口,电路结构简便,可靠性好.2.3主控部分选用单片微控制器AT89C52作为主控.系统方案方框图如图2.1所示.图2.1 系统方案3.方案实现3.1 器件简介(1)AT89C52AT89C52是ATMEL公司生产的通用低功耗8位CMOS微控器,具有8051内核和8KB的可编程Flash程序存储空间以及256字节RAM.有32个通用IO口线和全双工串口,两个数据指针、两个16位可编程计数器/定时器、8个2级优先级中断源,具有片内时钟电路,通过简单的外接器件即可实现时钟电路.(2)DS12C887引脚结构及其功能如图3.1.图3.1 DS12C887引脚结构AD0-AD7:地址/数据总线NC :空脚MOT :总线模式选择CS :片选信号AS :地址锁存信号R/W :写信号(intel总线模式下)DS :读信号(intel总线模式下)RESET :复位信号IRQ : 中断请求输岀VCC :+5V电源GND :电源地DS12C887是美国DALLAS半导体公司生产的实时时钟芯片.采用24 引脚双列直插式的封装形式.芯片的晶体振荡器、振荡电路、充电电路和可充电锂电池等一起封装在芯片内部,组成一个加厚的集成电路模块.电路通电时,其内部充电电路便自动对其内部电池充电.可保证时钟数据10 年内不会丢失.DS12C887内部设有方便的接口电路,接口设计简便,使其与各种微处理器的接口大大简化.使用时无需外围电路元件,通过对MOT引脚的电平控制,可以实现与不同的计算机总线连接.DS12C887 能够自动存取并更新当前的时间,CPU 可通过读取DS12C887 的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD 码初始化芯片的10 个时标寄存器.其中114 字节的非易失性静态RAM 可供用户使用,可以在控制器掉电的情况下,保存一些重要的数据.DS12C887 的4 个状态寄存器用来控制和指出DS12C887 模块当前的工作状态,除数据更新周期外,程序可随时读写这4 个寄存器.其内部结构如下图3.2.图3.2 DS12C887内部结构(3)DS18B20DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器,在其内部使用了在板(ON-B0ARD)专利技术.全部传感元件及转换电路仅集成在形如三极管的一个集成电路内.DS18B20采用单总线接口方式,与微处理器连接时仅需要一条总线即可实现微处理器与DS18B20的双向通讯;支持多点组网功能,多个DS18B20可以并联在一条总线上,即可实现多点测温;在使用中不需要任何外围元件.测温范围为-55℃~+125℃,结果以9位数字量方式串行传送.DS18B20测温原理如图3.3所示.图3.3 DS18B20内部结构图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1.高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入.计数器1和温度寄存器被预置在-55℃所对应的一个基数值.计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1 ,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶体振荡器产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度.其内部带有非线性修正,确保温度数据的准确性.DS18B20的测温分辨率为0.5℃以9位数据格式表示,其中最低有效位(LSB)由比较器进行0.25℃比较,当计数器1中的余值转化成温度后低于0.25℃时,清除温度寄存器的最低位(LSB),当计数器1中的余值转化成温度后高于0.25℃,置位温度寄存器的最低位(LSB),DS18B20温度数据格式如表3.1所示.表3.1 DS18B20温度数据格式DS18B20采用12位二进制数据表示温度,分成两个字节,低字节低四位为小数位,低字节高四位和高字节低四位组成温度信息的8位整数位,其中第一位为符号位,为0表示温度为正值,为1表示温度为负值.当温度为负值时,数据采用补码存放.高字节高四位无效,与符号位保持一致.温度与数据对应关系如表3.2所示.表3.2 部分温度对应数据3.2硬件电路设计本课题涉及电路原理图和PCB图均由Altium Designer Summer 09绘制.(1)电源部分图3.7 整机电源电路由于电路微控器供电电压为5V,osyno6188供电电压为3V或4.5V,osyno6188对电源电压精度要求不高,决定整机采用5V电源供电,在电源处串联一只1N4003二极管,为osyno6188供电,1N4003为硅管,正向导通压降在0.7V左右,经过二极管后,得到约4.3V 电压,为osyno6188供电.电源电路为普通稳压电源电路,由于不是本项目主要方面,不再赘述.(2)AT89C52最小系统电路图3.8 AT89C52单片机最小系统电路由震荡电路,复位电路和单片机构成最小系统.震荡电路为单片机提供工作时钟,由石英晶体和补偿电容构成.由于语音部分需要1200bps波特率,石英晶体选取11.0592MHz,保证波特率零误差,补偿电容选取30pF瓷片电容.复位电路在上电时为单片机提供复位信号,由10uF电容和10K电阻构成的RC充电电路构成,当系统复位上电瞬间,电源通过电阻R为电容充电,在电阻上得到下降的指数充电电压,由高电平经过一段时间到达低电平,提供单片机需要的高脉冲复位信号.电源部分电容为去耦电容.EA拉高,MCU 上电后,从内部程序存储器开始执行.(3)osyno6188及外围电路设计.图3.9 osyno6188及外围电路系统采用4.5V电源供电模式,电源VDD由电源电路中VCC串接二极管后获得.电源电路、复位电路以及时钟电路参考osyno6188用户手册.RXD、TXD为串行总线接口,分别连接主控MCU的TXD、RXD端.(4)DS12C887与AT89C52接口电路设计.图3.10 DS12C887接口电路DS12C887的AD0-AD7为地址\数据复用总线,与控制器地址\数据总线(P0口)直接连接,R2为上拉电阻;MOT为总线模式选择引脚,接地选择INTEL总线连接方式;R/W在INTEL 总线模式下位写使能,接控制器读信号WR(P3.6)端;DS在INTEL总线模式下为读使能信号,接控制器读信号RD(P3.6)端;AS为地址锁存,接控制器地址锁存信号ALE(30脚)端;RST接电源拉高,片选CS直接接地使能。
(完整word版)51单片机数字钟
目录1 设计任务与要求 (I)2 设计方案 (1)3 硬件设计 (2)3.1 AT89C51单片机简介 2 3.2单片机型号的选择 (6)3.3数码管显示工作原理 (6)4 软件设计 (7)4.1主程序模块介绍 (7)4.2主程序 (7)5 仿真调试 ......................................... 错误!未定义书签。
5.1K EIL仿真结果.................................. 错误!未定义书签。
5.2仿真结果分析 (13)6 小结 ............................................. 错误!未定义书签。
1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。
2. 设计出硬件电路。
3. 设计出软件编程方法,并写出源代码。
4. 用PROTEUS进行仿真。
5.用汇方式实现目的。
7.系统的各各功能模块要编语言编实现程序设计。
6.利用查表,中断等清楚,有序。
8.程序运行时有友好的用户界面。
2 设计方案本设计主要设计了一个基于AT89C51单片机的电子时钟。
并在数码管上显示相应的时间。
并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。
应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED七段数码显示器用于显示时间、8031集成定时器用于定时、0.125W、8欧姆的扬声器用于定时发声。
软件部分包括主程序、定时计数中断程序、时间调整程序、延时程序四大模块。
通过中断程序进行定时器计数,时间调整程序是当键按下时间小于1秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。
先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H 存放计数值,从00—59,一直循环,把40H中的数值拆分成个位和十位,分别存在30H与31H中,要求动态扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0与R1用于存放拆分后的字型,再传到30H与31H中去,再设计时钟程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子课程设计实习报告 元件购买及焊接 元件购买: 地点:广埠屯,华中电子市场二楼 时间:2011年4月7日 过程:大早到华中电子市场后,当时还没开门,等到九点才开门,据人介绍上了二楼,卖各种电子元件的店面很多,但都不大。选了一家比较小的店面,把老师给的清单给店主看后,店主很热情,但是说有两样元件没有,但承诺叫我们等等,到仓库去找一下。我们委婉拒绝了,想先看看,第一次来毕竟的货比三家嘛。又挨个找了几家店,对比价格和元件齐全程度后,我们选了一家比较大元件齐全而且价格合理的店面。 由于主要的元件,包括板子和各种芯片老师都发了,我们主要买一些小型元件。主要是电阻电容,由于元件小,不是单个卖的,都是十个十个的卖。至于电阻电容的区分,以前参加电子协会也接触过,关键是一些不熟悉的元件,如串口下载线之类的,我们虽然在课堂听老师讲过区分公母,但对于是否买对了,还是有疑问,得到店主承诺买错了,可以包换后,才放心结账。对着清单上一一看好后,除了电阻点容多买了几个外,其他的东西都还齐全。最后叫店主结账,并依照老师要求开发票。 原清单:(部分元件由于分批购买或者网上购买,未能列入清单) 焊接心得: 焊接时间:2011年4月9日(星期六上午) 地点:信息楼405 焊接元件电路图: 过程及心得: 有了大二焊接收音机的一些焊接功底后,对于焊接还是有些经验的,先将小的元件焊接好,比如说电容电感,避免大的高的元件焊好后留下的可操作空间太少,给小的元件焊接带来不便。而不耐高温的元件,如三极管等,可以留在最后焊接,以免引脚触到烙铁损坏元件。当然有些元件的引脚虽然是对称分布,但是是是有区别的,如电解电容,二极管,三极管等。特别应该注意的是排阻,普通电阻部没有负极,但是排阻比较特别,两端是不同的。由于排阻焊反了,导致与P0口相连的矩阵键盘无论如何都没法正常使用,后来发现后,拔了好久才拔下来,手还在此过程中,还跟烙铁来了个亲密接触,手指被烫的留下了一道白印记。拔下来时候,板子已经伤痕累累了,幸好买了新的排阻焊上去之后,键盘能够正常工作了,真可谓教训沉痛。 焊接过程中,由于烙铁使用的还是比较少,开始时手拿着总觉得很别扭,点锡丝的时候甚至有点抖,不过焊完一两个元件后就适应了很多,后来越来越上手,速度也快了很多。 我们特地几个人约好一起焊接,并对比,有疑问先讨论,再动手焊接。但是还是有些问题没得到解决,由于没接触过1602,对于排针和排插的位置还是焊反了,但是问题不大,后来的实习过程中证明液晶一直工作正常,不过以后还是得按常规出牌,以免遇到大麻烦。其间也遇到了复位开关的摆放问题,我一直觉得是只要能插进去就正确的,但有人觉得有正反问题,后来证明我的想法是正确。 焊完后,分模块对整个硬件电路进行调试检测,看有没有漏焊,虚焊的地方。之后,插上芯片试电,一切正常后,用安装好的编译和STC串口下载软件给单片机下载程序,红色的二极管一闪一闪的,等二极管不闪后,第一个数码管被点亮了,当时很兴奋。至此焊接告一段落。 在此过程中,我总结出 1、焊接前需熟悉电路,了解各元件,因为真正的焊接过程实际上是很短的,而准备工作没做好,只会给后面的焊接带来意想不到的麻烦,甚至导致板子被毁。 2、焊接过程中,要注意力集中,逐渐积累经验,怎样操作适应,怎样避免虚焊和短路,以提高效率。总的来说是一个熟练掌握焊枪和熟悉锡丝特性的过程。 3、焊接后先不要急于上电,也不要想板子一定焊好了,或者不正常之后惶恐是不是焊废了。毕竟这也是一个小的系统,我们第一次接触,第一次上电就能一切运行成功不现实,出现情况不要急,可能只是一些小问题,如没插上芯片或跳线帽之类的。 4、总之作为学电子电气的,我们毕竟还会接触硬件的焊接和调试,这只是一个开端,相信有了这次的经验后,以后的会对这一过程了解的更深入。 基于数码管及矩阵键盘实现的移位等若干功能 一、材料及硬件分析 数码管的接法: 由于数码管的借口很多,如果一个个接在单片机IO口上,将会很占用硬件资源,同时编程时候要兼顾段选和位选,会给编程带来很大不便。使用74LS138和CD4511译码器后,两个问题迎刃而解,如下为数码管的接法原理图: 由图可知,138控制位选占用3个IO口,CD4511控制段选占用4个IO口,加上控制小数
点的引脚总共占用8个IO口。给P1口赋值的时候,高3位控制的是位选,即第几个数码管亮,低4位控制的为段选,直接显示0-9,无需代码。而第4位则控制的是小数点的亮暗。动态显示的时候,只需要在某一位IO口后面的小数点点亮即可。
矩阵键盘线反法:矩阵键盘内部是4x4的8根线组成的16键的键盘,每个限于线交
叉点,表示为一个键。总共需要8个IO口,当两个线没有交叉的时候,接通的两条线都变味低电平。首先可将高八位置为高电平第八位置为低电平,记下变为低电平的一条线路。然后将高低电平交换,再记下一条线路,即可确定按下的键的位置。具体程序如下: void press() { unsigned char keybuf1,keybuf2; P0=0xf0;keybuf1=P0; if(P0!=0xf0) { if(P0!=0xf0) //按键 { P0=0x0f;keybuf2=P0;KeyV=keybuf1+keybuf2;} } 经过多次试验后得出的各键的代码为: 0xee 0xde 0xbe 0x7e 0xed 0xdd 0xbd 0x7d 0xeb 0xdb 0xbb 0x7b 0xe7 0xd7 0xb7 0x77,当然将键盘反接之后键就值完全变了。
软件消抖:当有键按下的时候,瞬间单片机的电平会不稳定,即出现电平抖动,为了消
除抖动,可采用软件法: unsigned char up() { unsigned char P0Buf; P0=0xf0; //松键 P0Buf=P0; return(P0Buf-0xf0); } 在有键按下之后执行while(up());即停在该处,只给Keyv赋值一次。
二、程序功能 1、密码锁:其他所有功能都在此程序运行成功的基础才能执行。上电之后,输入密码,
并按c键验证正确之后会显示全8,否则显示全0。验证成功后按下A可以自行下面程序 2、自动拉幕式移屏:1键左移,2键右移,其他键停止,全屏显示为12345678。
3、定时器时钟:BCD分别可调时分秒,A键实现下一功能
4、秒表:1、2、3分别可以实现暂停,继续,清零功能,可精确到百分之一秒
5、手动式移位并删除:输入数字的将第一个数字删除,并将所有数字前移一位。C键可
实现删除,将最后一位数字删除,并在第一位补零。 6、加法器:输入两个数字可实现相加,并可清屏和连加,但不能实现小数相加。
二、源程序
#include"reg52.h" unsigned char Pin[8]={8,5,8,5,8,5,8,5}; unsigned char Lock[8]={11,11,11,11,11,11,11,11}; unsigned char L1[8]={0,0,0,0,0,0,0,0}; unsigned char L[8]={0,0,0,0,0,0,0,0}; unsigned char Led1[8]={0,0,0,0,0,0,0,0}; unsigned char Led[16]={11,11,11,11,11,11,11,11,0,1,2,3,4,5,6,7}; unsigned char KeyV=0; unsigned char Total=0; unsigned char disp[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; unsigned char second1=0; unsigned char second2=0; unsigned char minute1=0; unsigned char minute2=0; unsigned char hour1=0; unsigned char day=0; unsigned char month=0; unsigned char Con=60; unsigned char code Key[]={0xd7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0x7e}; unsigned char T=0; unsigned char V=0; void delay(int n) { while(n--); }
void dly() { unsigned int q; q=2000; while(q--); } /*change() { if(Con==60)Con=1; if(Con==1)Con=60; } */ unsigned char up() { unsigned char P0Buf; P0=0xf0; //松键 P0Buf=P0; return(P0Buf-0xf0); } void press() { unsigned char keybuf1,keybuf2; P0=0xf0;keybuf1=P0; if(P0!=0xf0) { if(P0!=0xf0) //按键 { P0=0x0f;keybuf2=P0;KeyV=keybuf1+keybuf2;} while(up()); } } display() { unsigned char i,P1Buf;