學(xué)單片機(jī)要是有人引導(dǎo)一下,那是最快掌握編程的一種途徑,當(dāng)然也不能全讓別人來(lái)出力出時(shí)間來(lái)為你工作,自己要做好請(qǐng)教問(wèn)題的材料,特別是圖文并茂的那種,高手就可以因勢(shì)利導(dǎo)指點(diǎn)迷津了,所以我先就準(zhǔn)備了我這款單片機(jī)的系統(tǒng)原理圖,我想先從點(diǎn)亮LED3開(kāi)始,簡(jiǎn)單的點(diǎn)亮一顆LED應(yīng)該是比較容易上手的吧,對(duì)于新手來(lái)說(shuō),能掌握這點(diǎn)就算是一腳跨進(jìn)去了,其他的就不難了。但是萬(wàn)事開(kāi)頭難,用C寫(xiě)程序特別是簡(jiǎn)單的IO口操作雖然容易做到,但是從手里開(kāi)始拿到一款芯片,找到該芯片數(shù)據(jù)手冊(cè),然后用對(duì)應(yīng)的編輯軟件開(kāi)始編寫(xiě)第一句程序往往要花費(fèi)大量的冤枉寶貴時(shí)間,一旦掌握了之后回過(guò)頭來(lái)看其實(shí)很簡(jiǎn)單,這個(gè)問(wèn)題就差在沒(méi)人直接對(duì)癥指導(dǎo),還有關(guān)鍵是自己沒(méi)做好讓有心幫忙的大俠能下手幫忙的著手點(diǎn)。我就從這里開(kāi)始吧。點(diǎn)亮圖中LED3,編輯軟件Keil Uv4...
STC15W204S單片機(jī),開(kāi)始學(xué)編程,請(qǐng)高手指導(dǎo)。。。有圖
寫(xiě)了那么多,亂了,不要誤以為我是來(lái)指導(dǎo)別人的哦,我是來(lái)請(qǐng)教各位大師的,特別是用過(guò)STC的高手,請(qǐng)教你們的一些經(jīng)驗(yàn),比如你們是用什么編輯軟件的,怎么開(kāi)始創(chuàng)建一個(gè)工程新建一個(gè).c文件,然后又該怎么設(shè)置編輯軟件里的一些關(guān)鍵設(shè)置的@#@#¥%%#,又問(wèn)的太多了,你只要說(shuō)一點(diǎn)就夠,然后又有人愿意補(bǔ)充一些...這樣就把頭緒理出來(lái)了,我這里上傳一個(gè)Keil Uv4
C51.haozip04
C51.haozip05
C51.haozip06
C51.haozip07
C51.haozip08
C51.haozip09
C51.haozip10
C51.haozip11
C51.haozip12
UV4.haozip01
UV4.haozip02
UV4.haozip03
UV4.haozip04
C51.haozip01
C51.haozip02
C51.haozip03
本分卷由2345好壓 編輯軟件,方便跟我一樣需要的新手吧,希望我們共同進(jìn)步!。上面這些解壓到C盤(pán)根目錄新建的一個(gè)Keil文件夾下:
版區(qū)剛剛成立,希望大家能一起學(xué)習(xí),一起進(jìn)步。
我就先一步一步把我的做法貼出來(lái)吧,不對(duì)的地方請(qǐng)大俠指導(dǎo)一下:
我在STC官網(wǎng)http://www.mcu-memory.com/上面先下載了這個(gè)stc-isp-15xx-v6.53 軟件,然后把我上面的UV4編輯軟件解壓到C盤(pán)根目錄下新建的一個(gè)叫keil的文件夾下
為什么要這么做我也不知道,好像我是哪個(gè)論壇里看到的說(shuō)要這么做才可以方便STC單片機(jī)型號(hào)導(dǎo)入什么的,以后再去了解吧,有知道的也說(shuō)說(shuō)是不是這樣。然后解壓上面這個(gè)stc-isp-15xx-v6.53軟件并雙擊運(yùn)行打開(kāi),打開(kāi)后界面是這樣的:
點(diǎn)擊右上角小箭頭,出現(xiàn)頭文件欄目后繼續(xù)點(diǎn)擊中間出現(xiàn)的按鍵框,“添加MCU型號(hào)到Keil中”
太晚了,明天再做了,路過(guò)的大俠指導(dǎo)一下?。。。?/p>
繼續(xù)加油
謝謝鼓勵(lì),今天把芯片放在了下載板上,按下電源鍵后看到了鎖緊座周?chē)馁N片LED指示燈呈流水式依次亮滅跑了起來(lái)。問(wèn)了他們客服才知道他們芯片里面都已燒好了這種流水程序的,方便用戶檢查芯片放在鎖緊座上是否正確和到位。
今天就連接這塊下載板花費(fèi)了好多時(shí)間,我筆記本只有USB接口所以買(mǎi)了一個(gè)USB轉(zhuǎn)串口線,線插到電腦上后驅(qū)動(dòng)安裝不上,后來(lái)又上網(wǎng)找驅(qū)動(dòng),驅(qū)動(dòng)裝上了但有時(shí)又不靈,不知道是什么原因。
對(duì)于這款STC單片機(jī),我跟你一樣一無(wú)所知,所以你可以從現(xiàn)在開(kāi)始跟我一起學(xué),我也在試著學(xué)會(huì)它,沒(méi)學(xué)過(guò)C語(yǔ)言沒(méi)事,你可以上網(wǎng)查上論壇看,多發(fā)帖請(qǐng)教,論壇好人多,但記住自己也要勤快點(diǎn)。
經(jīng)過(guò)這段時(shí)間的折磨我終于了解了一點(diǎn)這款單片機(jī)。并如愿的實(shí)現(xiàn)了點(diǎn)亮上面原理圖中的LED3指示燈。
#include "STC15F2K60S2.h"
sbit LEDCONTROL=P1^5;//先定義P1.5這個(gè)IO口用LEDCONTROL表示,這個(gè)LEDCONTROL可以用別的自己認(rèn)為好記的代替,比如LEDKZ=P1^5;
sbit LED3=P1^4; //這里定義P1.4這個(gè)IO口用LED3表示
void main()
{
while(1)
{
LEDCONTROL=0; //P1.5這個(gè)IO口設(shè)置為低電平,從原理圖分析這個(gè)IO口控制的是
//一個(gè)PNP型三極管,拉低后三極管導(dǎo)通,其控制的LED3陽(yáng)極就有了5V工作電壓
LED3=0; //P1.4這個(gè)IO口也設(shè)置為低電平,這樣LED3這個(gè)指示燈有有電流流通點(diǎn)亮發(fā)光了。
}
}
上面只是這個(gè)指示燈一直亮著,那么要讓這個(gè)指示燈動(dòng)起來(lái),一亮一滅的好看一點(diǎn)就要用到延時(shí)程序了,下面這個(gè)就可以做到這個(gè)功能:
#include "STC15F2K60S2.h"
sbit LEDCONTROL=P1^5;//先定義P1.4這個(gè)IO口用LEDCONTROL表示,這個(gè)LEDCONTROL可以用別的自己認(rèn)為好記的代替,比如LEDKZ=P1^4;
sbit LED3=P1^4; //這里定義P1.5這個(gè)IO口用LED3表示
void delay()
{
int i, j;
for (i=0; i<800; i++)
for (j=0; j<500; j++);
}
void main()
{
while(1)
{
LEDCONTROL=0;//P1.5這個(gè)IO口設(shè)置為低電平,從原理圖分析這個(gè)IO口控制的是一個(gè)PNP型三極管,拉低后三極管導(dǎo)通,其控制的LED3陽(yáng)極就有了5V工作電壓
LED3=0; //P1.4這個(gè)IO口也設(shè)置為低電平,這樣LED3這個(gè)指示燈有有電流流通點(diǎn)亮發(fā)光了。
delay(); //延時(shí)一段時(shí)間,也就是上面的LED3=0;這句程序表示LED3這個(gè)指示燈亮的狀態(tài)延時(shí)保持一段時(shí)間
LED3=1; //經(jīng)過(guò)上面一段時(shí)間延時(shí)后,程序運(yùn)行到這句指令就把P1.4這個(gè)IO口拉高了,指示燈就沒(méi)回路而熄滅。
}
} //上面這個(gè)while(1)是個(gè)死循環(huán),就是這幾句指令周而復(fù)始一直循環(huán)運(yùn)行下去,那么LED3這個(gè)指示燈就一亮一滅的了,直到關(guān)閉總電源。
STC給我寄的USB轉(zhuǎn)串口線是壞的,暈死,難怪一直不能燒芯片,幸虧有臺(tái)帶串口輸出的臺(tái)式電腦,才驗(yàn)證了我的程序。
哎,也不見(jiàn)高手來(lái)指導(dǎo)一下,是天氣太熱了是吧,沒(méi)人想出來(lái)逛了,我倒是希望跟我一樣剛學(xué)的新手快快的學(xué)起來(lái)這款芯片,來(lái)跟我一起交流學(xué)習(xí),接下來(lái)我就要寫(xiě)整個(gè)數(shù)碼管的數(shù)字顯示程序了,有想學(xué)的新手如果有不懂上面的可以直接發(fā)帖問(wèn),不然下面的數(shù)碼管你就跟不上了,呵呵。我還想等著你們反過(guò)來(lái)教教我啊。
沒(méi)高手來(lái)我就只有硬著頭皮慢慢揣摩了。。。
出于節(jié)能與CPU的考慮,delay延時(shí)是否可以不要呢,加一句PCON = 0X01;
再搭配定時(shí)器使用延時(shí)。
還真不知道按什么排版原則發(fā)帖跟帖才不會(huì)亂,試試跟第一帖效果怎么樣,有論壇發(fā)帖經(jīng)驗(yàn)的高手也指導(dǎo)一下咱,新手們也學(xué)習(xí)學(xué)習(xí)。
下面是我成功數(shù)碼顯示功能的程序,新手們可要好好分析了,別小看我這個(gè)新手,我可是花了不少時(shí)間才琢磨出來(lái)的,這個(gè)原理圖對(duì)單片機(jī)的IO口操作很有代表性,我覺(jué)得^_^。這就是傳說(shuō)中的IO口復(fù)用吧,當(dāng)然還有更精辟的IO口復(fù)用,咱慢慢來(lái),學(xué)單片機(jī)就要先分析硬件原理,這里用兩個(gè)共陽(yáng)數(shù)碼管顯示,兩組LED的共陰極相同段并在一起,兩組的陽(yáng)極是分開(kāi)的,這樣我們顯示時(shí)先顯示其中一個(gè)數(shù)碼管,另外一個(gè)關(guān)閉,延時(shí)幾個(gè)毫秒后關(guān)閉這個(gè)開(kāi)啟另外那個(gè)數(shù)碼管,這樣我們眼睛看到的就是兩個(gè)數(shù)碼管是一起顯示的了,眼睛是分辨不出兩個(gè)數(shù)碼管其實(shí)是輪流顯示的。
#include "STC15W204S.h"
sbit LED=P1^5; //定義控制3個(gè)LED的IO口,數(shù)碼管顯示的時(shí)候這個(gè)IO口必須為高電平,否則3個(gè)LED就有機(jī)會(huì)發(fā)光了。
sbit ANJIAN=P3^0; //定義控制按鍵的IO口,同樣的道理,數(shù)碼管顯示的時(shí)候按鍵輸出的IO口也設(shè)置為高,經(jīng)過(guò)按鍵隔離電阻后就不影響數(shù)碼管顯示了
sbit SHUMA1=P1^1; //定義控制數(shù)碼管1的IO口
sbit SHUMA2=P5^5; //定義控制數(shù)碼管2的IO口
#define uchar unsigned char
#define uint unsigned int
uchar a=0,b=0;//定義全局變量,也可以在main主函數(shù)里局部定義,只是我以后要在別的函數(shù)和中斷函數(shù)里要用到這個(gè)變量。
const unsigned char table1[]={0xEA,0xEF,0xFA,0xEE,0xEF,0xEE,0xEA,0xEF,0xEA,0xEE,0xFF}; //這里數(shù)組等我有空了分析給跟我一樣的新手看
const unsigned char table3[]={0xB5,0xFD,0x75,0x75,0x3D,0x37,0x37,0xF5,0x35,0x35,0xFF};
void delay(uchar ms) //延時(shí)函數(shù),具體多少時(shí)間我不知道,呵呵,不要緊這個(gè)時(shí)間自己可以修改里面的數(shù)字,時(shí)間長(zhǎng)LED亮度高,相反LED就較暗。
{
uchar i,j;
for(i=0;i
{
for(j=0;j<50;j++);
}
}
void show(uchar xs,uchar k) //顯示函數(shù),把顯示部分分離出來(lái)更清晰方便模塊化。
{
LED=1; //控制3個(gè)LED三極管Q1的IO口拉高。
P1=0xFF; //P1口全部拉高,這樣其上的LED或數(shù)碼管都不亮,
P3=0xFF; //同上,其中還包含了控制按鍵拉高,就是說(shuō)在顯示函數(shù)里屏蔽其他功能以免造成影響。
P5=0xFF; //控制數(shù)碼管陽(yáng)極的Q2的IO口拉高,其控制的數(shù)碼管不亮。
if(k==1){SHUMA1&=0;}//這句話的意思就是如果是主函數(shù)運(yùn)行到show(a,1)這個(gè)顯示函數(shù)那么就是要顯示數(shù)碼管1的數(shù)字,這是就要開(kāi)啟控制數(shù)碼管1的那個(gè)陽(yáng)極的那個(gè)三極管
if(k==0){SHUMA2&=k;}//這句話的意思就是如果是主函數(shù)運(yùn)行到show(b,0)這個(gè)顯示函數(shù)那么就是要顯示數(shù)碼管2的數(shù)字,這是就要開(kāi)啟控制數(shù)碼管2的那個(gè)陽(yáng)極的那個(gè)三極管
P1&=table1[xs];
P3&=table3[xs];
delay(5);
}
/////////其中的a是代表數(shù)碼管的個(gè)位,b是代表數(shù)碼管的十位。
void main()
{
;
while (1)
{
uint jj;
b=(a==10)?b+1:b;
a=(a==10)?0:a;
b=(b==10)?0:b;
a=(a>9)?9:a;
show(a,1);
show(b,0);
jj++;
if(jj==3100){a=a+1;jj=0;}
}
}
這里上傳這個(gè)原理圖的99SE版.schSTC15W204S
呵呵,我進(jìn)展也不快。來(lái)電源網(wǎng)討論單片機(jī)技術(shù),本職大都是做電源,為了興趣或者充電在業(yè)余學(xué)習(xí)單片機(jī)的。
我平時(shí)也就是看看書(shū),玩玩開(kāi)發(fā)板,工作忙的時(shí)候,一天也就看個(gè)一兩頁(yè)。
有空也會(huì)看看視頻,有個(gè)視頻叫《十天精通單片機(jī)》,看名字雖然夸張些,不過(guò)講得確實(shí)不錯(cuò)。
樓主在學(xué)習(xí)單片機(jī)的過(guò)程中,學(xué)習(xí)匯編嗎?