《單片機(jī)技術(shù)與應(yīng)用》 課件 項(xiàng)目一 智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2_第1頁(yè)
《單片機(jī)技術(shù)與應(yīng)用》 課件 項(xiàng)目一 智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2_第2頁(yè)
《單片機(jī)技術(shù)與應(yīng)用》 課件 項(xiàng)目一 智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2_第3頁(yè)
《單片機(jī)技術(shù)與應(yīng)用》 課件 項(xiàng)目一 智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2_第4頁(yè)
《單片機(jī)技術(shù)與應(yīng)用》 課件 項(xiàng)目一 智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

任務(wù)2指定效果指示燈設(shè)計(jì)與制作單片機(jī)技術(shù)與應(yīng)用項(xiàng)目一智能車間指示系統(tǒng)設(shè)計(jì)與制作任務(wù)2指定效果指示燈設(shè)計(jì)與制作三諾生物傳感有限公司【基礎(chǔ)任務(wù)要求】模擬合作企業(yè)智能車間指示燈控制,利用單片機(jī)控制發(fā)光二極管從兩邊往中間依次點(diǎn)亮。任務(wù)2指定效果指示燈設(shè)計(jì)與制作任務(wù)實(shí)現(xiàn)四步驟繪制硬件電路圖搭接硬件電路硬件設(shè)計(jì)調(diào)試硬件電路調(diào)試控制程序功能調(diào)試與實(shí)現(xiàn)繪制程序流程圖指定效果指示燈編程方法程序設(shè)計(jì)01020304重點(diǎn)、難點(diǎn)難點(diǎn)繪制系統(tǒng)框圖元器件選型分配資源方案設(shè)計(jì)對(duì)接單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程任務(wù)2指定效果指示燈設(shè)計(jì)與制作STC89C52單片機(jī)時(shí)鐘電路復(fù)位電路電源電路發(fā)光二極管電路系統(tǒng)框圖硬件設(shè)計(jì)-繪電路

請(qǐng)問(wèn)如何連接單片機(jī)與8個(gè)發(fā)光二極管?硬件設(shè)計(jì)-繪電路電路繪制規(guī)范:用統(tǒng)一規(guī)定的元件符號(hào)盡量避免導(dǎo)線的交叉導(dǎo)線要求橫平豎直設(shè)置元器件參數(shù)元件放在編輯區(qū)內(nèi)細(xì)致規(guī)范嚴(yán)謹(jǐn)小錦囊任務(wù)名:指定效果指示燈設(shè)計(jì)與制作元件名稱圖片型號(hào)數(shù)量Proteus中的名稱單片機(jī)芯片STC89C521用AT89C51代替晶振12MHZ1CRYSTAL電容22pF2CAP電解電容22μf/16V1CAP-ELEC電阻1KΩ1RES電阻50Ω8RES發(fā)光二極管8LED-RED

如何編程實(shí)現(xiàn)發(fā)光二極管從兩邊往中間依次點(diǎn)亮?

程序設(shè)計(jì)1重點(diǎn)、難點(diǎn)控制程序01111110101111011101101111100111P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7控制程序指定效果流水燈程序程序代碼編寫規(guī)范:字母大小寫一致代碼必須在英文狀態(tài)下輸入不要遺漏分號(hào),括號(hào)成對(duì)出現(xiàn);變量名的命名規(guī)范;運(yùn)算符規(guī)范;細(xì)致嚴(yán)謹(jǐn)規(guī)范【知識(shí)鏈接】1.數(shù)據(jù)類型什么是數(shù)據(jù)類型?身高:175體重:61顯示數(shù)據(jù):0xfe,0xfd,0xfb…0x7fπ=3.1415926半徑:r=2.5海拔:-100

室外溫度:-10.5底下車庫(kù):-3延時(shí)參數(shù):20000姓名性別出生日期工作單位職務(wù)住址身高體重血型張三11993-05-01學(xué)校學(xué)生宿舍21.87135.5B整型浮點(diǎn)型位類型1表示男,0表示女字符型字符型字符型可變不變不變不變可變可變可變可變可變思考:KeilC51編譯器所支持的數(shù)據(jù)類型【知識(shí)鏈接】1.數(shù)據(jù)類型#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}(1)位類型bit

它的值是一個(gè)二進(jìn)制位,只有0或1。利用它可定義一個(gè)位類型變量,但不能定義位指針,也不能定義位數(shù)組。例如:bitm;【知識(shí)鏈接】1.數(shù)據(jù)類型(2)特殊功能寄存器sfr

MCS-51系列單片機(jī)內(nèi)部定義了21個(gè)特殊功能寄存器,它們不連續(xù)地分布在片內(nèi)RAM的高128字節(jié)中,地址為80H~FFH。

