|
本帖最后由 Eibles 于 2018-6-21 14:41 编辑
- #include<reg51.h>
- #define uchar unsigned char //定义数据类型
- #define uint unsigned int //定义数据类型
- sbit P2_4=P2^4;
- sbit ST=P2^5;
- sbit EOC=P2^6;
- sbit OE=P2^7;
- sbit p2_0=P2^0;
- sbit p2_1=P2^1;
- sbit p2_2=P2^2;
- sbit p2_3=P2^3;
- uchar code led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //建立0-9字模
- void delay0(void)
- {
- uchar i,j;
- for(i=0;i<10;i++)
- for(j=0;j<100;j++);
- }
- timer0()interrupt 1
- {
- P2_4=!P2_4; //改变电平状态
- }
- void main(void)
- {
- uchar k;
- uint l;
- TMOD=0x02; //定时器T0方式2
- TH0=(256-100)%256; //0.1ms定时,装载初始值
- TL0=(256-100)%256;
- IE=0x82;
- EA= 1; //开启全局中断
- ET0= 1;
- TR0=1; //启动定时器0
- P2=0x4f; //初始化 P2口
- while(1)
- {
- ST=0; //发出启动脉冲信号
- delay0();
- ST=1;
- delay0();
- ST=0;
- while(EOC==1); //查询结束状态
- delay0();
- OE=1; //OE置1信号
- k=P1; //将A/D结果赋值给k
- l=5000*((float)k/255); //计算电压值
- p2_3=0; //打开p2_3口
- P0=led_mod[l%10]; //求个位
- delay0();
- p2_3=1; //关闭p2_3口
- p2_2=0; //打开p2_2口
- P0=led_mod[l/10%10]; //求十位
- delay0();
- p2_2=1; //关闭p2_2口
- p2_1=0; //打开p2_1口
- P0=led_mod[l/100%10]; //求百位
- delay0();
- p2_1=1; //关闭p2_1口
- p2_0=0; //打开p2_0口
- P0=led_mod[l/1000]; //求千位
- delay0();
- p2_0=1; //关闭p2_0口
- }
- }
复制代码
|
评分
-
查看全部评分
|