導航:首頁 > 文件教程 > 51單片機c語言教程

51單片機c語言教程

發布時間:2023-01-19 03:31:49

『壹』 求51單片機c語言教程 pdf

單片機學習方法:

網上單片機資料很多:
http://www.mcufan.com/scom.htm
http://www.51c51.com/cyuyan.htm
http://www.laogu.com/downtop.aspx
上面去搜搜看單片機的學習資料,都有入門級的
另外書店裡面入門級的書也很多,可以買一本(北航出版的比較好)

1.入門時先了解單片機的構造啊原理啊
2.如果沒有實驗板自己搭建單片機的最小平台是比較難的
網上有個叫proteus的軟體,可以用於單片機的模擬,就是說你編的程序可以在這個軟體里運行,效果挺逼真的,可免費下載.
3.單片機的編程軟體有keil或者wave,推薦前者,可以用c語言編寫也可以匯編語言,c語言比較好學,推薦入門學習c語言,(可以買c和匯編語言都有介紹的單片機的書)
4.然後用keil編寫程序在proteus上跑起來,如果你能點亮經典的單片機流水燈實驗,那你就已經入門了

另:單片機的開發板或者最小系統可以買,電路水平高的話也可以自己搭建起來,51單片機大概6塊左右一片自己搭建最小系統很便宜滴,學單片機一定要多做實驗,不過推薦還是從模擬入門,模擬成功了後面的就有方向了.

『貳』 51單片機編程,用C語言。

給你一個矩陣鍵盤的參考程序
行列掃描:通過高四位全部輸出低電平,低四位輸出高電平。當接收到的數據,低四位不全為高電平時,說明有按鍵按下,然後通過接收的數據值,判斷是哪一列有按鍵按下,然後再反過來,高四位輸出高電平,低四位輸出低電平,然後根據接收到的高四位的值判斷是那一行有按鍵按下,這樣就能夠確定是哪一個按鍵按下了。
/****************************************************************************
*函數名
:KeyDown
*函數功能
:
檢測有按鍵按下並讀取鍵值
*輸入
:

*輸出
:

****************************************************************************/
voidKeyDown(void)
{
char
a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
Delay10ms();//延時10ms進行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
GPIO_KEY=0X0F;
//測試列
switch(GPIO_KEY)
{
case(0X07):
KeyValue=0;break;
case(0X0b):
KeyValue=1;break;
case(0X0d):
KeyValue=2;break;
case(0X0e):
KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70):
KeyValue=KeyValue;break;
case(0Xb0):
KeyValue=KeyValue+4;break;
case(0Xd0):
KeyValue=KeyValue+8;break;
case(0Xe0):
KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0))//按鍵鬆手檢測
{
Delay10ms();
a++;
}
}
}
}

『叄』 51單片機C語言編程

// 51單片機C語言編程,這個時鍾+秒錶可以參考一下。

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit qingling=P1^0; //清零

sbit tiaofen=P1^1; //調分

sbit tiaoshi=P1^2; //調時

sbit sounder=P1^7; //naozhong

uint a,b;

uchar hour,minu,sec, //時鍾

hour0,minu0,sec0,//秒錶

hour1,minu1,sec1;

h1,h2,m1,m2,s1,s2,//顯示位

k,s;//狀態轉換標志

uchar code select[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*****************函數聲明***********************/

void keyscan();

void init();

void delay(uchar z);

void display(uchar,uchar,uchar);

void sounde();

/*****************主函數*************************/

void main()

{

init();

while(1)

{

while(TR1)

{

keyscan(); //掃描函數

while(s==1) //s是狀態標志,當s=0時,鬧鍾取消。s=1時,設定鬧鍾時間(也是通過調時,調分函數);

{ //s=2時,鬧鍾工作,時間與設定時刻一致時,鬧鍾響(一分鍾後自動關閉,可手動關閉)。再次切換,s=0.

keyscan(); //s狀態切換(0-》1-》2-》0)通過外部中斷1實現。

display(hour1,minu1,sec1); //鬧鍾時刻顯示

}

display(hour0,minu0,sec0);//時鍾表顯示

while(k) /*k是秒錶狀態(0-》1-》2-》0)通過外部中斷0實現。0秒錶關;1秒錶從零計時;2秒錶停,顯示計時時間*/

{

display(hour,minu,sec); //秒錶顯示

}

}

}

}

/*****************初始化函數***********************/

void init()

{

a=0;

b=0;

k=0;

s=0;

hour0=0;

minu0=0;

sec0=0;

hour=0;

minu=0;

sec=0;

hour1=0;

minu1=0;

sec1=0;

TMOD=0x11; //定時器0,1工作於方式1;賦初值

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

EX0=1; //秒錶中斷

EX1=1; //鬧鍾設定中斷

ET0=1;

ET1=1;

IT0=1; //邊沿觸發方式

IT1=1;

PX0=1;

PX1=1;

TR0=0; //初始,秒錶不工作

TR1=1; //時鍾一開始工作

}

/*****************定時器0中斷*************/

void timer0_int() interrupt 1 //秒錶

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

a++;

if(a==2)

{

a=0;

sec++;

if(sec==100)

{

sec=0; //毫秒級

minu++;

if(minu==60)

{

minu=0; //秒

hour++;

if(hour==60) //分

{

hour=0;

}

}

}

}

}