sfr也是單片機(jī)C語(yǔ)言擴(kuò)展的一種數(shù)據(jù)類型,占用1B,值域?yàn)?~255。

利用它可以訪問(wèn)單片機(jī)內(nèi)部的所有8位特殊功能寄存器。用sfr定義特殊功能寄存器地址的格式為:

sfr

特殊功能寄存器名=特殊功能寄存器地址;特殊功能寄存器在reg51.h這個(gè)頭文件里面都幫我們定義好了,所以平時(shí)我們就不要自己去定義寄存器的名字?!局R(shí)鏈接】1.數(shù)據(jù)類型(3)可尋址位sbit

sbit類型也是單片機(jī)C語(yǔ)言的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪問(wèn)芯片內(nèi)部RAM中的可尋址位或特殊功能寄存器中的可尋址位。

sbit定義的格式如下:

sbit

位名稱=位地址;在給某個(gè)引腳取名的時(shí)候經(jīng)常會(huì)用到。例如:

sbitled=P1^0;//led表示P1中的P1.0引腳【知識(shí)鏈接】1.數(shù)據(jù)類型voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}#include<reg51.h>sbitled=P1^0;voiddelay(unsignedchari);voidmain(){while(1){led=0;delay(10);led=1;delay(10);}}【知識(shí)鏈接】2.變量姓名性別出生日期工作單位職務(wù)住址身高體重血型可變不變不變不變可變可變可變可變可變性別出生日期血型不變姓名工作單位職務(wù)住址身高體重可變常量變量變量是在程序運(yùn)行過(guò)程中,其值可以被改變的量。30.8℃變量相當(dāng)于一個(gè)存放數(shù)據(jù)的容器【知識(shí)鏈接】2.變量#include<stdio.h>intmain(){

inta,b,c; a=10; b=20; c=a+b;

printf("%d",c);return0;}程序例中的a、b、c都是變量。什么是變量呢?

a

10b

20c

30變量——盒子,可保存數(shù)據(jù)盒子的名字——變量名a、b、c盒子里的內(nèi)容——變量的值10、20、30同一個(gè)盒子可先后存放不同的東西,變量的值也可在程序運(yùn)行過(guò)程中發(fā)生變化,故稱變量。變量實(shí)際是內(nèi)存中的一塊存儲(chǔ)區(qū)域,存儲(chǔ)區(qū)域的名稱就是變量名,所存儲(chǔ)的內(nèi)容就是變量的值?!局R(shí)鏈接】2.變量變量的類型變量名變量的值變量類型不同名字不同內(nèi)容不同a 合法$sum 非法Student_name

合法_temperature 合法int 非法2names 非法測(cè)一測(cè)合法非法合法合法非法非法①有效字符:只能由大寫字母、小寫字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。②C語(yǔ)言的關(guān)鍵字不能用作標(biāo)識(shí)符名。變量命名遵循標(biāo)識(shí)符命名規(guī)則標(biāo)識(shí)符名很簡(jiǎn)單,字母數(shù)字下劃線。字母區(qū)分大小寫,非數(shù)打頭非關(guān)鍵??谠E【知識(shí)鏈接】2.變量③標(biāo)識(shí)符命名的軟件工程要求──見名知意

所謂“見名知義”是指,通過(guò)標(biāo)識(shí)符名就知道標(biāo)識(shí)符所代表的含義。方法:英文單詞(或縮寫),或漢語(yǔ)拼音字頭。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。變量命名遵循標(biāo)識(shí)符命名規(guī)則盡量做到

見名知意細(xì)致規(guī)范嚴(yán)謹(jǐn)小錦囊【知識(shí)鏈接】2.變量#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}unsignedinti,count=1000;//定義整型變量charled=0x7f;

//定義字符型變量bitflag=0;//定義位變量變量必須先定義、后使用。變量定義格式:[存儲(chǔ)類型]數(shù)據(jù)類型變量名[,變量名2…];【知識(shí)鏈接】2.變量

內(nèi)部變量(局部變量):在函數(shù)內(nèi)部定義的變量。

作用域僅限于函數(shù)內(nèi)。

不同函數(shù)的內(nèi)部變量是可以重名的。#include<reg51.h>#defineLEDP1#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}進(jìn)行變量定義時(shí),應(yīng)注意以下幾點(diǎn):1.允許在一個(gè)數(shù)據(jù)類型標(biāo)識(shí)符后,說(shuō)明多個(gè)相同類型的變量,各變量名之間用逗號(hào)隔開;2.數(shù)據(jù)類型標(biāo)識(shí)符與變量名之間至少用一個(gè)空格隔開;3.最后一個(gè)變量名必須以分號(hào)“;”結(jié)尾;4.變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分;5.在同一個(gè)程序中變量不允許重復(fù)定義為不同類型。例如:unsignedint

