- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河南理工大学微机原理与单片机实验报告课程设计 时钟定时器
实验二 定时器、时钟实验
一、实验目的
⑴数码管动态显示技术
⑵定时器的应用
⑶按键功能定义
二、实验实现的功能
⑴通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能,按键可重新从设定值开始计时。
⑵实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
⑶定时时间到,灯闪后按6号键返回重新计时。
三、系统硬件设计
实时时钟、定时器
四、系统软件设计
实时时钟
#includestc.h
sbit L0=P0^0;
sbit L1=P0^1;
sbit L2=P0^2;
sbit L3=P0^3;
sbit L5=P0^5;
sbit L6=P0^6;
sbit L7=P0^7;
void Delay500us() //500us延时
{
unsigned char i, j;
i = 6;
j = 93;
do
{
while (--j);
} while (--i);
}
void Delay300ms() //300ms延时
{
unsigned char i, j, k;
i = 13;
j = 156;
k = 83;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
Scan_Key() //按键扫描,返回按键值
{
unsigned char FLAG=0;
while(1)
{P3=0xbf;
if(L5==0)
{FLAG=1;}
if(L6==0)
{FLAG=2;}
if(L7==0)
{FLAG=3;}
if(FLAG!=0)
break;
P3=0x7f;
if(L5==0)
{FLAG=4;}
if(L6==0)
{FLAG=5;}
if(L7==0)
{FLAG=6;}
break;}
return FLAG;
}
main()
{
unsigned char a[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
unsigned char b[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char f,g,i=0,j=0,m=0,s=0,t=0;
P1M0=0xff; //推挽式输出
P1M1=0x00;
P3=0x3f;
while(1) //调节当前时间
{
f=Scan_Key();
if(f==1)
m++;
if(f==2)
t++;
if(f==3)
s++;
if(f==4)
i++;
if(f==5) //按5键退出调节模式
{Delay300ms();
break;}
for(g=0;g100;g++) //显示调节后的时间
{ L3=0;L2=1;L1=1;L0=1;
P1=a[i];
Delay500us();
P1=0x00;
Delay500us();
L3=1;L2=0;L1=1;L0=1;
P1=b[s];
Delay500us();
P1=0x00;
Delay500us();
L3=1;L2=1;L1=0;L0=1;
P1=a[t];
Delay500us();
P1=0x00;
Delay500us();
L3=1;L2=1;L1=1;L0=0;
P1=b[m];
Delay500us();
P1=0x00;
Delay500us();
}
}
while(1)
{
for(;m6;m++) //分钟十位
{
for(;t10;t++) //分钟个位
{
for(;s6;s++) //秒钟十位
{
for(;i10;i++) //秒钟个位
{
for(j=0;j252;
文档评论(0)