版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十章第十章 單片機(jī)典型模塊應(yīng)用單片機(jī)典型模塊應(yīng)用1、任務(wù):點(diǎn)亮LED燈在在KeilKeil軟件編輯窗口輸軟件編輯窗口輸入以下程序:入以下程序:#include sbit P3_0=P30;void main(void) while(1) P3_0=0; 2、AT89S51單片機(jī)最小系統(tǒng)介紹單片機(jī)要工單片機(jī)要工作必須具備作必須具備以下條件:以下條件:(1 1)+5V+5V電電源;(源;(2 2)起振電路;起振電路;(3 3)復(fù)位)復(fù)位電路;電路;(4 4)一塊)一塊正常的單片正常的單片機(jī)。機(jī)。注意:注意:另外P0 口要加上拉電阻,才有足夠的驅(qū)動(dòng)能力驅(qū)動(dòng)外圍器件工作;EA接高電平,表示單片機(jī)使用
2、的是片內(nèi)FLASH ROM。3、任務(wù):閃爍燈#include void delay02s(void) unsigned char i,j,k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-); void main(void) while(1) P3_0=0; delay02s(); P3_0=1; delay02s(); 要求:前面例子是讓要求:前面例子是讓LEDLED燈亮,燈亮,現(xiàn)在實(shí)現(xiàn)現(xiàn)在實(shí)現(xiàn)LEDLED燈的閃爍。燈的閃爍。4、任務(wù):流水燈要求:要求:做廣告燈的左移右移,八個(gè)發(fā)光二極管分別接在單片機(jī)的P3.0P3.7 接口上,輸出“0”時(shí),
3、發(fā)光二極管亮,左移右移按D1D2D3D4D8D7D6 D1 亮,重復(fù)循環(huán)。4、任務(wù):流水燈程序:程序:#include unsigned char i; unsigned char temp; void delay(void) /延時(shí)子程序延時(shí)子程序 unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-); void main(void) /主程序主程序 while(1) /循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。循環(huán)條件永遠(yuǎn)為真,以下程序一直執(zhí)行下去。 續(xù)前頁:續(xù)前頁: temp=0 x7f; P3=temp
4、; /直接對(duì)直接對(duì)I/O口口P3賦值,使賦值,使P3.7輸出低點(diǎn)平。輸出低點(diǎn)平。delay(); /延時(shí)延時(shí)for(i=1;i1)|0 x80; P3=temp;delay(); temp=0 xfe; P3=temp;delay(); for(i=1;i8;i+) /實(shí)現(xiàn)廣告燈的從實(shí)現(xiàn)廣告燈的從D7到到D1移動(dòng)移動(dòng) temp=(temp1)|0 x01; P3=temp;delay(); 思考:如何實(shí)現(xiàn)更為復(fù)雜的花樣燈?參考程序:參考程序:#include reg51.h#define uchar unsigned charconst uchar tab= 0 xfe,0 xfd,0 xfb
5、,0 xf7,0 xef,0 xdf,0 xbf,0 x7f, /下移下移 0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe, /上移上移 0 xef,0 xbd,0 xdb,0 xfe, /兩邊向中間移兩邊向中間移 0 xdb,0 xbd,0 xef, /中間向兩邊移中間向兩邊移 0 xaa,0 x55,0 xaa,0 x55,0 xaa,0 x55, /1357,2468交替交替3次次 0 xf0,0 x0f,0 xf0,0 x0f, /1234,5678交替交替2次次 0 x33,0 xcc,0 x33,0 xcc,0 x33,0 xcc, /1256,
6、3478交替交替3次次 0 x00 ; /結(jié)束碼結(jié)束碼uchar t=0;/以下初始化子函數(shù)以下初始化子函數(shù)/void sys_init(void) TMOD=0 x01; TH0=0 xd8; 續(xù)前頁:續(xù)前頁: TL0=0 xef; ET0=1; EA=1; TR0=1;/以下主函數(shù)以下主函數(shù)/void main(void) uchar i=0; P3=tabi;i+; sys_init(); while(1) while(t100); t=0; if(tabi=0 x00) i=0; P3=tabi;i+; 續(xù)左頁:續(xù)左頁:/以下定時(shí)器以下定時(shí)器0中斷函數(shù)中斷函數(shù)/void timer0(
7、void) interrupt 1 TR0=0; TH0=0 xd8; TL0=0 xef; t+; TR0=1;5、任務(wù):按鍵識(shí)別要求:要求:通過按下一次按鍵通過按下一次按鍵INT0INT0,使小燈,使小燈D1 D1 亮滅交替變換。亮滅交替變換。實(shí)驗(yàn)原理:實(shí)驗(yàn)原理:只要判斷只要判斷P3.2 的電平就可的電平就可以知道按鍵是否被按下;以知道按鍵是否被按下;而在按鍵按下的過程中,而在按鍵按下的過程中,由于機(jī)械抖動(dòng),將產(chǎn)生干由于機(jī)械抖動(dòng),將產(chǎn)生干擾,電平高低變化擾,電平高低變化。可以可以采用軟件濾波的方法去除采用軟件濾波的方法去除這些干擾信號(hào),在程序設(shè)這些干擾信號(hào),在程序設(shè)計(jì)時(shí),一旦發(fā)現(xiàn)計(jì)時(shí),一旦
8、發(fā)現(xiàn)P3.2 為低為低電平,進(jìn)入按鍵判斷狀態(tài)電平,進(jìn)入按鍵判斷狀態(tài),軟件延時(shí),軟件延時(shí)10-20ms,從,從而避開了干擾信號(hào)區(qū)域,而避開了干擾信號(hào)區(qū)域,再重新檢測(cè)再重新檢測(cè)P3.2 狀態(tài),看狀態(tài),看按鍵是否真的已經(jīng)按下。按鍵是否真的已經(jīng)按下。參考程序:參考程序:include sbit INT_0=P32; /定義按鍵的輸入端定義按鍵的輸入端 sbit D1=P30; /D1小燈定義小燈定義void delay10ms(void) /延時(shí)程序延時(shí)程序 unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); key( ) /按鍵判斷程序按鍵判斷程
9、序 if(INT_0=0) /判斷是否按下鍵盤判斷是否按下鍵盤 delay10ms( ); /延時(shí)延時(shí),軟件去干擾軟件去干擾if(INT_0=0) /確認(rèn)按鍵按下確認(rèn)按鍵按下 D1=!D1; /D1亮滅交替變化亮滅交替變化 while(INT_0=0);/按鍵鎖定按鍵鎖定,每按一次每按一次D1只變化一次只變化一次 續(xù)前頁:續(xù)前頁: main()while(1) /永遠(yuǎn)循環(huán)永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下掃描判斷按鍵是否按下 key(); /對(duì)于此處對(duì)于此處CPU只按鍵判斷只按鍵判斷 一直掃描一直掃描;課后請(qǐng)實(shí)踐:1.1.用兩個(gè)按鍵來控制用兩個(gè)按鍵來控制D1 D1 的亮滅;的亮滅;2. 2. 使用
10、一個(gè)按鍵,控制小燈亮的順序使用一個(gè)按鍵,控制小燈亮的順序D1D2D3D4D8D7D1D2D3D4D8D7D0 D0 亮重復(fù)循環(huán);亮重復(fù)循環(huán);6、任務(wù):數(shù)碼管靜態(tài)顯示要求:要求:用數(shù)碼管用數(shù)碼管LED LED 的個(gè)位,靜態(tài)顯示數(shù)字的個(gè)位,靜態(tài)顯示數(shù)字“4”4”字樣字樣;注意:因采用共陰數(shù)碼顯示管,故此圖因采用共陰數(shù)碼顯示管,故此圖P0P0口還應(yīng)接口還應(yīng)接1K1K或或10K10K的排阻作為上拉電阻。的排阻作為上拉電阻。參考程序:參考程序:#include sbit GE=P13;code unsigned char seg7code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,
11、0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /顯示段碼顯示段碼main() unsigned char display_date=4; /定義并賦值要顯示的數(shù)據(jù)定義并賦值要顯示的數(shù)據(jù)while(1) P0=seg7codedisplay_date; /查表查表,輸出輸出 GE=0; /P13為低電平為低電平,相當(dāng)于把數(shù)碼管的相當(dāng)于把數(shù)碼管的4H端接地端接地課后請(qǐng)實(shí)踐:1.1.讓顯示的數(shù)據(jù)動(dòng)起來,比如做一個(gè)讓顯示的數(shù)據(jù)動(dòng)起來,比如做一個(gè)0 0 到到9 9 的秒表(用軟件延時(shí));的秒表(用軟件延時(shí));2.2.和按鍵判斷程序結(jié)合,用按鍵控制數(shù)字變化;和按鍵判斷程序結(jié)合,用按鍵控制數(shù)
12、字變化;7、任務(wù):數(shù)碼管動(dòng)態(tài)顯示要求:要求:用數(shù)碼管用數(shù)碼管LED LED 的顯示四位數(shù)據(jù),比如顯示數(shù)字的顯示四位數(shù)據(jù),比如顯示數(shù)字“1234”1234”;參考程序:參考程序:#include sbit qian=P10;sbit bai=P11;sbit shi=P12;sbit ge=P13;code unsigned char seg7code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /顯示段碼顯示段碼void Delay(unsigned int tc) /延時(shí)程序延時(shí)程序while( tc != 0
13、 )/如果如果tc為為0則終止延時(shí)則終止延時(shí)unsigned int i;/局部正整數(shù)變量局部正整數(shù)變量 ifor(i=0; i100; i+);/執(zhí)行執(zhí)行400次將耗時(shí)次將耗時(shí)1毫秒毫秒tc-;/tc計(jì)數(shù)減一計(jì)數(shù)減一續(xù)前頁:續(xù)前頁:void Led(int date) /顯示函數(shù)顯示函數(shù)qian=0; /P1.0輸出低電平,選通千位數(shù)輸出低電平,選通千位數(shù)P0=seg7codedate/1000; /取出千位數(shù),查表,輸出。取出千位數(shù),查表,輸出。Delay(10); /延時(shí)延時(shí)qian=1; /銷隱銷隱bai=0; /P1.1輸出低電平,選通百位數(shù)輸出低電平,選通百位數(shù)P0=seg7cod
14、edate%1000/100; /取出百位數(shù),查表,輸出。取出百位數(shù),查表,輸出。Delay(10); /延時(shí)延時(shí)bai=1; /銷隱銷隱shi=0; /P1.2輸出低電平,選通十位數(shù)輸出低電平,選通十位數(shù)P0=seg7codedate%100/10; /取出十位數(shù),查表,輸出。取出十位數(shù),查表,輸出。Delay(10); /延時(shí)延時(shí)shi=1; /銷隱銷隱ge=0;/P1.3輸出低電平,選通十位數(shù)輸出低電平,選通十位數(shù)P0=seg7codedate%10; /取出個(gè)位數(shù),查表,輸出。取出個(gè)位數(shù),查表,輸出。Delay(10);ge=1;續(xù)前頁:續(xù)前頁:main() int display_d
15、ate=1234; /定義并賦值要顯示的數(shù)據(jù)定義并賦值要顯示的數(shù)據(jù) while(1) Led(display_date);/調(diào)用顯示函數(shù)顯示數(shù)據(jù)調(diào)用顯示函數(shù)顯示數(shù)據(jù)display_date 上述數(shù)碼管動(dòng)態(tài)顯示程序的另一種寫法參考程序:參考程序:#include unsigned char datebit=0 xfe,0 xfd,0 xfb,0 xf7;/存儲(chǔ)數(shù)碼管的位選值存儲(chǔ)數(shù)碼管的位選值unsigned char tvdate=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f,;unsigned int disdata;
16、 /定義要顯示的數(shù)據(jù)定義要顯示的數(shù)據(jù)unsigned char disdat4; /存儲(chǔ)要顯示的四位數(shù)據(jù)存儲(chǔ)要顯示的四位數(shù)據(jù)void delay(time) unsigned char i,j; for(j=0;jtime;j+) for(i=0;i250;i+); display(void)unsigned char k;disdata=1234;/顯示顯示1234續(xù)前頁:續(xù)前頁: disdat0=disdat/1000;/取出千位取出千位disdat1=disdat%1000/100; /取出百位取出百位disdat2=disdat%100/10;/取出十位取出十位disdat3=disd
17、at%10;/取出個(gè)位取出個(gè)位for(k=0;k4;k+) /顯示四位數(shù)據(jù)顯示四位數(shù)據(jù) P0=tvdatedisdatk; /送出要顯示數(shù)據(jù)的段碼送出要顯示數(shù)據(jù)的段碼P1=datebitk;/P2位選位選delay(10);/延時(shí)延時(shí) main() while(1) display(); 這種寫法比上一種復(fù)雜這種寫法比上一種復(fù)雜, ,占用空間要多一些占用空間要多一些. .但是使但是使用方便用方便, ,可以在此基礎(chǔ)上方便的加上比如顯示小數(shù)可以在此基礎(chǔ)上方便的加上比如顯示小數(shù)點(diǎn)點(diǎn), ,指定某位數(shù)碼管閃爍等。指定某位數(shù)碼管閃爍等。課后思考:課后思考:如何用軟件延時(shí)來做一個(gè)如何用軟件延時(shí)來做一個(gè)0 0
18、 到到60 60 秒的計(jì)數(shù)器嗎?秒的計(jì)數(shù)器嗎?8、任務(wù):4X4矩陣鍵盤識(shí)別要求:要求:用用AT89S51 AT89S51 的并行口的并行口P2 P2 接接4 44 4 矩陣鍵盤,以矩陣鍵盤,以P3.0P3.0P3.3 P3.3 作輸入線作輸入線,以,以P3.4P3.4P3.7 P3.7 作輸出線;在每一個(gè)數(shù)碼管上顯示每個(gè)按鍵的作輸出線;在每一個(gè)數(shù)碼管上顯示每個(gè)按鍵的“0 0F”F”序號(hào)序號(hào)。 實(shí)驗(yàn)原理實(shí)驗(yàn)原理 每個(gè)按鍵有它的行值和列值,行每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分鍵的編碼。矩陣的行線和列線分別通過兩并行接口和
19、別通過兩并行接口和CPU CPU 通信。通信。鍵盤處理程序的任務(wù)是:確定有鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個(gè)鍵按下,無鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過軟件查表,查出該鍵的鍵,通過軟件查表,查出該鍵的功能。功能。鍵盤識(shí)別的兩種方法逐行掃描法逐行掃描法
20、:(1 1)首先判斷有無鍵按下:令矩陣行線輸出全)首先判斷有無鍵按下:令矩陣行線輸出全0 0信號(hào),檢測(cè)信號(hào),檢測(cè)列線狀態(tài),若有一列電平為低,則有鍵按下。列線狀態(tài),若有一列電平為低,則有鍵按下。(2 2)確定閉合鍵位置:依次將各行線置為低電平,逐行檢)確定閉合鍵位置:依次將各行線置為低電平,逐行檢測(cè)各列線的電平狀態(tài),若某列為低,則該行線和列線交叉處測(cè)各列線的電平狀態(tài),若某列為低,則該行線和列線交叉處按鍵就是閉合鍵。按鍵就是閉合鍵。線反轉(zhuǎn)法線反轉(zhuǎn)法:(1 1)令矩陣鍵盤列線輸出全)令矩陣鍵盤列線輸出全0 0信號(hào),行線作為輸入接口接收信號(hào),行線作為輸入接口接收信號(hào),可判斷按鍵處于哪一行。信號(hào),可判斷
21、按鍵處于哪一行。(2 2)令矩陣鍵盤行線輸出全)令矩陣鍵盤行線輸出全0 0信號(hào),列線作為輸入接口接收信號(hào),列線作為輸入接口接收信號(hào),可判斷按鍵處于哪一列。信號(hào),可判斷按鍵處于哪一列。(3 3)將輸入信號(hào)相或后形成鍵盤的唯一鍵碼。)將輸入信號(hào)相或后形成鍵盤的唯一鍵碼。程序程序:(線反轉(zhuǎn)法):(線反轉(zhuǎn)法)#include unsigned char code seg7code=0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c, 0 x39,0 x5e,0 x79,0 x71; unsigned cha
22、r k;void delay10ms(void) /延時(shí)程序延時(shí)程序 unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); void Getch ( ) unsigned char X,Y,Z; P2=0 xff; P2=0 x0f; /先對(duì)先對(duì)P2置數(shù)置數(shù) 行掃描行掃描if(P2!=0 x0f) /判斷是否有鍵按下判斷是否有鍵按下 delay10ms(); /延時(shí)延時(shí),軟件去干擾軟件去干擾 if(P2!=0 x0f) /確認(rèn)按鍵按下確認(rèn)按鍵按下X = P2; 續(xù)前頁:續(xù)前頁: X=P2; /保存行掃描時(shí)有鍵按下時(shí)狀態(tài)保存行掃描時(shí)有鍵按下時(shí)狀
23、態(tài)P2=0 xf0; /列掃描列掃描Y=P2; /保存列掃描時(shí)有鍵按下時(shí)狀態(tài)保存列掃描時(shí)有鍵按下時(shí)狀態(tài)Z=X|Y; /取出鍵值取出鍵值switch ( Z ) /判斷鍵值(那一個(gè)鍵按下)判斷鍵值(那一個(gè)鍵按下)case 0 x77: k=0; break; /對(duì)鍵值賦值對(duì)鍵值賦值case 0 x7b: k=1; break; case 0 x7d: k=2; break; case 0 x7e: k=3; break; case 0 xb7: k=4; break; case 0 xbb: k=5; break; case 0 xbd: k=6; break; case 0 xbe: k=7;
24、 break; case 0 xd7: k=8; break; case 0 xdb: k=9; break; case 0 xdd: k=10;break; case 0 xde: k=11;break; case 0 xe7: k=12;break; case 0 xeb: k=13;break; 續(xù)前頁:續(xù)前頁: case 0 xed: k=14;break; case 0 xee: k=15;break; void main(void) while(1) P2=0 xff; Getch( ); P0=seg7codek; /查表查表LED輸出輸出 P1=0 xf0; /輸出相同的四位數(shù)
25、據(jù)。輸出相同的四位數(shù)據(jù)。 9、任務(wù):按鍵中斷識(shí)別要求:要求:采用中斷技術(shù),每按一下按鍵,計(jì)數(shù)器加采用中斷技術(shù),每按一下按鍵,計(jì)數(shù)器加1 1,并用,并用LED LED 顯示出來,注顯示出來,注意只顯示意只顯示2 2位十進(jìn)制數(shù)。位十進(jìn)制數(shù)。原理:原理:以上的兩個(gè)關(guān)于按鍵識(shí)別的實(shí)驗(yàn)的程序都是采用掃描的方式來實(shí)現(xiàn)的以上的兩個(gè)關(guān)于按鍵識(shí)別的實(shí)驗(yàn)的程序都是采用掃描的方式來實(shí)現(xiàn)的,CPUCPU的利用率比較低;按鍵判斷還可以用中斷方式來判斷。中斷方式可以滿的利用率比較低;按鍵判斷還可以用中斷方式來判斷。中斷方式可以滿足快速響應(yīng)的要求。足快速響應(yīng)的要求。程序程序:#include unsigned char c
26、ode table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char dispcount=0; /計(jì)數(shù)計(jì)數(shù)sbit gewei=P13; /個(gè)位選通定義個(gè)位選通定義sbit shiwei=P12; /十位選通定義十位選通定義void Delay(unsigned int tc) /延時(shí)程序延時(shí)程序while( tc != 0 )unsigned int i;for(i=0; i=10) /顯示兩位數(shù)顯示兩位數(shù)shiwei=0;P0=tabledispcount/10;Delay(8);shiwei
27、=1;gewei=0;P0=tabledispcount%10;Delay(5);gewei=1;else /顯示一位數(shù)顯示一位數(shù) 續(xù)前頁:續(xù)前頁:shiwei=1;gewei=0;P0=tabledispcount;Delay(8); void main() TCON=0 x01; /下降沿觸發(fā)下降沿觸發(fā) IE=0 x81; /開總中斷和允許外部中斷開總中斷和允許外部中斷 while(1) /循環(huán)執(zhí)行循環(huán)執(zhí)行 LED( ); /調(diào)用顯示函數(shù)調(diào)用顯示函數(shù)/*課后思考:課后思考:在程序在硬件運(yùn)行過程中在程序在硬件運(yùn)行過程中, ,有時(shí)候按一下鍵會(huì)加幾個(gè)數(shù)有時(shí)候按一下鍵會(huì)加幾個(gè)數(shù), ,是因?yàn)闆]有去除
28、按鍵干是因?yàn)闆]有去除按鍵干擾請(qǐng)您想一想怎么消除抖動(dòng)擾請(qǐng)您想一想怎么消除抖動(dòng). ./*/ 10、任務(wù):定時(shí)器T0的應(yīng)用9.9秒計(jì)時(shí)設(shè)計(jì)要求:要求:開始時(shí),顯示開始時(shí),顯示“00”00”,第,第1 1 次按下次按下INT0 INT0 后就開始計(jì)時(shí)。后就開始計(jì)時(shí)。第第2 2 次按次按INT0 INT0 后,計(jì)時(shí)停止。第后,計(jì)時(shí)停止。第3 3 次按次按INT0 INT0 后,計(jì)時(shí)歸零。后,計(jì)時(shí)歸零。程序程序:#include unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f, ;
29、unsigned char sec; /定義計(jì)數(shù)值,每過定義計(jì)數(shù)值,每過1/10 秒,秒,sec 加一加一unsigned char keycnt=1; /鍵值判斷鍵值判斷unsigned int tcnt; /中斷次數(shù)計(jì)數(shù)器中斷次數(shù)計(jì)數(shù)器 sbit gewei=P13; /個(gè)位選通定義個(gè)位選通定義sbit shiwei=P12; /十位選通定義十位選通定義sbit INT_0=P32; /按鍵定義位按鍵定義位void Delay(unsigned int tc) /延時(shí)程序延時(shí)程序while( tc != 0 )unsigned int i;for(i=0; i0;i-) /延時(shí)去干擾延時(shí)去
30、干擾for(j=248;j0;j-);續(xù)前頁:續(xù)前頁:if(INT_0=0)switch(keycnt) /按下次數(shù)判斷按下次數(shù)判斷case 1: /第一次按下第一次按下TH0=0 x06; /對(duì)對(duì)TH0 TL0 賦值賦值TL0=0 x06;TR0=1; /開始定時(shí)開始定時(shí)keycnt=2; /為第二次做準(zhǔn)備為第二次做準(zhǔn)備break;case 2: /第二次按下第二次按下TR0=0; /定時(shí)結(jié)束定時(shí)結(jié)束keycnt=3; /為第三次按下做準(zhǔn)備為第三次按下做準(zhǔn)備break;case 3: /第三次按下第三次按下keycnt=1; /重新開始判斷鍵值重新開始判斷鍵值sec=0; /計(jì)數(shù)重新從零開始
31、計(jì)數(shù)重新從零開始break; 續(xù)前頁:續(xù)前頁:while(INT_0=0);void t0(void) interrupt 1 using 0 /定時(shí)中斷服務(wù)函數(shù)定時(shí)中斷服務(wù)函數(shù)tcnt+; /每過每過250us,tcnt 加一加一if(tcnt=400) /計(jì)滿計(jì)滿400 次(次(0.1 秒)時(shí)秒)時(shí)tcnt=0; /重新再計(jì)重新再計(jì)sec+;if(sec=100) /定時(shí)定時(shí)10 秒,在從零開始計(jì)時(shí)秒,在從零開始計(jì)時(shí)sec=0;續(xù)前頁:續(xù)前頁:void main(void)TMOD=0 x02; /定時(shí)器工作在方式定時(shí)器工作在方式2 自動(dòng)重裝方式自動(dòng)重裝方式ET0=1; /允許允許T0 產(chǎn)
32、生中斷產(chǎn)生中斷EA=1; /開總中斷開總中斷sec=0;while(1)KEY();LED();11、任務(wù):PC機(jī)與單片機(jī)通信要求:要求:單片機(jī)串口通信的應(yīng)用,通過串口,電腦和單片機(jī)系統(tǒng)進(jìn)行通信。電單片機(jī)串口通信的應(yīng)用,通過串口,電腦和單片機(jī)系統(tǒng)進(jìn)行通信。電腦作為上位機(jī),向下位機(jī)單片機(jī)系統(tǒng)發(fā)送十六進(jìn)制或者腦作為上位機(jī),向下位機(jī)單片機(jī)系統(tǒng)發(fā)送十六進(jìn)制或者ASCLLASCLL碼,單片機(jī)系統(tǒng)碼,單片機(jī)系統(tǒng)接收后,用接收后,用LED LED 顯示接收到的數(shù)據(jù)和向上位機(jī)發(fā)回原樣數(shù)據(jù)。顯示接收到的數(shù)據(jù)和向上位機(jī)發(fā)回原樣數(shù)據(jù)。單片機(jī)串口相關(guān)知識(shí)回顧(1) MCS-51串行口的原理結(jié)構(gòu)圖 單片機(jī)串口相關(guān)知識(shí)回
33、顧(2) 串行口控制寄存器SCON SM0SM1SM2RENTB8RB8TIRI D7 D6 D5 D4 D3 D2 D1 D0 SMODGF1GF0PDIDL D7 D6 D5 D4 D3 D2 D1 D0 (3) 特殊功能寄存器PCON 單片機(jī)串口相關(guān)知識(shí)回顧(4) 串口通信的波特率 對(duì)于方式對(duì)于方式0,波特率是固定的波特率是固定的, ,為單片機(jī)時(shí)鐘的為單片機(jī)時(shí)鐘的1/12,1/12,即即fosc/12。對(duì)于方式對(duì)于方式2,2,波特率有兩種可供選擇波特率有兩種可供選擇, ,即即fosc/32fosc/32和和fosc/64fosc/64。對(duì)應(yīng)于以下公式:。對(duì)應(yīng)于以下公式: 波特率波特率=f
34、osc(2SMOD)/64 對(duì)于方式對(duì)于方式1 1和方式和方式3,3,波特率都由定時(shí)器波特率都由定時(shí)器T1T1的溢出率來決定的溢出率來決定, ,對(duì)應(yīng)于以下公式:對(duì)應(yīng)于以下公式: 波特率波特率=(2SMOD/32)(定時(shí)器定時(shí)器T1的溢出率的溢出率) 而定時(shí)器而定時(shí)器T1T1的溢出率則和所采用的定時(shí)器工作方式有關(guān)的溢出率則和所采用的定時(shí)器工作方式有關(guān), ,并并可用以下公式表示:可用以下公式表示: 定時(shí)器定時(shí)器T1T1的溢出率的溢出率=fosc/12=fosc/12(2n-X)(2n-X)程序程序:#include unsigned char dat; /用于存儲(chǔ)單片機(jī)接收發(fā)送緩沖寄存器用于存儲(chǔ)單
35、片機(jī)接收發(fā)送緩沖寄存器SBUF 里面的內(nèi)容里面的內(nèi)容sbit gewei=P13; /個(gè)位選通定義個(gè)位選通定義sbit shiwei=P12; /十位選通定義十位選通定義unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f;void Delay(unsigned int tc) /延時(shí)程序延時(shí)程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED( ) /LED 顯示接收到的數(shù)據(jù)(十進(jìn)制)顯示接收到的數(shù)
36、據(jù)(十進(jìn)制)shiwei=0;P0=tabledat/10;Delay(5);續(xù)前頁:續(xù)前頁:shiwei=1;gewei=0;P0=tabledat%10;Delay(5);gewei=1;void Init_Com(void) /功能功能:串口初始化串口初始化,波特率波特率9600,方式,方式1TMOD = 0 x20;PCON = 0 x00;SCON = 0 x50;TH1 = 0 xFd;TL1 = 0 xFd;TR1 = 1;續(xù)前頁:續(xù)前頁:void main() /實(shí)現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去實(shí)現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去/Init_Com(); /串口初始
37、化串口初始化while(1)if ( RI ) /掃描判斷是否接收到數(shù)據(jù),掃描判斷是否接收到數(shù)據(jù),dat = SBUF; /接收數(shù)據(jù)接收數(shù)據(jù)SBUF 賦與賦與datRI=0; /RI 清零(必須用軟件清零)清零(必須用軟件清零)SBUF = dat; /再原樣把數(shù)據(jù)發(fā)送回去再原樣把數(shù)據(jù)發(fā)送回去LED( ); /顯示接收到的數(shù)據(jù)顯示接收到的數(shù)據(jù)12、任務(wù):數(shù)模轉(zhuǎn)換器ADC0804的應(yīng)用(擴(kuò)展)要求:要求:從從ADC0804ADC0804的通道的通道IN+IN+輸入輸入0 05V 5V 之間的模擬量,通過之間的模擬量,通過ADC0804 ADC0804 轉(zhuǎn)換成轉(zhuǎn)換成數(shù)字量在數(shù)碼管上以十進(jìn)制形成顯示
38、出來。數(shù)字量在數(shù)碼管上以十進(jìn)制形成顯示出來。程序程序:#include code unsigned char seg7code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /顯示段碼顯示段碼sbit int1=P33; /定義管腳功能定義管腳功能sbit cs=P32;sbit wr=P36;sbit rd=P37;void Delay(unsigned int tc) /顯示延時(shí)程序顯示延時(shí)程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;unsi
39、gned char adc0804( void ) /讀讀AD0804 子程序子程序 unsigned char addata,i;rd=1;wr=1;int1=1; /讀讀ADC0804 前準(zhǔn)備前準(zhǔn)備P1=0 xff; /P1 全部置一準(zhǔn)備全部置一準(zhǔn)備cs=0;wr=0;wr=1; /啟動(dòng)啟動(dòng)ADC0804 開始測(cè)電壓開始測(cè)電壓while(int1=1); /查詢等待查詢等待A/D 轉(zhuǎn)換完畢產(chǎn)生的轉(zhuǎn)換完畢產(chǎn)生的INT(低電平有效)信號(hào)(低電平有效)信號(hào)rd=0; /開始讀轉(zhuǎn)換后數(shù)據(jù)開始讀轉(zhuǎn)換后數(shù)據(jù)續(xù)前頁:續(xù)前頁:i=i; i=i; /無意義語句,用于延時(shí)等待無意義語句,用于延時(shí)等待ADC08
40、04 讀數(shù)完畢讀數(shù)完畢addata=P1; /讀出的數(shù)據(jù)賦與讀出的數(shù)據(jù)賦與addatard=1;cs=1; /讀數(shù)完畢讀數(shù)完畢return(addata); /返回最后讀出的數(shù)據(jù)返回最后讀出的數(shù)據(jù)unsigned int datpro(void) /ADC0804 讀出的數(shù)據(jù)處理讀出的數(shù)據(jù)處理 unsigned char x;unsigned int dianyah,dianyal; /用于存儲(chǔ)讀出數(shù)據(jù)的高字節(jié)和低字節(jié)用于存儲(chǔ)讀出數(shù)據(jù)的高字節(jié)和低字節(jié)unsigned int dianya=0; /存儲(chǔ)最后處理完的結(jié)果注意數(shù)據(jù)類型存儲(chǔ)最后處理完的結(jié)果注意數(shù)據(jù)類型for(x=0;x4; /右移四位
41、取出高四位右移四位取出高四位dianyal=dianya&0 x0f; /屏蔽高四位取出低四位屏蔽高四位取出低四位dianya=dianyal*20+dianyah*320; /最后的結(jié)果是一個(gè)四位數(shù),便于顯示最后的結(jié)果是一個(gè)四位數(shù),便于顯示return(dianya); /返回最后處理結(jié)果返回最后處理結(jié)果續(xù)前頁:續(xù)前頁:void Led( ) unsigned int date;date=datpro(); /調(diào)用數(shù)據(jù)處理最后結(jié)果調(diào)用數(shù)據(jù)處理最后結(jié)果P2=P2&0 xef;P0=seg7codedate/1000|0 x80; /輸出個(gè)位數(shù)和小數(shù)點(diǎn)輸出個(gè)位數(shù)和小數(shù)點(diǎn)Delay(8); P2=
42、P2|0 xf0; P2=P2&0 xdf;P0=seg7codedate%1000/100; /輸出小數(shù)點(diǎn)后第一位輸出小數(shù)點(diǎn)后第一位Delay(8); P2=P2|0 xf0; P2=P2&0 xbf;P0=seg7codedate%100/10; /輸出小數(shù)點(diǎn)后第二位輸出小數(shù)點(diǎn)后第二位Delay(8); P2=P2|0 xf0; P2=P2&0 x7f;P0=seg7codedate%10; /輸出小數(shù)點(diǎn)后第三位輸出小數(shù)點(diǎn)后第三位Delay(8); P2=P2|0 xf0;main()while(1)Led( ); /只需調(diào)用顯示函數(shù)只需調(diào)用顯示函數(shù)13、任務(wù):模數(shù)轉(zhuǎn)換器DAC0832的應(yīng)
43、用要求:要求:用兩個(gè)按鍵通過單片機(jī)控制用兩個(gè)按鍵通過單片機(jī)控制DAC0832 DAC0832 的輸出,使的輸出,使OUT OUT 端可以輸出端可以輸出005V 5V 的幅值,頻率為的幅值,頻率為1KHZ 1KHZ 的鋸齒波和三角波兩種波形。通上電源后;按下的鋸齒波和三角波兩種波形。通上電源后;按下INT1 INT1 則輸出三角波,再按下則輸出三角波,再按下INT0 INT0 輸出鋸齒波。輸出鋸齒波。實(shí)驗(yàn)原理實(shí)驗(yàn)原理DAC0832DAC0832是是8 8 位全位全MOS MOS 中速中速D/A D/A 轉(zhuǎn)換器,采用轉(zhuǎn)換器,采用RR2RT 2RT 形電阻解碼網(wǎng)絡(luò),轉(zhuǎn)換結(jié)果為一對(duì)差動(dòng)電流輸出形電阻解
44、碼網(wǎng)絡(luò),轉(zhuǎn)換結(jié)果為一對(duì)差動(dòng)電流輸出,轉(zhuǎn)換時(shí)間大約為,轉(zhuǎn)換時(shí)間大約為1us1us。使用單電源。使用單電源+5V+5V+15V +15V 供電供電。參考電壓為。參考電壓為-10V-10V+10V+10V。在此我們直接選擇。在此我們直接選擇+5V +5V 作作為參考電壓。為參考電壓。DAC0832 DAC0832 有三種工作方式:直通方式,單緩沖方式有三種工作方式:直通方式,單緩沖方式,雙緩沖方式;在此我們選擇直通的工作方式,將,雙緩沖方式;在此我們選擇直通的工作方式,將XFERXFER、WR1WR1、WR2WR2和和CSCS管腳全部接數(shù)字地。管腳管腳全部接數(shù)字地。管腳8 8 接參接參考電壓,在此我
45、們接的參考電壓是考電壓,在此我們接的參考電壓是+5V+5V。那么經(jīng)過第。那么經(jīng)過第一級(jí)運(yùn)放后,輸出電壓將是一級(jí)運(yùn)放后,輸出電壓將是-5V-5V0V0V,在經(jīng)過第二級(jí),在經(jīng)過第二級(jí)運(yùn)放反相放大運(yùn)放反相放大1 1 倍以后將可以輸出倍以后將可以輸出0V5V 0V5V 了。再控了。再控制制P1P1口輸出數(shù)據(jù)有規(guī)律的變化將可以產(chǎn)生三角波,鋸口輸出數(shù)據(jù)有規(guī)律的變化將可以產(chǎn)生三角波,鋸齒波,梯型波等波形了。齒波,梯型波等波形了。程序程序:#include unsigned char keycnt=0; /波形標(biāo)志波形標(biāo)志unsigned char tcnt=0; /鍵值判斷鍵值判斷bit sjz=0; /產(chǎn)
46、生三角波時(shí)上升、下降用到的標(biāo)志產(chǎn)生三角波時(shí)上升、下降用到的標(biāo)志void delayl( ) /延時(shí)子程序延時(shí)子程序 unsigned char i,j;for(i=20;i0;i-)for(j=248;j0;j-); void KEY( ) /按鍵掃描程序按鍵掃描程序if(P3_2=0)delayl( ); /延時(shí)跳過按下時(shí)的抖動(dòng)延時(shí)跳過按下時(shí)的抖動(dòng)if(P3_2=0)keycnt=0; /定時(shí)器產(chǎn)生鋸齒波標(biāo)志定時(shí)器產(chǎn)生鋸齒波標(biāo)志TR0=0; /暫時(shí)停止波形輸出暫時(shí)停止波形輸出TH0=0 x256-40; /對(duì)對(duì)TH0 TL0 賦值賦值TL0=0 x256-40;TR0=1; /開始定時(shí)開始定
47、時(shí),產(chǎn)生鋸齒波產(chǎn)生鋸齒波續(xù)前頁:續(xù)前頁:while(P3_2=0); /如果一直按著鍵,則等待鍵松開如果一直按著鍵,則等待鍵松開delayl( ); /延時(shí)跳過松開后的抖動(dòng)延時(shí)跳過松開后的抖動(dòng) if(P3_3=0)delayl( ); /延時(shí)跳過按下時(shí)的抖動(dòng)延時(shí)跳過按下時(shí)的抖動(dòng)if(P3_3=0)keycnt=1; /定時(shí)器產(chǎn)生三角波標(biāo)志定時(shí)器產(chǎn)生三角波標(biāo)志TR0=0; /暫時(shí)停止波形輸出暫時(shí)停止波形輸出TH0=0 x256-40; /對(duì)對(duì)TH0、TL0 賦值賦值TL0=0 x256-40;TR0=1; /開始定時(shí)產(chǎn)生三角波開始定時(shí)產(chǎn)生三角波while(P3_2=0); /如果一直按著鍵,則等
48、待松鍵開如果一直按著鍵,則等待松鍵開delayl( ); /延時(shí)跳過松開后的抖動(dòng)延時(shí)跳過松開后的抖動(dòng)續(xù)前頁:續(xù)前頁:void t0(void) interrupt 1 using 0 /定時(shí)中斷服務(wù)函數(shù)定時(shí)中斷服務(wù)函數(shù)if(keycnt=0) /產(chǎn)生鋸齒波產(chǎn)生鋸齒波P0=tcnt;tcnt=+0 x0a; /步進(jìn)步進(jìn)0.2V/一次中斷一次中斷if(tcnt=0 xfb)tcnt=0;if(keycnt=1) /產(chǎn)生三角波產(chǎn)生三角波 if(sjz=0)P0=tcnt;tcnt=+0 x0a; /步進(jìn)步進(jìn)0.2V/一次中斷一次中斷if(tcnt=0 xfa)sjz=1;if(sjz=1)續(xù)前頁:續(xù)
49、前頁:P0=tcnt;Tcnt-=0 x0a;if(tcnt=0)sjz=0;void main(void)TMOD=0 x02; /定時(shí)器工作在方式定時(shí)器工作在方式2ET0=1;EA=1;while(1) KEY( ); 14、任務(wù):24C08的讀寫操作要求:要求:利用利用24C0824C08斷電以后存儲(chǔ)的數(shù)據(jù)不消失的特點(diǎn),可以做一個(gè)斷電保護(hù)斷電以后存儲(chǔ)的數(shù)據(jù)不消失的特點(diǎn),可以做一個(gè)斷電保護(hù)裝置。首先利用單片機(jī)做一個(gè)裝置。首先利用單片機(jī)做一個(gè)099099秒的自動(dòng)計(jì)時(shí)器。然后隨機(jī)關(guān)斷電源,在秒的自動(dòng)計(jì)時(shí)器。然后隨機(jī)關(guān)斷電源,在通電以后計(jì)時(shí)器接著斷電前的狀態(tài)繼續(xù)計(jì)時(shí)。通電以后計(jì)時(shí)器接著斷電前的狀
50、態(tài)繼續(xù)計(jì)時(shí)。實(shí)驗(yàn)原理實(shí)驗(yàn)原理引腳圖引腳圖實(shí)驗(yàn)原理實(shí)驗(yàn)原理總線協(xié)議總線協(xié)議實(shí)驗(yàn)原理實(shí)驗(yàn)原理寫周期時(shí)序和起始、停止時(shí)序?qū)懼芷跁r(shí)序和起始、停止時(shí)序?qū)嶒?yàn)原理實(shí)驗(yàn)原理器件尋址器件尋址實(shí)驗(yàn)原理實(shí)驗(yàn)原理器件尋址器件尋址實(shí)驗(yàn)原理實(shí)驗(yàn)原理寫操作寫操作注意:注意:I2CI2C總線數(shù)據(jù)都是高位在前,低位在后!總線數(shù)據(jù)都是高位在前,低位在后!實(shí)驗(yàn)原理實(shí)驗(yàn)原理寫操作寫操作實(shí)驗(yàn)原理實(shí)驗(yàn)原理讀操作讀操作實(shí)驗(yàn)原理實(shí)驗(yàn)原理讀操作讀操作實(shí)驗(yàn)原理實(shí)驗(yàn)原理讀操作讀操作程序程序:#include #include #include unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x
51、66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f;unsigned char sec; /定義計(jì)數(shù)值,每過定義計(jì)數(shù)值,每過1 秒,秒,sec 加加1unsigned int tcnt; /定時(shí)中斷次數(shù)定時(shí)中斷次數(shù)bit write=0; /寫寫24C08 的標(biāo)志;的標(biāo)志;sbit gewei=P13; /個(gè)位選通定義個(gè)位選通定義sbit shiwei=P12; /十位選通定義十位選通定義/24C08 讀寫驅(qū)動(dòng)程序開始讀寫驅(qū)動(dòng)程序開始/sbit scl=P36; / 24c08 SCLsbit sda=P37; / 24c08 SDAvoid delay1(unsigned
52、char x) unsigned int i;for(i=0;ix;i+);void flash() /延時(shí)延時(shí)2us ; ; void x24c08_init() /24c08 初始化子程序初始化子程序scl=1;flash();sda=1;flash();void start() /啟動(dòng)啟動(dòng)I2C 總線總線sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();void stop() /停止停止I2C 總線總線sda=0;flash( );scl=1;flash();sda=1;flash();void writex(unsigned
53、 char j) /寫一個(gè)字節(jié)寫一個(gè)字節(jié)unsigned char i,temp;temp=j;for (i=0;i8;i+)temp=temp1;scl=0;flash();sda=CY;flash();scl=1;flash();scl=0;flash();sda=1;flash();unsigned char readx( ) /讀一個(gè)字節(jié)讀一個(gè)字節(jié)unsigned char i,j,k=0;scl=0;flash( );sda=1;for (i=0;i8;i+)flash( );scl=1;flash( );if (sda=1) j=1;else j=0;k=(k1)|j;scl=0;
54、flash();return(k);void clock( ) / I2C 總線時(shí)鐘,確認(rèn)應(yīng)答信號(hào)總線時(shí)鐘,確認(rèn)應(yīng)答信號(hào)unsigned char i=0;scl=1;flash( );while (sda=1)&(i255)i+;scl=0;flash( );/從從24c08 的地址的地址address 中讀取一個(gè)字節(jié)數(shù)據(jù)中讀取一個(gè)字節(jié)數(shù)據(jù)/unsigned char x24c08_read(unsigned char address)unsigned char i;/先發(fā)寫命令、寫地址先發(fā)寫命令、寫地址start( );writex(0 xa0);clock( );writex(addre
55、ss);clock( ); /再發(fā)讀命令,讀數(shù)據(jù)再發(fā)讀命令,讀數(shù)據(jù)start( );writex(0 xa1);clock( );i=readx( ); stop( );delay1(10);return(i);/向向24c08 的的address 地址中寫入一字節(jié)數(shù)據(jù)地址中寫入一字節(jié)數(shù)據(jù)info/void x24c08_write(unsigned char address,unsigned char info)EA=0;start( );writex(0 xa0);clock();writex(address);clock( );writex(info);clock();stop();EA
56、=1;delay1(50); /以上以上24C08 讀寫驅(qū)動(dòng)程序完讀寫驅(qū)動(dòng)程序完/void Delay(unsigned int tc) /延時(shí)程序延時(shí)程序while( tc != 0 )unsigned int i;for(i=0; i100; i+);tc-;void LED( ) /LED 顯示函數(shù)顯示函數(shù)shiwei=0;P0=tablesec/10;Delay(5);shiwei=1;gewei=0;P0=tablesec%10; Delay(5);gewei=1;void t0(void) interrupt 1 using 0 /定時(shí)中斷服務(wù)函數(shù)定時(shí)中斷服務(wù)函數(shù)TH0=(6553
57、6-50000)/256; /對(duì)對(duì)TH0 TL0 賦值賦值TL0=(65536-50000)%256; /重裝計(jì)數(shù)初值重裝計(jì)數(shù)初值tcnt+; /每過每過250ust tcnt 加一加一if(tcnt=20) /計(jì)滿計(jì)滿20 次(次(1 秒)時(shí)秒)時(shí)tcnt=0;sec+;write=1; /1 秒寫一次秒寫一次24C08if(sec=100) /定時(shí)定時(shí)100 秒,在從零開始計(jì)時(shí)秒,在從零開始計(jì)時(shí)sec=0;void main(void)TMOD=0 x01; /定時(shí)器工作在方式定時(shí)器工作在方式1ET0=1;EA=1;x24c08_init( ); /初始化初始化24C08sec=x24c0
58、8_read(2); /讀出保存的數(shù)據(jù)賦于讀出保存的數(shù)據(jù)賦于secTH0=(65536-50000)/256; /對(duì)對(duì)TH0 TL0 賦值賦值TL0=(65536-50000)%256; /使定時(shí)器使定時(shí)器0.05 秒中斷一次秒中斷一次TR0=1; /開始計(jì)時(shí)開始計(jì)時(shí)while(1) LED( ); if(write=1) /判斷計(jì)時(shí)器是否計(jì)時(shí)一秒判斷計(jì)時(shí)器是否計(jì)時(shí)一秒 write=0; /清零清零 x24c08_write(2,sec); /在在24c08 的地址的地址2寫入數(shù)據(jù)寫入數(shù)據(jù)sec 15、任務(wù):LCD1602液晶模塊應(yīng)用要求:要求:LCD1602字符型液晶顯示實(shí)驗(yàn)。在屏幕的第一行
59、顯示字符型液晶顯示實(shí)驗(yàn)。在屏幕的第一行顯示“”,第二行則顯示,第二行則顯示“Tel:1308645xxxx”實(shí)驗(yàn)原理實(shí)驗(yàn)原理LCDLCD基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)LCDLCD顯示器是一種利用液晶的扭曲顯示器是一種利用液晶的扭曲/ /向列效應(yīng)制成的向列效應(yīng)制成的新型顯示器。具有體積小、重量輕、功耗低、抗干新型顯示器。具有體積小、重量輕、功耗低、抗干擾能力強(qiáng)等優(yōu)點(diǎn),因而在單片機(jī)系統(tǒng)中被廣泛應(yīng)用。擾能力強(qiáng)等優(yōu)點(diǎn),因而在單片機(jī)系統(tǒng)中被廣泛應(yīng)用。實(shí)驗(yàn)原理實(shí)驗(yàn)原理LCDLCD結(jié)構(gòu)及工作原理結(jié)構(gòu)及工作原理uLCDLCD本身不發(fā)光,是通過借助外界光線照射液晶材料本身不發(fā)光,是通過借助外界光線照射液晶材料而實(shí)現(xiàn)顯示的被動(dòng)
60、顯示器件。而實(shí)現(xiàn)顯示的被動(dòng)顯示器件。u向列型液晶材料被封裝在上、下兩片導(dǎo)電玻璃電極向列型液晶材料被封裝在上、下兩片導(dǎo)電玻璃電極之間,液晶分子平行排列,上下扭曲之間,液晶分子平行排列,上下扭曲9090度,外部入射度,外部入射光線通過上偏振片后形成偏振光,該偏振光通過平行光線通過上偏振片后形成偏振光,該偏振光通過平行排列的液晶材料后被旋轉(zhuǎn)排列的液晶材料后被旋轉(zhuǎn)9090度,再通過與上偏振片垂度,再通過與上偏振片垂直的下偏振片,被反射極反射過來,呈透明狀態(tài)。直的下偏振片,被反射極反射過來,呈透明狀態(tài)。u若在上、下電極之間加一定電壓,在電場的作用下若在上、下電極之間加一定電壓,在電場的作用下迫使加在電極
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人房產(chǎn)買賣合同(含家具家電及家具安裝)2篇
- 商鋪出租委托代理合同(2025年度)
- 餐飲業(yè)2025年度四人合作經(jīng)營合同范本
- 個(gè)人住宅翻新合同簡要版 2024年適用版B版
- 二零二五年度跨區(qū)域數(shù)據(jù)安全協(xié)議搭建與執(zhí)行合同4篇
- 2025年度出口退稅賬戶托管業(yè)務(wù)合作合同模板4篇
- 個(gè)性化離婚合同模板:財(cái)產(chǎn)分割與子女撫養(yǎng)權(quán)益保障版B版
- 2025年度智能化煤礦設(shè)備安裝與維護(hù)服務(wù)合同4篇
- 股權(quán)收購居間服務(wù)2025年度合同5篇
- 2025年度養(yǎng)老院物業(yè)委托管理與運(yùn)營合同4篇
- 油氣行業(yè)人才需求預(yù)測(cè)-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- 華為集團(tuán)干部管理
- 圖書館前臺(tái)接待工作總結(jié)
- 衛(wèi)生院藥品管理制度
- 理論力學(xué)智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 2024老年人靜脈血栓栓塞癥防治中國專家共識(shí)(完整版)
- 四年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 上海市12校2023-2024學(xué)年高考生物一模試卷含解析
- 儲(chǔ)能電站火災(zāi)應(yīng)急預(yù)案演練
評(píng)論
0/150
提交評(píng)論