我們的目標:為用戶打造功能最全面、實用性強、性價比高、學習資料最豐富的51單片機開發板!PCB焊盤採用鍍金更加完美!學習板分為標準版(1400元)和高級版(1880元)**************************************************************************************
一、MCU Learning Board V2.0 硬體資源
1、STC89C52系列單片機可直接線上下載程式,不需要另外購買單片機下載器,在學習、調試程式過程中省去複雜頻繁的燒寫、換片過程。
2、供電靈活,即可使用12V供電,也可使用簡單的USB 5V通過電腦直接供電。
3、豐富的硬體資源:液晶屏LCD1602、4位數碼管、ADC0832、時鐘晶片DS1302、溫度感測器DS18B20、掉電存儲AT24C02、串口晶片MAX232、MAX485、發光二極體、紅外、4×4鍵盤、蜂鳴器、315M無線接收模組等等。
4、豐富的擴展介面:單片機所有I/O口全部外接,當你學完學習板上的資源後,方便日後二次開發。
二、MCU Learning Board V2.0 軟體資源
除了以上贈送的配件外,開發板原理圖、PCB佈線截圖全部奉上!
實驗一 流水燈:本實驗是通過對IO口操作,加以必要的延時實現點亮和熄滅發光二極體;
實驗二 花樣跑馬燈:流水燈的延伸,通過一些移位元指令,讀取陣列實現花樣跑馬,包括從上往下,從上往下,中間往兩邊,兩邊往中間跑馬等等;
實驗三 獨立按鍵演示:通過IO口讀取鍵盤狀態來判斷KEY是否被按下,並通過發光二極體指示操作;
實驗四 232串口通訊:通過配置單片機寄存器實現和PC單向通訊,向PC機發送資料(0-255),通過串口調試查看;
實驗五 數碼管靜態顯示:數碼管靜態顯示一個數位;
實驗六 計時器中斷-數碼管動態顯示:採用計時器中斷的方式,實現數碼管顯示資料並計數;
實驗七 蜂鳴器播放歌曲:通過計時器對蜂鳴器操作,實現演奏歌曲揮著翅膀的女孩、兩隻蝴蝶等;
實驗八 時序操作-LCD液晶顯示:控制液晶屏在指定的座標下顯示指定的數位、字串等等;
實驗九 4×4按鍵掃描演示:經典的4×4按鍵掃描程式,液晶屏顯示16個鍵盤所指定的數位和字元;
實驗十 數位電壓表(ADC0832):通過調節調節電位器,類比量通過AD轉換器給單片機轉換成數位信號,並在液晶屏上顯示相應的電壓值;
實驗十一 一線式匯流排操作—溫度感測器(DS18B20):通過一線式匯流排對溫度感測器18B20的讀取,在液晶屏上顯示當前環境即時的溫度;
實驗十二 SPI匯流排操作-時鐘晶片(DS1302):通過SPI匯流排對DS1302的寫入(設置時間)和讀取(獲取時間),在液晶屏上精確顯示當前的日期,時間,星期;
實驗十三 IIC匯流排操作-掉電存儲(AT24C02):通過IIC匯流排對AT24C02寫入(存儲)和讀取,實現掉電資料保存;
實驗十四 串口協議通信:工業通訊操作控制,通過串列中斷方式實現串口雙向通訊,PC通過調試助手向單片機發送協議,點亮和熄滅相應的發光二極體,點亮或則熄滅相應發光二極體後,把單片機接收到的資料返回給PC;
實驗十五 485協議通信:與實驗十四相同,不過是通過485匯流排方式,可大大延長通訊距離;
實驗十六 紅外通信:通過紅外遙控器發射紅外碼,單片機軟體解碼實現點亮不同的發光二極體;
實驗十七 綜合新實驗-萬年曆:整合以上實驗功能,集液晶屏,4×4鍵盤,18B20,DS1302,蜂鳴器等實現液晶屏即時顯示當前的日期,時間,溫度,鬧鐘,並且可通過人機介面實現設置時間,鬧鐘等等;
實驗十八 無線通訊:主要通過無線通訊的方式,傳送資料,在單片機液晶上顯示;
發射端:發射模組上電即發射無線碼,碼的設定通過PT2262解碼,具體可通過焊接方式調整碼;
接收端:單片機通過無線接收模組,進行軟體解碼,並在液晶屏上顯示發射的位址碼和資料碼;
實驗十九 使用計時器2模擬PWM:使用計時器2類比PWM功能,通過鍵盤來控制PWM加,減,通過發光二極體亮度變化展現,亮度等級可調,效果明顯,可完全熄滅發光二極體;
實驗二十 電子密碼鎖:在一些單片機學習的論壇中經常看到很多人在要電子密碼鎖這個課程設計,但是真正能用的沒幾個,而且大多數功能都不全,比如沒有掉電保存,人性化的人機介面等等。本實驗實現電子密碼鎖功能的同時,加入掉電保存密碼,人性化的人機介面,報警等等,詳見軟體流程圖。在輸入密碼和修改密碼過程中可通過刪除鍵清除單個字元,也可通過取消鍵取消當前全部輸入;
實驗二十一 單片機內部EEPROM讀寫:雖然可以通過外界的EEPROM存儲,但是在實際的產品中為了節約成本,而且單片機內部本省就有EEPROM,就要好好利用哈,本實驗參考宏晶官網內部EEPROM讀寫,經過修改而成。
三、我們的優勢
l 為什麼選擇我們的開發板,我們的開發板有何優勢?
1、開發板是由在職硬體工程師設計,硬體電路成熟;
2、開發板與別家不同,採用貼片設計,外觀整潔,資源豐富;
3、開發板採用跳線帽的方式,全部IO口外接,方便二次開發;
4、開發板在擁有232通訊,紅外通訊之外,具有別家沒有的485通訊,無線通訊。
l開發板軟體程式怎麼樣,來源程式例子多不多,對於初學者能看懂嗎?
1、開發板來源程式由在職硬體工程師編寫,很多都應用於實際產品中,程式穩定;
2、開發板所有來源程式都採用C語言編寫,注釋詳細,對於初學者容易看懂;
3、來源程式例子非常詳細,從一般的IO口操作→計時器中斷→時序操作→匯流排操作(IIC,SPI)→紅外解碼→綜合實驗等等,可謂非常之多。
***************************************************************
****************************************************************
* *
* 描 述:通過串口像PC機發送資料,串口調試助手接收 *
* *
****************************************************************
* 【版 權】 Copyright(C)賽維單片機 @ All Rights Reserved *
* 【聲 明】 此程式僅用於學習與參考,引用請注明版權和作者資訊! *
***************************************************************/
#include
#include
/*-----STC89C52 專用-----*/
sfr WDT = 0xE1;
#define _CLRWDT_ {WDT = 0x36;}
#define BAUD_1200 0xE8 // 串列傳輸速率為1200
#define BAUD_2400 0xF4 // 串列傳輸速率為2400
#define BAUD_4800 0xFA // 串列傳輸速率為4800
#define BAUD_9600 0xFD // 串列傳輸速率為9600
#define BAUD_14400 0xFE // 串列傳輸速率為14400
/********************************************************
**名稱:InitSerial()
**功能:串口初始化
**輸入:無
**返回:無
**說明:無
********************************************************/
void InitSerial(void)
{
TMOD = 0x20; // T1 方式2
PCON=0x00; // PCON=00H,SMOD=0 PD = PCON.2 = 1 進入掉電模式
TH1 = TL1 = BAUD_9600; // BAUD: 9600
SCON = 0x50; // 串列通信方式1 REN=1 允許接收
ET1 = 0; // 不允許中斷
TR1 = 1; // 開啟計時器1
IE = 0; // 關閉所有中斷允許位
}
/********************************************************
**名稱:SendByte()
**功能:串口發送一個位元組
**輸入:ucData
**返回:無
**說明:無
********************************************************/
void SendByte(unsigned char ucData)
{
SBUF = ucData;
while(!TI)
{
_CLRWDT_;
}
TI = 0;
}
/**************************************************************
精確延時 1 ms XTAL:11.0592M
***************************************************************/
void Delay1Ms(void)
{
unsigned char i=131;
while(i!=0)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
i--;
}
}
/**************************************************************
精確延時 N ms XTAL:11.0592M
***************************************************************/
void DelayMs(unsigned int Delay)
{
unsigned int i;
for (i=Delay; i!=0; i--)
{
Delay1Ms();
}
}
/********************************************************
系統初始化
********************************************************/
void InitSys(void)
{
DelayMs(100); // 等待系統穩定
P0 = 0xFF; // 初始化IO
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
InitSerial(); // 初始化串口
}
/********************************************************
主函數
********************************************************/
void main(void)
{
unsigned char i;
InitSys();
while(1)
{
for (i=0; i<255; i++)
{
SendByte(i); // 每間隔1S發送一個資料
DelayMs(1000);
}
_CLRWDT_;
}
}
**************************************************************************************