基于单片机的数字电子钟仿真问题。

//用共阳极LED数码管,key0为调时位选择键,key1为加一键,key2为减一键
#include<reg51.h>
#define char unsigned char

char code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xb2,0xf8,0x80,0x90,0xff,0xbf};
//共阳极LED数码管“0—9”,“灭”,“-”的字码段
char code scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选择码
char data dis[8]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};//显示缓冲区时分秒初始为0,0x0b为“-”的编码
char data timedata[3]={0x00,0x00,0x00};//分别为时分秒的值
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;

sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;

//1ms延时函数
	delay1ms(int t)
{
	int i,j;
	for (i=0;i<t;i++)
		for (j=0;j<120;j++);		
}

//按键处理函数
keyscan()
{
EA=0;
if (key0 == 0)
{
	delay1ms(10);
	while (key0==0);
	con=con+1;TR0=0;
		ET0=0;
	if (con>=3)
	{con=0;TR0=1;
		ET0=1;}
}
if(con!=0)
{
if(key1==0)
{
delay1ms(10);
while(key1==0);
timedata[con]=timedata[con]+1;
if(con==2) 
	con1=24;
else 
	con1=60;
if (timedata[con]>=con1)
{timedata[con]=0;}
}
}
if (con !=0)
{
	if(key2==0)
	{
	delay1ms(10);
		while (key2==0);
		timedata[con]=timedata[con]-1;
		if(con==2) 
			con2=23; 
		else 
			con2=59;
		if (timedata[con]<=0)
		{timedata[con]=con2;}
	}	
}  
      EA=1;
}

//数码管显示函数
scan()
{
	char k;
	dis[0]=timedata[0]%10; dis[1]=timedata[0]/10;
	dis[3]=timedata[1]%10; dis[4]=timedata[1]/10;
	dis[6]=timedata[2]%10; dis[7]=timedata[2]/10;
	for (k=0;k<8;k++)
	{
		P0=dis_7[dis[k]];
		P2=scan_con[k];
		delay1ms(1);
		P2=0xff;
	}
}

//主函数
main()
{
	TH0=0x3c;TL0=0xb0;
	TMOD=0x01; ET0=1; TR0=1; EA=1;
	while (1)
	{
		scan();
		keyscan();
	}
}

//定时器/计数器T0中断服务函数
void time_intt0(void) interrupt 1
{
	ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; TR0=1;
	ms50++;
	if (ms50==20)
	{
	ms50=0x00; 
	timedata[0]=timedata[0]+1;
	if (timedata[0]==60)
		{
		 timedata[0]=0;
		 timedata[1]=timedata[1]+1;
		  if(timedata[1]==60)
		  {
		 timedata[1]=0;
		 timedata[2]=timedata[2]+1;
		 if(timedata[2]==24)
		 	{
			timedata[2]=0;
			}
		  }
		}
	}
	ET0=1;
}

为什么仿真是不显示**为什么加粗样式**

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
数字电子钟 摘 要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的 各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产 品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些 对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码 管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读 数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。 数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、 稳定度远远超过老式机械钟。在这次设计中,我们采用LED数码管显示时、分、秒,以24 小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定 时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字 钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱, 因此得到了广泛的使用。 关键字:数字电子钟 单片机 目 录 第一章 绪论 1.1 数字电子钟的背景…………………………………………………………………… 1 1.2 数字电子钟的意义…………………………………………………………………… 1 1.3 数字电子钟的应用…………………………………………………………………… 1 第二章 整体设计方案 2.1 单片机的选择…………………………………………………………………………… 2 2.2 单片机的基本结构……………………………………………………………………… 4 第三章 数字钟的硬件设计 3.1 最小系统设计…………………………………………………………………………… 9 3.2 LED显示电路…………………………………………………………………………… 12 3.3 键盘控制电路…………………………………………………………………………… 14 第四章 数字钟的软件设计 4.1 系统软件设计流程图…………………………………………………………………… 16 4.2 数字电子钟的原理图…………………………………………………………………… 20 4.3 主程序…………………………………………………………………………………… 20 4.4 时钟设置子程序………………………………………………………………………… 21 4.5 定时器中断子程序……………………………………………………………………… 21 4.6 LED显示子程序………………………………………………………………………… 22 4.7 按键控制子程序………………………………………………………………………… 24 第五章 系统仿真 5.1 PROTUES软件介绍……………………………………………………………………… 26 5.2 电子钟系统PROTUES仿真……………………………………………………………… 26 第六章 调试与功能说明 6.2 系统性能测试与功能说明……………………………………………………………… 27 6.3 系统时钟误差分析……………………………………………………………………… 27 6.1 硬盘调试………………………………………………………………………………… 27 6.4 软件调试问题及解决…………………………………………………………………… 27 结束语………………………………………………………………………………………….29 参考文献………………………………………………………………………………………30 致谢……………………………………………………………………………………………..31
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值