久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于單片機的秒,分,時可調時鐘的設計

基于單片機的秒,分,時可調時鐘的設計

作者: 時間:2012-09-04 來源:網絡 收藏

今天主要做我喜歡的,哦,順便簡單介紹下我學的專業吧! 呵呵!我所學專業名字叫“自動化”怎么樣,聽上去還可以吧!其實當是報志愿的時候也不知具體是學什么的。經過兩三年的摸索才大致知道了我應該重點學什么,怎么學,將來參加后能干什么。說實話還真難摸索啊!兩年多才明白了一二,也許這就是當初高中時沒好好學上二流大學的懲罰吧!不過還好了現在很喜歡這個專業,怎么介紹這個自動化呢,感覺挺高科技的,其實也沒什么,大家在現實生活中都能看到,社會上的很多作業流程都是盡可能的實現自動控制,一個按鈕按下從最初的原材料就能得到想要的產品。我們所學就是怎樣讓它實現,其中的各個環節是怎樣起作用的,最后將各個環節數字化實現用以計算機為核心控制并顯示的一些整套系統,不過一整套系統不可能一個人都學會全部搞定的,能搞通期中一個環節就可以算是高手了!~呵呵

本文引用地址:http://cqxgywz.com/article/164970.htm

這個學期接觸到了,算是個微處理機,是把計算機的部功能集成化了的。在生活中隨處可見:想廚房用的電磁爐內就集成了的控制,客廳掛的數字萬年歷也是用單片機實現的!經過了解后,我對此產生了極大的興趣。下面簡單展示一個我做的單片機的實驗,望在這方面有研究的一起享學習哈!

基于單片機的秒,分,時可調時鐘的設計

這個是用Proteus做的硬件,對單片機有興趣大概都用過吧!另外還有軟件程序,如果把這個硬件比作人的外觀和手腳(是的還可以控制步進電機伺服系統再用電機去控制一些操作的話就更像機器人了)。那么軟件程序就好比是人的大腦。下面我也把自己編的程序展示一下吧!望高手指點:是用C語言編的

本程序要實現秒,,時的精確計時,另外P1角也就是單片機的左邊還有三個按鈕可實現時、分、秒的調時。圖上沒有顯示!下面先貼出一部分代碼來由于篇幅有限完整的代碼從 http://dl.21ic.com/download/shiz5-rar-ic-106797.html下載~

#include

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};

unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//經38譯碼器片選數碼管

unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循環逐個片選導通并顯示。

sbit OE=P2^6;

sbit LE=P2^7;

sbit K1=P1^0;

sbit K2=P1^1;

sbit K3=P1^2;

unsigned char second;

unsigned char minite;

unsigned char hour;

unsigned int tcnt;

void delay(unsigned int N)

{

while(N--);

}

void getbuff()

{

disbuf[0]=second%10;

disbuf[1]=second/10;

disbuf[2]=10;

disbuf[3]=minite%10;

disbuf[4]=minite/10;

disbuf[5]=10;

disbuf[6]=hour%10;

disbuf[7]=hour/10;

}

void display()

{

unsigned char i=0;

for(i=0;i8;i++)

{

LE=1;

P3=disbitcode[i]; //經38譯碼器依次片選

P0=dispcode[disbuf[i]]; //將相應值送入P0口

OE=0;

delay(500);

}

}

void key()

{

if(K1==0)

{

delay(5000);

if(K1==0)

{

second++;

if(second==60)

{

second=0;

}

while(K1==0);

}

}

if(K2==0)

{

delay(5000);

if(K2==0)

{

minite++;

if(minite==60)

{

minite=0;

}

while(K2==0);

}

}

if(K3==0)

{

delay(5000);

if(K3==0)

{

hour++;

if(hour==24)

{

hour=0;

}

while(K3==0);

}

}

}

void t0() interrupt 1 using 0

{

tcnt++;

if(tcnt==4000)

{

tcnt=0;

second++;

if(second==60)

{

second=0;

minite++;

if(minite==60)

{

minite=0;

hour++;

if(hour==24)

{hour=0;}

}

}

}

}

void main()

{

TMOD=0x02;

TH0=0x06;

TL0=0x06;

TR0=1;

ET0=1;

EA=1;

second=0;

minite=0;

hour=0;

tcnt=0;

while(1)

{

key();

getbuff();

display();

}

}

經過近兩個月的努力探索,還是有一點小小的成就感!確實我也做出點東西!相對現在來說是簡單的事了!于是就想著做點復雜的有用的,唉!做起來真難!發現自己想做出產品來還差的遠啊,之前所做的都應歸為實驗階段的東西,拿不出手的啊!現在開始具體的做東西時發現之前學的東西太虛了,在高手面前甚至根本不能說自己學過更不必說會了!

于是我覺得學東西一定要親歷親為,不能放過一些關鍵細節,想想當有人問你你會什么技能的時候!你是否能底氣十足的說我是個高手呢!呵呵!在學技術時,一定要自己狠一點,要學的東西弄得越透徹越好!不能對自己有寬容,不能打折扣!

事情往往是麻煩之后才會變的簡單!就像武林高手那樣無招勝有招!



評論


相關推薦

技術專區

關閉