/*************外部中斷0中斷函數************/

void ex0_int() interrupt 0

{

k++;

if(k==3)

k=0;

if(k==1)

{

TR0=~TR0;

if(TR0==1)

{

hour=0;

minu=0;

sec=0;

}

}

if(k==2)

{

TR0=~TR0;

}

}

/*************外部中斷1中斷函數************/

void ex1_int() interrupt 2

{

s++;

if(s==3)

s=0;

}

/*************定時器1中斷****************/

void timer1_int() interrupt 3 //控制時鍾工作

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

if(s==2)

{

if(hour1==hour0 && minu0==minu1)

sounde();

}

b++;

if(b==20)

{

b=0;

sec0++;

if(sec0==60)

{

sec0=0;

minu0++;

if(minu0==60)

{

minu0=0;

hour0++;

if(hour0==24)

hour0=0;

}

}

}

}

/*************鍵盤掃描****************/

void keyscan()

{

if(s==1)

{

if(qingling==0)

{

delay(10);

if(qingling==0)

{

sec1=0;

minu1=0;

hour1=0;

}

}

if(tiaofen==0)

{

delay(10);

if(tiaofen==0)

{

minu1++;

if(minu1==60)

{

minu1=0;

}

while(!tiaofen);

}

}

if(tiaoshi==0)

{

hour1++;

if(hour1==24)

{

hour1=0;

}

while(!tiaoshi);

}

}

else //調整時鍾時間

{

if(qingling==0)

{

delay(10);

if(qingling==0)

{

sec0=0;

minu0=0;

hour0=0;

}

}

if(tiaofen==0)

{

delay(10);

if(tiaofen==0)

{

minu0++;

if(minu0==60)

{

minu0=0;

}

while(!tiaofen);

}

}

if(tiaoshi==0)

{

hour0++;

if(hour0==24)

{

hour0=0;

}

while(!tiaoshi);

}

}

}

/*************顯示函數****************/

void display(uchar hour,uchar minu,uchar sec)

{

h1=hour/10;

h2=hour%10;

m1=minu/10;

m2=minu%10;

s1=sec/10;

s2=sec%10;

P0=0xff;

P2=table[h1];

P0=select[7];

delay(5);

P0=0xff;

P2=table[h2];

P0=select[6];

delay(5);

P0=0xff;

P2=0x40;;

P0=select[5];

delay(5);

P0=0xff;

P2=table[m1];

P0=select[4];

delay(5);

P0=0xff;

P2=table[m2];

P0=select[3];

delay(5);

P0=0xff;

P2=0x40;

P0=select[2];

delay(5);

P0=0xff;

P2=table[s1];

P0=select[1];

delay(5);

P0=0xff;

P2=table[s2];

P0=select[0];

delay(5);

}

/*************鬧鍾函數****************/

void sounde()

{

sounder=~sounder;

}

/*************延時函數****************/

void delay(uchar z)

