欢迎来到天天文库
浏览记录
ID:37949782
大小:52.83 KB
页数:10页
时间:2019-06-03
《4位数码管时钟笔记》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、4位数码管做时钟制作人:陈彦彧制作时间:2012年7月28日原件清单:材料数量4位共阴数码管*1万能板*1ATmega16L(含最小系统)*1ISP下载线*14.7K排阻*18MHz的晶振*1使用知识:定时/计数器、中断I/O口的连接:编号作用PA0~PA7显示数码管的字型码PB0~PB3数码管的选位PD0(S0)小时数加一PD1(S1)小时数减一PD2(S2)分钟数加一PD3(S3)分钟数减一功能介绍:使用定时器T0扫描数码管显示,使用定时器T1计时;使用键盘扫描来实现时间的调整;焊接电路图:源程序:/**********************************
2、*******************程序设计:陈彦彧*****************************************************/#include"iom16.h"#include"intrinsics.h"#defineucharunsignedchar#defineuintunsignedint#defines0(PIND&0x01)#defines1(PIND&0x02)#defines2(PIND&0x04)#defines3(PIND&0x08)__flashucharSEG7[10]={0x3f,0x06,0x5b,0x4f,0
3、x66,0x6d,0x7d,0x07,0x7f,0x6f};uintcnt=0;uinti=0,j=0,a;/**************************/voiddelay_10nms(uintn){uinta,b,c;for(c=0;c0;b--){for(a=1;a>0;a--);}}}/**************************/#pragmavector=TIMER0_OVF_vect__interruptvoidtime0_ovf_isr(void){SREG=0x80;TCNT0=0X7d;if(++i
4、>4){i=0;}switch(i){case0:PORTA=SEG7[cnt%10];PORTB=0xfe;//break;case1:PORTA=SEG7[(cnt/10)%10];PORTB=0xfd;//break;case2:PORTA=SEG7[(cnt/100)%10];PORTB=0xfb;//break;case3:PORTA=SEG7[cnt/1000];PORTB=0xf7;//break;case4:PORTA=SEG7[cnt/1000];PORTB=0xff;break;}}/**************************/#pragma
5、vector=TIMER1_OVF_vect__interruptvoidtime1_ovf_isr(void){TCNT1H=0X85;TCNT1L=0Xee;j++;PORTA=0X80;PORTB=0xfb;}/**************************/voidinit_devices(void){__disable_interrupt();TCNT0=0x7d;TCCR0=0x03;TCCR1B=0x04;TCNT1H=0X85;TCNT1L=0Xee;DDRA=0xff;DDRB=0xff;DDRC=0xff;DDRD=0xff;PORTB=0x00
6、;PORTA=0x00;PORTC=0xff;PORTD=0xff;DDRD=0x00;TIMSK=0X05;__enable_interrupt();}/**************************/voidscan_s0(void){if(s0==0){delay_10nms(1000);if(s0==0){a=cnt%100;cnt=(cnt/100+1)*100+a;}delay_10nms(1000);}}/**************************/voidscan_s1(void){if(s1==0){delay_10nms(1000);i
7、f(s1==0){a=cnt%100;cnt=(cnt/100-1)*100+a;}delay_10nms(1000);}}/**************************/voidscan_s2(void){if(s2==0){delay_10nms(1000);if(s2==0){++cnt;}delay_10nms(1000);}}/**************************/voidscan_s3(void){if(s3==0){delay_10nms(1000);if(s3==0){--cnt;}de
此文档下载收益归作者所有