极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13239|回复: 7

arduino时钟仿真的问题!!

[复制链接]
发表于 2015-4-7 23:34:45 | 显示全部楼层 |阅读模式
尝试还原这个帖子的4位数码管时钟
www.geek-workshop.com/forum.php? ... EB%B9%DC&page=1
在仿真的时候检测到逻辑冲突
不知到哪里错了,求各位大神解答!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-4-8 10:43:14 | 显示全部楼层
第一条警告,CPU时钟负载过大
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-8 10:52:15 | 显示全部楼层
suoma 发表于 2015-4-8 10:43
第一条警告,CPU时钟负载过大

第一条是因为我cpu不行这我明白。。。关键是第二条不会排错呢
回复 支持 反对

使用道具 举报

发表于 2015-4-8 14:11:02 | 显示全部楼层
        逻辑链接错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-8 18:29:51 来自手机 | 显示全部楼层
suoma 发表于 2015-4-8 14:11
逻辑链接错误

图是照着原帖子画的,而且io是怎么产生逻辑冲突的呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-8 19:01:19 来自手机 | 显示全部楼层
直接用的那篇帖子里的代码
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
//74HC595 数码管的A-G
int latchPin = 2;
int clockPin = 3;
int dataPin = 1;
//数字,d1,d2,d3,d4
int d1 = 13;
int d2 = 12;
int d3 = 11;
int d4 = 10;
//DS1302
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);

void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
rtc.write_protect(false);
rtc.halt(false);
}

void loop()
{
  Time t = rtc.time();


//显示第一位数字
cls();
dig(1);
num(t.hr/10);

//显示第二位数字
cls();
dig(2);
num(t.hr%10);

//显示第三位数字
cls();
dig(3);
num(t.min/10);

//显示第四位数字
cls();
dig(4);
num(t.min%10);
}

void dig(int x)//dig(x),开启d(x)端口
{
digitalWrite(d1, 0);
digitalWrite(d2, 0);
digitalWrite(d3, 0);
digitalWrite(d4, 0);

switch(x)
{
case 1:
  digitalWrite(d1, 1);
  break;
case 2:
  digitalWrite(d2, 1);
  break;
case 3:
  digitalWrite(d3, 1);
  break;
default:
  digitalWrite(d4, 1);
  break;
}
}

void num(int x) //num(x),显示数字x
{
switch(x)
{
default: //0
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,3);
  digitalWrite(latchPin,1);
  break;
case 1: //1
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,159);
  digitalWrite(latchPin,1);
  break;
case 2: //2
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,37);
  digitalWrite(latchPin,1);
  break;
case 3: //3
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,13);
  digitalWrite(latchPin,1);
  break;
case 4: //4
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,153);
  digitalWrite(latchPin,1);
  break;
case 5: //5
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,73);
  digitalWrite(latchPin,1);
  break;
case 6: //6
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,65);
  digitalWrite(latchPin,1);
  break;
case 7: //7
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,27);
  digitalWrite(latchPin,1);
  break;
case 8: //8
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,1);
  digitalWrite(latchPin,1);
  break;
case 9: //9
  digitalWrite(latchPin,0);
  shiftOut(dataPin,clockPin,MSBFIRST,9);
  digitalWrite(latchPin,1);
  break;
}
}

void cls()//清屏
{
  digitalWrite(latchPin,LOW);
  shiftOut(dataPin,clockPin,MSBFIRST,255);
  digitalWrite(latchPin,HIGH);
}
回复 支持 反对

使用道具 举报

发表于 2015-4-9 08:32:41 | 显示全部楼层
電気御手 发表于 2015-4-8 18:29
图是照着原帖子画的,而且io是怎么产生逻辑冲突的呢

你用fritzing这个软件画一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-14 15:13:34 来自手机 | 显示全部楼层
已经解决了,proteus在进行数码管仿真的时候先送位后送段就不会乱码了。感谢各位的帮忙!!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 04:30 , Processed in 0.042307 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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