x,y,z;inta,b,x;【知識(shí)鏈接】2.變量變量的初始化在定義變量的同時(shí)可以給變量賦初值,稱為變量的初始化。變量初始化格式:數(shù)據(jù)類型變量名[=初值][,變量名2[=初值2]……];

例如:inti=4,j,s=5;

floatx=0,y=0,z=0;charch='a';longinta=1000,b;【知識(shí)鏈接】2.變量姓名性別出生日期工作單位職務(wù)住址身高體重血型張三11993-05-01學(xué)校學(xué)生宿舍21.87135.5B整型浮點(diǎn)型位類型1表示男,0表示女字符型字符型字符型可變不變不變不變可變可變可變可變可變【知識(shí)鏈接】3.常量姓名性別出生日期工作單位職務(wù)住址身高體重血型可變不變不變不變不變可變可變可變可變性別出生日期血型不變姓名工作單位職務(wù)住址身高體重可變常量變量【知識(shí)鏈接】3.常量常量是指在程序運(yùn)行過(guò)程中,其值不能被改變的量。常量整型常量實(shí)型常量字符型常量字符串常量【知識(shí)鏈接】3.常量數(shù)據(jù)格式示例十進(jìn)制88、-192十六進(jìn)制0x58、-0xc0長(zhǎng)整型88L、0x58L、o130L整型常量舉例【知識(shí)鏈接】3.常量#include<reg51.h> voiddelay(unsignedintc);voidmain(){ while(1) { P1=0x00;

delay(100);

P1=0x01;

delay(100);

}}浮點(diǎn)常量舉例數(shù)據(jù)格式示例小數(shù)0.888、345.3指數(shù)8.88e-1、3.453e2數(shù)據(jù)格式示例英文單引號(hào):’’‘A’、’9’ASCII碼65、57字符常量舉例【知識(shí)鏈接】3.常量字符串型常量是用雙引號(hào)括起來(lái)的若干字符。如”test”、”O(jiān)K”、””等?!局R(shí)鏈接】3.常量位類型常量sbitLED=P1^0;LED=0;LED=1;【知識(shí)鏈接】3.常量運(yùn)算符是完成某種特定運(yùn)算的符號(hào)【知識(shí)鏈接】4.運(yùn)算符位運(yùn)算-在二進(jìn)制位的級(jí)別上進(jìn)行的一系列運(yùn)算。C語(yǔ)言提供了六種位運(yùn)算符,&(按位與)、|(按位或)、^(按位異或)、~(按位取反)、>>(右移)和<<(左移)。位運(yùn)算的一般形式為:變量1位運(yùn)算符變量2位運(yùn)算符也有優(yōu)先級(jí),從高到低依次是:~→<<→>>→&→^→|。(1)位運(yùn)算符

1)左移運(yùn)算符(<<)左移運(yùn)算符用來(lái)將參與運(yùn)算的一個(gè)數(shù)的各位全部向左移(高位方向)若干位,每移動(dòng)1位,最高位丟棄,最低位補(bǔ)0。

其表達(dá)式的一般形式為:變量<<移動(dòng)的位數(shù)00000001例如:w=0x01;

w<<=1;00000010(1)位運(yùn)算符2)右移運(yùn)算符(>>)右移運(yùn)算符用來(lái)將參與運(yùn)算的一個(gè)數(shù)的各位全部向右移(低位方向)若干位,每移動(dòng)1位,最高位補(bǔ)0,最低位丟棄。其表達(dá)式的一般形式為:變量>>移動(dòng)的位數(shù)例如:w=0x80;

w>>=1;1000000001000000(1)位運(yùn)算符控制程序指定效果流水燈程序3)”按位與”運(yùn)算符(&)按位與運(yùn)算法則:有0出0,全1出1例如:0000000110000000位與&00000000(1)位運(yùn)算符4)”按位或”運(yùn)算符(|)參加運(yùn)算的2個(gè)數(shù)據(jù),按二進(jìn)制的表達(dá)方式按位進(jìn)行邏輯“或”的運(yùn)算。運(yùn)算法則:有1出1,全0出0。例如:0000000110000000位或|10000001(1)位運(yùn)算符例如:0000001001000000位或|0100001001111110101111011101101111100111P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}5)”異或”運(yùn)算符(^)參加運(yùn)算的2個(gè)數(shù)據(jù),按二進(jìn)制的表達(dá)方式按位進(jìn)行邏輯“異或”的運(yùn)算。運(yùn)算法則:相同為0,不同為1。例如:0000000110000000位異或^10000001(1)位運(yùn)算符6)”取反”運(yùn)算符(~)參加運(yùn)算的2個(gè)數(shù)據(jù),按二進(jìn)制的表達(dá)方式按位進(jìn)行邏輯“非”的運(yùn)算。例如:10000001位取反~01111110(1)位運(yùn)算符#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}(2)算術(shù)運(yùn)算符

