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

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

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


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

這里值得學習的是只要使用 USB連接電腦,CH340 就開始工作了,不受電源開關控制。但是這部分電路建議可以做成自動下載電路(免冷啟動電路),這樣的話會方便很多,也不用頻繁重啟硬件。
到此,硬件基本就介紹的差不多了,小結一下:學電開發(fā)板電路設計的比較人性化,電路考慮的比較全面,尤其是對LDO1電源通過一個按鍵控制實現(xiàn)了MCU重啟功能,其次是USB轉串口下載程序的那部分是不受LDO1控制,這樣不會因為電源重啟導致串口突然斷開從而導致燒錄失敗的問題發(fā)生。最后是選擇的TFT液晶屏是8080總線接口的,因為STC的MCU一般都會有一組8位的IO作為并口使用,這樣會提升屏幕的刷新速度。
接下來講一下環(huán)境搭建和如何開發(fā)吧。
首先下載個KEIL C51,然后需要有STC-ISP軟件(這個是專門給STC下載程序用的,而且在這個軟件上還能下載很多關于STC MCU開發(fā)的資源)接下來就是通過STC-ISP軟件把 STC 單片機的頭文件也添加進去,保證編譯器可以支持STC的MCU。
接下來就是再KEIL C51中創(chuàng)建工程,最后就是和正常開發(fā)一樣啦,具體可以參考學電的快速入門手冊,非常全面。? 02-快速入門手冊.pdf (1.36 MB, 下載次數(shù): 0)最后,分享一下用學電開發(fā)板的點燈視頻吧,使用學電開發(fā)板驅動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/相關附件請點擊閱讀原文內查看
---------------------
作者:yangjiaxu此文章來自于21ic網(wǎng)站,著作權歸21ic所有,未經(jīng)允許禁止轉載。▍