{

int x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

『肆』 51單片機項目教程 C語言版 高清帶書簽(吳險峰)PDF,哪裡可以下載

《51單片機項目教程C語言版 贈單片機開發板.pdf》(選擇普通下載即可!

1、找到這本資料,美中不足版就是沒有書簽權,湊合看吧;

2、手機瀏覽器網頁端登 陸 或 PC電腦端登 陸,即可查看、下載;

3、文件有時效性,若失效或下載問題,留言;

『伍』 王雲51單片機C語言教程,書本的配套資料在哪下載(雲龍51單片機視頻+常式代碼+課後作業)

到雲龍單片機官網有下載

『陸』 新概念51單片機C語言教程的作品目錄

第1篇入門篇
1.1單片機概述
1.1.1什麼是單片機
1.1.2單片機標號信息及封裝類型
1.1.3單片機能做什麼
1.1.4如何開始學習單片機
1.251單片機外部引腳介紹
1.3電平特性
1.4二進制與十六進制
1.4.1二進制
1.4.2十六進制
1.5二進制的邏輯運算
1.5.1與
1.5.2或
1.5.3非
1.5.4同或
1.5.5異或
1.6單片機的C51基礎知識介紹
1.6.1利用C語言開發單片機的優點
1.6.2C51中的基本數據類型
1.6.3C51數據類型擴充定義
1.6.4C51中常用的頭文件
1.6.5C51中的運算符
1.6.6C51中的基礎語句
1.6.7學習單片機應該掌握的主要內容
2.1Keil工程建立及常用按鈕介紹
2.1.1Keil工程的建立
2.1.2常用按鈕介紹
2.2點亮第一個發光二極體
2.3while語句
2.4for語句及簡單延時語句
2.5Keil模擬及延時語句的精確計算
2.6不帶參數函數的寫法及調用
2.7帶參數函數的寫法及調用
2.8利用C51庫函數實現流水燈
第2篇內外部資源操作篇
3.1數碼管顯示原理
3.2數碼管靜態顯示
3.3數碼管動態顯示
3.4中斷概念
3.5單片機的定時器中斷
4.1獨立鍵盤檢測
4.2矩陣鍵盤檢測
5.1模擬量與數字量概述
5.2A/D轉換原理及參數指標
5.3ADC0804工作原理及其實現方法
5.4D/A轉換原理及其參數指標
5.5DAC0832工作原理及實現方法
5.6DAC0832輸出電流轉換成電壓的方法
第6章串列口通信原理及操作流程
6.1並行與串列基本通信方式
6.2RS-232電平與TTL電平的轉換
6.3波特率與定時器初值的關系
6.451單片機串列口結構描述
6.5串列口方式1編程與實現
6.6串列口列印在調試程序中的應用
第7章通用型1602,12232,12864液晶操作方法
7.1液晶概述
7.2常用1602液晶操作實例
7.3常用12232液晶操作實例
7.4常用12864液晶操作實例
第8章I2C匯流排AT24C02晶元應用
8.1I2C匯流排概述
8.2單片機模擬I2C匯流排通信
8.3E2PROMAT24C02與單片機的通信實例
第9章基礎運放電路專題
9.1運放概述及參數介紹
9.2反相放大器
9.3同相放大器
9.4電壓跟隨器
9.5加法器
9.6差分放大器
9.7微分器
9.8積分器
第3篇提高篇
第10章定時器/計數器應用提高
10.1方式0應用
10.2方式2應用
10.3方式3應用
10.452單片機定時器2介紹
10.5計數器應用
第11章串列口應用提高
11.1方式0應用
11.2方式2和方式3應用
11.3單片機雙機通信
11.4單片機多機通信
第12章指針
12.1指針與指針變數
12.1.1內存單元、地址和指針
12.1.2指針變數的定義、賦值與引用
12.2指針變數的運算
12.3指針與數組
12.3.1指針與一維數組
12.3.2指針與多維數組
12.4指針與函數
12.4.1指針作為函數的參數
12.4.2指向函數的指針
12.4.3指針型函數
12.5指針與字元串
12.5.1字元串的表達形式
12.5.2字元指針作為函數參數
12.5.3使用字元指針與字元數組的區別
12.6指針數組與命令行參數
12.6.1指針數組的定義和使用
12.6.2指向指針的指針
12.6.3指針數組作為main()函數的命令行參數
12.7指針小結
12.7.1指針概念綜述
12.7.2指針運算小結
12.7.3等價表達式
12.8C51中指針的使用
12.8.1指針變數的定義
12.8.2指針應用
第13章STC系列51單片機功能介紹
13.1單片機空閑與掉電模式應用
13.2「看門狗」概念及其應用
13.3用軟體實現系統復位
13.4內部擴展RAM的應用
13.5擴展P4口的應用
13.6內部E2PROM的應用
13.7STC89系列單片機內部A/D應用
13.8STC12系列單片機內部A/D應用
13.9STC12系列單片機的PCA/PWM介紹
13.10STC12系列單片機的SPI介面介紹
13.11STC12系列單片機的「576MHz」超速運行
第4篇實戰篇
第14章利用51單片機的定時器設計一個時鍾
14.1如何從矩陣鍵盤中分解出獨立按鍵
14.2原理圖分析
14.3實例講解
第15章使用DS12C887時鍾晶元設計高精度時鍾
15.1時鍾晶元概述
15.2DS12C887時鍾晶元介紹
15.3如何用TX-1C實驗板擴展本實驗
15.4原理圖分析
15.5實例講解
第16章使用DS18B20溫度感測器設計溫控系統
16.1溫度感測器概述
16.2DS18B20溫度感測器介紹
16.3實例講解
第17章太陽能充/放電控制器
17.1控制器原理圖分析
17.2控制器板上元件介紹
17.3實例講解
第18章VC、VB(MSCOMM控制項)與單片機通信實現溫度顯示
18.1VCMSCOMM控制項與單片機通信實現溫度顯示
18.2VBMSCOMM控制項與單片機通信實現溫度顯示
第5篇拓展篇
第19章使用Protell99繪制電路圖全過程
19.1繪制電路板概述
19.2建立工程
19.3製作元件庫
19.4添加封裝及製作PCB封裝庫
19.5錯誤檢查及生成PCB
19.6布線電氣特性設置
19.7自動布線和手動布線
第20章ISD400x系列語音晶元應用
20.1ISD400x系列語音晶元介紹
20.2ISD400x系列語音晶元操作規則
20.3ISD400x系列語音晶元應用實現
第21章電機專題
21.1直流電機原理及應用
21.2步進電機原理及應用
21.3舵機原理及其應用
第22章常用元器件介紹
22.1二極體
22.2電容
22.3場效應管
22.4光耦
22.5蜂鳴器
22.6繼電器
22.7自恢復保險
22.8瞬態電壓抑制器
22.9晶閘管(可控硅)
22.10電荷泵
第23章直流穩壓電源專題
23.1整流電路
23.2濾波電路
23.3穩壓電路
23.4集成穩壓模塊的使用
23.5串聯開關型穩壓電源
第24章運放擴展專題
24.1簡單低通濾波器
24.2「電流-電壓」轉換電路
24.3光電放大器
24.4精密電流源
24.5可調參考電壓源
24.6復位穩定放大器
24.7模擬乘法器
24.8全波整流器和平均值濾波器
24.9正弦波振盪器
24.10三角波發生器
24.11自動跟蹤對稱電源
24.12可調實驗電源
24.13運放相關術語表
附錄A天祥電子開發實驗板簡介
A.1TX-1C51單片機開發板(配套詳細視頻教程)
A.2AVR單片機開發板(配套詳細視頻教程)
A.3PIC單片機開發板(配套詳細視頻教程)
A.4J-Link全功能ARM模擬器
A.5三星S3C44B0ARM7入門級開發板
A.6三星S3C44B0ARM7提高級開發板
A.7TX-51STAR51單片機開發板(配套詳細視頻教程)
參考文獻

『柒』 求51單片機蜂鳴器播放音樂的教程 C語言

這是我學校電子設計時做的,可以彈琴,也有幾首歌在裡面。。你應該看得懂#include <reg52.h> #define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit BEEP=P2^0; //喇叭輸出腳uchar th0_f; //在中斷中裝載的T0的值高8位
uchar tl0_f; //在中斷中裝載的T0的值低8位
uchar key;/*------------------------------------------------
函數聲明
------------------------------------------------*/
uchar keyscan(void);//鍵盤掃描程序
void delay(uint i); //延時子程序/*-------- T0的值,及輸出頻率對照表 --------------*/
uchar code freq[36*2]={
0xA9,0xEF, //0x3F,0XEE,//00220HZ ,1 //0
0x93,0xF0, //0X3D,0XEF,//00233HZ ,1#
0x73,0xF1, //0X30,0XF0,//00247HZ ,2
0x49,0xF2, //0X18,0XF1,//00262HZ ,2#
0x07,0xF3, //0XE6,0XF1,//00277HZ ,3
0xC8,0xF3, //0XB7,0XF2,//00294HZ ,4
0x73,0xF4, //0X71,0XF3,//00311HZ ,4#
0x1E,0xF5, //0X2A,0XF4,//00330HZ ,5
0xB6,0xF5, //0XCF,0XF4,//00349HZ ,5#
0x4C,0xF6, //0X72,0XF5,//00370HZ ,6
0xD7,0xF6, //0X09,0XF6,//00392HZ ,6#
0x5A,0xF7, //0X97,0XF6,//00415HZ ,7
0xD8,0xF7, //0X20,0XF7,//00440HZ 1 //12
0x4D,0xF8, //0X9F,0XF7,//00466HZ 1# //13
0xBD,0xF8, //0X18,0XF8,//00494HZ 2 //14
0x24,0xF9, //0X88,0XF8,//00523HZ 2# //15
0x87,0xF9, //0XF3,0XF8,//00554HZ 3 //16
0xE4,0xF9, //0X59,0XF9,//00587HZ 4 //17
0x3D,0xFA, //0X05,0XFA,//00622HZ 4# //18
0x90,0xFA, //0X13,0XFA,//00659HZ 5 //19
0xDE,0xFA, //0X66,0XFA,//00698HZ 5# //20
0x29,0xFB, //0XB9,0XFA,//00740HZ 6 //21
0x6F,0xFB, //0X05,0XFB,//00784HZ 6# //22
0xB1,0xFB, //0X4D,0XFB,//00831HZ 7 //23
0xEF,0xFB, //0X90,0XFB,//00880HZ `1
0x2A,0xFC, //0XD0,0XFB,//00932HZ `1#
0x62,0xFC, //0X0C,0XFC,//00988HZ `2
0x95,0xFC, //0X44,0XFC,//01046HZ `2#
0xC7,0xFC, //0X7B,0XFC,//01109HZ `3
0xF6,0xFC, //0XAD,0XFC,//01175HZ `4
0x22,0xFD, //0XDD,0XFC,//01244HZ `4#
0x4B,0xFD, //0X0A,0XFD,//01318HZ `5
0x73,0xFD, //0X35,0XFD,//01397HZ `5#
0x98,0xFD, //0X5D,0XFD,//01480HZ `6
0xBB,0xFD, //0X83,0XFD,//01568HZ `6#
0xDC,0xFD, //0XA6,0XFD,//01661HZ `7 //35
};//定時中斷0,用於產生唱歌頻率
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f; //調入預定時值
BEEP=~BEEP; //取反音樂輸出IO
}//音樂符號串解釋函數
//入口:要解釋的音樂符號串,輸出的音調串,輸出的時長串
changedata(uchar *song,uchar *diao,uchar *jie)
{
uchar i,i1,j;
char gaodi; //高低+/-12音階
uchar banyin;//有沒有半個升音階
uchar yinchang;//音長
uchar code jie7[8]={0,12,14,16,17,19,21,23}; //C調的7個值
*diao=*song;
for(i=0,i1=0;;)
{
gaodi=0; //高低=0
banyin=0;//半音=0
yinchang=4;//音長1拍
if((*(song+i)=='|') || (*(song+i)==' ')) i++;
//拍子間隔和一個空格過濾
switch(*(song+i))
{
case ',': gaodi=-12;i++;//低音
break;
case '`': gaodi=12;i++; //高音
break;
}
if(*(song+i)==0) //遇到0結束
{
*(diao+i1)=0; //加入結束標志0
*(jie+i1)=0;
return;
}
j=*(song+i)-0x30; i++; //取出基準音
j=jie7[j]+gaodi; //加上高低音
yinc: switch(*(song+i))
{
case '#': //有半音j加一個音階
i++;j++;
goto yinc;
case '-': //有一個音節加長
yinchang+=4;
i++;
goto yinc;
case '_': //有一個音節縮短
yinchang/=2;
i++;
goto yinc;
case '.': //有一個加半拍
yinchang=yinchang+yinchang/2;
i++;
goto yinc;
}
*(diao+i1)=j; //記錄音符
*(jie+i1)=yinchang; //記錄音長
i1++;
}
}//奏樂函數
//入口:要演奏的音樂符號串
void play(uchar *songdata)
{
uchar i,c,j=0;
uint n;
uchar diaodata[48]; //音調緩沖
uchar jiedata[48]; //音長緩沖
changedata(songdata,diaodata,jiedata); //解釋音樂符號串
TR0=1;
for(i=0;diaodata[i]!=0;i++) //逐個符號演奏
{
tl0_f=freq[diaodata[i]*2]; //取出對應的定時值送給T0
th0_f=freq[diaodata[i]*2+1];
for(c=0;c<jiedata[i];c++) //按照音長延時
{ key = keyscan();
for(n=0;n<29500;n++); // 29500
if(key != 0xff)//((!K1)||(!K2)||(!K3)||(!K4))//發現按鍵,立即退出播放
{
TR0=0;
return;
}
}
TR0=0;
for(n=0;n<460;n++); //460音符間延時
TR0=1;
}
TR0=0;
}//一分錢
uchar code yifenqian[]={
"5`1|6_`1_5|3_5_2_3_|5-|"
"3_5_6_`1_|5_6_5_3_|1.3__|2-|"
"3_2_1_2_|3-|6_5_3_5_|6-|"
"5_`1_6_5_|3_5_2|5_2_3_2_|1-|"
}; //世上只有媽媽好
uchar code mamahao[]={
"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|"
"2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"
};
//找朋友
uchar code zhaopengyou[]={ "5_6_5_6_|5_6_5|5_`1_7_6_|5 3|"
"5_5_3_4_|5_5_3|1_4_3_2_|1_2_1|"
};
//茉莉花
uchar code molihua[]={"33_5_6_`1_`1_6_|55_6_5-|33_5_6_`1_`1_6_|55_6_5-|"
"5553_5_|665-|32_3_53_2_|11_2_1|"
//"3_2_1_3_2.3_|56_`1_5-|23_5_2_3_1_,6_|,5-,61|"
//"2.3_1_2-1_,6_|,5--"
};
//新年好
uchar code xinnianhao[]={
"1_1_1 ,5|3_3_3 1|1_3_5 5|4_3_2-|"
"2_3_4-|3_2_3 1|1_3_2 ,5|,7_2_1-|"
};
//小星星
uchar code xingxing[]={
"1155|665-|4433|221-|"
"5544|332-|5544|332-|"
"1155|665-|4433|221-|"
};
//外婆的澎湖灣
uchar code waipodephw[]={
"3_5_5_5_6_`1_6_5_|`1_`1_`1_6_5-|"
"`3_`3_`3_`3_`4_`3_`2_`1_|`2_`2_`2_`3_`2-|"
"`3_`3_`3_`3_`4_`3_`2_`1_|6_`1_`1_6_5-|"
};
}

