精品工程師測(cè)評(píng):一塊值得擁有的學(xué)習(xí)利器
網(wǎng)站:bbs.21ic.com
前言:大家好,我是豆包。前兩天從我兄弟那里得到了一款穿了“衣服”的51開發(fā)板,說真的,能把開發(fā)板做成這樣,真的是很用心,很細(xì)心。之前,我還自己建立個(gè)公眾號(hào),做的是關(guān)于51單片機(jī)開發(fā)的經(jīng)驗(yàn)分享,可能是因?yàn)楫?dāng)時(shí)能力有限,可能也沒有耐性,最后,公眾號(hào)也沒怎么維護(hù),也沒有繼續(xù)發(fā)表文章了;論壇是個(gè)好地方,前段時(shí)間有個(gè)做社區(qū)的朋友給我打電話,做了一下用戶回訪,我們聊了很多,說現(xiàn)在直播和公眾號(hào)真的很強(qiáng),給社區(qū)論壇這種平臺(tái)沖擊不小,我跟她說,論壇長(zhǎng)久看來(lái)是最好的,它可以承載很多,很多工程師的經(jīng)驗(yàn)和快樂都在這里。當(dāng)需要查找資料,遇到技術(shù)難題了,都可以在論壇里找到答案。
今天,借此契機(jī),把之前想做而沒做完的事情做好吧,在論壇和公眾號(hào)一起為大家分享關(guān)于51單片機(jī)的開發(fā)經(jīng)驗(yàn)與心得,雖然沒有大佬們做的那么細(xì)致,但是我也有一些自己在開發(fā)中遇到的問題,BUG或者研發(fā)中的啟發(fā),都可以與大家分享,因?yàn)?,研發(fā)就是互相學(xué)習(xí),互相進(jìn)步的一個(gè)過程,在這個(gè)圈子里,不僅有制作出來(lái)產(chǎn)品的成就,還有和大佬們暢談和學(xué)習(xí)的快樂,好了,言歸正傳吧,開啟我們的基于學(xué)電開發(fā)板的51單片機(jī)開發(fā)之旅。
51單片機(jī),其實(shí)很多工程師的入門工具都是它,51因?yàn)槠涫前宋粏纹瑱C(jī),寄存器較少,采用C語(yǔ)言開發(fā),程序通俗易懂,而且開發(fā)起來(lái)較為簡(jiǎn)單,所以,備受高校實(shí)驗(yàn)室和企業(yè)工程師的喜愛。
之前的51單片機(jī),在工程師眼里,就是封裝“笨重”,運(yùn)行速度慢,不帶仿真,而且調(diào)試基本只能靠printf,蜂鳴器 LED來(lái)看程序運(yùn)行到哪里了。雖然勝在便宜,但是企業(yè)上用的還是不太多。
現(xiàn)在的51單片機(jī)可不一樣了,就拿學(xué)電開發(fā)板中運(yùn)用的MCU來(lái)說,STC8G2K64S4:64k Flash, 2k 256 RAM, 35MHz主頻, 內(nèi)置EEPROM,硬件SPI/I2C,所有IO可做PWM,而且本身芯片就是個(gè)仿真芯片,可以通過STC-ISP來(lái)配置成仿真芯片,如圖1所示,配置完成之后,就可以通過keil進(jìn)行硬件仿真了。

軟件方面配置如圖2所示,首先選擇仿真工具,直接選擇STC Monitor-51 Driver這個(gè)就好,然后點(diǎn)擊setting,會(huì)彈出串口號(hào)設(shè)置和波特率,串口號(hào)通過電腦設(shè)備管理器查找,確定是與開發(fā)板相連的端口號(hào)才可以,波特率是115200,然后就是跟正常仿真操作一致了,可以打斷點(diǎn),單步運(yùn)行等等操作。

接下來(lái)介紹一下學(xué)電開發(fā)板,學(xué)電開發(fā)板拿到手之后,真的眼前一亮,雖然瞅著小巧,但是功能和性能都一點(diǎn)不差勁。先看看開發(fā)板的樣式,如圖3,圖4所示。


