AVR M8 做的超大数码管时钟 有半米多长了。
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499087.jpg(原文件名:00.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499088.jpg
(原文件名:01.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499089.jpg
(原文件名:02.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499090.jpg
(原文件名:03.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499091.jpg
(原文件名:04.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499092.jpg
(原文件名:05.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499093.jpg
(原文件名:06.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499094.jpg
(原文件名:11.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499095.jpg
(原文件名:12.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499096.jpg
(原文件名:13.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499097.jpg
(原文件名:14.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499098.jpg
(原文件名:15.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499099.jpg
(原文件名:16.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499100.jpg
(原文件名:17.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499101.jpg
(原文件名:18.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499102.jpg
(原文件名:19.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499103.jpg
(原文件名:20.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499104.jpg
(原文件名:21.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499105.jpg
(原文件名:22.jpg)
http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_499106.jpg
(原文件名:23.jpg)
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
原理图
点击此处下载 ourdev_499107.pdf(文件大小:50K) (原文件名:Clock-System.pdf)
关键代码
#include "includes.h"
typedef enum
{
SYS_CLOCK_RUN,
SYS_CLOCK_SET,
}SYSTEM_STATE;
static SYSTEM_STATE SystemFlag;
static void SysTem_ClockRun(void);
static void System_ClockSet(void);
static void (*pFunc_Sys[])(void)=
{
SysTem_ClockRun,
System_ClockSet,
};
typedef struct
{
unsigned char buff;
unsigned char Flash;
unsigned char dp;
}CLOCK_SET_STRUCT;
static __flash unsigned char const FlashTbl[]={DISP_1|DISP_2, DISP_3|DISP_4, DISP_5|DISP_6};
static CLOCK_SET_STRUCT ClockSet;
//static void Download(void);
static void SystemInitialize(void);
static void TimerToDisplayBuff(unsigned char *pbuff, TIMER_STRUCT *ptimer);
static unsigned char disp_buff;
/*
//////////////////////////////////////////////////////////////////////////
static void Download(void)
{
unsigned char i;
unsigned char cnt;
unsigned int j;
PORTB &= 0xc7;
DDRB &= 0xc7;
PORTD &= 0xbf;
DDRD &= 0xbf;
cnt = 0;
for(i=0; i<200; i++)
{
for(j=0; j<1000; j++)
{
if(GETB(PIND, PD6))
{
cnt++;
break;
}
}
if(cnt>10)
{
cnt = 100;
break;
}
}
// 要进行下载
if(cnt==100)
{
cnt = 1;
while(cnt)
{
i = PINB&(1<<PB5);
__delay_cycles(3000);
}
}
}
*/
//////////////////////////////////////////////////////////////////////////
static void SystemInitialize(void)
{
unsigned char i;
__disable_interrupt();
#if CPU_TYPE==0x48
CLKPR = (1<<CLKPCE);
CLKPR = (1<<CLKPS1); // 4分频.系统时钟2MHz
#endif
//Download();
SPI_Init();
ExFlash_Init();
Timer_Init();
Key_Init();
Display_Init();
__enable_interrupt();
for(i=0; i<DISP_NUM; i++)
{
disp_buff = 0;
}
SystemFlag = SYS_CLOCK_RUN;
}
static void TimerToDisplayBuff(unsigned char *pbuff, TIMER_STRUCT *ptimer)
{
*pbuff++ = ptimer->sec%10;
*pbuff++ = ptimer->sec/10;
*pbuff++ = ptimer->min%10;
*pbuff++ = ptimer->min/10;
*pbuff++ = ptimer->hour%10;
*pbuff = ptimer->hour/10;
}
void main(void)
{
SystemInitialize();
while(TRUE)
{
pFunc_Sys();
}
}
//////////////////////////////////////////////////////////////////////////
static void SysTem_ClockRun(void)
{
TIMER_STRUCT *ptimer;
unsigned long time;
unsigned int addr;
unsigned char mask;
unsigned char dbyte;
CRITICAL_DEF;
ptimer = Timer_GetTimer();
if(Timer_IsUpdate())
{
time = ptimer->hour;
time *= 3600;
addr = ptimer->min;
addr *= 60;
time += addr+ptimer->sec;
addr = time>>3;
mask = 7-(time&0x07);
ENTER_CRITICAL();
dbyte = ExFlash_ReadByte(addr);
EXIT_CRITICAL();
if(GETB(dbyte, mask))
{
TimerToDisplayBuff(disp_buff, Timer_GetTimer());
Display_Update(disp_buff);
}
/*
ENTER_CRITICAL();
dbyte = ExFlash_ReadByte(ad);
EXIT_CRITICAL();
ad++;
if(ad>=10800)
{
ad = 0;
}
addr = ad;
for(mask=0; mask<4; mask++)
{
disp_buff = addr%10;
addr /= 10;
}
disp_buff = dbyte&0x0f;
disp_buff = dbyte>>4;
Display_Update(disp_buff);
*/
}
if(Key_GetCode()==KEY_CODE_ENTER)
{
SystemFlag = SYS_CLOCK_SET;
ClockSet.Flash = 0;
ClockSet.dp = 0;
ClockSet.buff = ptimer->sec;
ClockSet.buff = ptimer->min;
ClockSet.buff = ptimer->hour;
Display_SetFlash(FlashTbl);
}
}
//////////////////////////////////////////////////////////////////////////
static __flash unsigned char const TimerTbl[]={59, 59, 23};
static void System_ClockSet(void)
{
unsigned char key;
key = Key_GetCode();
if(key^KEY_CODE_NULL)
{
switch(key)
{
case KEY_CODE_ENTER:
SystemFlag = SYS_CLOCK_RUN;
Timer_SetTimer((TIMER_STRUCT*)ClockSet.buff);
Display_SetFlash(DISP_NULL);
break;
case KEY_CODE_SUB:
if(--ClockSet.buff>TimerTbl)
{
ClockSet.buff = TimerTbl;
}
disp_buff = ClockSet.buff%10;
disp_buff = ClockSet.buff/10;
break;
case KEY_CODE_ADD:
if(++ClockSet.buff>TimerTbl)
{
ClockSet.buff = 0;
}
disp_buff = ClockSet.buff%10;
disp_buff = ClockSet.buff/10;
break;
case KEY_CODE_SWITCH:
if(++ClockSet.Flash>=3)
{
ClockSet.Flash = 0;
}
ClockSet.dp = ClockSet.Flash<<1;
Display_SetFlash(FlashTbl);
break;
default:
;
}
Display_Update(disp_buff);
}
}
//////////////////////////////////////////////////////////////////////////
// END 很猛! <。)#)))≦挺漂亮 够大! 哈哈,真大啊。。。楼主做这东东是要卖?还是玩儿? 玩玩而己,呵呵。 mark 动态扫描,亮度不会很高,驱动这么大的数码管最好还是静态的 6片4543也行,带锁存 要静态的.那是疯了.耗电多大啊. 其实把第3,5两位LED倒转180度,就可以省略掉那两个额外的LED了。
再道地点,做单面PCB,把6个数码管的引脚焊接在PCB上,PCB做上下两排各一条,这样连带固定的也省略了,焊接那些连线可是非常吃人工的。
楼主这个,亮度动态扫描也可以做到很亮的,室外不在阳光直射的地方都可以看得很清晰。
当然生产是一回事,楼主是玩儿,就无所谓了,哈哈。 带温度不?用的什么实时时钟?用超级电容取代电池如何? 有点强大。!! 请问这种数码管在哪里可以买到?我要买几个回来搞,再用亚克力搞个外壳,呵呵 【10楼】 ilikemcu 我爱单片机
-----------------------------------------
非常感谢,做的时候真的没想到。 感谢你的思路。下次做时可以省了好多工做,呵呵
不过那几个灯,是买数码管时送的,那数码管8.8元一个
【11楼】 cqfeiyu
----------------------------------------
不带温度,有原理图,你可以看一下,
整个时钟时用 外部32.768Khz的晶振做的,使用内部定时器,产和1s定时
北京中发有卖 我买时8.8一块 是买20个的价格,估计单买要9元钱一个 如果是我,会用3个DM134,恒流静态驱动 呵呵,请问下楼主函数带static的作用?
这个我不太清楚,我只知道变量带static的意思。
谢谢,楼主啦!!!! 为什么是NPN驱动每段,而不是PNP呢?NPN输出4.3V,功耗大了吧 感觉用TPIC6B595静态驱动更好 只在本文件内有效 static 【10楼】 ilikemcu 我爱单片机
很聪明啊,但我比划了下,那两个点不在中间,两位LED倒转180度后不好看 做过一套工厂用的记产量的东东。
红色和翠绿2路数码管 一共是10个,动态扫秒亮度不够。数码管太多了。。。
换30多V的电源+595+2803 。
静态扫电流也不大,一段也才20MA不到,一个8字全亮也才150MA。 呵呵~我也有不少这样的大数码管,最后当垃圾全扔了,太占地方了~./emotion/em017.gif 三寸的??
不贵了呀~~ 5寸还是5.5的,妈的我的翠绿17一个红光14一个。看来是贵了。。。 楼上在哪里买的啊?我在淘宝看了一下,5寸的都很贵哦 不知道楼主的数码管是几寸的,我打算用3寸的数码管来做一个,显示方式用静态。 有板送吗?想做一个! 没板送 呵呵 自力更生吧. 这东西太猛了。 数码管比较贵怕怕呵呵 请问如何才能驱动三位5寸的数码管呢? 漂亮 1段20ma,驱动用的是什么? 功耗应该不小吧,楼主很有时间啊,总做这些东西 欢迎有时间来参观 驱动驱动~~~~~~~~~~~~~
最近都快被驱动搞疯了~~~~~~~~~~~
步进电机要驱动,数码管也要驱动,干脆去玩PLC好了~~~~~~~~~
那个220V都直接上的~~~~~~~ 街机的对打机上有那个大型数码管,
但是那个小数点是逗号的! 学习拉. ULN2003不用加上拉? 看看 mark 只能说很强! mark! 上的原理图有错误, 麻烦版主有时间帮我删了,免得误导其他人.
我会在这几天把正确的原理图上传.. mark 这便是传说中的玩大了~~~~~~ 强 搞大了啊! ./emotion/em004.gif 嘿嘿 可以做广告用 这个这个,1个数码管要9块钱,这个钟可不便宜呢 这个厉害,哈哈 改天我也拍几张照片,然后放得这么多,效果跟你这一样 http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_645552ZL3VZF.jpg
(原文件名:QQ截图20110603201612.jpg)
这么大的数码管内部电路 菜鸟学习中 能把相关的资料共享一下吗?想好好学习一下,有点不懂 我觉得这个数码管好贵 那个MMBT3904是怎么截止的啊????基极加高电平=5V ,发射极=12V,三极管能截止吗? 不能,后来我飞了个电阻,飞到12V上去了。 楼主,请问能不能上传一下完整的原理图?课余时间想做一个,能加q向你学习吗?347596604 开眼了!顶! 顶起我也想做一个······· 呃,这大小还行吧,手头有4寸的数码管,就是一直放着,没做成东西,HOHO 哈哈哈 这个厉害 很霸气!!@!!!!
页:
[1]