這個學期接觸到了單片機,算是個微處理機,是把計算機的部分功能集成化了的。在生活中隨處可見:想廚房用的電磁爐內(nèi)就集成了單片機的控制,客廳掛的數(shù)字萬年歷也是用單片機實現(xiàn)的!經(jīng)過了解后,我對此產(chǎn)生了極大的興趣。下面簡單展示一個我做的基于單片機的實驗,望在這方面有研究的一起分享學習哈!
這個是用Proteus做的硬件設(shè)計,對單片機有興趣大概都用過吧!另外還有軟件程序,如果把這個硬件比作人的外觀和手腳(是的還可以控制步進電機伺服系統(tǒng)再用電機去控制一些操作的話就更像機器人了)。那么軟件程序就好比是人的大腦。下面我也把自己編的程序展示一下吧!望高手指點:是用C語言編的
本程序要實現(xiàn)秒,分,時的精確計時,另外P1角也就是單片機的左邊還有三個按鈕可實現(xiàn)時、分、秒的調(diào)時。圖上沒有顯示!下面先貼出一部分代碼來由于篇幅有限完整的代碼從 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};//經(jīng)38譯碼器片選數(shù)碼管
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循環(huán)逐個片選導通并顯示。
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;i<8;i++)
{
LE=1;
P3=disbitcode[i]; //經(jīng)38譯碼器依次片選
P0=dispcode[disbuf[i]]; //將相應(yīng)值送入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();
}
}
經(jīng)過近兩個月的努力探索,還是有一點小小的成就感!確實我也做出點東西!相對現(xiàn)在來說是簡單的事了!于是就想著做點復(fù)雜的有用的,唉!做起來真難!發(fā)現(xiàn)自己想做出產(chǎn)品來還差的遠啊,之前所做的都應(yīng)歸為實驗階段的東西,拿不出手的啊!現(xiàn)在開始具體的做東西時發(fā)現(xiàn)之前學的東西太虛了,在高手面前甚至根本不能說自己學過更不必說會了!
于是我覺得學東西一定要親歷親為,不能放過一些關(guān)鍵細節(jié),想想當有人問你你會什么技能的時候!你是否能底氣十足的說我是個高手呢!呵呵!在學技術(shù)時,一定要自己狠一點,要學的東西弄得越透徹越好!不能對自己有寬容,不能打折扣!