资源描述:
《单片机实验、设计源程序---仅供参考》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机实验、设计(按PPT上的顺序,有的程序不是很简略,有的也不是我自己写的,仅供参考)1、并行口控制八个LED灯的轮流亮灭(书本148有类似)#include#include#defineucharunsignedchar#defineuintunsignedint#defineoutP2voiddelay(uint);voidmain(){uchari,temp;while(1){temp=0xfe;for(i=0;i<8;i++){out=temp;delay(200);temp=_cro
2、l_(temp,1);//正向}temp=0x7f;for(i=0;i<8;i++){out=temp;delay(200);temp=_cror_(temp,1);//逆向}}}voiddelay(uintk){uchari,j;for(;k>0;k--)for(i=142;i>0;i--)for(j=2;j>0;j--);}2、(书本73)P2口既作为输入口也作为输出口,通过四个开关,分别控制四个LED的亮与灭。#include#defineuintunsignedint#defineucharunsignedc
3、harvoiddelay(uchark){ucharx;for(;k>0;k--)for(x=110;x>0;x--);}voidmain(){while(1){P2=0xff;if(P2!=0xff){P2=P2<<4;delay(2);}}}3、双数码管显示:模拟十字路口的两位信号灯显示计数(00-99),数字间隔时间不做特殊要求。#include#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xA4,0xb0,
4、0x99,0x92,0x82,0xf8,0x80,0x90};ucharnum,tt,ge,shi;voiddisplay(ucharsh,ucharg);voiddelay(uinti){uintj;for(;i>0;i--)for(j=110;j>0;j--);}voidinit(){P3=0xff;num=0;tt=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidmain(){init();while(1){display
5、(shi,ge);}}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==20)//1s{tt=0;num++;if(num==100)num=0;ge=num%10;shi=num/10;}}voiddisplay(ucharsh,ucharg){P3=0x02;P2=table[g];delay(1);P3=0x01;P2=table[sh];delay(1);}4、设计一个4*4矩阵键盘,双数码管显示,其键值为“00~16”
6、。按下按键后,数码管显示相应的键值。(书本140)#include#defineucharunsignedchar#defineuintunsignedintsbitshiwei=P3^0;sbitgewei=P3^1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};ucharcodekey_table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b
7、,0xe7,0xd7,0xb7,0x77};voiddelay(uchark){uchari;for(;k>0;k--)for(i=110;i>0;i--);}voiddelay0(){uintn=1000;while(n--);}voidmain(){uchartemp,key,num,i;P3=0xff;while(1){P1=0xf0;if(P1!=0xf0){delay0();if(P1!=0xf0){temp=P1;P1=0x0f;key=temp
8、P1;for(i=0;i<16;i++)if(key==key_table[
9、i]){num=i;break;}P3=0x01;P2=table[num/10];delay(1);P3=0x02;P2=table[num%10];delay(1);P2=0xff;}}}}5、外部中断每发生一次,l