單片機(jī)試題庫(kù)程序及答案_第1頁(yè)
單片機(jī)試題庫(kù)程序及答案_第2頁(yè)
單片機(jī)試題庫(kù)程序及答案_第3頁(yè)
單片機(jī)試題庫(kù)程序及答案_第4頁(yè)
單片機(jī)試題庫(kù)程序及答案_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序功能:通過用DAC0832產(chǎn)生三角波。(DAC0832的數(shù)字信號(hào)輸入端接P0口,/CS接P2.7,/XFER接地,/WR1、/WR2接單片機(jī)的/WR,ILE接電源+5V。)①DA0832=i;②for(i=255;i>=0;i--)③for(i=0;i<=255;i++)④while(1)⑤uchari;⑥TF1=0;⑦while(!TF1);⑧TR1=1;⑨voiddelay_1ms()⑩#include<reg51.h>#include<absacc.h>//存放絕對(duì)地址宏定義的函數(shù)原型#include<reg51.h>﹍﹍﹍﹍﹍#defineucharunsignedchar#defineuintunsignedint#defineDA0832XBYTE[0X7FFF]﹍voiddelay_1ms()﹍﹍﹍﹍﹍{TH1=0XFC;TL1=0X18;TR1=1;﹍﹍while(!TF1);﹍﹍﹍﹍//等待1ms定時(shí)時(shí)間到﹍﹍﹍TF1=0;﹍﹍﹍}voidmain(){﹍uchari;﹍﹍﹍﹍﹍TMOD=0X10;﹍﹍﹍while(1)﹍﹍﹍{﹍﹍for(i=0;i<=255;i++)﹍﹍﹍﹍//形成三角波輸出值,逐漸增大,最大為255{DA0832=i;//D/A轉(zhuǎn)換輸出delay_1ms();}﹍﹍for(i=255;i>=0;i--)﹍﹍﹍﹍{﹍DA0832=i;﹍﹍﹍﹍﹍;//D/A轉(zhuǎn)換輸出delay_1ms();}}}2、程序功能:通過DAC0832產(chǎn)生鋸齒波。(DAC0832的數(shù)字信號(hào)輸入端接P0口,/CS接P2.7,/XFER接地,/WR1、/WR2接單片機(jī)的/WR,ILE接電源+5V。)選擇項(xiàng):①delay_1ms();②DA0832=i;③for(i=0;i<=255;i++)④TMOD=0X10;⑤voidmain()⑥TF1=0;⑦while(!TF1);⑧TL1=0X18;⑨#defineDA0832XBYTE[0X7FFF]⑩#include<absacc.h>源程序:﹍#include<absacc.h>﹍﹍﹍﹍﹍//存放絕對(duì)地址宏定義的函數(shù)原型#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineDA0832XBYTE[0X7FFF]﹍﹍﹍﹍﹍﹍voiddelay_1ms(){TH1=0XFC;TL1=0X18;﹍﹍﹍﹍TR1=1;﹍while(!TF1);﹍﹍﹍﹍﹍﹍TF1=0;﹍﹍﹍﹍﹍}voidmain()﹍﹍﹍﹍﹍﹍{uchari;﹍TMOD=0X10;﹍﹍﹍﹍﹍while(1){for(i=0;i<=255;i++)﹍﹍﹍﹍﹍﹍{﹍﹍DA0832=i;﹍﹍﹍﹍//D/A轉(zhuǎn)換輸出﹍delay_1ms();﹍﹍﹍﹍﹍}}}3、程序功能:用單片機(jī)實(shí)現(xiàn)簡(jiǎn)易數(shù)字鐘,顯示小時(shí)、分和秒。(單片機(jī)P2口輸出取反后控制8個(gè)共陰極數(shù)碼管的位碼,P0口控制每個(gè)數(shù)碼管的段碼)選擇項(xiàng):①calc();②display();③if(time[2]>23)④if(time[1]>59)⑤if(time[0]>59)⑥P0=dispcode[time[i]/10];⑦P0=dispcode[time[i]%10];⑧for(i=0;i<4;i++)⑨voiddelay(void)⑩uchartime[4]={23,59,58,0};源程序:#include"reg51.h"http://頭文件#defineucharunsignedchar//宏定義uchardispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//定義共陰數(shù)碼管0~9顯示碼數(shù)組﹍uchartime[4]={23,59,58,0};﹍﹍﹍﹍﹍//設(shè)置時(shí)間初值voiddelay(void)//延時(shí)函數(shù){uchark;for(k=250;k>0;k--);}voiddisplay(void)//顯示函數(shù){uchari,k;k=0x01;//設(shè)置位選線初值﹍for(i=0;i<4;i++)﹍﹍﹍﹍﹍//循環(huán)4次{P2=0;//關(guān)閉顯示﹍P0=dispcode[time[i]%10];﹍﹍﹍﹍﹍//輸出個(gè)位數(shù)的段碼P2=k;//送位碼k=k<<1;//位碼左移一位delay();//調(diào)用延時(shí)函數(shù)P2=0;//關(guān)閉顯示﹍P0=dispcode[time[i]/10];﹍﹍﹍﹍﹍//輸出十位數(shù)的段碼P2=k;//送位碼k=k<<1;//位碼左移一位delay();//調(diào)用延時(shí)函數(shù)}P2=0;//關(guān)閉顯示}voidcalc(void)//時(shí)間值計(jì)算函數(shù){time[0]++;//秒加1﹍if(time[0]>59)﹍﹍﹍﹍﹍//秒是否超過59{time[0]=0;//秒清0time[1]++;//分加1﹍if(time[1]>59)﹍﹍﹍﹍﹍//分是否超過59{time[1]=0;//分清0time[2]++;//小時(shí)加1﹍if(time[2]>23)﹍﹍﹍﹍﹍//小時(shí)是否超過23time[2]=0;//小時(shí)清0}}}﹍﹍﹍voidmain()﹍﹍﹍//主函數(shù){uchari;while(1)//無限循環(huán){for(i=0;i<250;i++)//循環(huán)250次﹍﹍display();﹍﹍﹍﹍//調(diào)用顯示函數(shù)﹍﹍calc();﹍﹍﹍﹍//調(diào)用時(shí)間計(jì)算函數(shù)}}4、程序功能:用單片機(jī)控制蜂鳴器播放一首簡(jiǎn)單的曲子。利用定時(shí)器T1實(shí)現(xiàn)聲音頻率的產(chǎn)生(P1.3引腳接蜂鳴器)。選擇項(xiàng):①unsignedintcodetable[3]={64260,64400,64524};②th=(table[n]/256);③unsignedchari,j,k;④for(i=0;i<m;i++)⑤unsignedchari;⑥ET1=1;⑦EA=1;⑧TR1=1;⑨delay(5);⑩TH1=th;源程序:#include"reg51.h"http://頭文件sbitP1_3=P1^3;//定義蜂鳴器輸出引腳﹍unsignedintcodetable[3]={64260,64400,64524};﹍﹍﹍//1、2、3三個(gè)音的計(jì)數(shù)值unsignedcharth,tl;//定義全局變量voidsing(unsignedcharn)//音頻讀取函數(shù){﹍﹍th=(table[n]/256);﹍﹍﹍﹍//讀取音調(diào)計(jì)數(shù)值高位tl=(table[n]%256);//讀取音調(diào)計(jì)數(shù)值低位}voiddelay(unsignedcharm)//延時(shí)函數(shù){﹍﹍unsignedchari,j,k;﹍﹍﹍﹍﹍﹍for(i=0;i<m;i++)﹍﹍﹍for(j=0;j<200;j++)for(k=0;k<100;k++);}main()//主函數(shù){﹍﹍﹍﹍﹍﹍TMOD=0X10;//定時(shí)器工作方式設(shè)置﹍﹍﹍ET1=1;﹍﹍﹍//T1中斷允許設(shè)置﹍﹍EA=1;﹍﹍﹍﹍//中斷總允許設(shè)置﹍﹍TR1=1;﹍﹍﹍﹍//啟動(dòng)T1i=0;//設(shè)置音頻初始值while(1)//無限循環(huán){sing(i);//調(diào)用音頻輸出函數(shù)﹍﹍delay(5);﹍﹍﹍﹍//調(diào)用延時(shí)函數(shù)i++;//指向下一個(gè)音if(i>=3){i=0;delay(10);}//一曲結(jié)束,重新開始播放}}voidtime()interrupt3//T1中斷服務(wù)程序{﹍﹍TH1=th;﹍﹍﹍﹍//定時(shí)器重置初值(高位)TL1=tl;//定時(shí)器重置初值(低位)P1_3=~P1_3;//輸出取反}5、程序功能:設(shè)置八個(gè)電子琴鍵(從P1口接入),能夠通過按鍵發(fā)出相應(yīng)的聲音(彈奏)。利用單片機(jī)的定時(shí)器T0實(shí)現(xiàn)聲音頻率的產(chǎn)生(P3.3引腳接蜂鳴器)。選擇項(xiàng):①case0x7f:②case0xfe:③switch(i)④while(1)⑤TCON=0x10;⑥TMOD=0X01;⑦main()⑧P3_3=~P3_3;⑨voidINTTO()interrupt1⑩sbitP3_3=P3^3;源程序:#include"reg52.h"http://頭文件﹍﹍sbitP3_3=P3^3;﹍﹍﹍﹍//定義蜂鳴器輸出引腳unsignedcharidatai,tl0_temp=0,th0_temp=0;//定義全局變量﹍voidINTTO()interrupt1﹍﹍﹍﹍﹍//T0服務(wù)程序{TH0=th0_temp;//定時(shí)器重置初值(高位)TL0=tl0_temp;//定時(shí)器重置初值(低位)﹍﹍P3_3=~P3_3;﹍﹍﹍﹍//輸出取反}main()﹍﹍﹍﹍﹍﹍//主函數(shù){P1=0xff;//端口初始化﹍﹍TMOD=0X01;﹍﹍﹍﹍//定時(shí)器工作方式設(shè)置ET0=1;//T0中斷允許設(shè)置EA=1;//中斷總允許設(shè)置TH0=0;//定時(shí)初值高位設(shè)置TL0=0;//定時(shí)初值低位設(shè)置﹍TCON=0x10;﹍﹍﹍﹍﹍//定時(shí)器啟動(dòng)設(shè)置﹍﹍while(1)﹍﹍﹍﹍//無限循環(huán){i=P1;//讀端口值﹍﹍switch(i)﹍﹍﹍﹍{case0xff:TR0=0;break;//無鍵按下﹍﹍case0xfe:﹍﹍﹍﹍th0_temp=0xfc;tl0_temp=0x43;TR0=1;break;//1鍵按下case0xfd:th0_temp=0xfc;tl0_temp=0xab;TR0=1;break;//2鍵按下case0xfb:th0_temp=0xfd;tl0_temp=0x08;TR0=1;break;//3鍵按下case0xf7:th0_temp=0xfd;tl0_temp=0x32;TR0=1;break;//4鍵按下case0xef:th0_temp=0xfd;tl0_temp=0x81;TR0=1;break;//5鍵按下case0xdf:th0_temp=0xfd;tl0_temp=0xc7;TR0=1;break;//6鍵按下case0xbf:th0_temp=0xfe;tl0_temp=0x05;TR0=1;break;//7鍵按下﹍﹍﹍case0x7f:﹍﹍﹍th0_temp=0xfe;tl0_temp=0x21;TR0=1;break;//8鍵按下default:TR0=0;break;//多鍵按下}}}6、程序功能:?jiǎn)纹瑱C(jī)控制兩個(gè)共陽數(shù)碼管實(shí)現(xiàn)計(jì)數(shù)顯示(P0口接段碼,P2.0口接十位數(shù)碼管的位碼,P2.1口接個(gè)位數(shù)碼管的位碼)。外中斷0每觸發(fā)一次,計(jì)數(shù)值加1;外中斷1每觸發(fā)一次,計(jì)數(shù)值減1。選擇項(xiàng):①if(a<0)②voidint1(void)interrupt2③if(a>99)④voidint0(void)interrupt0⑤diaplay();⑥a/10;⑦a%10;⑧P2=0x02;⑨P2=0x01;⑩voiddiaplay(void)源程序:#include<reg51.h>//頭文件UnsignedcharTable[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//定義共陽數(shù)碼管0~9顯示碼數(shù)組unsignedchardata_L,data_H;//定義全局變量:顯示個(gè)位、十位chara=0;//定義全局變量:計(jì)數(shù)初值voiddelay(unsignedchark)//延時(shí)函數(shù){unsignedcharm,n;for(m=0;m<k;m++){for(n=0;n<120;n++);}}﹍voiddiaplay(void﹍﹍﹍﹍﹍//動(dòng)態(tài)顯示函數(shù){﹍P2=0x01;﹍﹍﹍﹍﹍//輸出十位數(shù)碼管位碼P0=Table[data_H];//輸出十位段碼delay(1);//調(diào)用延時(shí)函數(shù)﹍﹍P2=0x02;﹍﹍﹍﹍//輸出個(gè)位數(shù)碼管位碼P0=Table[data_L];//輸出個(gè)位段碼delay(1);//調(diào)用延時(shí)函數(shù)}voidmain(void)//主函數(shù){IE=0X85;//開中斷,外中斷0、1允許TCON=0X05;//外中斷1下降沿觸發(fā)while(1)//無限循環(huán){data_L=﹍﹍a%10;﹍﹍﹍﹍//讀取計(jì)數(shù)值個(gè)位data_H=﹍a/10;﹍﹍﹍﹍﹍//讀取計(jì)數(shù)值十位﹍﹍diaplay();﹍﹍﹍﹍//調(diào)用顯示函數(shù)}}﹍﹍voidint0(void)interrupt0﹍﹍﹍﹍//外部中斷0函數(shù){﹍﹍if(a>99)﹍﹍﹍﹍a=0;//計(jì)數(shù)值過大,清零elsea++;//計(jì)數(shù)值加1}﹍voidint1(void)interrupt2﹍﹍﹍﹍﹍//外部中斷1函數(shù){﹍﹍if(a<0)﹍﹍﹍﹍a=99;//計(jì)數(shù)值過小,送最大值elsea--;//計(jì)數(shù)值減1}7、程序功能:?jiǎn)纹瑱C(jī)P0口控制八個(gè)條形發(fā)光二極管實(shí)現(xiàn)鍵控移位。外中斷0每觸發(fā)一次,LED左移一位;外中斷1每觸發(fā)一次,LED右移一位。選擇項(xiàng):①#include<intrins.h>②unsignedchara;③unsignedcharm,n;④IE=0X85;⑤TCON=0X05;⑥while(1)⑦P0=~a;⑧voidint0(void)interrupt0⑨voidint1(void)interrupt2⑩a=_cror_(a,1);源程序:#include<reg51.h>//頭文件﹍#include<intrins.h>﹍﹍﹍﹍﹍//包含循環(huán)移位函數(shù)的頭文件unsignedchara;﹍﹍﹍﹍﹍﹍//定義全局變量voiddelay(unsignedchark)//延時(shí)函數(shù){﹍unsignedcharm,n;﹍﹍﹍﹍﹍for(m=0;m<k;m++);{for(n=0;n<120;n++);}}voidmain(void)//主函數(shù){﹍IE=0X85;﹍﹍﹍﹍﹍//開中斷,外中斷0、1允許﹍﹍TCON=0X05;﹍﹍﹍﹍//外中斷0、1下降沿觸發(fā)a=0x01;//設(shè)置點(diǎn)亮初值﹍﹍while(1)﹍﹍﹍﹍//無限循環(huán)﹍﹍﹍P0=~a;﹍﹍﹍//端口輸出}﹍voidint0(void)interrupt0﹍﹍﹍﹍﹍//外部中斷0函數(shù){delay(100);//調(diào)用延時(shí)函數(shù)a=_crol_(a,1);//循環(huán)左移1位}﹍﹍voidint1(void)interrupt2﹍﹍﹍﹍//外部中斷1函數(shù){delay(100);//調(diào)用延時(shí)函數(shù)﹍﹍﹍a=_cror_(a,1);﹍﹍﹍循環(huán)右移1位}8、程序功能:?jiǎn)纹瑱C(jī)的P2.0~P2.3引腳分別控制電機(jī)的A、B、C、D四相。從P3.0接入一個(gè)開關(guān),輸入為0時(shí),四相步進(jìn)電機(jī)單雙相正轉(zhuǎn);輸入為1時(shí),四相步進(jìn)電機(jī)單雙相反轉(zhuǎn)。選擇項(xiàng):①unsignedcharpai_num;②voidtimer(void)interrupt1using1③TH0=(65536-60000)/256;④pai_num++;⑤pai_num=0;⑥pai_num=7;⑦pai_num--;⑧P2=moto_pai[pai_num];⑨voidmain()⑩TL0=(65536-60000)%256;源程序:#include<reg52.h>//頭文件unsignedcharmoto_pai[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//單雙相正轉(zhuǎn)﹍unsignedcharpai_num;﹍﹍﹍﹍﹍//狀態(tài)號(hào)sbitcf=P3^0;//開關(guān)設(shè)置﹍voidtimer(void)interrupt1using1﹍﹍﹍﹍﹍//T0中斷服務(wù)程序{﹍TH0=(65536-60000)/256;﹍﹍﹍﹍﹍//定時(shí)器重置初值(高位)TL0=(65536-60000)%256;//定時(shí)器重置初值(低位)if(cf==0)//開關(guān)閉合{﹍﹍﹍pai_num++;﹍﹍﹍//狀態(tài)號(hào)加1if(pai_num>=8)﹍﹍﹍pai_num=0;﹍﹍﹍//若狀態(tài)號(hào)過大,回零}else//開關(guān)斷開{if(pai_num<=0)﹍﹍﹍﹍pai_num=7;﹍﹍//若狀態(tài)號(hào)過小,賦最大值else﹍﹍﹍pai_num--;﹍﹍﹍//否則,狀態(tài)號(hào)減1}﹍﹍﹍P2=moto_pai[pai_num];﹍﹍﹍//端口輸出}﹍voidmain()﹍﹍﹍﹍﹍//主函數(shù){TMOD=0X01;//定時(shí)器工作方式設(shè)置TH0=(65536-60000)/256;//定時(shí)初值高位設(shè)置﹍﹍﹍TL0=(65536-60000)%256;﹍﹍﹍//定時(shí)初值低位設(shè)置EA=1;//中斷總允許設(shè)置ET0=1;//T0中斷允許設(shè)置P2=moto_pai[0];//設(shè)置初始輸出pai_num=0;//設(shè)置狀態(tài)號(hào)初值TR0=1;//啟動(dòng)定時(shí)器0while(1);//無限循環(huán)}9、程序功能:?jiǎn)纹瑱C(jī)的P2.0~P2.3引腳分別控制電機(jī)的A、B、C、D四相。P3.0~P3.5每個(gè)引腳接入一個(gè)按鍵,分別對(duì)應(yīng)單相正轉(zhuǎn)、單相反轉(zhuǎn)、雙相正轉(zhuǎn)、雙相反轉(zhuǎn)、單雙相正轉(zhuǎn)、單雙相反轉(zhuǎn)六種工作方式,同時(shí)用共陰數(shù)碼管顯示序號(hào)1~6。選擇項(xiàng):①{0x01,0x02,0x04,0x08};②{0x03,0x06,0x0c,0x09};③k=~P3;④switch(k)⑤P0=0x06;⑥P0=0x5B;⑦case0x04:⑧case0x08:⑨for(i=0;i<8;i++)⑩for(i=8;i>0;i--)源程序:#include<at89x51.h>//頭文件#defineucharunsignedcharucharcodetab1[]=﹍{0x01,0x02,0x04,0x08};﹍﹍﹍﹍﹍//單相正轉(zhuǎn)加電代碼ucharcodetab2[]=﹍{0x03,0x06,0x0c,0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論