『捌』 學習單片機C語言,哪些書比較好

先針對性回答一下你的問題:
1、單片機學習需要的知識,單片機原理,編程技術,電子電路。
2、學無止境,當然要繼續學習,C語言對於單片機非常重要,多數人都是用c,包括我。如果從匯編開始我不知道要經過多少努力你才能開始做開發。
3、VB可以做電腦程序開發,可以做成軟體和單片機進行通訊,可以用電腦和單片機系統組成一個應用項目。一切知識都是有用的,看你的愛好和你的時間決定吧。
4、單片機和數學基本上沒有太直接聯系,不要被別人嚇住了。
另外再加一條單片機種類選型的看法
5、初學還是建議學習51單片機,因為51單片機容易上手,學習資料也多。你說的指令集51的算是少的了。如果使用匯編的話就要學會每條匯編指令。而現在多數單片機工程師都是選擇c語言進行設計。而且c語言的程序除了單片機設置的部分,其他功能運算部分在每種單片機上基本都通用,這叫移植性好,而匯編語言則是每種類型的單片機一種指令集,單片機程序移植困難。
最後再說一下如何具體學習單片機:
很多想學單片機的人問我的第一句話就是怎樣才能學好單片機?對於這個問題我今天就我自己是如何開始學單片機,如何開始上手,如何開始熟練這個過程給大家講講。
先說說單片機,一般我們現在用的比較多的的MCS-51的單片機,它的資料比較多,用的人也很多,市場也很大。就我個人的體會怎麼樣才能更快的學會單片機這門課。單片機這門課是一項非常重視動手實踐的科目,不能總是看書,但是學習它首先必須得看書,因為從書中你需要大概了解一下,單片機的各個功能寄存器,而說明白點,我們使用單片機就是用軟體去控制單片機的各個功能寄存器,再說明白點,就是控制單片機那些管腳的電平什麼時候輸出高,什麼時候輸出低。由這些高低電平的變化來控制你的系統板,實現我們需要的各個功能。至於看書,只需大概了解單片機各管腳都是干什麼的?能實現什麼樣的功能?第一次,第二次你可能看不明白,但這不要緊,因為還缺少實際的感觀認識。所以我總是說,學單片機看書看兩三天的就夠了,看小說你一天能看五六本,看單片機你兩三天看兩三遍就夠了,可以不用仔細的看。推薦一本書,就這一本就足夠,書名是《新編MCS-51單片機應用設計》,是哈爾濱工業大學出版社出的的,作者是張毅剛。大概了解一下書上的內容,然後實踐,這是非常關鍵的,如果說學單片機你不實踐那是不可能學會的,關於實踐有兩種方法你可以選擇,一種方法:你自己花錢買一塊單片機的學習板,不要求功能太全的,對於初學者來說你買功能非常多的那種板子,上面有很多東西你這輩子都用不著,我建議有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD或DA(原理一樣)、液晶、蜂鳴器,這就差不多了。如果上面我提到的這些,你能熟練應用,那可以說對於單片機方面的硬體你已經入門了,剩下的就是自己練習設計電路,不斷的積累經驗。只要過了第一關,後面的路就好走多了,萬事開頭難,大家可能都聽過。方法二:你身邊如果有單片機方面的高手,向他求助,讓他幫你搭個簡單的最小系統板。對於高手來說,做個單片機的最小系統板只需要一分鍾的時間,而對於初學者可就難多了,因為只有對硬體了解了,才能熟練運用。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你最好是自己買上一塊,畢竟自己有一塊要方便的多,以後做單片機類的小實驗時都能用得上,還省事。
有了單片機學習板之後你就要多練習,最好是自己有台電腦,一天少看電影,少打游戲,把學習板和電腦連好,打開調試軟體坐在電腦前,先學會怎麼用調試軟體,然後從最簡單的流水燈實驗做起,等你能讓那八個流水燈按照你的意願隨意流動時你已經入門了,你會發現單片機是多麼迷人的東西

