资源简介
单片机原理及应用课程设计任务书
数字钟 要求: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
相关资源
- AT89C52单片机学习开发板Proteus仿真图
- 基于C51单片机的8×8-LED点阵屏汉字显示
- stc89c51通过modbus协议与上位机通信
- AT89C51单片机实现的强大交通灯控制汇
- 基于C51单片机的MP3播放器设计
- 基于C51高级语言程序控制的智能循迹
- 基于89C51单片机的节拍器设计
- C51 w25q64驱动及字库烧录
- 单片机电子时钟完整版基于at89c51电子
- C51 PID PWM调速程序
- AT89c51单片机流水灯
- 28BYJ-48步进电机(51单片机)
- 基于STC89C51的CAN总线点对点通信模块设
- 89C51双机通信proteus仿真
- 基于c51的音乐播发编程proteus仿真
- stc89c52 智能小车五路循迹程序
- 基于AT89C51单片机的篮球比赛记分牌设
- 基于汇编程序AT89C51八路抢答器
- proteus仿真max7219的使用方法
- 倒立摆 51PID程序 已经实现
- ABBasc510变频器 GSD文件
- 基于STC89C51单片机的数字抢答器——毕
- 相位计c51程序.txt
- 数字电压表的设计 完整版
- 51单片机和proteus仿真红外遥控
- 8f8c313c51b9106c29d322b46802692f.7z
- APDS9930-C51程序.zip
- 基于51单片机的直流电机PWM调速系统
- LCD1602时钟程序.zip
- sht30 基于C51单片机的驱动程序,可能
评论
共有 条评论