|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
分享一个ICL7135和51单片机实现的数字电压表,下面是仿真原理图:, {# a. S; h& Q
3 ~6 Z4 _6 B: j3 ?( t# ~% f; N" T
/ s |) X* S" Y; Z+ X! F: J, T; R% H4 P; D( P2 b
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code tab[]={
- 0x3F,
- 0x06,
- 0x5B,
- 0x4F,
- 0x66,
- 0x6D,
- 0x7D,
- 0x07,
- 0x7F,
- 0x6F, //字形码
- };
- uint V=0;
- uchar flag=3;
- sbit point=P0^7;
- sbit s1=P2^0;
- sbit s2=P2^1;
- sbit s3=P2^2;
- void delay(uint ms)
- {
- uchar i;
- while(ms--)
- for(i=0;i<123;i++); //延时
- }
- void main()
- {
- TMOD=0x0D; //00001101
- TR0=1;
- IT0=1;
- TL0=0;
- TH0=0;
- EA=1;
- EX0=1;
- s1=1;s2=1;s3=0;
- while(1)
- {
- uchar temp=0xFE,a[4],i;
- a[0]=V/10000;
- a[1]=V%10000/1000;
- a[2]=V%1000/100;
- a[3]=V%100/10; //取位
- for(i=0;i<4;i++)
- {
- P0=tab[a];
- if(i==1&&flag==3) //小数点位置
- point=1;
- if(i==0&&flag==2)
- point=1;
- if(i==0&&flag==1)
- point=1;
- P1=temp;
- delay(1);
- P1=0xff;
- temp=_crol_(temp,1); //显示
- }
- }
- }
- void ADC_7135() interrupt 0
- {
- V=TH0;
- V<<=8;
- V+=TL0;
- V-=10001;
- TL0=0;
- TH0=0;
- switch(flag) //选档
- {
- case 3: //缩小档
- {
- if((V>=200)&&(V<2000))
- {
- s1=1;s2=0;s3=1;
- flag=2;
- }
- if(V<200)
- {
- s1=0;s2=1;s3=1;
- flag=1;
- }
- break;
- }
- case 2: //一倍档
- {
- if(V>=20000)
- {
- s1=1;s2=1;s3=0;
- flag=3;
- }
- if(V<2000)
- {
- s1=0;s2=1;s3=1;
- flag=1;
- }
- break;
- }
- case 1: //放大档
- {
- if(V>=20000)
- {
- s1=1;s2=1;s3=0;
- flag=3;
- }
- break;
- }
- }
- }: Z6 i Y7 V- a/ K" `- G/ t
) I! y% `6 I8 C# W7 {/ j
7 L7 [3 E# h& D3 a+ q, `& s
3 y7 y7 r) \/ V- K |
|