当前位置:文档之家› 电子时钟程序设计.pdf

电子时钟程序设计.pdf

2
熟悉硬件 了解各引脚功 能
完成整体电路图
分块设计各部分电 路
将分块的电路组合
认真学习单片机汇编 语言
确定变成结构和思 路
综合各程序完成整体 程序
编辑各个程序模块
调试程序,进行修改
对仿真中出现的问题 进行改正
仿真成功
软硬件结合,完成任务 书要求
用 Proteus 画出电路 图
画出仿真图进行仿 真
准备器件、搭接电 路
4
开始 计数单元清零 装入计数值 192 继续计数
一秒到
ss++ 一分到
mm++;ss=0 一小时 到
hh++;mm=0
调节小 时中断
调节分 钟中断
hh++
mm++;ss=0
数码显示
5
2.4 设计程序
#include<reg51.h> #include<stdio.h> #include<intrins.h> char data time[6]; void delay(unsigned char k); sbit check=P0^0; sbit inter0=P3^2; sbit inter1=P3^3; char data which=0; char data count=0; void smadd(unsigned char k); void smsub(unsigned char n); char code buf[]={ 0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f }; char code sel[]= {0x01,0x02,0x04,0x08}; void main() { char i; for(i=0;i<500;i++); time[0]=0; time[1]=1; time[2]=8; time[3]=0; time[4]=2; time[5]=1; TMOD=0X01; TH0=(65535-5000)/256; TL0=(65535-5000)%256; IP=0x07; IE=0X87; TR0=1; while(1)
time[n]=time[n]-1;
7
} else if(time[n]==0&&(n==3||n==1)) {
time[n]=5; smsub(n+1); } else if(time[n]==0&&(n==4||n==2||n==0)) { time[n]=23; smsub(n+1); } else if(time[n]==0&&(n==5)) { time[n]=0; } } void smadd(unsigned char n) { char flag=0; delay(80); if((n==0)||(n==2)||(n==4)) {
{ for(i=0;i<6;i++) { P1=sel[i]; P2=buf[time[i]] ; delay(10); } if(check==0) { delay(8); TR0=0;
6
which=(which+1)%3; while(check==0); TR0=1; }
} } void delay(unsigned char k) {char i; for (;k>0;k--)
1
结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使
程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、 显示程序、闹钟显示程序、调时显示、定时程序。运用这种方法,关 键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错 误。
2.设计内容
设计思想 针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单
片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程 (ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密 度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚
验证硬件电路
进行扩展
2.2 设计元件
元件 单片机 晶振 晶振电容 按键
AT89C51 12MHz 30pF
成功 规格
3
数量
1 1 2
4
电阻 电容 七段数码管 USB 接口 USB 延长线 底座
10K,1K,220 欧, 10uF(+) 共阳极四位、两位
40 脚
2.3 设计图
各 1,1,15 1 各 1,1 1 1/2 1
1.设计目的
电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的 计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用, 使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生 活带来了极大的方便,而且大大地扩展了钟表的报时功能。电子时钟 已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧 院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不 仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比 如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时 间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动 力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数 字化为基础的。而且是控制的核心部分。因此,研究电子时钟及扩大 其应用,有着非常现实的意义。
for(i=0;i<80;i++) {;}
} void time_tr0() interrupt 1 using 2 {
TH0=(65535-5000)/256; TL0=(65535-5000)%256; count++; if(count==100) {
smadd(0); } } void int0_i() interrupt 0 using 3 { TR0=0; smadd(which*2); TR0=1; while(inter0==0); } void int1_i() interrupt 2 using 1 { TR0=0; delay(20); smsub(which*2);; TR0=1; while(inter1==0); } void smsub(unsigned char n) { delay(80); if(time[n]>0) {
相关主题