《《單片機(jī)實訓(xùn)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《單片機(jī)實訓(xùn)》PPT課件.ppt(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單片機(jī)實訓(xùn),單片機(jī)最小系統(tǒng),單片機(jī)以高性能、高速度、體積小、價格低廉、穩(wěn)定可靠而得到廣泛應(yīng)用,是工業(yè)控制、設(shè)計智能化儀器儀表的首選微控制器,也是測控、監(jiān)控的重要組成部分。 單片機(jī)最小系統(tǒng)主要包括時鐘電路和復(fù)位電路。 用流水燈的程序驗證單片機(jī)最小系統(tǒng),流水燈的程序,#include void delay0_2s() unsigned char i; for(i=0;i<10;i++)//設(shè)置10次循環(huán)次數(shù) TH1=0 x3c;//定時器初值 TL1=0 xb0; TR1=1;//啟動T1 while(!TF1);//查詢計數(shù)是否溢出 TF1=0; //定時時間到 void main()//主函
2、數(shù) ,while(1) unsigned char i,w; TMOD=0 x10; //設(shè)置T1工作方式1 w=0 x01;//顯示碼初值 for(i=0;i=1;//右移 delay0_2s();//延時 ,流水燈的原理圖,秒表,設(shè)計兩位LED數(shù)碼管顯示00-99,計滿清零,秒表的程序,#include unsigned char msec,sec; //定義msec為50ms計數(shù)變量,sec為秒變量 void delay(unsigned char i)//延時函數(shù) unsigned char j,k; for(k=0;k
3、 T0_INT(void) interrupt 1 //定時器0中斷類型號為1 TH0=0 x3c; //50ms定時初值 TL0=0 xb0; msec++; //中斷次數(shù)增1 if(msec==20) //中斷次數(shù)到20次嗎? msec=0; //是,1s計時到,50ms計數(shù)變量清零 sec++; //秒變量增1 if(sec==100) //到100s嗎? sec=0; //是,秒變量清零 void main()//主函數(shù) unsigned char led=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; //定義
4、數(shù)字09字型顯示碼 unsigned char temp; TMOD=0 x01; //定時器0工作方式1 TH0=0 x3C; //定時初值50ms TL0=0 xb0; EA=1; TR0=1;//開總中斷 ET0=1;//開定時器0中斷 P3=0 xff;//p3口做輸入 while(1),P2=0 x01; //選p2.0控制的數(shù)碼管 P1=ledsec/10;//顯示秒個位 delay(10); P2=0 x02; //選p2.1控制的數(shù)碼管 P1=ledsec%10; //顯示秒十位 delay(10); temp=P3; //讀入p3口引腳狀態(tài)并取反 temp=temp,秒表的原
5、理圖,串口秒表,用串行口顯示00-99,每隔一秒發(fā)送一次,循環(huán)反復(fù); 程序采用查詢方式編寫,串口秒表的程序,#include unsigned char led=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; unsigned char msec,sec; void delay(); void time0() interrupt 1 TH0=0 x3c; TL0=0 xb0; msec++; if(msec==20) msec=0; sec++; if(sec==100)sec=0; void main() T
6、MOD=0 x01; TH0=0 x3c; TL0=0 xb0; EA=1; ET0=1;,SCON=0; //可不寫 TR0=1; while(1) SBUF=ledsec%10; while(TI==0); TI=0; SBUF=ledsec/10; while(TI==0); TI=0; delay(); void delay() unsigned char j,k; for(j=0;j<50;j++) for(k=0;k<200;k++); ,串口秒表的原理圖,交通信號燈順序控制,設(shè)計一個十字路口交通信號燈的順序控制器 綠燈亮,放行20s 黃燈亮,警告5s 紅燈亮,禁止25s
7、S0鍵按下時,A路放行,B路禁行 S1鍵按下時,A路禁行,B路放行,交通燈的程序,#include unsigned char t0,t1;//定義全局變量,用來保存延時時間循環(huán)次數(shù) void delay0_5s1()//延時 for(t0=0;t0<0 x0a;t0++)//采用全局變量t0作為循環(huán)控制變量 TH1=0 x3c;//設(shè)置定時初值 TL1=0 xb0;TR1=1;//啟動T1 while(!TF1);//查詢計數(shù)是否溢出 TF1=0;//定時時間到 void delay_t1(unsigned char t) for(t1=0;t1
8、變量 delay0_5s1(); void int_0() interrupt 0 //緊急情況中斷 unsigned char i,j,k,l,m; i=P1;//保護(hù)現(xiàn)象 j=t0; k=t1; l=TH1; m=TL0; P1=0 xdb; //兩個方向都是紅燈 delay_t1(20);//延時10s P1=i;//恢復(fù)現(xiàn)象 t0=j; t1=k; TH1=l; TL1=m; void int_1() interrupt 2 //特殊情況中斷 unsigned char i,j,k,l,m; EA=0;//關(guān)中斷 i=P1;//保護(hù)現(xiàn)象 j=t0; k=t1; l=TH1; m=TL1
9、; EA=1;//開中斷 P1=0 xf3; //A路放行 delay_t1(10); EA=0;//關(guān)中斷,P1=i;//恢復(fù)現(xiàn)象 t0=j; t1=k; TH1=l; TL1=m; EA=1;//開中斷 void main() //主函數(shù) unsigned char k; TMOD=0 x10;//T1在工作方式1 EA=1; //開總中斷允許位 EX0=1;//開外部中斷0中斷允許位 IT0=1;//設(shè)置外部中斷0為下降沿觸發(fā) EX1=1;//開外部中斷1中斷允許位 IT1=1;//設(shè)置外部中斷1為下降沿觸發(fā) while(1) P1=0 xf3;//A綠燈,B紅燈,延時55s dela
10、y_t1(10); for(k=0;k<3;k++)//A綠燈閃爍3次 P1=0 xf3; delay0_5s1();//延時0.5s P1=0 xfb; delay0_5s1(); P1=0 xeb;//A黃燈,B紅燈,延時2S delay_t1(4); P1=0 xde; //A紅燈,B綠燈,延時55S delay_t1(10); for(k=0;k<3;k++) //B綠燈閃爍3次 P1=0 xde; delay0_5s1(); //延時0.5S P1=0 xdf; delay0_5s1();//延時0.5S P1=0 xdd; //A紅燈,B黃燈,延時2S delay_t1(4);,交通燈的原理圖,實訓(xùn)總結(jié),,