版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
工程三
數(shù)碼管顯示1教學(xué)目的掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的軟件譯碼方法;掌握靜態(tài)顯示的原理;掌握動(dòng)態(tài)顯示的原理;掌握數(shù)碼管程序設(shè)計(jì)的方法。P130工作模塊6數(shù)碼管循環(huán)顯示0~9
利用AT89S51單片機(jī)的P1端口的P1.0-P1.7連接到一個(gè)共陰數(shù)碼管的a-h(huán)的筆段上,數(shù)碼管的公共端接地。在數(shù)碼管上循環(huán)顯示0-9數(shù)字。工作模塊6數(shù)碼管顯示程序〔C程序〕#include<AT89X51.H>unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedchardispcount;voiddelay(void){unsignedchari,j,k;for(i=40;i>0;i--)for(j=40;j>0;j--)for(k=248;k>0;k--);}voidmain(void){while(1){
for(dispcount=0;dispcount<10;dispcount++){P1=table[dispcount];delay();}}}思考
如何在數(shù)碼管上循環(huán)顯示9-0數(shù)字?74LS245
74LS245是8路同相三態(tài)雙向數(shù)據(jù)總線驅(qū)動(dòng)芯片,具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。/G為低電平有效;DIR=“1〞,信號(hào)由A向B傳輸。引出端符號(hào):A總線端B總線端/G三態(tài)允許端(低電平有效)DIR方向控制端關(guān)系運(yùn)算符和關(guān)系表達(dá)式(P77)所謂“關(guān)系運(yùn)算〞實(shí)際上是兩個(gè)值作一個(gè)比較,判斷其比較的結(jié)果是否符合給定的條件。關(guān)系運(yùn)算的結(jié)果只有2種可能,即“真〞和“假〞。例如:3>2的結(jié)果為真,而3<2的結(jié)果為假。關(guān)系運(yùn)算符C語(yǔ)言一共提供了6種關(guān)系運(yùn)算符:小于:“<〞;小于等于:“<=〞;大于:“>〞;大于等于:“>=〞;等于:“==〞;不等于:“?。建暋jP(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子,稱為關(guān)系表達(dá)式。例如:a>b,a+b>b+c,〔a=3〕>=〔b=5〕在C語(yǔ)言中,沒(méi)有專門的邏輯型變量,如果運(yùn)算的結(jié)果是“真〞,用數(shù)值“1〞表示,而運(yùn)算的結(jié)果是“假〞那么用數(shù)值“0〞表示。例如:x1=3>2的結(jié)果是x1等于1原因是3>2的結(jié)果是“真〞,即其結(jié)果為1,該結(jié)果被“=〞號(hào)賦給了x1。又如:x2=3<=2的結(jié)果是x2=0,請(qǐng)自行分析。邏輯運(yùn)算符C語(yǔ)言提供了三種邏輯運(yùn)算符:“&&〞〔邏輯與〕;“||〞〔邏輯或〕;“!〞〔邏輯非〕。邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子,稱為邏輯表達(dá)式。C語(yǔ)言編譯系統(tǒng)在給出邏輯運(yùn)算的結(jié)果時(shí):用“1〞表示真,而用“0〞表示假。在判斷一個(gè)量是否是“真〞時(shí),以0代表“假〞,而以非0代表“真〞,這一點(diǎn)務(wù)必要注意。假設(shè)a=10,那么!a的值為0,因?yàn)?0被作為真處理;如果a=-2,結(jié)果與上完全相同,初學(xué)時(shí)常會(huì)誤以為負(fù)值為假,所以這里特別提醒注意;假設(shè)a=10,b=20,那么a&&b的值為1,a||b的結(jié)果也為1。if語(yǔ)句(P54)用if語(yǔ)句構(gòu)成分支結(jié)構(gòu)。分支結(jié)構(gòu)又稱選擇結(jié)構(gòu),它表達(dá)了程序的判斷能力。這種結(jié)構(gòu)根據(jù)程序的判斷結(jié)果,來(lái)確定某些操作是做還是不做,或者從多個(gè)操作中選擇一個(gè)操作來(lái)執(zhí)行。單分支if語(yǔ)句單分支if語(yǔ)句的根本形式為:if〔表達(dá)式〕語(yǔ)句如果表達(dá)式的結(jié)果為真,那么執(zhí)行語(yǔ)句,否那么不執(zhí)行。單分支if語(yǔ)句雙分支if語(yǔ)句雙分支if語(yǔ)句語(yǔ)句的根本形式為:if〔表達(dá)式〕語(yǔ)句1else語(yǔ)句2如果表達(dá)式的結(jié)果為真,那么執(zhí)行語(yǔ)句1,否那么執(zhí)行語(yǔ)句2雙分支if語(yǔ)句多分支if語(yǔ)句多分支if語(yǔ)句的根本形式為:if〔表達(dá)式1〕語(yǔ)句1elseif〔表達(dá)式2〕語(yǔ)句2elseif〔表達(dá)式3〕語(yǔ)句3…elseif〔表達(dá)式m〕語(yǔ)句melse語(yǔ)句nif語(yǔ)句的嵌套當(dāng)if語(yǔ)句中的語(yǔ)句體又包含一個(gè)或多個(gè)if語(yǔ)句,稱為if語(yǔ)句的嵌套。其一般形式如下:if(表達(dá)式)if(表達(dá)式1)語(yǔ)句11else語(yǔ)句12elseif(表達(dá)式2)語(yǔ)句21else語(yǔ)句22應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系,C語(yǔ)言規(guī)定:else總是與它上面的最近的if配對(duì)
swich語(yǔ)句
Switch的一般形式如下:switch〔表達(dá)式〕{case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2……case常量表達(dá)式n:語(yǔ)句ndefault:語(yǔ)句n+1}當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式相等時(shí),就執(zhí)行此case后面的語(yǔ)句;假設(shè)所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式值匹配的,就執(zhí)行default后面的語(yǔ)句;每一個(gè)case的常量表達(dá)式的值必須不相同;各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。swich語(yǔ)句特別說(shuō)明
執(zhí)行完一個(gè)case后面的語(yǔ)句后,并不會(huì)自動(dòng)跳出switch,轉(zhuǎn)而去執(zhí)行其后面的語(yǔ)句;通常在每一段case的結(jié)束參加“break;〞語(yǔ)句,使程序退出switch結(jié)構(gòu),即終止switch語(yǔ)句的執(zhí)行。如:switch(x){case1:y=1;case2:y=2;case3:y=0;}假設(shè)x的值是1,y=?循環(huán)結(jié)構(gòu)控制語(yǔ)句在一個(gè)實(shí)用的程序中,循環(huán)結(jié)構(gòu)是必不可少的。循環(huán)是反復(fù)執(zhí)行某一局部程序行的操作。通過(guò)下面C語(yǔ)言程序,來(lái)看如何利用這些循環(huán)語(yǔ)句編寫循環(huán)程序。voidDelay()voidmain(){{unsignedchari,j;while(1)for(i=0;i<255;i++){;}{……}}}這段程序中有兩處用到了循環(huán)語(yǔ)句,首先是主程序使用了:while〔1〕{……}這樣的循環(huán)語(yǔ)句寫法,在{}中的所有程序?qū)?huì)不斷地循環(huán)執(zhí)行,直到斷電為止;其次是延時(shí)程序,使用了for循環(huán)語(yǔ)句的形式。while語(yǔ)句當(dāng)型循環(huán),即當(dāng)給定的條件成立時(shí),執(zhí)行循環(huán)體局部,執(zhí)行完畢回來(lái)再次判斷條件,如果條件成立繼續(xù)循環(huán),否那么退出循環(huán)。其一般形式如下:while(表達(dá)式)循環(huán)體語(yǔ)句當(dāng)表達(dá)式為非0值〔真〕時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。do-while語(yǔ)句直到型循環(huán),即先執(zhí)行循環(huán)體,然后判斷給定的條件,只要條件成立就繼續(xù)循環(huán),直到判斷出給定的條件不成立時(shí)退出循環(huán)。其一般形式如下:do
循環(huán)體語(yǔ)句while(表達(dá)式)do-while語(yǔ)句特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。對(duì)同一個(gè)問(wèn)題,既可以用while語(yǔ)句處理,也可以用do-while語(yǔ)句處理,但是這兩個(gè)語(yǔ)句是有區(qū)別的。
for語(yǔ)句C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。for語(yǔ)句的一般形式為:for〔表達(dá)式1;表達(dá)式2;表達(dá)式3〕循環(huán)體語(yǔ)句執(zhí)行步驟如下:〔1〕先求解表達(dá)式1;〔2〕求解表達(dá)式2,其值為真,那么執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句〔循環(huán)體〕,然后執(zhí)行第〔3〕步,如果為假,那么結(jié)束循環(huán);〔3〕求解表達(dá)式3;〔4〕轉(zhuǎn)回第2步繼續(xù)執(zhí)行。break語(yǔ)句break語(yǔ)句強(qiáng)行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語(yǔ)句的下一條語(yǔ)句。在一個(gè)循環(huán)程序中,可以通過(guò)循環(huán)語(yǔ)句中的表達(dá)式來(lái)控制循環(huán)程序是否結(jié)束。除此之外,還可以通過(guò)break語(yǔ)句從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句。一般形式:
break;注意:break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中;break語(yǔ)句是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。
continue語(yǔ)句continue語(yǔ)句作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。對(duì)于for循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,轉(zhuǎn)向循環(huán)變量增值表達(dá)式的計(jì)算;對(duì)于while和do-while循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,但轉(zhuǎn)向循環(huán)繼續(xù)條件的判定。一般形式:
continue;注意:continue只能用于循環(huán)語(yǔ)句中;continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。工作模塊7LED動(dòng)態(tài)掃描顯示動(dòng)態(tài)顯示,也稱掃描顯示;顯示器由6個(gè)共陰極LED數(shù)碼管構(gòu)成;P0口輸出顯示段碼,經(jīng)由一片74LS245驅(qū)動(dòng)輸出給LED管;P1口輸出位碼〔片選〕,經(jīng)由74LS05輸出給LED管。LED動(dòng)態(tài)掃描顯示電路(P135)動(dòng)態(tài)顯示特點(diǎn)在多位LED顯示時(shí),為了降低本錢和功耗,將所有位的段選控制端并聯(lián)起來(lái),由一個(gè)8位端口控制〔本任務(wù)中用P0口〕;各位數(shù)碼管的公共端〔com端〕,用作“位選端〞,由另一個(gè)端口進(jìn)行顯示位的控制〔本任務(wù)中用P1口〕。由于段選端是公用的,要讓各位數(shù)碼管顯示不同的字符,就必須采用掃描方式,即動(dòng)態(tài)掃描顯示方式。動(dòng)態(tài)掃描是采用分時(shí)的方法輪流點(diǎn)亮各位數(shù)碼管的顯示方式,它在某一時(shí)間段,只讓其中一位數(shù)碼管的“位選端〞〔com端〕有效,并送出相應(yīng)的字型編碼。動(dòng)態(tài)掃描過(guò)程首先從段選線上送出字型編碼,再控制位選端,字符就顯示在指定數(shù)碼管上,其他位選端無(wú)效的數(shù)碼管都處于熄滅狀態(tài),持續(xù)1.5ms時(shí)間,然后關(guān)閉所有顯示;接下來(lái)又送出新的字型編碼,按照上述過(guò)程又顯示在另外一位數(shù)碼管上,直到每一位數(shù)碼管都掃描完為止,這一過(guò)程即為動(dòng)態(tài)掃描顯示。數(shù)碼管其實(shí)是輪流依次點(diǎn)亮的,但由于人的視覺(jué)駐留效應(yīng),因此當(dāng)每個(gè)數(shù)碼管點(diǎn)亮的時(shí)間小到一定程度時(shí),人就感覺(jué)不出字符的移動(dòng)或閃爍,覺(jué)得每位數(shù)碼管都一直在顯示,到達(dá)一種穩(wěn)定的視覺(jué)效果。思考題如何修改程序,實(shí)現(xiàn)六位LED數(shù)碼管只顯示其中的兩位?定義段碼表#include<AT89X52.h>unsignedcharcodeTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C};unsignedcharcodeCol[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};voidDelay(){unsignedchari;
for(i=0;i<250;i++);}主函數(shù)voidmain()//同時(shí)顯示123456{unsignedcharj;while(1){for(j=1;j<7;j++) {P0=Tab[j];P1=Col[j-1];//開(kāi)第一個(gè)〔共陰〕數(shù)碼管Delay();P1=0xff;//關(guān)數(shù)碼管 Delay();}}}一維數(shù)組(P86)
在C語(yǔ)言中數(shù)組必須要先定義,后使用。一維數(shù)組的定義方式為:類型說(shuō)明符數(shù)組名[整型表達(dá)式];類型說(shuō)明符是任一種標(biāo)準(zhǔn)數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型,是數(shù)組中各個(gè)元素的數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符。方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長(zhǎng)度。例如:inta[9];//定義整型數(shù)組a,有9個(gè)元素,下標(biāo)從0到8。floatb[5];//定義實(shí)型數(shù)組b,有5個(gè)元素,下標(biāo)從0到4。charch[10];//定義字符數(shù)組ch,有10個(gè)元素,下標(biāo)從0到9。本卷須知數(shù)組的類型是指構(gòu)成數(shù)組的元素的類型。對(duì)于同一個(gè)數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。數(shù)組名的書寫規(guī)那么應(yīng)符合標(biāo)識(shí)符的命名規(guī)那么,并且不能與其它變量同名。常量表達(dá)式可以是符號(hào)常量或常量表達(dá)式,但是不能包含變量,即不能對(duì)數(shù)組的大小作動(dòng)態(tài)定義。工作模塊80-99計(jì)數(shù)器利用AT89S52單片機(jī)來(lái)制作一個(gè)0~99計(jì)數(shù)器。要求使用一個(gè)手動(dòng)計(jì)數(shù)按鈕,實(shí)現(xiàn)0~99的計(jì)數(shù),并且通過(guò)兩個(gè)共陰數(shù)碼管顯示計(jì)數(shù)結(jié)果,數(shù)碼管顯示采用靜態(tài)顯示方式。
靜態(tài)顯示;顯示器由2個(gè)共陰極數(shù)碼管組成;0-99計(jì)數(shù)器電路設(shè)計(jì)靜態(tài)顯示的概念
靜態(tài)顯示是指顯示驅(qū)動(dòng)電路具有輸出鎖存功能,待顯示的字符編碼被CPU送出后,數(shù)碼管會(huì)一直顯示該字符不變,CPU不需要再控制數(shù)碼管,如果要顯示新的字符,CPU只要再次送出即可。采用靜態(tài)顯示方式,較小的電流就可以獲得較高的亮度,且占用CPU時(shí)間較少,編程簡(jiǎn)單,顯示便于檢測(cè)和控制,但其占用的I/O口線較多,硬件電路復(fù)雜,本錢高,只適合顯示位數(shù)較少的場(chǎng)合。0-99計(jì)數(shù)顯示c語(yǔ)言程序
#include<AT89X52.H>//包含AT89X52.H頭文件/*定義0~9十個(gè)數(shù)字的字型碼表*/unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharCount;//定義變量放置計(jì)數(shù)數(shù)值voiddelay10ms(void)//定義10ms延時(shí)函數(shù){unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);}0-99計(jì)數(shù)顯示c語(yǔ)言程序voidmain(void){Count=0;//計(jì)數(shù)變量初始為0P0=table[Count/10];//十位管顯示
P2=table[Count%10];//個(gè)位顯示
while(1)//計(jì)數(shù)顯示處理
{if(P1_0==0)//鍵按下?
{delay10ms();//延時(shí)去抖動(dòng)if(P1_0==0)//確定鍵按下
{Count++;//計(jì)數(shù)加1if(Count==100)//計(jì)數(shù)到100?
{Count=0;//到100回0}P0=table[Count/10];//顯示十位數(shù)
P2=table[Count%10];//顯示個(gè)位數(shù)
while(P1_0==0);//等鍵釋放
}}}C語(yǔ)言函數(shù)函數(shù)的分類和定義函數(shù)分類無(wú)參函數(shù)
有參函數(shù)
函數(shù)定義函數(shù)類型說(shuō)明符函數(shù)名([形式參數(shù)表]){
函數(shù)體}
函數(shù)的調(diào)用
函數(shù)調(diào)用的一般形式如下:函數(shù)名(實(shí)參列表);
例如voidmDelay(unsigned
intDelay){……
for(;Delay>0;Delay--)……}函數(shù)中Delay就是一個(gè)形式參數(shù),而在主函數(shù)中調(diào)用
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 樁基工程勞務(wù)分包施工方案
- 民居圍墻大門施工方案
- 裝飾砂漿施工方案
- 甘肅防火電纜托架施工方案
- 安徽大樓消防維保施工方案
- 2025年玻璃鋼車門行業(yè)深度研究分析報(bào)告
- 中國(guó)飼料行業(yè)市場(chǎng)需求預(yù)測(cè)與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 固原半導(dǎo)體設(shè)備項(xiàng)目申請(qǐng)報(bào)告
- 2025年芯料拉絲造粒機(jī)項(xiàng)目投資可行性研究分析報(bào)告
- 養(yǎng)殖場(chǎng)天然氣配送服務(wù)協(xié)議
- 奶茶督導(dǎo)述職報(bào)告
- 山東萊陽(yáng)核電項(xiàng)目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 小學(xué)數(shù)學(xué)知識(shí)結(jié)構(gòu)化教學(xué)
- 視頻監(jiān)控維保項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 社會(huì)組織能力建設(shè)培訓(xùn)
- 立項(xiàng)報(bào)告蓋章要求
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請(qǐng)范本
- 主變壓器試驗(yàn)報(bào)告模板
- 安全防護(hù)通道施工方案
評(píng)論
0/150
提交評(píng)論