❶ 時鍾電路的工作原理以及作用是什麼菜鳥求解釋
時鍾電路的工作原理是單片機外部接上振盪器(也可以是內部振盪器)提供高頻脈沖經過分頻處理後,成為單片機內部時鍾信號,作為片內各部件協調工作的控制信號。作用是來配合外部晶體實現振盪的電路,這樣可以為單片機提供運行時鍾。
以MCS一5l單片機為例隨明:MCS一51單片機為l2個時鍾周期執行一條指令。也就是說單片機運行一條指令,必須要用r2個時鍾周期。沒有這個時鍾,單片機就跑不起來了,也沒有辦法定時和進行和時間有關的操作。
時鍾電路是微型計算機的心臟,它控制著計算機的二個節奏。CPU就是通過復雜的時序電路完成不同的指令功能的。
MCS一51的時鍾信號可以由兩種方式產生:一種是內部方式,利用晶元內部的振盪電路,產生時鍾信號:另一種為外部方式,時鍾信號由外部引入。
如果沒有時鍾電路來產生時鍾驅動單片機,單片機是無法工作的。
(1)模擬時針電路擴展閱讀
在內部方式時鍾電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振盪器和兩個微調電容構成振盪電路,通常C1和C2一般取30pF,晶振的頻率取值在1.2MHz~12MHz之間。
對於外接時鍾電路,要求XTAL1接地,XTAL2腳接外部時鍾,對於外部時鍾信號並無特殊要求,只要保證一定的脈沖寬度,時鍾頻率低於12MHz即可。
晶體振盪器的振盪信號從XTAL2端送入內部時鍾電路,它將該振盪信號二分頻,產生一個兩相時鍾信號P1和P2供單片機使用。
時鍾信號的周期稱為狀態時間S,它是振盪周期的2倍,P1信號在每個狀態的前半周期有效,在每個狀態的後半周期P2信號有效。CPU就是以兩相時鍾P1和P2為基本節拍協調單片機各部分有效工作的。
❷ 8051單片機時鍾電路
呵呵,這個不是很難的。實現時鍾有兩種方案:
1。 用8051的定時器實現,定時器為1S,每1S加一,滿60清零,分鍾加一,滿60清零,小時加一。
2。用8051+時間晶元,例如DS1302,DS12887等。
我手上沒有現成的例子。不過你可以參考一下郭天祥十天學會單片機和C語言編程。第10講介紹了 第一種方案,第十一講介紹了第二種方案。你可以參考一下,希望對你有幫助。
❸ 時鍾IC指什麼IC用在什麼方面
時鍾IC屬於模擬集成電路,因為是小型晶元,可適用於顯示時針或進行時間控制的場合
❹ 在模擬電路裡面怎麼通過數字的計時器來控制某個時間
數字的計時器是通過對標准時鍾脈沖計數來計時的,在充電器電路里可以用市電的頻率作為時鍾脈沖基準,用運放做一個50H過零檢測電路即可,簡單方案只要對變壓器次級低壓整流就行,或者用一片555集成塊做振盪器。
補充:
計數器有預置端子(管腳),可以預置計數值,開始計數時,計數器做減法計數(加法也行),計數器為零時,計數時間到,就會輸出一個控制(進位)脈沖,用控制脈沖去觸發下一級電路。如:市電做時鍾,20MS脈沖,減法計數器,預置500D(十進制),定時10秒。
❺ 單片機製作的電子時鍾電路,無法正常工作,求教
P0口接200歐上拉電阻,作為數碼管顯示驅動埠
上拉要改成10K就OK了。電阻太小,根本不可能出現低電平,嚴重時還會燒單片機的IO口
希望可以幫到你
❻ 哪位清楚555時鍾電路的原理是怎樣的
555定時器原理: 555集成時基電路稱為集成定時器,是一種數字、模擬混合型的中規模集成電路,其應用十分廣泛。該電路使用靈活、方便,只需外接少量的阻容元件就可以構成單穩、多諧和施密特觸發器,因而廣泛用於信號的產生、變換、控制與檢測。
❼ 電子時鍾設計 要求:1.用單片機完成時鍾功能,並通過LED數碼管顯示出來。 2.可通過鍵盤來修改時、分、秒。
只有程序,從程序中可以看出電路圖。不過使用1602顯示的,可以顯示年,月,日,星期,時,分秒,同時可以修改。
#include "stc12c5a.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^3;//;模擬I2C 數據傳送位
sbit scl=P2^4;//;模擬I2C 時鍾控制狀態標志
sbit lcrs=P2^2;//數據/命令
sbit lcwr=P2^1;//讀/寫
sbit lcden=P2^0;//使能
sbit key1=P4^4;
sbit key2=P4^5;
sbit key3=P2^7;
sbit key4=P4^6;
uchar now[7];
uchar code table[]={48,49,50,51,52,53,54,55,56,57};
uchar code nl[]={"alarm clock"};
uchar code on[]={"ON "};
uchar code off[]={"OFF"};
uchar dis[16];
uchar H=19;//定義小時
uchar Mi=15;//定義分鍾
uchar S=0;//定義秒
uchar Y=12;//定義年
uchar Mo=4;//定義月
uchar D=21;//定義日期
uchar W=6;//定義星期
uchar ke1,ke2,ke3,ke4;
uchar nl1h=0,nl1m=0,nl2h=0,nl2m=0;
uchar bcdto(uchar temp);
////////////////////// 延時子程序/////////////////////////////
void delayms(uint ms) //在11.0592M晶振下,單周期指令的ms級延時
{
uint i;
while(ms--)
{
for(i = 0; i < 850; i++);
}
}
void delay()//5us延時
{
_nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();
}
//////1062/////////
void ydelay(uchar x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
delay();
lcwr=0;
delay();
lcrs=0;
delay();
lcden=0;
ydelay(40);
lcden=1;
ydelay(40);
lcden=0;
delay();
lcwr=1;
}
void write_date(uchar date)
{
P0=date;
delay();
lcwr=0;
delay();
lcrs=1;
delay();
lcden=0;
ydelay(40);
lcden=1;
ydelay(40);
lcden=0;
delay();
lcwr=1;
}
void init1602()
{
write_com(0x38);//設置顯示模式
ydelay(40);
write_com(0x0c);//開顯示
ydelay(40);
write_com(0x06);//指針和游標自動加一
ydelay(40);
write_com(0x01);//清屏指令
ydelay(40);
}
void display(uchar a)//顯示
{
uint i,j;
if(ke2==0)
{
j=W;
if(j==7)
j=8;
dis[0]='2';dis[1]='0';dis[2]=table[Y/10];dis[3]=table[Y%10];
dis[4]='.';dis[5]=table[Mo/10];dis[6]=table[Mo%10];
dis[7]='.';dis[8]=table[D/10];dis[9]=table[D%10];dis[10]=' ';
dis[11]='W';dis[12]='e';dis[13]='e';dis[14]=' ';
dis[15]=table[j];
if(a==3)
{dis[2]=' ';dis[3]=' ';}
else if(a==4)
{dis[5]=' ';dis[6]=' ';}
else if(a==5)
{dis[8]=' ';dis[9]=' ';}
else if(a==6)
{dis[15]=' ';}
write_com(0xc0);
for(i=0;i<16;i++)
write_date(dis[i]);
dis[0]=table[H/10];dis[1]=table[H%10];dis[2]=':';
dis[3]=table[Mi/10]; dis[4]=table[Mi%10];dis[5]=':';
dis[6]=table[S/10];dis[7]=table[S%10];dis[8]=' ';
if(a==1)
{
dis[0]=' ';dis[1]=' ';
}
else if(a==2)
{
dis[3]=' ';dis[4]=' ';
}
write_com(0x84);
for(i=0;i<9;i++)
write_date(dis[i]);
}
else
{
write_com(0x80);
for(i=0;i<11;i++)
write_date(nl[i]);
if((ke2==1)||(ke2==2))
dis[0]=table[1];
else if((ke2==3)||(ke2==4))
dis[0]=table[2];
write_com(0x8c);
write_date(dis[0]);
if((ke2==1)||(ke2==2))
{
dis[0]=table[nl1h/10];dis[1]=table[nl1h%10];dis[2]=':';
dis[3]=table[nl1m/10];dis[4]=table[nl1m%10];
if(ke3==0)
{
write_com(0xcb);
for(i=0;i<3;i++)
write_date(off[i]);
}
else if(ke3==1)
{
write_com(0xcb);
for(i=0;i<3;i++)
write_date(on[i]);
}
}
else if((ke2==3)||(ke2==4))
{
dis[0]=table[nl2h/10];dis[1]=table[nl2h%10];dis[2]=':';
dis[3]=table[nl2m/10];dis[4]=table[nl2m%10];
if(ke4==0)
{
write_com(0xcb);
for(i=0;i<3;i++)
write_date(off[i]);
}
else if(ke4==1)
{
write_com(0xcb);
for(i=0;i<3;i++)
write_date(on[i]);
}
}
if(a==1)
{dis[0]=' ';dis[1]=' ';}
else if(a==2)
{dis[3]=' ';dis[4]=' ';}
write_com(0xc4);
for(i=0;i<5;i++)
write_date(dis[i]);
}
}
///////////IIC//////////////////
void init() //初始化
{
sda=1;
delay();
scl=1;
delay();
}
void start() //開始信號
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop() //停止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons() //應答
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
void write_byte(uchar date) // 寫數據子函數
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte() // 讀數據子函數
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void write(uchar address,uchar date,uchar add) // 寫數據函數
{
start();
write_byte(add);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read(uchar address,uchar addw,uchar addr) //讀數據函數
{
uchar date;
start();
write_byte(addw);
respons();
write_byte(address);
respons();
start();
write_byte(addr);
respons();
date=read_byte();
stop();
return date;
}
uchar Decimal_to_BCD(uchar temp)//十進制轉換成BCD碼
{
uchar a,b,c;
a=temp;
b=0;
if(a>=10)
{
while(a>=10)
{
a=a-10;
b=b+16;
c=a+b;
temp=c;
}
}
return temp;
}
uchar BCD_to_Decimal(uchar temp)//BCD碼轉換成十進制
{
uchar a,b,c;
a=temp;
b=0;
if(a>=16)
{
while(a>=16)
{
a=a-16;
b=b+10;
c=a+b;
temp=c;
}
}
return temp;
}
void keyf(uchar *num,uchar up,uchar )
{
uint z;
if(key2==0)
{
delayms(10);
if(key2==0)
{
if(*num>=up)
{
if((ke1==4)||(ke1==5)||(ke1==6))
*num=1;
else
*num=0;
}
else
*num=*num+1;
for(z=0;z<50;z++)
{
display(0);
if(key2!=0)
break;
}
while(!key2)
{
for(z=0;z<25;z++)
{display(0);}
if(*num>=up)
{
if((ke1==4)||(ke1==5)||(ke1==6))
*num=1;
else
*num=0;
}
else
*num=*num+1;
}
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
if(*num==)
{
if((ke1==1)||(ke2==1)||(ke2==3))
*num=23;
else if((ke1==2)||(ke2==2)||(ke2==4))
*num=59;
else if(ke1==3)
*num=99;
else if(ke1==4)
*num=12;
else if(ke1==5)
*num=31;
else if(ke1==6)
*num=7;
}
else
*num=*num-1;
for(z=0;z<50;z++)
{
display(0);
if(key3!=0)
break;
}
while(!key3)
{
for(z=0;z<25;z++)
display(0);
if(*num==)
{
if((ke1==1)||(ke2==1)||(ke2==3))
*num=23;
else if((ke1==2)||(ke2==2)||(ke2==4))
*num=59;
else if(ke1==3)
*num=99;
else if(ke1==4)
*num=12;
else if(ke1==5)
*num=31;
else if(ke1==6)
*num=7;
}
else
*num=*num-1;
}
}
}
}
void keyjc()
{
uint i,j;
if(key1==0)
{
for(i=0;i<30;i++)
display(0);
if(key1==0)
ke1++;
if(ke1>=7)
{
ke1=0;
display(0);
}
while(!key1);
if(ke1==1)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(1);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&H,23,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=2;
while(!key1);
break;
}
}
}
}
if(ke1==2)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(2);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&Mi,59,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=3;
while(!key1);
break;
}
}
}
}
if(ke1==3)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(3);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&Y,99,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=4;
while(!key1);
break;
}
}
}
}
if(ke1==4)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(4);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&Mo,12,1);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=5;
while(!key1);
break;
}
}
}
}
if(ke1==5)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(5);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&D,31,1);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=6;
while(!key1);
break;
}
}
}
}
if(ke1==6)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(6);
if((key2==0)||(key3==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&W,7,1);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
ke1=0;
while(!key1);
break;
}
}
}
}
Mi=Decimal_to_BCD(Mi);
write(0x01,Mi,0xd0);//寫入分
H=Decimal_to_BCD(H);
write(0x02,H,0xd0);//寫入時
W=Decimal_to_BCD(W);
write(0x03,W,0xd0);//寫入星期
D=Decimal_to_BCD(D);
write(0x04,D,0xd0);//寫入日期
Mo=Decimal_to_BCD(Mo);
write(0x05,Mo,0xd0);//寫入月
Y=Decimal_to_BCD(Y);
write(0x06,Y,0xd0);//寫入年
S=Decimal_to_BCD(S);
write(0x00,S,0xd0);//寫入秒
ke1=0;
}
if(key4==0)
{
for(i=0;i<30;i++)
display(0);
if(key4==0)
ke2++;
if(ke2>=5)
ke2=0;
while(!key4);
write_com(0x01);
}
if(ke2==1)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(1);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&nl1h,23,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
if(ke3==0)
ke3=1;
else
ke3=0;
while(!key1);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
ke2=2;
while(!key4);
break;
}
}
}
write_com(0x01);
}
if(ke2==2)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(2);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&nl1m,59,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
if(ke3==0)
ke3=1;
else
ke3=0;
while(!key1);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
ke2=3;
while(!key4);
break;
}
}
}
write_com(0x01);
}
if(ke2==3)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(1);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&nl2h,23,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
if(ke4==0)
ke4=1;
else
ke4=0;
while(!key1);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
ke2=4;
while(!key4);
break;
}
}
}
write_com(0x01);
}
if(ke2==4)
{
for(i=0;i<25;i++)
{
for(j=0;j<20;j++)
{
display(2);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
for(j=0;j<20;j++)
{
display(0);
if((key2==0)||(key3==0)||(key4==0)||(key1==0))
break;
}
if((key2==0)||(key3==0))
{
delayms(10);
if((key2==0)||(key3==0))
{
i=0;
keyf(&nl2m,59,0);
}
}
if(key1==0)
{
delayms(10);
if(key1==0)
{
if(ke4==0)
ke4=1;
else
ke4=0;
while(!key1);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
ke2=0;
while(!key4);
break;
}
}
}
write(0x00,nl1h,0xa0);
delayms(10);
write(0x01,nl1m,0xa0);
delayms(10);
write(0x02,nl2h,0xa0);
delayms(10);
write(0x03,nl2m,0xa0);
delayms(10);
write(0x04,ke3,0xa0);
delayms(10);
write(0x05,ke4,0xa0);
write_com(0x01);
}
}
void nz()
{
if(ke3==1)
{
if(nl1h==H)
{
if(nl1m==Mi)
key1=1;
else;
}
}
if(ke4==1)
{
if(nl2h==H)
{
if(nl2m==Mi)
key1=1;
else;
}
}
}
void main()
{
P4SW=0x70;
init1602();
init();
write(0x07,0x10,0xd0);
delayms(11);
nl1h=read(0x00,0xa0,0xa1);
delayms(11);
nl1m=read(0x01,0xa0,0xa1);
delayms(11);
nl2h=read(0x02,0xa0,0xa1);
delayms(11);
nl2m=read(0x03,0xa0,0xa1);
delayms(11);
ke3=read(0x04,0xa0,0xa1);
delayms(11);
ke4=read(0x05,0xa0,0xa1);
while(1)
{
S=read(0x00,0xd0,0xd1);
S=BCD_to_Decimal(S); //BCD碼轉換成十進制
Mi=read(0x01,0xd0,0xd1);
Mi=BCD_to_Decimal(Mi); //BCD碼轉換成十進制
H=read(0x02,0xd0,0xd1);
H=BCD_to_Decimal(H); //BCD碼轉換成十進制
W=read(0x03,0xd0,0xd1); //星期為:1~7 不需要進制的轉換
W=BCD_to_Decimal(W);
D=read(0x04,0xd0,0xd1);
D=BCD_to_Decimal(D); //BCD碼轉換成十進制
Mo=read(0x05,0xd0,0xd1);
Mo=BCD_to_Decimal(Mo); //BCD碼轉換成十進制
Y=read(0x06,0xd0,0xd1);
Y=BCD_to_Decimal(Y); //BCD碼轉換成十進制
display(0); //顯示
keyjc();
nz();
delayms(10);
}
}
❽ 誰能幫我解決一下,Proteus的模擬鍾的電路中:74LS160的各引腳功能,和與非門和非門的作用,謝謝
74LS160的各引腳功能可看書後的的路圖,與非門1、1為0。1、0為1。0、1為1,。0、0為1.
非門的作用1為0.。0為1·。
❾ 急需一個電子時鍾的程序, 哪位高手請幫幫忙!!!,
一功能模、設計指標:
1. 顯示時、分、秒。
2. 可以24小時制或12小時制。
3. 具有校時功能,可以對小時和分單獨校時,對分校時的時候,停止分向小時進位。校時時鍾源可以手動輸入或借用電路中的時鍾。
4. 具有正點報時功能,正點前10秒開始,蜂鳴器1秒響1秒停地響5次。
5. 為了保證計時准確、穩定,由晶體振盪器提供標准時間的基準信號。
二、設計要求:
1. 畫出總體設計框圖,以說明數字鍾由哪些相對獨立的塊組成,標出各個模塊之間互相聯系,時鍾信號傳輸路徑、方向和頻率變化。並以文字對原理作輔助說明。
2. 設計各個功能模塊的電路圖,加上原理說明。
3. 選擇合適的元器件,在麵包上接線驗證、調試各個功能模塊的電路,在接線驗證時設計、選擇合適的輸入信號和輸出方式,在充分電路正確性同時,輸入信號和輸出方式要便於電路的測試和故障排除。
4. 在驗證各個功能模塊基礎上,對整個電路的元器件和布線,進行合理布局,進行整個數字鍾電路的接線調試。
三、製作要求:
自行裝配、接線和調試,並能檢查和發現問題,根據原理、現象和測量的數據分析問題所在,加以解決。學生要解決的問題包括元器件和麵包板故障引起的問題。
四、設計報告內容要求:
1. 目的。
2. 設計指標。
3. 畫出設計的原理框圖,並要求說明該框圖的工作過程及每個模塊的功能。
4. 元器件清單。
5. 設計製作的進程,考慮時鍾及控制信號的關系、測試、驗證的順序,寫出自己的工作進程。
6. 畫出各功能模塊的電路圖,加上原理說明(如2、5進制到10進制轉換,10進制到6進制轉換的原理,個位到十位的進位信號選擇和變換等)。
7. 畫出總布局接線圖(集成塊按實際布局位置畫,關鍵的連接單獨應畫出,計數器到解碼器的數據線、解碼器到數碼管的數據線可以簡化畫法,但集成塊的引腳須按實際位置畫,並註明名稱。)
8. 描述設計製作的數字鍾的運行結果和操作。
9. 總結。
設計過程中遇到的問題及解決辦法
課程設計過程體會
對課程設計內容、方式、要求等各方面的建議。
五、實驗儀器、工具:
1. 5V電源(或實驗箱)4個人合用1個。
2. 四連麵包板1塊。
3. 示波器2個(每班)
4. 萬用表5個(每班)。
5. 鑷子1把。
6. 剪刀1把。
六、實驗器件
1. 網路線2米/人。
2. 共陰八段數碼管6個。
3. CD4511集成塊6塊。
4. CD4060集成塊1塊。
5. 74HC390集成塊3塊。
6. 74HC51集成塊1塊。
7. 74HC00集成塊4塊。
8. 74HC30集成塊1塊。
9. 10MΩ電阻5個。
10. 500Ω電阻14個。
11. 30p電容2個。
12. 32.768k時鍾晶體1個。
13. 蜂鳴器10個(每班)
七、設計過程的日程安排
6月28日
1. 分發儀器、工具、器件
2. 講解總體設計的過程,明確數字鍾實現的功能,由哪些相對獨立的功能模塊組成,各個模塊之間互相聯系,時鍾信號傳輸路徑、方向和頻率變化。
3. 講解麵包板的結構和使用方法,連接導線的要點,包括導線剝線頭、插線方法、要求,檢查麵包板,如麵包板中的導電銅片變形或移位,更換導電銅片。
4. 七段數碼引腳排列測試,驗證每段顯示為一個發光二極體,同時完成對每個數碼管的檢查。
6月29日~7月2日
分功能講解各個模塊功能實現原理、實現,搭建實際電路一個個驗證。在接線時注意合理布線和接線的可靠性。
6月29日
a) 數碼管的解碼驅動電路接線、測試、解碼器控制功能測試(手工輸入測試電平)。
除了進一步熟悉原理外,主要練習接線合理布局,走線整齊、美觀,用手指觸動導線時也能正常工作。可以靜態顯示學號的後幾位。然選一個可正常工作的解碼、顯示電路,分別測試解碼器的3個控制引腳的作用。
6月30日
b) 晶體震盪電路接線、測試(用示波器測量4060輸入時鍾,每一路分頻輸出的頻率)。
c) 5進制計數器接線,輸入用4060的2Hz,輸出用數碼管顯示。
7月1日
d) 10進制計數器接線、測試。
e) 6進制計數器接線、測試(在10進制基礎上改)。
7月2日
f) 60進制計數器接線、測試。
g) 24進制計數器、測試(在60進制基礎上改)。
h) 校時電路接線(用RS觸發器實現鎖定、防抖動功能),用示波器觀察電路的信號選擇功能。
7月5~7日
5. 在熟悉各個功能模塊基礎上,結合對總體框圖的理解,設計總接線圖。
6. 根據總接線圖中各種元器件數量、連線,確定所有元器件布局。
7. 按以下順序接線:晶體震盪、秒電路、分電路、時電路。
8. 如時間允許加接校時電路和報時電路(整點報時)。
7月8~9日
9. 寫課程設計報告。
a) 設計的目的、要求。
b) 總體框圖設計。
c) 功能模塊設計(對所用元器件使用作一些說明)。
d) 總電路圖設計。
e) 總結:遇到的問題和解決辦法、體會、意見、建議等。
八、Multisim2001軟體部分集成塊引腳圖
集成塊引腳圖
九、部分原理模擬模塊電路
4511構成解碼驅動電路
4060構成脈沖發生及分頻電路
74390 構成十進制計數器
74390構成六進制計數器
74390構成六十進制計數器
校時電路(分校時時,不會進位到小時)
十、數字鍾的設計與製作原理
具體參照:
數字電子技術課程設計講義-數字鍾的設計與製作
(電子信息學院,2004年6月)
十一、Multisim2001軟體及其參考模擬電路
自己在對應位置下載。
十二、設計經驗總結:
1. 要求學生根據原理和晶元引腳圖,分功能設計原理圖,並根據接線順序分步驟驗證。
2. 容易出現故障為接觸不良。
a) 集成塊引腳方向預先彎好對准麵包板的金屬孔,再小心插入。
b) 導線的剝線長度與麵包板的厚度相適應(比板的厚度稍短)。
c) 導線的裸線部分不要露在板的上面,以防短路。
d) d) 導線要插入金屬孔中央。
3. 按照原理圖接線時首先確保可靠的電源和接地。
4. 注意晶元的控制引腳必須正確接好。
5. 檢查故障時除測試輸入、輸出信號外,要注意電源、接地和控制引腳。
6. 要注意晶元引腳上的信號與麵包板上插座上信號是否一致(集成塊引腳與麵包板常接觸不良)。
7. 為了便於測試,可將2Hz信號直接輸入到各級計數器。
8. 接校時電路時可接模擬信號輸入(如1Hz和2Hz)測試輸出信號的切換正確後,再將秒進位和分進位信號接到校時電路,再接校時電路輸出到分計數器和時計數器。
從較時電路接入信號時,必須將原進位信號拔掉。