欢迎来到天天文库
浏览记录
ID:40156707
大小:316.27 KB
页数:19页
时间:2019-07-23
《C51程序设计综合实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C51程序设计综合实例例1:流水灯1.设计要求利用数组及查表的方法,使端口P1做单一灯的变化:左移循环2次,右移循环2次,闪烁2次(延时的时间0.2s)。灯亮的条件见书表9-1。流水灯的硬件设计电路如下图所示。P1口的某一位输出为低电平时,与其相应的发光二极管亮。A)从左到右B)从右往左图1延时查询法图2定时器查询法图3定时器中断法:例子2:1.设计要求开始时,显示“00”,第1次按下SP1后就开始计时。第2次按SP1后,计时停止。第3次按SP1后,计时归零。9.3独立式按键的应用/*名称:K1-K4分组控制L
2、ED说明:每次按下K1时递增点亮一只LED,全亮时再次按下则再次循环开始,K2按下后点亮上面4只LED,K3按下后点亮下面4只LED,K4按下后关闭所有LED*/#include#defineucharunsignedchar#defineuintunsignedint//延时voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//主程序voidmain(){uchark,t,Key_State;P0=0xff;P1=0xff;whi
3、le(1){t=P1;if(t!=0xff){DelayMS(10);if(t!=P1)continue;Key_State=~t;k=0;//检查1所在位置,累加获取按键号kwhile(Key_State!=0){k++;Key_State>>=1;}//根据按键号k进行4种处理switch(k){case1:if(P0==0x00)P0=0xff;P0<<=1;DelayMS(200);break;case2:P0=0xf0;break;case3:P0=0x0f;break;case4:P0=0xff;}
4、}}}9.4带数码显示的A/D转换电路设计要求从ADC0809的通道IN3输入0~5V的模拟量,通过ADC0809转换成数字量在数码管上以十进制形示显示出来。ADC0809的VREF接+5V电压。单片机经ADC0809IN3通道A/D转换电路数码显示硬件连接如图所示。#includesbitLED1=P2^1;sbitLED2=P2^2;sbitLED3=P2^3;sbitEOC=P1^1;sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitCLK=P1
5、^3;sbitOE=P1^0;sbitST=P1^2;unsignedcharbai;unsignedcharshi;unsignedcharge;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedchargetdata;voiddelay(unsignedintj){unsignedinti;for(i=0;i6、00;shi=a%100/10;ge=a%100%10;P2=0x0FF;P0=table[bai];LED1=0;delay(350);P2=0x0FF;P0=table[shi];LED2=0;delay(350);P2=0x0FF;P0=table[ge];LED3=0;delay(350);}main(){TMOD=0X02;TH0=0xf0;TL0=0xf0;EA=1;ET0=1;TR0=1;while(1){P1_4=1;P1_5=1;P1_6=0;ST=0;ST=1;ST=0;while(EOC=7、=0);OE=1;getdata=P3;OE=0;display(getdata);}}voidtime0_int(void)interrupt1{CLK=~CLK;}第二种方法:#includeunsignedcharcodeled[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharx=125;sbitu=P1^3;sbitST=P1^2;sbitEOC=P1^1;sbitOE=P1^0;sbitP1_4=8、P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;unsignedcharchannel=0xbc;voiddelay(void){unsignedchari,j;for(i=0;i<20;i++)for(j=0;j<250;j++);}voidmain(void){TMOD=0X02;EA=1;ET0=1;TH0=256-100;TL0=256-100;TR0=1;/
6、00;shi=a%100/10;ge=a%100%10;P2=0x0FF;P0=table[bai];LED1=0;delay(350);P2=0x0FF;P0=table[shi];LED2=0;delay(350);P2=0x0FF;P0=table[ge];LED3=0;delay(350);}main(){TMOD=0X02;TH0=0xf0;TL0=0xf0;EA=1;ET0=1;TR0=1;while(1){P1_4=1;P1_5=1;P1_6=0;ST=0;ST=1;ST=0;while(EOC=
7、=0);OE=1;getdata=P3;OE=0;display(getdata);}}voidtime0_int(void)interrupt1{CLK=~CLK;}第二种方法:#includeunsignedcharcodeled[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharx=125;sbitu=P1^3;sbitST=P1^2;sbitEOC=P1^1;sbitOE=P1^0;sbitP1_4=
8、P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;unsignedcharchannel=0xbc;voiddelay(void){unsignedchari,j;for(i=0;i<20;i++)for(j=0;j<250;j++);}voidmain(void){TMOD=0X02;EA=1;ET0=1;TH0=256-100;TL0=256-100;TR0=1;/
此文档下载收益归作者所有