『玖』 誰看過,51單片機C語言教程——入門、提高、開發、擴展全攻略.這本書郭天祥編的這書怎麼樣,適合初學者嗎

這本書蠻不錯的,我現在正在學51,用的也是這本書,初學者使用這本書是再好不過了。這本是之所以叫「C語言」教程,在於書內有怎樣教你使用C語言編程。我在學單片機之前也沒學過C語言,但現在已經可以自主編簡單的程序,編程基礎幾乎都是從這本書上學來的。這本書所講的內容很通俗,一看就能明白。書中有對51單片機內部結構最詳細的介紹,當然也包括很多外圍晶元的使用介紹,像74HC573鎖存器,1602液晶12864液晶,DS12B887時鍾晶元等等,還有很多。學單片機可以不必學匯編語言,匯編里的指令太難懂,也不好操作,我就完全不懂匯編,建議初學者直接使用C語言入門,這學起來更快一些,少走彎路,這本書全國的標準定價是69元,總共545頁,如果直接買書的話各大新華書店都有賣的,書配套一盤光碟,裡面有郭天祥的「十天征服51單片機」視頻教程,有大量的程序源代碼。視頻結合教材,51單片機可以很快入門

閱讀全文

與51單片機c語言教程相關的資料

熱點內容
java將數字轉換成字母 瀏覽:854
c盤中的哪些是系統文件夾 瀏覽:668
分布式服務如何跨庫統計數據 瀏覽:829
力控轉發數據客戶端模式如何建立 瀏覽:200
怎麼樣讓自己的網站不被別人看到 瀏覽:711
編程擴展效果如何 瀏覽:335
榮耀暢玩手環同步qq 瀏覽:475
怎麼向sql中添加資料庫 瀏覽:596
錄歌失敗重啟app什麼意思 瀏覽:522
壓縮文件包怎麼在微信發送 瀏覽:432
mysql資料庫怎麼插入時間值 瀏覽:191
微信視頻不能轉發朋友圈 瀏覽:596
影視後期的app有哪些 瀏覽:956
電子保單數據出錯什麼意思 瀏覽:368
如何以文件下載音樂 瀏覽:438
計算機網路章節練習 瀏覽:999
單片機的外部中斷程序 瀏覽:48
表格批量更名找不到指定文件 瀏覽:869
js的elseif 瀏覽:584
3dmaxvray視頻教程 瀏覽:905

友情鏈接