资源描述:
《单片机实验c语言编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、流水灯效果:发关二级管依次独个被点亮,一直循环下去。C语言程序如下:#includeunsignedchari;unsignedchartemp;voiddelay(void)//延时子程序{unsignedcharm,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}voidmain(void)//主程序{while(1)//循环条件永远为真,以下程序一直执行下去。{temp=0xfe;P3=temp;//直接对I/O口P3
2、赋值,使.P3.0输出低点平。delay();//延时for(i=1;i<8;i++)//实现灯的移动{temp=(temp<<1)
3、0x01;//P3口I/O轮流低电平P3=temp;delay();//延时,肉眼可以看到}}}闪烁灯效果:发光二极管维持一闪一闪的状态。C语言程序如下:#include/******************************************************************************第一行是一个"文件包含"处理。所谓
4、"文件包含"是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4行,但C编译器在处理的时候却要处理几十或几百行。这里程序中包含REG51.h文件的目的是为了要使用P1这符号即通知C编译器,程序中所写的P1是指80C51单片机的P1端口而不是其它变量。******************************************************************************/voiddelay02s(void)//延时0.2秒子程序{unsignedchari,j
5、,k;//定义3个无符号字符型数据。for(i=20;i>0;i--)//作循环延时for(j=20;j>0;j--)for(k=248;k>0;k--);}voidmain(void)//每一个C语言程序有且只有一个主函数,{while(1)//循环条件永远为真,以下程序一直执行下去。{P3_0=0;//I/O口P3.0输出低电平,小灯被点亮。delay02s();//延时经过0.2秒。P3_0=1;//I/O口P3.0输出高电平,小灯熄灭。delay02s();//延时经过0.2秒。}}按键识别效果:按下开
6、关,D1变亮并保持。再按开关,D1熄灭,并保持。C语言程序如下:#includesbitINT_0=P3^2;//定义按键的输入端注意此处按键判断使用的是扫//描方式而表示中断判断方式sbitD1=P3^0;//D1小灯定义voiddelay10ms(void)//延时程序{unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}key()/按键判断程序{if(INT_0==0)//判断是否按下键盘{delay10ms();//延时,软件去干
7、扰if(INT_0==0)//确认按键按下{D1=!D1;//D1亮灭交替变化}while(INT_0==0);//按键锁定,每按一次D1只变化一次.}}main(){while(1)//永远循环,扫描判断按键是否按下{key();//对于此处CPU对按键判断一直扫描;}}按键中断识别效果:一开始显示“0”,每按一次开关,显示的数字就加1。C语言程序如下:#includeunsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
8、0xf8,0x80,0x90};unsignedchardispcount=0;//计数sbitgewei=P3^1;//个位选通定义sbitshiwei=P3^0;//十位选通定义voidDelay(unsignedinttc)//延时程序{while(tc!=0){unsignedinti;for(i=0;i<100;i++);tc--;}}voidExtInt0()interrupt0//中断服务程序{dispcount++;if(dispcount==100){dispcount=0;}}voidLED
9、()//LED显示函数{if(dispcount>=10)//显示两位数{shiwei=1;P2=table[dispcount/10];Delay(8);shiwei=0;gewei=1;P2=table[dispcount%10];Delay(5);gewei=0;}else//显示一位数{shiwei=0;gewei=1;P2=table[dispcount];Delay(8);