基于AT89C51单片机,利用定时器设计一个两位数码 管显示电路.求详细的设计过程。

设计要求:每隔2S显示数字加1,显示初值为00。

硬件很简单,我就不画图了,简单描述一下吧。在单片机最小系统的基础上,P0口接数码管的数据端,P2.6,P2.7接数码管的控制端。
程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit s1=P2^6;//十位
sbit s2=P2^7;//个位
uchar num0,num;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01; //设置定时器0工作方式01
TH0=(65536-45872)/256; //装初值11.0592晶振定时50ms
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
}
void TO_time() interrupt 1
{
TH0=(65536-45872)/256; //装初值11.0592晶振定时50ms
TL0=(65536-45872)%256;
num0++;
if(40==num0) //到了40,2秒时间到
{
num0=0;
num++;
}
}
void display()
{
s1=1;
P0=table[num/10];
s1=0;
P0=0xff;
delay(5);
s2=1;
P0=table[num%10];
s2=0;

}
void main()
{
init();
while(1)
{
display();
}
}追问

我不懂硬件如何连接啊?可以画个详细的图不?

追答

基本就这样,接线管脚随便换换就能和程序配套了。
单片机的学习是很注重实践的,单片机的主要实践就是自己做一些硬件电路,帮助自己理解在学习单片机理论知识的不解和激发自己单片机学习的兴趣。
你说你不懂硬件如何接线,那我告诉你,如果你这样走下去,你学一辈子单片机,你也做不出一个单片机设计。
不要好高骛远,不然你现在做的这些东西都是空中楼阁,不切实际。差什么,补什么,上淘宝淘一些基本的器件,再在网上下些电路图,做一做。做过之后,你就知道如何硬件接线了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-07
建议看看单片机C语言程序书。
第2个回答  2011-10-07
好好看书,书里讲得很清楚,网络资料也很多,应该自己掌握了。这是很基础的东西,往后你就知道了,不从基础做起,后面根本无从下手,何必为了一时安逸,毁了以后的路呢?作为一个过来人,出来恶心一下~~~~~
第3个回答  2011-10-07
自己看看书吧,挺基本的,琢磨琢磨就出来了
相似回答