资源简介
单片机原理及应用课程设计任务书
数字钟 要求:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。(或根据实际数字钟增加其它功能)。

代码片段和文件信息
#include
#include
#include
sbit kgnxz=P3^0; //功能选择键,按一次设定时间,按两次设定闹钟时间,按三次又显示时间表
sbit ksec=P3^1;//调整秒
sbit kmin=P3^2;//调整分
sbit khour=P3^3;//调整时
sbit bear=P1^0;//蜂鸣器控制口
unsigned char secshi=0secge=0minshi=0minge=0hourshi=0hourge=0flag=0//flag是按键的计数
secshi1=0secge1=0minshi1=0minge1=0hourshi1=0hourge1=0;//定义存储时间和闹钟时分秒的个位和十位
unsigned int num=0sec=00min=59hour=00sec1=00min1=1hour1=1 num1=0;//定义时间和闹钟的时分秒
unsigned char code table[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//数码管段控口
void keyscan();//键盘扫描函数
void display();//时钟显示函数
void display1();//闹钟显示函数
void clock();//闹钟函数即蜂鸣器函数
/***延时函数****/
void delay(unsigned char z)
{unsigned char xy;
for(x=z;x>0;x--)
for(y=255;y>0;y--);
}
/***中断函数****/
void time0() interrupt 1
{num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(num==20)
{num=0;
sec++;
if(sec==60)
{sec=0;
min++;
if(min==60)
{min=0;
hour++;
if(hour==24)
{hour=0;
}
}
}
}
}
/******时钟显示函数******/
void display()
{
secge=sec%10;
secshi=sec/10;
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
P2=0xfe;
P0=table[secge];
delay(5);
P2=0xfd;
P0=table[secshi];
delay(5);
P2=0xfb;
P0=0x40;
delay(5);
P2=0xf7;
P0=table[minge];
delay(5);
P2=0xef;
P0=table[minshi];
delay(5);
P2=0xdf;
P0=0x40;
delay(5);
P2=0xbf;
P0=table[hourge];
delay(5);
P2=0x7f;
P0=table[hourshi];
delay(5);
}
/*****闹钟显示函数****/
void display1()
{
secge1=sec1%10;
secshi1=sec1/10;
minge1=min1%10;
minshi1=min1/10;
hourge1=hour1%10;
hourshi1=hour1/10;
P2=0xfe;
P0=table[secge1];
delay(15);
P2=0xfd;
P0=table[secshi1];
delay(15);
P2=0xfb;
P0=0x40;
delay(15);
P2=0xf7;
P0=table[minge1];
delay(15);
P2=0xef;
P0=table[minshi1];
delay(15);
P2=0xdf;
P0=0x40;
delay(15);
P2=0xbf;
P0=table[hourge1];
delay(15);
P2=0x7f;
P0=table[hourshi1];
delay(15);
}
/*****键盘扫描*********/
void keyscan()
{if(kgnxz==0) //功能选择键是否按下
{ delay(10);//延时消抖
if(kgnxz==0)//再次判断键是否按下
{flag++;} //计数,功能选择键按键次数加一
while(!kgnxz); //释放键
}
if(flag==1)//功能选择键
{if(ksec==0)//秒调整键
{delay(10);//延时消抖
if(ksec==0)//再次判断键是否按下
{sec++;//秒加加
if(sec>=60)//如果秒大于60
sec=0;//秒清零
}
while(ksec==0)//释放键
display();}
if(kmin==0)
{delay(10);
if(kmin==0)
{min++;
if(min>=60)
min=0;
}
while(kmin==0)
display();
}
if(khour==0)
{delay(10);
if(khour==0)
{hour++;
if(hour==24)
hour=0;
}
while(khour==0)
display();
}
}
if(flag==2)//闹钟调整
{if(ksec==0)
{delay(5);
if(ksec==0)
{sec1++;
if(sec1==60)
sec1=0;}
while(!ksec)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 100943 2018-06-18 14:11 Backup Of 可调带闹钟数字钟.DBK
文件 97412 2018-06-18 21:49 Last Loaded 可调带闹钟数字钟.DBK
目录 0 2018-06-20 15:26 project\
文件 4037 2018-06-20 11:39 project\shizhong
文件 3496 2018-06-20 11:39 project\shizhong.hex
文件 31 2018-06-20 11:39 project\shizhong.lnp
文件 15169 2018-06-20 11:39 project\shizhong.M51
文件 956 2018-06-20 15:13 project\shizhong.Opt
文件 0 2018-06-20 14:54 project\shizhong.plg
文件 1651 2018-06-18 00:28 project\shizhong.Uv2
文件 956 2018-06-20 14:50 project\shizhong_Opt.Bak
文件 0 2018-06-17 23:38 project\shizhong_Uv2.Bak
文件 6369 2018-06-20 11:39 project\时钟.obj
文件 241664 2018-12-17 23:05 单片机课程设计().doc
文件 100920 2018-06-19 21:56 可调带闹钟数字钟.DSN
文件 742 2018-06-20 14:18 可调带闹钟数字钟.PWI
文件 4292 2018-06-20 11:39 时钟.c
文件 8271 2018-06-20 11:39 时钟.LST
文件 4259 2018-06-18 21:29 时钟.txt
相关资源
- 电路图天天读19:局域网中红外遥控发
- 基于89C51的智能台灯
- STC8951系列单片机中方指南
- proteus仿真 AT89C51输出各种波形
- 基于AT89C51的数据采集系统设计新方法
- C51单片机汇编指令查询、学习工具集
- 基于89c51的数字钟
- 基于单片机交通灯设计
- 基于89C51计算机锁定加密键盘设计
- 基于51单片机的计算器(C51编写,有
- STM32+TMC5160代码电路图.rar
- AT89C51+ADC0808 PROTEUS仿真
- 单片机原理及接口技术C51编程张毅刚
- 基于AT89C51的十字路口交通灯设计pro
- 单片机原理及接口技术C51编程
- at89c51单片机外文翻译
- 单片机原理及接口技术C51编程高清P
- 基于C51的电子琴设计
- keilc51源代码
- 在C51中变量的空间分配几个方法
- 初学C51的一些误区
- 单片机初学者学习C51时的一些误区和
- Philips 80C51MX
- 12bit流水线ADC电路整体电路原理图-c
- 0.96OLED_C51系列_IIC应答_例程
- 0-999计数器的C51程序
- [单片机原理与应用设计C51编程+Prote
- ESP8266AP模式控制51单片机亮灯.docx
- C51代码生成器(代码快速生成工具)
- 基于AT89C51单片机信号发生器设计.pd
评论
共有 条评论