常見的算術(shù)運(yùn)算符包括+、-、*、/、%和++、--。練一練:將兩位十進(jìn)制整數(shù)的十位數(shù)和個(gè)位數(shù)分離。#include<stdio.h>intmain(){inta=23,b,c;b=a/10;c=a%10;printf(“a=%d”,a);printf(“十位=%d\n”,b);printf(“個(gè)位=%d\n”,c);return0;}除法運(yùn)算、取余運(yùn)算有什么用處呢?我們來(lái)看一個(gè)應(yīng)用,如果我們需要把一個(gè)整數(shù)在數(shù)碼管或者液晶上顯示出來(lái)的話,那就需要把一個(gè)整數(shù)的每位拆分開來(lái),一位一位進(jìn)行顯示,例如,要顯示25這個(gè)數(shù),我們就需要把25這個(gè)數(shù)的十位和個(gè)位拆分開來(lái),分別是2和5,那用什么運(yùn)算能實(shí)現(xiàn)這個(gè)結(jié)果呢?252525/10=225%10=5378137813781/1000=33781/100%10=73781%100/10=83781%10=1(2)算術(shù)運(yùn)算符有關(guān)算術(shù)運(yùn)算符需要說(shuō)明以下幾點(diǎn):1)除法運(yùn)算符/,C語(yǔ)言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。例如,5/2=2,22.0/4=5.5。2)求余運(yùn)算符%,要求兩個(gè)操作數(shù)均為整型,結(jié)果為兩數(shù)相除所得的余數(shù)。

注:取余運(yùn)算的兩個(gè)操作數(shù)必須是整數(shù)。

例如:8%5=3,25%10=5。(2)算術(shù)運(yùn)算符表達(dá)式和算術(shù)表達(dá)式

表達(dá)式是用運(yùn)算符和括號(hào),將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子。例如:(x+y)/2–1。

算術(shù)表達(dá)式是表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。

例如,3+6*9。(2)算術(shù)運(yùn)算符求表達(dá)式的值1)運(yùn)算符的優(yōu)先級(jí)。在表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)從高到低依次執(zhí)行。

例如,先乘除后加減:a–b*c。2)如果某個(gè)操作數(shù)兩側(cè)運(yùn)算符的優(yōu)先級(jí)相同,則按結(jié)合性進(jìn)行:第一是左結(jié)合性(先左后右的結(jié)合方向)運(yùn)算符:操作數(shù)先與左邊的運(yùn)算符結(jié)合。

例如,1-2+3:先執(zhí)行“1-2”,再“+3”。

第二是右結(jié)合性(先右后左的結(jié)合方向)運(yùn)算符:操作數(shù)先與右邊的運(yùn)算符結(jié)合。

例如,a=b=1:先執(zhí)行“b=1”,再執(zhí)行“a=(b=1)”。練一練:自增、自減運(yùn)算符的應(yīng)用。例如:inti=100,j;j=++i;j=i++;j=--i;j=i--;//j=101,i=101//j=101,i=102//j=101,i=101//j=101,i=100建議盡量避免++、--和其它運(yùn)算用在一起,以防出錯(cuò);單獨(dú)使用的++i和i++,結(jié)果都是把i的值增1。自增自減運(yùn)算符和表達(dá)式①自增(++)、自減(--)的作用

自增(++)使單個(gè)變量的值增1(++)

自減(--)使單個(gè)變量的值減1(--)②用法及運(yùn)算規(guī)則

前置運(yùn)算──++變量、--變量

運(yùn)算規(guī)則:先增減、后運(yùn)算,即先使變量的值增(減)1,然后再以變化后的值參與其它運(yùn)算。(2)算術(shù)運(yùn)算符后置運(yùn)算──變量++、變量--運(yùn)算規(guī)則:先運(yùn)算、后增減,即變量先參與其它運(yùn)算,然后再使變量的值增(減)1。

自增自減運(yùn)算符和表達(dá)式(2)算術(shù)運(yùn)算符#include<reg51.h>#defineLEDP1#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}練一練:分析下面各賦值表達(dá)式中變量a的值。a=b=c=3;a=5+(c=7)a=(b=2)+(c=5)a=(b=6)/(c=2)(3)賦值運(yùn)算符1).賦值運(yùn)算符

賦值運(yùn)算符用賦值符號(hào)(=)表示,它的作用就是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。例如:“t=10;”2).賦值表達(dá)式

賦值表達(dá)式用于計(jì)算右邊表達(dá)式的值,把右邊表達(dá)式的值賦給左邊的變量。其格式如下:變量(寄存器名或

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論