protues中没有电阻应变片,就自己给了2mv的直流电压作为信号.
单片机的压力监测装置设计的仿真工程文件及完整的程序请下载:
仿真图和程序.zip
(103.36 KB, 下载次数: 82)
源程序:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit rs=P2^0;
- sbit rd=P2^1;
- sbit lcden=P2^2;
- sbit OE=P2^6;
- sbit EOC=P2^5;
- sbit START=P2^4;
- sbit CLK=P2^3;
- void delay(uint ms);
- void write_com(uchar com);
- void write_date(uchar date);
- void ADC_read();
- void display();
- uchar Tab[]={"volt:0.00 "};
- void init();
- void key_scan();
- uint volt;
- int key_down;
- uchar code table[]={ 7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0};
- uchar code table1[]={7,8,9,0x2f-0x30,
- 4,5,6,0x58-0x30,
- 1,2,3,0x2d-0x30,
- 0x01-0x30,0,0x3d-0x30,0x2b-0x30};
- void main()
- { init();
-
- while(1)
- {
- ADC_read();
- display();
- }
- }
- void delay(uint ms)
- { uchar j;
- while(ms--)
- {
- for(j=0;j<120;j++);
- }
- }
- void ADC_read()
- {
- START=0;
- START=1;
- START=0;
- while(EOC==0);
- OE=1;
- //P1=0xff;
- volt=P3;
- delay(4);
- OE=0;
- volt=volt*1.96;
- }
- void write_com(uchar com)
- {
- rs=0;
- rd=0;
- lcden=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_date(uchar date)
- {
- rs=1;
- rd=0;
- lcden=0;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void init()
- {
- uchar num;
- TMOD=0x02;
- TH0=256-255;
- TL0=256-255;
- TR0=1;
- ET0=1;
- EA=1;
- lcden=0;
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- write_com(0x80);
- delay(5);
- write_com(0x80);
- for(num=0;num<15;num++)
- {
- write_date(Tab[num]);
- delay(5);
- }
- }
- void display(){
- //uchar a,b,c,d;
- int num;
- Tab[5]=volt/100+0x30;
- Tab[7]=volt%100/10+0x30;
- Tab[8]=volt%10+0x30;
- ////Tab[5]=0x38;
- //Tab[6]=0x38;
- ///Tab[8]=0x38;
- //Tab[9]=0x38;
- write_com(0x80);
- for(num=0;num<15;num++)
- {
- write_date(Tab[num]);
- delay(5);
- }
- }
- void t0()interrupt 1
- {
- CLK=~CLK;
- }
- void key_scan()
- {
- uchar hang,lie,key,buff;
- int i;
- P2=0xf0;
- if((P2&0xf0)!=0xf0)
- {
- key_down=1;
- delay(5);
- if((P2&0xf0)!=0xf0)
- {
- hang=0xfe;
- while((hang&0x10)!=0)
- {
- P2=hang;
- if((P2&0xf0)!=0xf0)
- {
- lie=P2|0x0f;
- buff=((~hang)+(~lie));
- switch(buff)
- { case 0x11: key=0;break;
- case 0x21: key=1;break;
- case 0x41: key=2;break;
- case 0x81: key=3;break;
- case 0x12: key=4;break;
- case 0x22: key=5;break;
- case 0x42: key=6;break;
- case 0x82: key=7;break;
- case 0x14: key=8;break;
- case 0x24: key=9;break;
- case 0x44: key=10;break;
- case 0x84: key=11;break;
- case 0x18: key=12;break;
- case 0x28: key=13;break;
- case 0x48: key=14;break;
- case 0x88: key=15;break;
- }
- }
- else hang=(hang<<1)|0x01;
- }
- }
- }
- }
复制代码
|