单片机课程设计---数字时钟的设计。
班级:电子071 学号: 0707200205 姓名:于奎伟 2023年1月4日。
摘要: 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,**便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本次做的数字钟是以单片机(at89c51)为核心,结合相关的元器件(共阴极led数码显示器等)再配以相应的软件,达到制作简易数字钟的目的,其硬件部分难点在于元器件的选择、布局及焊接。
正文: 本设计的构想:通过单片机控制数字时钟,将时间显示在led数码管上。通过按键来显示执行个部分的功能,比如调时、秒表、闹钟等。
本设计的工作原理如下:在单片机最小系统的基础上,使用i/o口连接按键、led数码管。通过单片机定时器中断来获取比较准确的时间。
本程序中用定时器中断0,tomd=0x01,每1ms产生一次中断,所以对定时器所装的初值:th0 = 65536-1000)/256,tl0 = 65536-1000)%256。然后在主函数中执行初始化函数、按键函数,显示函数,来实现所设计的数字时钟的功能。
实验的原来图如下:
实验的流程图如下:
功能介绍:1、 开机时,显示00-00-00的时间开始计时。最上面的led发光二极管亮一秒灭一秒。
2、 按键“选择”。当第一次按下时,最上面的led发光二极管不再亮灭闪烁,计数器停止工作,同时显示调时的发光二极管会亮,此时按下按键“加加”,可以实现秒的加。第二次按下“选择”按键时,按按键“加加”可以实现分的加。
第三次按下“选择”按键时,按按键“加加”可以实现时的加。第四次按下“选择”按键时,会变成秒表的显示,同时计数器开始工作,最上面的led发光二极管发生亮灭闪烁,显示调时的发光二极管会灭,显示秒表的发光二极管会亮。按按键“加加”可以实现秒表的工作,再按“加加”,秒表停止工作,再按“加加”,秒表清零。
第五次按下“选择”按键时,数码管显示定闹钟的功能。显示秒表的发光二极管会灭,显示闹钟的发光二极管会亮。按按键“加加”可以实现闹钟分的调整。
第六次按下“选择”按键时,按键“加加”可以实现闹钟时的调整。第六次按下“选择”按键时,显示闹钟的发光二极管会灭。
3、 通过上面,定闹钟完成后,我们按下“闹钟开启”按键,当到达定时时间时,闹钟会发出蜂鸣声,同时数码管显示“hello-_-字样,蜂鸣声可持续一分钟,当然我们也可以通过“闹钟开启”按键关掉闹钟。
参考文献:赵亮,侯国瑞,《单片机c语音编程与实例》,人民邮电出版社,2023年九月第一版。
阎石,《数字电路基础》,高等教育出版社,2023年第四版。
吴金戌,沈庆阳,郭廷杰,《8051单片机实践与应用》,清华大学出版社。
《单片机接**术》 胡汉才高等教育出版社。
程序示例:#include <>
#define uchar unsigned char;
#define uint unsigned int;
uchar code talbe 数码管显示。
uchar code table
uchar code weii
uchar code wei 数码管的位选。
int a[8],b[8],c[8]; 定义a[8]时间,b[8]秒表,c[8] 闹钟的定时。
uint tt,ttm,i,x,y,z,key_state1,flag_mode,key_state2,flag_jia;
int shi,fen,miao,m_shi,m_fen,m_miao,n_shi,n_fen,n_miao;//定义时间秒表闹钟显示变量。
sbit k_mode = p1^0; /定义设置开关。
sbit k_jia = p1^1;//定义加加开关。
sbit k_naozhong = p1^2; /定义闹钟按键开关。
sbit button = p1^7;//闹钟的输出控制端。
sbit shan = p1^3; /led亮一秒灭一秒。
sbit tiaos = p1^4; /当调整时间时此控制的led亮。
sbit miaob = p1^5; /当用到秒表时此控制的led亮。
sbit dings = p1^6; /当定闹钟时间时此控制的led亮。
void init声明初始化函数。
void diaplay声明显示函数。
void delay(z声明延迟函数。
void key声明按键函数。
void naozhong();声明闹钟函数。
***主函数***
void main主函数。
init ()
while (1)
diaplay ()
naozhong();
***初始化函数***
void init ()
shi = 0;
fen = 0;
miao = 0;
m_shi = 0;
m_fen = 0;
m_miao = 0;
n_shi = 0;
n_fen = 0;
n_miao = 0;
tt = 0;
ttm = 0;
tmod = 0x01选择工作模式1
th0 = 65536-1000)/256;//给定时器装初值。
tl0 = 65536-1000)%256;
ea = 1打开总中断。
et0 = 1打开定时器/计数器0
tr0 = 1开始计数。
***中断1***
void time ()interrupt 1
th0 = 65536-1000)/256; /重装初值
tl0 = 65536-1000)%256;
tt++;if (flag_mode ==4当变量flag_mode=4时,运行秒表程序。
if (flag_jia ==2)
if (flag_jia ==3)
if (tt ==1000)
***显示函数***
void diaplay ()
a[0] =miao%10;
a[1] =miao/10;
a[2] =10;
a[3] =fen%10;
a[4] =fen/10;
a[5] =10;
a[6] =shi%10;
a[7] =shi/10;
b[0] =m_miao%10;
b[1] =m_miao/10;
b[2] =10;
b[3] =m_fen%10;
b[4] =m_fen/10;
b[5] =10;
b[6] =m_shi%10;
b[7] =m_shi/10;
c[0] =n_miao%10;
c[1] =n_miao/10;
c[2] =10;
c[3] =n_fen%10;
c[4] =n_fen/10;
c[5] =10;
c[6] =n_shi%10;
c[7] =n_shi/10;
for (i = 0;i<8;i++)
elseelse if(flag_mode==5||flag_mode==6)//当flag_mode=5或flag_mode=6时显示定时数值。
else其他时候显示时间。
delay(4);
/**延迟函数***
void delay (z)
for(x=z;x>0;x--)
for(y=110;y>0;y--)
/**按键函数***
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...