第一篇:基于單片機的數字鐘課程設計程序
#include
uchar num;
void delayms(uint z){ uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void write_com(uchar com){ lcdrs=0;P0=com;delayms(5);lcden=0;}
void write_data(uchar date){ lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;}
void init(){ lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}
void main()
//定義使能端、命令選擇端
//延時函數
//寫入命令函數
//寫入數據 //初始化LCD
{
} init();write_com(0x80);for(num=0;num<11;num++){ write_data(table[num]);delayms(5);} write_com(0x80+0x40);for(num=0;num<13;num++){ write_data(table[num]);delayms(5);} while(1);
第二篇:基于單片機的數字鐘課程設計程序
#include
#define uchar unsigned char #define uint unsigned int
uchar code table[]=“I LOVE YOU!”;uchar code table1[]=“2014:06:14”;sbit lcden=P3^5;
sbit lcdrs=P3^4;uchar num;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void write_com(uchar com){
lcdrs=0;
P0=com;
delayms(5);
lcden=0;
}
void write_data(uchar date){
lcdrs=1;
P0=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()//定義使能端、命令選擇端//延時函數//寫入命令函數//寫入數據 //初始化LCD
{}init();write_com(0x80);for(num=0;num<11;num++){write_data(table[num]);delayms(5);} write_com(0x80+0x40);for(num=0;num<13;num++){write_data(table[num]);delayms(5);} while(1);
第三篇:單片機數字鐘的課程設計
設計任務書................I
第一章 緒論...............1
1.1課程設計的意義..........1
第二章 電路設計方案................2.1數字電子中4的基本原理..........2.2
第三章 電路的安裝與調試............3.1電路的選用..............設計小節...........致謝.................參考文獻............附錄A............附錄B.....第一章緒論
1.1課程設計的意義
在高新技術日新月異的今天,科學技術已經成為整個社會發展的源動力,電子領域的發展更是令人目不暇接,在其推動下,現代電子產品幾乎滲透了社會的各個領域,遍跡了千家萬戶,有力地推動了社會生產力的發展和社會信息化程度的提高,同時也使現代電子產品性能進一步提高,產品更新換代的節奏也越來越快。使課程設計越來越受到人們的重視,通過課程設計。可以設計出更好更新的科技產品,這將給科技的發展帶來很好的積極作用,也使科技的水平得到一定的提高。同時也可以提高同學們的邏輯思維能力和創新意識。
電子技術密切聯系 實際,實用性很強,開展電子技術課程設計在電子電氣類我認為非常重要,不近可以學好專業知識,還可以增強動手能力,有利于我們適應未來這個競爭激烈的社會,訓練我們 綜合運用知識能力資料素材的查閱及收集能力,電子元氣件的采購,電子電路的組裝和調試能力,特別是在電路;多樣化的創新方面,從理性和感性上都得到了很大的提高,經過查閱資料,選擇方案,設計電路,等過程。各方面都得到了訓練。
現代社會,時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。例如,許多火災都是由于人們一時忘記了關閉煤氣或是忘記充電時間。尤其在醫院,每次護士都會給病人作皮試,測試病人是否對藥物過敏。注射后,一般等待5分鐘,一旦超時,所作的皮試試驗就會無效。手表當然是一個好的選擇,但是,隨著接受皮試的人數增加,到底是哪個人的皮試到時間卻難以判斷。所以,要制作一個定時系統。隨時提醒這些容易忘記時間的人。
鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、定時啟閉電路、定時開關烘箱、通斷動力設備,甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非常現實的意義。
一.設計題目
數字電子鐘
二、設計指標:
1.最大顯示23時59分59秒。
2.以24小時制為一個周期
3.具有校時功能,可以對小時和分單獨校時,對分校時的時候,停止分向小時進位。校時時鐘源可以手動輸入或借用電路中的時鐘。
4.為了保證計時準確、穩定,由晶體振蕩器提供標準時間的基準信號。
三、設計要求:
1.畫出總體設計框圖,以說明數字鐘由哪些相對獨立的功能模塊組成,標出各個模塊之間互相聯系,時鐘信號傳輸路徑、方向和頻率變化。并以文字對原理作輔助說明。
2.設計各個功能模塊的電路圖,加上原理說明。
3.選擇合適的元器件,在面包上接線驗證、調試各個功能模塊的電路,在接線驗證時設計、選擇合適的輸入信號和輸出方式,在充分電路正確性同時,輸入信號和輸出方式要便于電路的測試和故障排除。
4.在驗證各個功能模塊基礎上,對整個電路的元器件和布線,進行合理布局,進行整個數字鐘電路的接線調試。
四、制作要求:
自行裝配、接線和調試,并能檢查和發現問題,根據原理、現象和測量的數據分析問題所在,加以解決。學生要解決的問題包括元器件和面包板故障引起的問題。
四、設計報告內容要求:
1.目的。
2.設計指標。
3.畫出設計的原理框圖,并要求說明該框圖的工作過程及每個模塊的功能。
4.元器件清單。
5.設計制作的進程,考慮時鐘及控制信號的關系、測試、驗證的順序,寫出自己的工作進程。
6.畫出各功能模塊的電路圖,加上原理說明(如2、5進制到10進制轉換,10進制到6進制轉換的原理,個位到十位的進位信號選擇和變換等)。
7.畫出總布局接線圖(集成塊按實際布局位置畫,關鍵的連接單獨應畫出,計數器到譯碼器的數據線、譯碼器到數碼管的數據線可以簡化畫法,但集成塊的引腳須按實際位置畫,并注明名稱。)
8.描述設計制作的數字鐘的運行結果和操作。
第二章 電路的設計方案
2.1數字鐘的基本組成及工作原理
數字鐘實際上是一個對標準頻率(1HZ)進行計數的計數電路.由于計數的起始時間不可能與標準時間(如北京時間)一致,故需要在電路上加一個校時電路,同時標準的1HZ時間信號必須做到準確穩定.通常使用石英晶體振蕩器電路構成數字鐘.圖1.1所示為數字鐘的一般構成框圖.⑴晶體振蕩器電路 晶體振蕩器電路給數字鐘提供一個頻率穩定準確的32768Hz的方波信號,可保證數字鐘的走時準確及穩定.不管是指針式的電子鐘還是數字顯示的電子鐘都使用了晶體振蕩器電路.⑵分頻器電路 分頻器電路將32768Hz的高頻方波信號經32768()次分頻后得到1Hz的方波信號供秒計數器進行計數.分頻器實際上也就是計數器.⑶時間計數器電路 時間計數電路由秒個位和秒十位計數器,分個位和分十位計數器及時個位和時十位計數器電路構成,其中秒個位和秒十位計數器,分個位和分十位計數器為60進制計數器,而根據設計要求,時個位和時十位計數器為12進制計數器.⑷譯碼驅動電路 譯碼驅動電路將計數器輸出的8421BCD碼轉換為數碼管需要的邏輯狀態,并且為保證數碼管正常工作提供足夠的工作電流.⑸數碼管 數碼管通常有發光二極管(LED)數碼管和液晶(LCD)數碼管,本設計提供的為LED數碼管.2.2數字鐘的工作原理
1)晶體振蕩器電路
晶體振蕩器是構成數字式時鐘的核心,它保證了時鐘的走時準確及穩定.一般輸出為方波的數字式晶體振蕩器電路通常有兩類,一類是用TTL門電路構成;另一類是通過CMOS非門構成的電路,如圖1.2所示,從圖上可以看出其結構非常簡單.該電路廣泛使用于各種需要頻率穩定及準確的數字電路,如數字鐘,電子計算機,數字通信電路等.CMOS非門U1與晶體,電容和電阻構成晶體振蕩器電路,U2實現整形功能,將振蕩器輸出的近似于正弦波的波形轉換為較理想的方波.輸出反饋電阻為非門提供偏置,使電路工作于放大區域,即非門的功能近似于一個高增益的反相放大器.電容C1,C2與晶體構成一個諧振型網絡,完成對振蕩頻率的控制功能,同時提供了一個180度相移,從而和非門構成一個正反饋網絡,實現了振蕩器的功能.由于晶體
具有較高的頻率穩定性及準確性,從而保證了輸出頻率的穩定和準確.2)分頻器電路
通常,數字鐘的晶體振蕩器輸出頻率較高,為了得到1Hz的秒信號輸入,需要對振蕩器的輸出信號進行分頻.通常實現分頻器的電路是計數器電路,一般采用多級2進制計數器來實現.例如,將32768Hz的振蕩信號分頻為1HZ的分頻倍數為32768(),即實現該分頻功能的計數器相當于15級2進制計數器.常用的2進制計數器有74HC393等.3)時間計數單元
時間計數單元有時計數,分計數和秒計數等幾個部分.時計數單元以24進制計數器,其輸出為兩位8421BCD碼形式;分計數和秒計數單元為60進制計數器,其輸出也為8421BCD碼.一般采用10進制計數器如74HC290,74HC390等來實現時間計數單元的計數功能.欲實現24進制和60進制計數還需進行計數模值轉換.4)譯碼驅動及顯示單元
計數器實現了對時間的累計以8421BCD碼形式輸出,為了將計數器輸出的8421BCD碼顯示出來,需用顯示譯碼電路將計數器的輸出數碼轉換為數碼顯示器件所需要的輸出邏輯和一定的電流,一般這種譯碼器通常稱為7段譯碼顯示驅動器.常用的7段譯碼顯示驅動器有CD4511.5)校時電源電路
當重新接通電源或走時出現誤差時都需要對時間進行校正.通常,校正時間的方法是:首先截斷正常的計數通路,然后再進行人工出觸發計數或將頻率較高的方波信號加到需要校正的計數單元的輸入端,校正好后,再轉入正常計時狀態即可.設計小節
時間過的真快,專眼間一周就過去了,這次課程設計也畫上了一個圓滿的句號。這次課程設計的主題是數字電子鐘,在設計中需要用到振蕩電路等通過 設計使我更進一步加深了對電的認識和理解。在設計中,首先是查找資料,我們主要是在圖書館和電腦上查找,先找出了一些芯片的關腳和功能,然后經過老師的檢查,開始設計,但是由于時間的緊迫,這個設計沒有進行仿真,比較遺憾,不過在設計的過程中還是是學到不少東西的,由于有些芯片我們在數字電子技術基礎里沒有學過的,我們在查找這些資料的過程中就學到很多東西,有些芯片本來我們不懂的,但是經過查資料使我對有些不是懂的芯片有了一定的了解。如果有時間,最好能夠做出一個實物圖就比較了解,但是時間實在太緊拉,雖然老師布置了很久,但是由于我們要考試復習就沒有多少是時間去想,有點遺憾。
致謝
在本次電子技術課程設計過程中,得到了個老師和同學們的幫助,讓我學到了很多東西,同時還感謝學校的圖書館給我們提供了很好的資料,讓我們的設計更加能夠輕松的完成,還有感謝各個網站提供的大量資料。
通過這次設計,在很高程度上彌補了我們的理論知識的不足,通過設計進一步鞏固了我們的理論知識,讓我們學的更扎實,對數電的認識更加形象。
總之,這次實習帶給我很大的收獲,再一次感謝學校給我們一個展現自己設計才能的機會,這對我們以后的工作和學習都有很好的作用。
第四篇:單片機課程設計_數字鐘(C51版)
湖南工業大學
課程設計
資料袋
電氣與信息工程學院學年第學期
課程名稱單片機系統課程設計指導教師凌云職稱教授學生姓名專業班級測控101學號題目數字鐘(C51版)成績起止日期 2012年12 月 10日~ 2012年 12 月 28 日
目錄清單
湖南工業大學
課程設計任務書
2012 —2013 學年第1 學期
電氣與信息工程學院測控技術與儀器專業101班 課程名稱:單片機系統課程設計設計題目:數字鐘(C51版)完成期限:自2012年12 月 17日至2012年12 月28日共2周單片機系統課程設計說明書 起止日期:
學
班
學
成數字鐘(C51版)2012年 12 月 17 日 至2012 年 12 月 28 日 生姓名級號績湖南工業大學電氣與信息工程學院 2012年12 月10 日 3
第五篇:數字鐘課程設計程序
#include
void chuanshu(void);
void shuchu(void);
void saomiao(void);
void delay(void);
unsigned int t;
unsigned char m;
unsigned char shi,fen,miao;
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char code wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned charxianshi[8]={0,0,0,0,0,0,0,0};
sbit DS=P2^2;
sbit ST_CP=P2^3;
sbit SH_CP=P2^4;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
sbit niaoling=P1^0;
sbit dingshi=P1^1;
void delay(void)
{
char i,j;
for(i=0;i<50;i++)
for(j=0;j<100;j++);
}
void chuanshu(void)
{
unsigned char b,c,num;
if(b==0)
{
b++;
num=wei[m];//把位選放在第二個74hc595芯片上
for(c=0;c<8;c++)
{SH_CP=0;
DS=num&0x80;
num=num<<1;
SH_CP=1;//上升沿發生移位
}
}
if(b==1)
{
b--;
if(m==2||m==5)
{num=0xbf;}
else
{
num=duan[xianshi[m]];}
for(c=0;c<8;c++)
{SH_CP=0;
DS=num&0x80;
num=num<<1;
SH_CP=1;//數據在SH_CP的上升沿輸入}
}
m++;
if(m==8)
{m=0;
}
}
void shuchu(void)
{ ST_CP=0;
ST_CP=1;//上升沿將數據送到輸出鎖存器
}
void saomiao(void)
{
if(key1==0)
{
delay();
if(key1==0)
{
miao=0;
while(key1==0);
}
}
xianshi[0]=miao%10;xianshi[1]=miao/10;
if(key2==0){
delay();
if(key2==0){
fen++;
while(key2==0);if(fen==60){
fen=0;}
}
}
xianshi[3]=fen%10;xianshi[4]=fen/10;
if(key3==0){
delay();
if(key3==0){
shi++;
while(key3==0);if(shi==24){
shi=0;}
}
}
xianshi[6]=shi%10;xianshi[7]=shi/10;
if(key4==0){
delay();
if(key4==0){
miao=0;fen=0;shi=0;}
}
}
void main(void)
{
TMOD=0X01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;
ET0=1;
TR0=1;
while(1)
{
saomiao();
chuanshu();shuchu();
}
}
void time0()interrupt 1{
t++;
if(t==20)
{t=0;
miao++;
if(miao==60){miao=0;fen++;
if(fen==60){fen=0;shi++;
if(shi==24){shi=0;}}}
}
}