您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 通过C语言控制51单片机
利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintuchart0,t1,bai,shi,ge,aa,a;uintm;ucharcodetab[]={//共阳极数码管段选0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc0,0xff};voiddelay(uchari)//延时函数{ucharj,k;for(i;i0;i--)for(j=30;j0;j--)for(k=70;k0;k--);}voiddisplay(ucharx,uchary,ucharz,ucharbai,ucharshi,ucharge)//显示函数{P0=0x01;P2=tab[ge];delay(1);P0=0x02;P2=tab[shi];delay(1);P0=0x04;P2=tab[bai];delay(1);P0=0x08;P2=tab[z];delay(1);P0=0x10;P2=tab[y];delay(1);P0=0x20;P2=tab[x];delay(1);}voidmain(){m=432;aa=0xfe;P1=aa;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1){if(TR0==1)//确保数字没有减到765398display(7,6,5,bai,shi,ge);//显示数字变化elsedisplay(16,17,18,18,19,20);//显示HELLO}}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(t0==5){t0=0;if(m=398){aa=_crol_(aa,1);//流水灯移动P1=aa;delay(1);}}if(t0==30){t0=20;P1=~P1;a++;if(a==6)//控制闪烁时间为3秒{TR0=0;}}}voidtimer1()interrupt3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1++;if(t1==2){t1=0;m--;if(m==398){TR1=0;P1=0xff;t0=20;}}bai=m/100;//分离各位数字shi=m%100/10;ge=m%10;}
本文标题:通过C语言控制51单片机
链接地址:https://www.777doc.com/doc-4581851 .html