開發(fā)板外設(shè)資源如下:? ? l 紅黃綠 3 個(gè)發(fā)光二極管;? ? l 1 個(gè)電源指示發(fā)光二極管(紅);? ? l 2.0 寸 IPS 液晶屏(320*240像素);? ? l 4 個(gè)按鍵(3 個(gè)用戶自定義按鍵、1 個(gè)硬復(fù)位重啟按鍵);? ? l 背面擴(kuò)展IO引出;
接下來(lái)介紹一下硬件的內(nèi)部結(jié)構(gòu),主要內(nèi)部電路分為幾個(gè)部分,首先是供電電路(包含鋰電池充電電路和電壓檢測(cè)電路)、串口通訊和下載電路、外設(shè)電路(包含存儲(chǔ)、按鍵、LED、傳感器、蜂鳴器和TFT液晶屏等)。具體結(jié)構(gòu)框圖如圖5所示。

這里值得學(xué)習(xí)的是只要使用 USB連接電腦,CH340 就開始工作了,不受電源開關(guān)控制。但是這部分電路建議可以做成自動(dòng)下載電路(免冷啟動(dòng)電路),這樣的話會(huì)方便很多,也不用頻繁重啟硬件。
到此,硬件基本就介紹的差不多了,小結(jié)一下:學(xué)電開發(fā)板電路設(shè)計(jì)的比較人性化,電路考慮的比較全面,尤其是對(duì)LDO1電源通過一個(gè)按鍵控制實(shí)現(xiàn)了MCU重啟功能,其次是USB轉(zhuǎn)串口下載程序的那部分是不受LDO1控制,這樣不會(huì)因?yàn)殡娫粗貑?dǎo)致串口突然斷開從而導(dǎo)致燒錄失敗的問題發(fā)生。最后是選擇的TFT液晶屏是8080總線接口的,因?yàn)镾TC的MCU一般都會(huì)有一組8位的IO作為并口使用,這樣會(huì)提升屏幕的刷新速度。
接下來(lái)講一下環(huán)境搭建和如何開發(fā)吧。
首先下載個(gè)KEIL C51,然后需要有STC-ISP軟件(這個(gè)是專門給STC下載程序用的,而且在這個(gè)軟件上還能下載很多關(guān)于STC MCU開發(fā)的資源)接下來(lái)就是通過STC-ISP軟件把 STC 單片機(jī)的頭文件也添加進(jìn)去,保證編譯器可以支持STC的MCU。
接下來(lái)就是再KEIL C51中創(chuàng)建工程,最后就是和正常開發(fā)一樣啦,具體可以參考學(xué)電的快速入門手冊(cè),非常全面。? 02-快速入門手冊(cè).pdf (1.36 MB, 下載次數(shù): 0)最后,分享一下用學(xué)電開發(fā)板的點(diǎn)燈視頻吧,使用學(xué)電開發(fā)板驅(qū)動(dòng)WS2812共24位,代碼如下:
void main()
{
unsigned char i, j, t = 1;
PIN_MODE_CONFIG(P1, PIN_5, PIN_MODE_STANDARD);
WS2812_IO = 0;
while (1)
{
switch(t)
{
case 1:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0xFF0000);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 2;
break;
case 2:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0xD2691E);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 3;
break;
case 3:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0xFFFF00);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 4;
break;
case 4:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0x008000);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 5;
break;
case 5:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0x00FFFF);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 6;
break;
case 6:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0x0000FF);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 7;
break;
case 7:
for (i = 1; i <= 24; i )
{
for (j = 0; j < i; j )
{
Send_WS2812((unsigned long)0x800080);
}
for (; j < 24; j )
{
Send_WS2812((unsigned long)0x000000);
}
Delay100ms();
}
t = 1;
break;
}
????}
https://www.bilibili.com/video/BV1GL411x7hf/相關(guān)附件請(qǐng)點(diǎn)擊閱讀原文內(nèi)查看
---------------------
作者:yangjiaxu此文章來(lái)自于21ic網(wǎng)站,著作權(quán)歸21ic所有,未經(jīng)允許禁止轉(zhuǎn)載。▍