欢迎来到天天文库
浏览记录
ID:11325744
大小:97.84 KB
页数:4页
时间:2018-07-11
《数码管计数00~99.》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机作业项目训练2:如图一电路所示,编程开机显示op51,按下k16键,四位数码管后四位开始计数00~99.图一一:程序流程图如图二所示图二二:程序如下#include#defineucharunsignedchar#defineuintunsignedintsbitdp=P2^7;sbitg=P2^6;sbitf=P2^5;sbite=P2^4;sbitd=P2^3;sbitc=P2^2;sbitb=P2^1;sbita=P2^0;sbitP1_7=P1^7;sbitP1_6=P1^6;sbitP1_5=P1^5;sbitP1_4=
2、P1^4;voiddelayx1ms(uintcount);//声明1ms延时子程序voiddisp_op51();//声明显示op51的子程序voidset_init_xint();//声明外部中断0初始化子程序voidset_init_timer();//声明定时器To初始化子程序voidshizhong();//00~99计数ucharcodedis_op51[]={0xc0,0x8c,0x92,0xf9};//op51/11000000/10001100/10010010/11111001ucharcodedis_playp1[10]={0xc0
3、,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//0~9ucharx=1,n=0;intmain(){set_init_xint();//调用外部中断0初始化子程序set_init_timer();//调用定时器T0初始化子程序switch(x){case1:do{disp_op51();//显示op51的子程序}while(1);break;case2:do{shizhong();//动态显示00~99计数;}while(1);break;}return0;}voiddisp_op51(){P1=0x7f
4、;//01111111P2=dis_op51[0];delayx1ms(5);P1=0xbf;//10001111P2=dis_op51[1];delayx1ms(5);P1=0xdf;//11011111P2=dis_op51[2];delayx1ms(5);P1=0xef;//11101111P2=dis_op51[3];delayx1ms(5);}voiddelayx1ms(uintcount)//12Mhz{uintj;while(count--!=0){for(j=0;j<72;j++);}}voidset_init_xint()//{IT0=
5、1;//外部中断0,边沿触发方式EX0=1;//中断0开中断EA=1;//开总中断}voidset_init_timer()//{TMOD=0X01;TH0=0XD8;TL0=0XF0;ET0=1;}run_xint0()interrupt0using1//外部中断0服务程序,使用1组寄存器{TR0=1;}run_timer0()interrupt1using2//定时器T0服务程序,使用2组寄存器{TH0=0XD8;TL0=0XF0;n++;if(n==100){n=0;x=2;}}voidshizhong()//00~99计数显示{uinti,j;j
6、=0;for(i=0;i<10;i++){P1=0xdf;P2=dis_playp1[j];delayx1ms(5);P1=0xef;P2=dis_playp1[i];delayx1ms(5);}if(i==10){j++;if(j>=10){j=j%10;}}}
此文档下载收益归作者所有