久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 49935|回復(fù): 22
收起左側(cè)

第1章 單片機(jī)高效入門

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


1章 單片機(jī)高效入門

1 認(rèn)識(shí)單片機(jī)

2 制作一個(gè)最簡(jiǎn)單的單片機(jī)實(shí)驗(yàn)電路

3 使用Keil軟件編寫最簡(jiǎn)單的程序(點(diǎn)亮一個(gè)發(fā)光二極管)

4 計(jì)算機(jī)程序下載到單片機(jī)

5 I/O口4種工作模式

6 流水燈實(shí)例

7 I/O口輸入測(cè)試

8 軟件仿真

9 硬件仿真

10 延時(shí)軟件使用方法

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

12 printf 格式化輸出函數(shù)(單片機(jī)與計(jì)算機(jī)通信)

13 學(xué)習(xí)用實(shí)驗(yàn)板介紹


1 認(rèn)識(shí)單片機(jī)

%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

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

51單片機(jī)主要發(fā)展歷程:

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

本書主講單片機(jī)型號(hào):STC15W系列中的典型型 號(hào):IAP15W4K58S4 ,輔助性的介紹STC15F2K60S2與STC15W408S

編程語(yǔ)言與開(kāi)發(fā)環(huán)境:當(dāng)今最流行的具有跨平臺(tái) 優(yōu)勢(shì)的C語(yǔ)言與keil編譯軟件
0.png
C語(yǔ)言跨平臺(tái)優(yōu)勢(shì)

不同的CPU使用不同的匯編指令,不通用,但C語(yǔ)言有優(yōu)越的跨平臺(tái)能力
2 制作一個(gè)最簡(jiǎn)單的單片機(jī)實(shí)驗(yàn)電路
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 計(jì)算機(jī)串口外形

%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 連接到計(jì)算機(jī)串口

%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軟件編寫最簡(jiǎn)單的程序
(點(diǎn)亮一個(gè)發(fā)光二極管)
%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、安裝漢子補(bǔ)丁

%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

語(yǔ)言的關(guān)鍵字或函數(shù)名稱相同,否則會(huì)發(fā)生沖突(編譯出現(xiàn)很多錯(cuò)誤或警告)
Keil中輸入程序代碼

#include "STC15W4K.H"

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

void main ()

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

}

4 計(jì)算機(jī)程序下載到單片機(jī)

%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 最精簡(jiǎn)的流水燈實(shí)例(A)

6 流水燈實(shí)例
#include "STC15W4K.H" // 注意宏定義語(yǔ)句后面無(wú)分號(hào)

void delay100ms()

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

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(); // 將單片機(jī)所有端口配置為準(zhǔn)雙向弱上拉方式

while(1)

