找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1578|回复: 5
打印 上一主题 下一主题
收起左侧

单片机电子时钟 请教大佬哪里出错了?

[复制链接]
跳转到指定楼层
楼主
ID:429961 发表于 2018-11-20 18:35 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本人初学者,课设要做一个电子时钟,仿真的时候什么都不显示,程序和电路图都在下面。

318dc97f02b67e43.jpg (37.27 KB, 下载次数: 25)

318dc97f02b67e43.jpg

-4a575c0a754341a8.jpg (43.16 KB, 下载次数: 22)

-4a575c0a754341a8.jpg

1ae49a71347bf844.jpg (27.87 KB, 下载次数: 15)

1ae49a71347bf844.jpg

6417c0be567b13b6.png (46.36 KB, 下载次数: 22)

6417c0be567b13b6.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2018-11-21 09:11 | 只看该作者
读你的程序好费眼睛的。
直接发程序出来,还可以在我的电脑上编译,我的板子上试验找问题。
回复

使用道具 举报

板凳
ID:430308 发表于 2018-11-21 09:19 | 只看该作者
这样不能编辑还是把源码发出来比较好
回复

使用道具 举报

地板
ID:111634 发表于 2018-11-21 10:56 | 只看该作者
本帖最后由 zl2168 于 2018-11-21 22:58 编辑

给你介绍一个参考案例,自己去琢磨吧!
实例94  模拟电子钟(由80C51定时器产生秒时基)

实例94 模拟电子钟(由80C51定时器产生秒时基).rar (43.05 KB, 下载次数: 7)
Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

5#
ID:429961 发表于 2018-11-21 19:07 | 只看该作者
HC6800-ES-V2.0 发表于 2018-11-21 09:11
读你的程序好费眼睛的。
直接发程序出来,还可以在我的电脑上编译,我的板子上试验找问题。

#include<reg51.h>
#define char unsigned char
char code dis_7[12] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xb2,0xf8,0x80,0x90,0xff,0xbf};
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};
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;
delaylms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
keyscan()
{
EA=0;
if(key0 == 0)
{
delaylms(10);
while(key0 == 0);
con++;TR0=0;ET0=0;
if(con >= 3)
{con=0;TR0=0;ET0=0;}
}
if(con != 0)
{
if(key1 == 0)
{
delaylms(10);
while(key1 == 0);
timedata[con]++;
if(con == 2) con1=24; else con1=60;
if(timedata[con] >= con1)
{timedata[con] = 0;}
}
}
if(con != 0)
{
if(key2 == 0)
{
delaylms(10);
while(key2 == 0);
timedata[con]--;
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]; delaylms(1); P2=0xff;
}
}
main()
{
TH0=0x3c; TL0=0xb0;
TMOD=0x01; ET0=1; TR0=1; EA=1;
while(1)
{
scan();
keyscan();
}
}
void time_intt0(void) interrupt 1
{
ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; TR0=1;
ms50++;
if(ms50 == 20)
{
ms50=0x00; timedata[0]++;
if(timedata[0] == 60)
{
timedata[0]=0; timedata[1]++;
if(timedata[1] == 60)
{
timedata[1]=0; timedata[2]++;
if(timedata[2] == 24)
{timedata[2] = 0;
}
}
}
}
ET0 = 1;
}
回复

使用道具 举报

6#
ID:429961 发表于 2018-11-21 19:08 | 只看该作者
wubingbing 发表于 2018-11-21 09:19
这样不能编辑还是把源码发出来比较好

#include<reg51.h>
#define char unsigned char
char code dis_7[12] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xb2,0xf8,0x80,0x90,0xff,0xbf};
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};
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;
delaylms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
keyscan()
{
EA=0;
if(key0 == 0)
{
delaylms(10);
while(key0 == 0);
con++;TR0=0;ET0=0;
if(con >= 3)
{con=0;TR0=0;ET0=0;}
}
if(con != 0)
{
if(key1 == 0)
{
delaylms(10);
while(key1 == 0);
timedata[con]++;
if(con == 2) con1=24; else con1=60;
if(timedata[con] >= con1)
{timedata[con] = 0;}
}
}
if(con != 0)
{
if(key2 == 0)
{
delaylms(10);
while(key2 == 0);
timedata[con]--;
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]; delaylms(1); P2=0xff;
}
}
main()
{
TH0=0x3c; TL0=0xb0;
TMOD=0x01; ET0=1; TR0=1; EA=1;
while(1)
{
scan();
keyscan();
}
}
void time_intt0(void) interrupt 1
{
ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; TR0=1;
ms50++;
if(ms50 == 20)
{
ms50=0x00; timedata[0]++;
if(timedata[0] == 60)
{
timedata[0]=0; timedata[1]++;
if(timedata[1] == 60)
{
timedata[1]=0; timedata[2]++;
if(timedata[2] == 24)
{timedata[2] = 0;
}
}
}
}
ET0 = 1;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表