欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 49935|回復: 22
收起左側

第1章 單片機高效入門

  [復制鏈接]
ID:111078 發表于 2016-3-28 00:07 | 顯示全部樓層 |閱讀模式
51單片機輕松入門—基于STC15W4K系列(C語言版)
李友全
編著:http://www.raoushi.com/bbs/dpj-37954-1.html


1章 單片機高效入門

1 認識單片機

2 制作一個最簡單的單片機實驗電路

3 使用Keil軟件編寫最簡單的程序(點亮一個發光二極管)

4 計算機程序下載到單片機

5 I/O口4種工作模式

6 流水燈實例

7 I/O口輸入測試

8 軟件仿真

9 硬件仿真

10 延時軟件使用方法

11 main()、void main()和int main()的區別

12 printf 格式化輸出函數(單片機與計算機通信)

13 學習用實驗板介紹


1 認識單片機

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-18.jpg


%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-1.jpg

單片機全稱是單片微型計算機(與計算機原理相同),外 形與普通集成電路相同,但普通集成電路功能是固定死 的,使用者無法更改,單片機的功能是可以通過編寫程序 進行更改的。

51單片機主要發展歷程:

AT89C51(已停產)——AS89S51(已淘汰)—— STC89C52(2004年,已落后)——STC12系列 (2007年)——STC15F系列(2011年)—— STC15W系列(2014年,最新運用主流)。

本書主講單片機型號:STC15W系列中的典型型 號:IAP15W4K58S4 ,輔助性的介紹STC15F2K60S2與STC15W408S

編程語言與開發環境:當今最流行的具有跨平臺 優勢的C語言與keil編譯軟件
0.png
C語言跨平臺優勢

不同的CPU使用不同的匯編指令,不通用,但C語言有優越的跨平臺能力
2 制作一個最簡單的單片機實驗電路
1.png 2.png 3.png
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-19.jpg

5V供電電路
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-20.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-21.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-22.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-23.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-2.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-3.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-24.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-25.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-4.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-5.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-26.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-27.jpg 計算機串口外形

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-6.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-28.jpg 連接到計算機串口

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-7.jpg

3 使用Keil軟件編寫最簡單的程序
(點亮一個發光二極管)
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-29.jpg 1、安裝Keil軟件

2、安裝漢子補丁

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-8.jpg

3、 新建工程:工程名與C文件名可隨便輸入,但不能有漢字,更不能與C

語言的關鍵字或函數名稱相同,否則會發生沖突(編譯出現很多錯誤或警告)
Keil中輸入程序代碼

#include "STC15W4K.H"

sbit P0_0 = P0^0; // sbit是位定義

void main ()

{
P0_0=0; // 點亮LED
while(1); // 讓程序停在這里

}

4 計算機程序下載到單片機

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-9.jpg

5 I/O口4種工作模式
0.png
例1.5 最精簡的流水燈實例(A)

6 流水燈實例
#include "STC15W4K.H" // 注意宏定義語句后面無分號

void delay100ms()

{
unsigned char i,j,k; // i,j,k由由軟件計算出并驗證正確。
for(i=157;i>0;i--) // 注意后面沒分號
for(j=9;j>0;j--) // 注意后面沒分號
for(k=194;k>0;k--); // 注意后面有分號
}
void port_mode() // 端口模式(準雙向、弱上拉)
{

P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00; P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;

}

void main()