{
P0 =~(1<<a++); 第一次運(yùn)行時(shí)="" 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(); // 將單片機(jī)所有端口配置為準(zhǔn)雙向弱上拉方式 P2 = 0xFF; // P2口置弱上拉高電平輸出
while(1)
{
P0 = P2; // 循環(huán)檢測(cè)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仿真設(shè)置”頁(yè)面,點(diǎn)擊“添加型號(hào)和頭文件到Keil 中”,在出現(xiàn)的目錄選擇窗口中,定位到Keil的安裝目錄(比如“C:Keil818”),“確 定”后出現(xiàn)“STC MCU型號(hào)添加成功”的提示信息,點(diǎn)“確定”。

%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實(shí)驗(yàn)電路仍然與電腦串口相連,如上圖所示,先選擇仿真芯片運(yùn) 行時(shí)的R/C時(shí)鐘頻率或使用外部晶振,然后點(diǎn)擊“將IAP15W4K58S4設(shè)置為仿真芯片”按 鈕,給電路板上電,此時(shí)就將會(huì)有程序向芯片中下載,下載完成后仿真器便制作完成 了,IAP15W4K58S4設(shè)置成仿真芯片后,要想再變成一般的單片機(jī)無(wú)需任何操作,直接 將它當(dāng)作單片機(jī)下載程序使用就可以了。

n 在Keil中新建項(xiàng)目,出現(xiàn)下圖 對(duì)話框,選擇“STC MCU Database”項(xiàng),然后從列表 中選擇相應(yīng)的MCU型號(hào),在此選擇“STC15W4K32S4”,點(diǎn)擊“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 然后按下圖設(shè)置硬件仿真
%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 確認(rèn)前面我們所創(chuàng)建的項(xiàng)目編譯沒(méi)有錯(cuò)誤后,按“Ctrl+F5”或工具欄圖標(biāo) 開(kāi)始調(diào) 試,若硬件連接無(wú)誤的話,將會(huì)進(jìn)入到與軟件仿真類似的調(diào)試界面,只是現(xiàn)在可以一步一步 執(zhí)行程序并控制硬件動(dòng)作了)。
有時(shí)進(jìn)入調(diào)試環(huán)境可能會(huì)失敗,首先檢查仿真串口號(hào)選擇是否有誤,另外可將單片機(jī)斷電 后重新上電試試,若使用的USB轉(zhuǎn)串口,可將USB頭斷開(kāi)幾秒再插上,如果仍然不行,請(qǐng)檢查
程序代碼是否占用了仿真調(diào)試接口(P3.0與P3.1 )。
10 延時(shí)軟件使用方法

長(zhǎng)時(shí)間延時(shí),函數(shù)固定格式:

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

while(--t);

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

%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()的區(qū)別

在C語(yǔ)言中main()和void main()區(qū)別:一個(gè)有返回值(沒(méi)聲明類型的 默認(rèn)是返回值int型),一個(gè)無(wú)返回值,特別在單片機(jī)運(yùn)用中由于主函數(shù) 沒(méi)有其它函數(shù)調(diào)用它,所以返回的值也就沒(méi)什么用。所以一般都寫的 void main(),這時(shí)程序中不需要return語(yǔ)句,如果main()函數(shù)前沒(méi)有void

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

int main()

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

例1.8 計(jì)算機(jī)串口助手顯示單片機(jī)內(nèi)部簡(jiǎn)單信息

#include "STC15W4K.H"

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

void main()

{

}

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

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

9600,打開(kāi)串口,給實(shí)驗(yàn)板斷電后上電,可以看到單片機(jī)發(fā)給計(jì)算機(jī)的信息如圖1-67所示,如果顯示 的個(gè)別字符出現(xiàn)亂碼或連續(xù)接收大量數(shù)據(jù)顯示不正常,可換用其它串口助手軟件,比如“丁丁串口調(diào)試 助手SSCOM 3.3”即可解決。實(shí)驗(yàn)結(jié)果如下:

%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

實(shí) 驗(yàn) 主 板


13 學(xué)習(xí)用實(shí)驗(yàn)板介紹

由于后續(xù)章節(jié)實(shí)驗(yàn)很多,制作實(shí)驗(yàn)電路比較耗費(fèi)時(shí)間,可以購(gòu)買實(shí)驗(yàn)板產(chǎn)品。

%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實(shí)驗(yàn)板

%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


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:280642 發(fā)表于 2018-1-30 08:54 | 顯示全部樓層
看起來(lái)很基礎(chǔ)非常適合初學(xué),就感謝樓主分享,謝謝!
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:401610 發(fā)表于 2018-9-23 17:11 | 顯示全部樓層
謝謝,學(xué)習(xí)了。。。
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:452731 發(fā)表于 2018-12-27 20:58 | 顯示全部樓層
這個(gè)單片機(jī)和STC的51還有89C51    有什么優(yōu)點(diǎn)?
回復(fù)

使用道具 舉報(bào)

ID:420519 發(fā)表于 2019-1-21 19:35 | 顯示全部樓層
看了一會(huì)兒  長(zhǎng)路漫漫啊
回復(fù)

使用道具 舉報(bào)

ID:452731 發(fā)表于 2019-1-27 23:58 | 顯示全部樓層
具有參考價(jià)值
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:384315 發(fā)表于 2019-7-3 23:37 來(lái)自觸屏版 | 顯示全部樓層
怎么還是有點(diǎn)看不懂?
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:607546 發(fā)表于 2019-10-6 14:46 | 顯示全部樓層
謝謝分享,入門學(xué)習(xí)很好,適用!
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

謝謝!比較適合我這樣的初學(xué)者,非常感謝!
回復(fù)

使用道具 舉報(bào)

ID:1024753 發(fā)表于 2022-5-19 16:40 | 顯示全部樓層
很實(shí)用,謝謝大佬分享,開(kāi)始學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久 | 国产剧情一区 | www精品美女久久久tv | 国内精品一区二区三区 | 神马久久av | 美女视频黄色的 | 麻豆av一区二区三区久久 | 成人国产精品视频 | 亚洲精品一区二区 | 精品麻豆剧传媒av国产九九九 | 欧美日韩在线视频一区二区 | 久久亚洲精品视频 | 很很干很很日 | 国产精品久久 | 国产永久免费 | 免费看a| 美女露尿口视频 | 三级成人在线 | 久久国产精品久久久久久 | 欧美一区二区大片 | 男女免费网站 | 国产精品久久 | 9999国产精品欧美久久久久久 | 久热中文字幕 | 色偷偷噜噜噜亚洲男人 | 亚洲 91| 亚洲精品一区二区三区中文字幕 | 日本爱爱视频 | 国产成人免费视频网站高清观看视频 | 久久美女网 | 国产伦精品一区二区三区四区视频 | 亚洲精品一区二区三区在线观看 | 日韩成人免费视频 | 男女免费网站 | 欧美精品一区二区三区在线 | 777毛片| 久久久性 | 日韩一区av | 亚洲高清在线观看 | 一区二区小视频 | 欧美亚洲激情 |