迅维网

查看: 1874|回复: 0
打印 上一主题 下一主题

基于单片机的压力监测装置设计 protues仿真及源程序

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-12 20:08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 中国 来自 中国

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
protues中没有电阻应变片,就自己给了2mv的直流电压作为信号.

                               
登录/注册后看高清大图




源程序:
  • #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;
  •                }
  •                 }
  •         }
  • }





您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复