




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
智能小車C語言程序控制秦磊
梁爽
主編第9章數碼管靜態顯示
數碼管是一種半導體發光器件,其基本單元是發光二極管。數碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極管(顯示時多一個小數點)。
數碼管靜態顯示就是當數碼管顯示某一字符時,相應的發光二極管恒定導通或者截止。一個八段數碼管有8個發光二極管,其顯示的字符可以采用前面介紹的點亮發光二極管的方式控制,即采用基本數據類型定義每個發光二極管對應引腳的變量。利用基本數據類型可以解決一些簡單的問題。對于復雜的問題,則需要使用數組。
數組是指按序排列的相同類型的數據元素的集合。例如,可以用數組表示一個班級里面所有學生的英語成績所組成的集合。數組中的元素是有排列順序的。數組元素用數組名和下標確定,下標是數組中各個元素的數字編號。
在C語言中,數組屬于構造數據類型。按數組元素的類型,數組又可分為數值數組、字符數組、指針數組、結構數組等。本章主要介紹數值數組和字符數組。目錄CONTENTS1一維數組2二維數組3字符數組4數碼管靜態顯示系統設計01PARTONE一維數組1一維數組1.1一維數組的定義一維數組:數組中每個元素只帶有一個下標格式如下:
類型說明符
數組名[常量表達式];類型說明符:可以是任意一種基本數據類型或構造數據類型數組名:用戶定義的數組標識符常量表達式:數組元素的個數,也稱數組長度[]:數組運算符例如:inta[6];floatb[3],c[4];charch[10];1一維數組1.1一維數組的定義數組的特點:同一個數組中所有元素的數據類型都是相同的;各元素的存儲在內存中按照先后順序連續存儲在一起;數組元素用數組的名稱和它在數組中的順序來表示。例如:a[0]代表數組a中的第一個元素a[1]代表數組a中的第二個元素1一維數組1.2一維數組元素的引用數組元素的表示:
數組名[下標]
注意:數組元素必須先定義后引用引用時下標從“0”開始下標可以是整型常量或表達式,表達式內允許變量存在下標不能使用變量只能對數組元素進行引用,如a[0]、a[i]、a[i+1]等,而不能引用整個數組對變量的任何操作都適用于數組元素引用數組元素時下標不能出界1一維數組1.2一維數組元素的引用例如:輸出有10個元素的數組。/*輸出有10個元素的數組*/intmain(){inti,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=0;i<=9;i++)
printf("a[%d]=%d\t",i,a[i]);
return0;}1一維數組1.3一維數組的初始化
數組初始化:定義數組時對各數組元素賦初值用賦值語句給數組元素逐個賦值輸入語句給數組元素逐個賦值①②③1一維數組1.3一維數組的初始化例如:inta[5]={0,1,2,3,4};等價于a[0]=0;a[1]=1;a[2]=2;a[3]=3;a[4]=4;(1)在定義數組時對數組元素賦初值例如:inta[5]={1,2,3};等價于a[0]=1;a[1]=2;a[2]=3;a[3]=0;a[4]=0;(2)只給部分元素賦值在定義數組時對數組元素賦初值,在編譯階段可使數組元素得到初值,這樣能減少運行時間,提高程序運行效率。1一維數組1.3一維數組的初始化例如,對數組a中所有元素賦初值0,可以寫成下面的形式:inta[5]={0,0,0,0,0};或inta[5]={0};(3)數組元素初值全部為0例如:inta[]={1,2,3,4,5,6,7,8};等價于inta[8]={1,2,3,4,5,6,7,8};編譯程序時系統會根據初值的個數確定數組長度。(4)數組元素賦初值時,可以不指定長度1一維數組1.4一維數組的應用【例9-1-3】從鍵盤輸入10個數,求其中的最小值并顯示出來。
#include<stdio.h>/*從鍵盤輸入10個數,求其中的最小值并顯示出來*/intmain(){
inti,min,a[10];
printf("pleaseinput10number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=0;i<10;i++)
if(min>a[i])min=a[i];printf("minvalueis%d\n",min);
return0;}1一維數組1.4一維數組的應用【例9-1-4】求出數組元素中的奇數和偶數,并統計奇數和偶數的個數。
#include<stdio.h>/*求出數組元素中的奇數和偶數,并統計奇數和偶數的個數*/intmain(){inta[5]={10,2,5,23,49};inti,j=0,k=0; //定義j和k為偶數個數和奇數個數for(i=0;i<5;i++)
printf("a[%d]=%d\n",i,a[i]);1一維數組1.4一維數組的應用for(i=0;i<5;i++) { if(a[i]%2==0)//在取余時,結果為0則表示該數為偶數 {printf("%d為偶數\n",a[i]); j++;} else {printf("%d為奇數\n",a[i]); k++;} }printf("偶數個數為:%d個,奇數個數為:%d個",j,k); return0;}作業將一個學生的5門課程成績存儲在一個數組中,求出這5門課程的平均成績,并輸出低于平均成績的課程分數。02PARTTWO二維數組2二維數組2.1二維數組的定義二維數組形式如下:
類型說明符數組名[常量表達式1][常量表達式2];常量表達式1:表示第一維下標的長度常量表達式2:表示第二維下標的長度
例如:一個學習小組中有5個學生,每個學生有3門考試成績,則可定義如下數組:
floata[5][3];
該數組共有5×3個元素,即:
a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]a[2][0],a[2][1],a[2][2]
a[3][0],a[3][1],a[3][2]
a[4][0],a[4][1],a[4][2]2二維數組2.1二維數組的定義注意:二維數組元素的下標也是從0開始的,a[i][j]表示第i+1行、第j+1列的元素;定義數組時用到的“數組名[常量表達式1][常量表達式2]”和引用數組元素時用到的“數組名[下標1][下標2]”是有區別的。前者是定義一個數組,指定該數組的維數和各維的長度。而后者是通過下標,指定一個具體的數組元素;二維數組在實際的硬件存儲器中是連續存儲的,即按行依次存儲,每行中的各個元素同樣依次存儲。2二維數組2.1二維數組的定義例如:
inta[3][4];
定義了一個3行4列的二維數組,它在存儲器中存儲的方式如圖所示。2二維數組2.2二維數組元素的引用二維數組元素引用格式如下:
數組名[下標1][下標2]在引用數組元素時應注意以下幾點:(1)下標是整型或字符型常量、變量或表達式;(2)數組元素可出現在表達式中,如a[1][2]=a[2][2]/2;(3)使用數組元素時,應注意不要超出其定義的范圍。2二維數組2.2二維數組元素的引用【例9-2-1】通過鍵盤給3行3列的二維數組賦初值并輸出數組各元素的值。#include<stdio.h>/*通過鍵盤給3行3列的二維數組賦初值并輸出數組各元素的值*/intmain(){inti,j,a[3][3];printf("請輸入9個數:");2二維數組2.2二維數組元素的引用for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]);for(i=0;i<3;i++) for(j=0;j<3;j++) printf("\na[%d][%d]=%d",i,j,a[i][j]); return0;}2二維數組2.3二維數組的初始化可使用以下幾種方法對二維數組進行初始化:(1)將所有數據寫在一個大括號內,以逗號分隔,按數組元素在內存中的排列順序對其賦值。例如:
inta[2][3]={0,1,2,3,4,5};賦值后各元素的值如下:012345(2)分行對數組元素賦值。例如:
inta[2][3]={{0,1,2},{4,5,6}};賦值后各元素的值如下:0124562二維數組2.3二維數組的初始化可使用以下幾種方法對二維數組進行初始化:(3)對部分元素賦值,未賦值的元素取0值。例如:
inta[2][3]={{1},{4}};賦值后各元素的值如下:100400(4)若對全部元素賦初值,則定義時第一維長度可省略,可由第二維長度自動確定第一維長度。例如:
inta[][3]={0,1,2,3,4,5};相當于inta[2][3]={0,1,2,3,4,5};2二維數組2.4二維數組的應用【例9-2-2】表2-9-1為某公司2019年度第一季度銷售統計表,請將表中數據輸入數組,并找出哪位員工哪個月的銷售額最高。2二維數組2.4二維數組的應用#include<stdio.h>/*在數組中找出哪位員工哪個月的銷售額最高*/intmain(){inti,j,staff=0,month=0,max;inta[][3]={10,9,12,20,18,22,12,15,16,14,10,16};max=a[0][0];for(i=0;i<=3;i++) { for(j=0;j<=2;j++) printf("%-5d",a[i][j]); printf("\n"); }2二維數組2.4二維數組的應用for(i=0;i<=3;i++) for(j=0;j<=2;j++) if(a[i][j]>max) { max=a[i][j]; staff=i+1;month=j+1; }
printf("最大單月銷售額=%d,單月銷售額最高的員工=員工%d,所在月份為=%d月\n",max,staff,month); return0;}2二維數組2.4二維數組的應用【例9-2-3】根據表2-9-1,分別求該公司每月銷售額、每名員工第一季度銷售額和4名員工第一季度銷售總額。#include<stdio.h>/*求每月銷售額、每名員工第一季度銷售額和4名員工第一季度銷售總額*/intmain(){printf("請輸入表中數據:\n");inta[5][4],i,j;for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);for(i=0;i<3;i++)
a[4][i]=0;for(j=0;j<5;j++)
a[j][3]=0;2二維數組2.4二維數組的應用for(i=0;i<4;i++)for(j=0;j<3;j++){ a[i][3]+=a[i][j];a[4][j]+=a[i][j];a[4][3]+=a[i][j];}for(i=0;i<5;i++) {for(j=0;j<4;j++) printf("%-5d\t",a[i][j]);printf("\n"); }printf("第一季度每月銷售額為:%5d,%5d,%5d\n",a[4][0],a[4][1],a[4][2]);printf("每名員工第一季度銷售額為:%5d,%5d,%5d,%5d\n",a[0][3],a[1][3],a[2][3],a[3][3]);printf("第一季度的銷售總額為:%5d\n",a[4][3]); return0;}作業試編寫一個C語言程序,將二維數組a中的行列元素互換,存到另一個數組b中。
03PARTTHREE字符數組3.1字符數組的定義字符數組:用來存放字符的,字符數組中的一個元素對應一個字符。一維字符數組的定義格式:
char數組名[常量表達式];
例如:
chara[5];
二維字符數組的定義格式:
char數組名[常量表達式1][常量表達式2];
例如:
chara[2][3];3.2字符數組元素的引用二維字符數組元素的引用格式:數組名[行下標][列下標];一維字符數組元素的引用格式:數組名[下標];用下標指定要引用的數組元素3.3字符數組的初始化字符數組初始化有下面兩種方式:(1)對數組元素逐個初始化例如:
chara[10]={'I','','a','m','','h','a','p','p','y'};
字符數組a在內存中的存儲形式見表2-9-2。
字符數組a在內存中的存儲形式如下表:數組元素a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]元素的值I
am
happy3.3字符數組的初始化注意:如果初始化時元素的個數小于數組長度,則多余元素自動為'\0'('\0'是二進制的0)。例如:chara[10]={'C','','p','r','o','g','r','a','m'};
a[9]=\0',即a[9]=0。
指定初值時,若未指定數組長度,則數組長度等于初值個數。例如:
chara[]={'I','','a','m','','h','a','p','p','y'};
等價于
chara[10]={'I','','a','m','','h','a','p','p','y'};3.3字符數組的初始化(2)用字符串常量對數組進行初始化。
例如:
chara[]={"Iamhappy"};
字符串在進行存儲時,系統會自動在其后加上結束標志'\0'。
另外,字符數組也允許在定義時進行初始化。3.3字符數組的初始化【例9-3-1】輸出一個字符串“Wuhanjiayou”。#include<stdio.h>/*輸出一個字符串“Wuhanjiayou”*/intmain(){charc[12]={'W','u','h','a','n','','j','i','a','y','o','u'};inti;for(i=0;i<12;i++) printf("%c",c[i]); printf("\n"); return0;}3.3字符數組的初始化【例9-3-2】用“*”輸出一個三角形圖形。#include<stdio.h>/*用“*”輸出一個三角形圖形*/intmain(){chara[][5]={{'','','*'},{'','*','','*'},{'*','*','*','*','*'}};inti,j;for(i=0;i<3;i++){ for(j=0;j<5;j++) printf("%c",a[i][j]); printf("\n");} return0;}3.4字符串和字符串結束標志字符串常量是用雙引號括起來的一串字符,并用'\0'(ASCII碼為0)作為字符串的結束標志,這個標志占1字節內存空間,但不計入字符串的長度。在C語言中,沒有專門的字符串變量,通常用一個字符數組來存放一個字符串。例如:
chara[]={'I','','a','m','','h','a','p','p','y'};可寫為
chara[]={"Iamhappy"};3.4字符串和字符串結束標志在使用字符串時應注意以下幾點:用字符串賦值時,無須指定數組長度。以字符串形式對字符數組進行初始化,系統會自動在該字符串后面加結束標志'\0'。在C語言中,以字符串形式賦值要比對數組中的字符逐個賦值多占1字節,多占的字節用于存放字符串結束標志'\0'。上面的例子在內存中的實際存儲情況為Iamhappy'\0',字符串結束標志'\0'是由編譯系統自動加上的。由于系統加上了字符串結束標志'\0',所以在用字符串賦值時不用指定字符數組的長度,而由系統自行處理。在采用字符串方式后,字符數組的輸入和輸出將變得簡單方便。可以用scanf()函數和printf()函數一次性輸入和輸出一個字符數組中的字符串,而不必使用循環語句逐個輸入和輸出字符。3.5字符數組的輸入和輸出1.逐個字符輸入和輸出;例:用格式符"%c"輸入或輸出一個字符串。#include<stdio.h>/*用格式符"%c"輸入或輸出一個字符串*/intmain(){chara[5];inti;for(i=0;i<5;i++) scanf("%c",&a[i]);for(i=0;i<5;i++) printf("%c",a[i]); return0;}2.整串輸入和輸出用格式符"%s"可輸入、輸出字符串。將字符串存放在一個字符數組中,在輸入或輸出字符串時可直接使用數組名。例:整串輸入和輸出。#include<stdio.h>/*整串輸入和輸出。*/intmain(){chara[15];scanf("%s",a);printf("%s",a); return0;}可以利用字符數組對單個字符和字符串進行輸入和輸出操作。小貼士整串輸入和輸出應注意以下幾點:scanf()函數在用字符數組名輸入時前面不要加&,同時輸入的字符串長度應小于數組長度,遇空格或回車符會結束輸入并自動加'\0'。在printf()函數中使用的格式符為"%s",表示輸出的是一個字符串,在輸出列表中給出數組名即可。為了能將字符全部輸出,可以多設幾個字符數組來存放含空格的字符串。3.5字符數組的輸入和輸出【例9-3-5】整串輸入和輸出。#include<stdio.h>/*整串輸入和輸出。*/intmain(){chara[10],b[10];scanf("%s%s",a,b);printf("a=%s\nb=%s\n",a,b);printf("%s%s\n",a,b); return0;}3.6字符串處理函數C語言中有很多的字符串處理函數,主要用于字符串的輸入、輸出、復制、連接、比較等;使用字符串輸入和輸出函數時,要在程序中包含頭文件“stdio.h”;使用其他字符串函數時,要在程序中包含頭文件“string.h”。幾個常用的字符串函數:1.字符串輸入函數gets()gets()函數的一般調用格式如下:gets(字符數組名);gets()函數的作用是從鍵盤輸入字符串(字符串可以包含空格),直到遇到回車符為止,回車符讀入后不作為字符串的內容,系統將自動加上'\0',作為字符串的結束標志。注意:輸入字符串的長度應小于字符數組的長度。
在scanf()函數中遇空格就結束輸入,而在gets()函數中卻將空格作為字符存入字符數組中。3.6字符串處理函數【例9-3-6】用函數gets()輸入一個字符串。
#include<stdio.h>/*用函數gets()輸入一個字符串*/intmain(){chara1[15],a2[15];gets(a1);scanf("%s",a2);printf("a1=%s\n",a1);printf("a2=%s\n",a2); return0;}3.6字符串處理函數2.字符串復制函數strcpy()strcpy()函數的一般調用格式如下:strcpy(字符數組1,字符數組2);功能:把字符數組2所指向的字符串復制到字符數組1所指向的字符數組中。字符串結束標志'\0'也一同復制。字符數組2也可以是一個字符串常量,這時相當于把一個字符串賦給一個字符數組。返回值:返回字符數組1的首地址。在使用strcpy()函數時應注意:
(1)字符數組1必須是數組名形式(str1)。
(2)字符數組2可以是數組名形式或字符串常量。3.6字符串處理函數3.求字符串長度函數strlen()strlen()函數的一般調用格式如下:strlen(字符數組);功能:計算以字符數組為起始地址的字符串的長度(不包含字符串結束標志'\0'),并作為函數值返回。3.6字符串處理函數【例9-3-7】求字符串長度。#include<stdio.h>#include<string.h>/*求字符串長度*/intmain(){chara1[10]="wuhan";printf("%d\n",strlen(a1));printf("%d\n",strlen("wuhan\0jiayou")); return0;}3.6字符串處理函數4.字符串輸出函數puts()puts()函數的一般調用格式如下:puts(字符數組名);功能:該函數的作用是向顯示器輸出一個字符串,從字符數組指定的地址開始,依次輸出存儲單元中的字符,直到遇到字符串結束標志為止,字符串輸出結束后換行。3.6字符串處理函數【例9-3-8】用函數puts()輸出一個字符串。#include<stdio.h>/*用函數puts()輸出一個字符串*/intmain(){chara1[]="Wuhan\njiayou";chara2[]="Wuhan\0jiayou";puts(a1);puts(a2);puts("WUHAN"); return0;}運行結果顯示:字符數組a1輸出時遇到'\n',所以換行輸出后面的字符;字符數組a2輸出時遇到'\0',此時結束輸出并將'\0'轉換成'\n',因此光標移到下一行。當輸出有格式要求時,通常使用printf()函數。3.6字符串處理函數5.字符串連接函數strcat()strcat()函數的一般調用格式如下:strcat(字符數組1,字符數組2);
功能:把字符數組2所指向的字符串連到字符數組1所指向的字符串后面,并自動覆蓋字符數組1所指向的字符串的尾部字符'\0'。返回值:返回字符數組1的首地址。3.6字符串處理函數【例9-3-9】用字符串連接函數strcat()連接兩個字符串。#include<stdio.h>#include<string.h>/*用字符串連接函數strcat()連接兩個字符串*/intmain(){charstr1[20]={"Iama"};charstr2[]={"student"};strcat(str1,str2);printf("%s\n",str1); return0;}3.7字符數組的應用【例9-3-10】從鍵盤輸入一個字符串,并復制到另一字符串后面顯示出來。#include<stdio.h>#include<string.h>/*輸入一個字符串,并復制到另一字符串后面顯示出來*/intmain(){charstr1[20],str2[20];inti;printf("inputastring:");gets(str1);i=0;3.7字符數組的應用while(str1[i]!='\0'){str2[i]=str1[i];i++;}str2[i]='\0';printf("%s",str2); return0;}3.7字符數組的應用【例9-3-11】針對上例,要求采用字符串復制函數實現相同的功能,并分別計算兩個字符串的長度。
#include<stdio.h>#include<string.h>/*輸入一個字符串,并復制到另一字符串后面顯示出來,同時計算兩個字符串的長度*/intmain(){charstr1[20],str2[20];printf("inputastring:");gets(str1);strcpy(str2,str1);printf("%s\n",str2);printf("str1字符數組字符串長度為:%d\n",strlen(str1));printf("str2字符數組字符串長度為:%d\n",strlen(str2));
return0;}3.8數組的應用項目案例項目需求:新書上架可以新增新進圖書及基本信息舊書下架可以刪除舊圖書及基本信息圖書查詢能查詢要借閱的圖書信息圖書借閱能為用戶辦理借書手續圖書歸還能為用戶辦理還書手續某圖書館需要使用C語言開發一個圖書管理系統,要求圖書館管理系統包括以下功能:3.8數組的應用項目案例系統以菜單方式工作。用戶可以對本系統進行查詢或修改操作,如根據用戶的需求能夠進行添加操作、刪除操作、借還操作,也可以查找所要的圖書、查閱圖書的詳細資料、查閱讀者的詳細資料,并能清晰完整地顯示結果。本案例采用結構體來存儲這些數據類型。比如在讀者類和圖書類結構體中,定義了讀者和圖書的各種屬性,結構體的成員包含了多個變量或數組(包含一維數組和字符數組),采用字符串輸入函數gets()獲得書籍信息,部分程序如下:本案例采用結構體來存儲這些數據類型。比如在讀者類和圖書類結構體中,定義了讀者和圖書的各種屬性,結構體的成員包含了多個變量或數組(包含一維數組和字符數組),采用字符串輸入函數gets()獲得書籍信息。3.8數組的應用項目案例部分程序如下:#include<stdlib.h>#include<stdio.h>#include"math.h"structReader/*讀者結構*/{ charnum[20];/*借書證號*/ structDatebro;/*借出時間*/ structDateback;/*歸還時間*/};
3.8數組的應用項目案例structBook/*書本結構*/{ intm_iBook_Number;/*對應書本號*/ charm_strTitle[150];/*書名*/ charm_strWroter[150];/*作者*/ intm_nMoreNum;/*當前在架冊數*/ intm_nTotalHoldNum;/*館藏冊數*/ charm_strComment[300];/*圖書簡介*/ structReaderreader[200];};...
3.8數組的應用項目案例structBook*InputNode(){ structBook*p=NULL; inti; p=(structBook*)malloc(sizeof(structBook));/*分配內存*/ system("cls");/*清屏*/ fflush(stdin);/*清除以前的輸入*/ printf("\n\t請輸入書名:"); gets(p->m_strTitle);/*從鍵盤取得書名*/ printf("\n\t請輸入作者:"); gets(p->m_strWroter);/*從鍵盤取得作者*/
3.8數組的應用項目案例structBook*InputNode(){ structBook*p=NULL; inti; p=(structBook*)malloc(sizeof(structBook));/*分配內存*/ system("cls");/*清屏*/ fflush(stdin);/*清除以前的輸入*/ printf("\n\t請輸入書名:"); gets(p->m_strTitle);/*從鍵盤取得書名*/ printf("\n\t請輸入作者:"); gets(p->m_strWroter);/*從鍵盤取得作者*/
3.8數組的應用項目案例printf("\n\t請輸入當前在架數量:"); scanf("%d",&p->m_nMoreNum);/*從鍵盤取得當前在架數量*/ printf("\n\t請輸入庫存數量:"); scanf("%d",&p->m_nTotalHoldNum);/*從鍵盤取得當前庫存數量*/ fflush(stdin); printf("\n\t請輸入圖書簡介:");/*從鍵盤取得圖書內容簡要介紹*/ gets(p->m_strComment); /*以上從輸入輸出設備取得要求的信息*/ for(i=0;i<20;i++) (p->reader[i]).num[0]='\0';/*初始化書的各個結構成員的相關讀者指針內容為空*/ return(p);/*返回成功插入的一個圖書信息*/}... 作業針對【例9-3-11】的例子,如果使用scanf()函數輸入字符串到字符數組str1中,其輸出結果有什么不同?試編寫C語言程序,并調試運行。
04PARTFOUR數碼管靜態顯示系統設計4.1數碼管的工作原理及結構按發光二極管單元連接方式可分為:共陽極數碼管共陰極數碼管共陽極數碼管:將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管,共陽極數碼管在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為低電平時,該字段就點亮;當某一字段發光二極管的陰極為高電平時,該字段就不亮。4.1數碼管的工作原理及結構共陰極數碼管:將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管,共陰極數碼管在應用時應將公共極COM接到地線(GND)上,當某一字段發光二極管的陽極為高電平時,該字段就點亮;當某一字段發光二極管的陽極為低電平時,該字段就不亮。4.1數碼管的工作原理及結構數碼管的每一段是由發光二極管組成的,所以在使用時和發光二極管一樣,也要連接限流電阻,否則電流過大會燒壞發光二極管。想讓數碼管顯示數字,只要將相應的段點亮即可。例如,想讓數碼管顯示數字“1”,則將b、c段點亮,其余段不亮;想顯示數字“2”,則將a、b、g、e、d段點亮,其余段不亮。4.1數碼管的工作原理及結構本案例使用共陰極數碼管,將數碼管的a~dp引腳連到Arduino開發板上的4~11號數字端口,向數字端口寫入不同字形編碼,即可顯示不同數字。共陰極數碼管的字形編碼見表2-9-3。4.1數碼管的工作原理及結構本案例使用共陰極數碼管,將數碼管的a~dp引腳連到Arduino開發板上的4~11號數字端口,向數字端口寫入不同字形編碼,即可顯示不同數字。共陰極數碼管的字形編碼見表2-9-3。4.1數碼管的工作原理及結構如何判斷數碼管是共陽極數碼管還是共陰極數碼管?
1.利用Arduino開發板上的電源接口判斷首先假設數碼管是共陰極的,把Arduino開發板上的GND端口和數碼管的COM引腳相連。為了避免電流過大燒壞數碼管,在電路中串接一個220Ω電阻。然后用導線把Arduino開發板上的5V端口和數碼管的其他任意引腳連接起來,如果此時數碼管某一段點亮,則可以確定GND端口所連接的COM引腳為負極,其他引腳為正極,所以前面的假設成立,數碼管為共陰極數碼管。如果數碼管任何一段都不亮,一般情況下,可判斷該數碼管為共陽極數碼管。為了確保準確性,應調換圖中電源的正負極重新進行測試。如果連接的數碼管某一段點亮,則說明此數碼管為共陽極數碼管。4.1數碼管的工作原理及結構如何判斷數碼管是共陽極數碼管還是共陰極數碼管?
2.使用萬用表判斷將萬用表調到電阻測量擋位,紅表筆接數碼管的COM引腳,黑表筆接數碼管的其他任意引腳,如果此時數碼管上某一段點亮,則說明此數碼管為共陰極數碼管。如果數碼管上任何一段都不亮,則說明此數碼管為共陽極數碼管。為了確保準確性,應調換黑表筆和紅表筆再測一次,如果此時數碼管上某一段點亮,則說明此數碼管為共陽極數碼管。4.2電路設計硬件清單本案例硬件清單見表2-9-4。4.2電路設計電路原理圖將Arduino開發板上的4~11號數字端口與數碼管的a~dp引腳相連,COM引腳接GND端口。為了避免電流過大燒壞數碼管,在每一段數碼管電路中串接一個220Ω電阻。4.2電路設計實物接線圖4.3源程序設計可以分別通過一維數組和二維數組編程,實現數碼管靜態顯示功能。1.采用一維數組實現數碼管的靜態顯示采用一維數組實現數碼管依次循環顯示數字,首先要定義4~11號端口,都設為OUTPUT模式,初始化為LOW;主函數要分別顯示數字0~9。為每個數字的顯示定義一個一維數組,并按照表2-9-3中對應的編碼初始化數組。4.3源程序設計Arduino程序代碼如下:voidsetup(){
for(intpin=4;pin<=11;pin++) //設置4~11號數字端口為輸出模式
{pinMode(pin,OUTPUT);
digitalWrite(pin,LOW);}
}voidloop(){//顯示數字0intn0[8]={1,1,1,1,1,1,0,0};//4~11號數字端口依次按數組n0[8]中的數據顯示for(intpin=4;pin<=11;pin++){digitalWrite(pin,n0[pin-4]);}delay(1000);4.3源程序設計//顯示數字1intn1[8]={0,1,1,0,0,0,0,0};//4~11號數字端口依次按數組n1[8]中的數據顯示for(intpin=4;pin<=11;pin++){digitalWrite(pin,n1[pin-4]);}delay(1000);//顯示數字2intn2[8]={1,1,0,1,1,0,1,0};//4~11號數字端口依次按數組n2[8]中的數據顯示for(intpin=4;pin<=11;pin++){digitalWrite(pin,n2[pin-4]);}delay(1000);
4.3源程序設計//顯示數字3intn3[8]={1,1,1,1,0,0,1,0};//4~11號數字端口依次按數組n3[8]中的數據顯示for(intpin=4;pin<=11;pin++){digitalWrite(pin,n3[pin-4]);}delay(1000);//顯示數字4intn4[8
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 砼結構構件施工過程中的質量監督與檢查考核試卷
- 證券從業資格證考試的復習技巧試題及答案
- 抗生素使用指導的檢驗依據試題及答案
- 2025年會計風險控制流程試題及答案
- 2024項目管理考試深入探討試題及答案
- 福建事業單位考試試題及答案突破技巧
- 石墨在電化學電容器材料的應用考核試卷
- 涂料生產過程智能化考核試卷
- 生物能源與碳減排考核試卷
- 管道工程國際合作與交流考核試卷
- 川教版《生命生態安全》九年級下冊第十課樹立生態文明意識 課件
- GB/T 9442-2024鑄造用硅砂
- 中國椎管內分娩鎮痛專家共識(2020版)
- 2023-2024學年天津市紅橋區八年級(下)期中數學試卷(含解析)
- 國開2024年《機械設計基礎》形考任務1-4答案
- ifix培訓教程課件
- 社會單位消防安全風險自查評估報告表模板
- 精神科出院康復指導
- 2024年貴州建筑安全員B證考試題庫及答案(推薦)
- sls打印工藝流程
- PHQ-15軀體癥狀群健康評定量表
評論
0/150
提交評論