{

unsigned char a;

port_mode(); // 將單片機所有端口配置為準雙向弱上拉方式

while(1)

{
P0 =~(1<<a++); 第一次運行時="" 0000="" 0001<<="" 0="0000" 0001[="" size][="" font][="" color][="" align][p="17," null,="" left]delay100ms();
[color=rgb(0," (a="=0x08)" 允許左移8次。[="" align]P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00; P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
}
void main()
{
unsigned char a;
port_mode(); // 將單片機所有端口配置為準雙向弱上拉方式 P2 = 0xFF; // P2口置弱上拉高電平輸出
while(1)
{
P0 = P2; // 循環檢測P2口輸入電平高低。
}
}
8 軟件仿真

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-10.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-11.jpg

9 硬件仿真

n 在STC程序下載軟件中首先選擇“Keil仿真設置”頁面,點擊“添加型號和頭文件到Keil 中”,在出現的目錄選擇窗口中,定位到Keil的安裝目錄(比如“C:Keil818”),“確 定”后出現“STC MCU型號添加成功”的提示信息,點“確定”。

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-12.jpg

n 保持IAP15W4K58S4實驗電路仍然與電腦串口相連,如上圖所示,先選擇仿真芯片運 行時的R/C時鐘頻率或使用外部晶振,然后點擊“將IAP15W4K58S4設置為仿真芯片”按 鈕,給電路板上電,此時就將會有程序向芯片中下載,下載完成后仿真器便制作完成 了,IAP15W4K58S4設置成仿真芯片后,要想再變成一般的單片機無需任何操作,直接 將它當作單片機下載程序使用就可以了。

n 在Keil中新建項目,出現下圖 對話框,選擇“STC MCU Database”項,然后從列表 中選擇相應的MCU型號,在此選擇“STC15W4K32S4”,點擊“OK”完成選擇。

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-13.jpg

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-30.jpg %E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-31.jpg 然后按下圖設置硬件仿真
%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-32.jpg 確認前面我們所創建的項目編譯沒有錯誤后,按“Ctrl+F5”或工具欄圖標 開始調 試,若硬件連接無誤的話,將會進入到與軟件仿真類似的調試界面,只是現在可以一步一步 執行程序并控制硬件動作了)。
有時進入調試環境可能會失敗,首先檢查仿真串口號選擇是否有誤,另外可將單片機斷電 后重新上電試試,若使用的USB轉串口,可將USB頭斷開幾秒再插上,如果仍然不行,請檢查
程序代碼是否占用了仿真調試接口(P3.0與P3.1 )。
10 延時軟件使用方法

長時間延時,函數固定格式:

void delay500ms() // 大范圍精確延時函數
{
unsigned char i,j,k; // i,j,k由軟件計算出確定。
for(i=41;i>0;i--) // 注意后面沒分號
for(j=133;j>0;j--) // 注意后面沒分號
for(k=252;k>0;k--); // 注意后面有分號
}
短暫延時,函數固定格式:
void delay (unsigned char t) // 小范圍精確延時函數
{

while(--t);

}
根據不同的延時時間修改函數中的變量 i,j,kt 即可, i,j,kt 由筆者編寫的 軟件直接計算得出

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-14.jpg

11 main()、void main()和int main()的區別

在C語言中main()和void main()區別:一個有返回值(沒聲明類型的 默認是返回值int型),一個無返回值,特別在單片機運用中由于主函數 沒有其它函數調用它,所以返回的值也就沒什么用。所以一般都寫的 void main(),這時程序中不需要return語句,如果main()函數前沒有void

(默認為int),或者寫為int main()程序中就必須有return語句,比如:

int main()

{
return 0; // 表示程序正常退出
}
在單片機程序中一般寫作void min()最方便,但在其它一些C編譯器中,寫
作void main()編譯是不能通過的,需要寫成int main(),int main()是C語言
的標準格式。
12 printf 格式化輸出函數(單片機與計算機通信)

例1.8 計算機串口助手顯示單片機內部簡單信息

#include "STC15W4K.H"

#include  // 為使用KEIL自帶的庫函數printf而加入
void printstar()
{
printf("********************************");
}
void print_message()
{
printf("hello world"); // 最簡單輸出 printf("How do you do!"); // 輸出換行符 printf("歡迎學習STC51單片機"); // 中文輸出
}
void UART_init(void)
{
// 下面代碼設置定時器1
TMOD = 0x20; // 0010 0000 定時器1工作于方式2(8位自動重裝方式) TH1 = 0xFD; // 波特率:9600 /11.0592MHZ
TL1 = 0xFD; // 波特率:9600 /11.0592MHZ TR1 = 1;
// 下面代碼設置定串口
AUXR = 0x00; // 很關鍵,使用定時器1作為波特率發生器,S1ST2=0
SCON = 0x50; // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允許接受) TI=1; // 很關鍵,使用printf函數時必須有此命令
}

void main()

{

}

UART_init(); // 初始化串口 printstar(); // 輸出************** print_message(); // 輸出說明文字 printstar(); // 輸出************** while(1) ; // 停在這里

我們把例1.8程序下載到單片機中,打開程序下載軟件的串口助手,接收緩沖區選擇文本模式,波特率

9600,打開串口,給實驗板斷電后上電,可以看到單片機發給計算機的信息如圖1-67所示,如果顯示 的個別字符出現亂碼或連續接收大量數據顯示不正常,可換用其它串口助手軟件,比如“丁丁串口調試 助手SSCOM 3.3”即可解決。實驗結果如下:

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-15.jpg

實 驗 主 板


13 學習用實驗板介紹

由于后續章節實驗很多,制作實驗電路比較耗費時間,可以購買實驗板產品。

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-16.jpg

SD卡與MP3實驗板

%E7%AC%AC1%E7%AB%A0-%E5%8D%95%E7%89%87%E6%9C%BA%E9%AB%98%E6%95%88%E5%85%A5%E9%97%A8-17.jpg


回復

使用道具 舉報

ID:154576 發表于 2017-3-21 10:47 | 顯示全部樓層
謝謝!比較適合我這樣的初學者,非常感謝!!
回復

使用道具 舉報

ID:192534 發表于 2017-5-18 08:25 | 顯示全部樓層
很適合我這樣的初學者,非常感謝!!!!
回復

使用道具 舉報

ID:280642 發表于 2018-1-30 08:54 | 顯示全部樓層
看起來很基礎非常適合初學,就感謝樓主分享,謝謝!
回復

使用道具 舉報

ID:401610 發表于 2018-9-23 16:40 | 顯示全部樓層
學習了。。
很適合我這樣的初學者,非常感謝!!!!
回復

使用道具 舉報

ID:401610 發表于 2018-9-23 17:11 | 顯示全部樓層
謝謝,學習了。。。
回復

使用道具 舉報

ID:409837 發表于 2018-10-23 14:51 | 顯示全部樓層
很好,謝謝,支持!
回復

使用道具 舉報

ID:421786 發表于 2018-11-8 11:23 | 顯示全部樓層
謝謝!比較適合我這樣的初學者,非常感謝!!
回復

使用道具 舉報

ID:427487 發表于 2018-11-16 08:17 | 顯示全部樓層
Hello World
回復

使用道具 舉報

ID:452731 發表于 2018-12-27 20:58 | 顯示全部樓層
這個單片機和STC的51還有89C51    有什么優點?
回復

使用道具 舉報

ID:420519 發表于 2019-1-21 19:35 | 顯示全部樓層
看了一會兒  長路漫漫啊
回復

使用道具 舉報

ID:452731 發表于 2019-1-27 23:58 | 顯示全部樓層
具有參考價值
回復

使用道具 舉報

ID:299054 發表于 2019-2-16 15:49 | 顯示全部樓層
謝謝樓主分享的好資料!
回復

使用道具 舉報

ID:384315 發表于 2019-7-3 23:37 來自觸屏版 | 顯示全部樓層
怎么還是有點看不懂?
回復

使用道具 舉報

ID:341311 發表于 2019-9-27 09:34 | 顯示全部樓層
謝謝樓主的分享
回復

使用道具 舉報

ID:607546 發表于 2019-10-6 14:46 | 顯示全部樓層
謝謝分享,入門學習很好,適用!
回復

使用道具 舉報

ID:253767 發表于 2020-4-23 07:30 | 顯示全部樓層
謝謝分享!!!
回復

使用道具 舉報

ID:816011 發表于 2020-8-28 11:44 | 顯示全部樓層
學習了。。 很適合我這樣的初學者,感謝
回復

使用道具 舉報

ID:847123 發表于 2020-11-22 04:28 | 顯示全部樓層
想入門,看了一會,覺得stc15f104系列8腳的單片機適合我容易玩
回復

使用道具 舉報

ID:968083 發表于 2021-9-26 05:03 | 顯示全部樓層
這樣圖文并茂的教程對新手很有幫助,感謝樓主
回復

使用道具 舉報

ID:985401 發表于 2022-1-3 22:30 | 顯示全部樓層

謝謝!比較適合我這樣的初學者,非常感謝!
回復

使用道具 舉報

ID:1024753 發表于 2022-5-19 16:40 | 顯示全部樓層
很實用,謝謝大佬分享,開始學習
回復

使用道具 舉報

ID:742312 發表于 2022-11-25 21:57 | 顯示全部樓層
很實用,謝謝大佬分享 非常感謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表