电子科学综合设计
unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; unsigned int num=0,sec=0,min=0,hour=0;
unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int); void keyscan(); void display(); main() { TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; while(1) { display(); keyscan();
}
}
void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//定时器中断程序 void time0()interrupt 1 { num++;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; }
//LED显示程序 void display() { if(num==20)
{
16
电子科学综合设计
num=0; sec++; if(sec==60) { sec=0; min++; if(min==60) { }
}
}
secge=sec; secshi=sec/10; minge=min; minshi=min/10; hourge=hour; hourshi=hour/10; P2=0xfe; P0=table[secge]; delay(5); P2=0xfd; P0=table[secshi]; delay(5); P2=0xfb; P0=0x40; delay(5); P2=0xf7; P0=table[minge]; delay(5); P2=0xef;
min=0; hour++; if(hour==24) { hour=0; min=0; sec=0;
}
17
电子科学综合设计
P0=table[minshi]; delay(5); P2=0xdf; P0=0x40; delay(5); P2=0xbf; P0=table[hourge]; delay(5); P2=0x7f;
P0=table[hourshi]; delay(5);
}
//按键控制子程序 void keyscan() { if(ksec==0) { delay(10); if(ksec==0) { sec++; if(sec>=60)
sec=0;
}
while(ksec==0)
display(); }
if(kmin==0) { delay(10); if(kmin==0) { min++; if(min>=60)
min=0;
}
while(kmin==0)
display();
18
电子科学综合设计
}
}
if(khour==0) { }
delay(10); if(khour==0) { }
while(khour==0)
display(); hour++; if(hour>=24)
hour=0;
4.仿真结果与结果分析
走时:默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态
19
电子科学综合设计
显示,时间会按实际时间以秒为最少单位变化。
走时调整:按S对秒进行调整,按一下加一秒;按M对分进行调整,按一下加一分;按H对时进行调整,按一下加一小时,从而达到快速设定时间的目的。
四、课题6:函数发生器
1.课题任务要求及技术指标 1.1设计任务:
采用数字合成技术和D/A转换器件,实现多种信号波形的输出,设计一台实用的函数信号发生器。 1.2设计要求:
(1)给出正确的原理图;
(2)给出正确的程序,并结合原理图给出相应结果。 2.课题分析及设计思路 2.1功能分析:
系统能产生方波、锯齿及正弦信号;能提供信号的频率的显示,能改变频率。 2.2实现思路:
以89C51为核心,结合DAC0832实现程序控制产生正弦波、锯齿波及方波等常用的低频信号。可以通过键盘选择波形及增减频率。 2.3难点描述:
波形的产生,数模转换 3.系统设计(建模) 3.1硬件设计 (1)放大电路
20