久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2845|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)和Proteus仿真的自動(dòng)換擋電壓表

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include <AT89X52.H>

#define LEDDATA P0
#define v20_on {s3=0;s2=0;s1=1;} //宏定義不同量程,不同的開關(guān)狀態(tài)
#define v2_on {s3=0;s2=1;s1=0;}
#define v02_on {s3=1;s2=0;s1=0;}
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={0,0,0,0,0,0,0,0};
unsigned char getdata;
unsigned long temp;
unsigned char i,k,l,m;
unsigned char code  mytable0[]=" Welcome to use  ";
unsigned char code  mytable1[]="Auto Voltmeter!";
unsigned char code line0[]="  Voltmeter   ";    //初始化顯示
unsigned char code line1[]=" Value:     V ";
//引腳定義
sbit lcdrs=P2^0;
sbit lcden=P2^1;                                                       
sbit s3=P3^7;  
sbit s2=P3^6;
sbit s1=P3^5;
sbit OE=P3^0;
sbit EOC=P3^1;
sbit ST=P3^2;

void delay(unsigned int z)      //延時(shí)子函數(shù)  z*1ms
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void write_com(unsigned char c)   //寫命令子函數(shù)
{
        lcdrs=0;                //低電平選擇為 寫指令
        lcden=0;               
        LEDDATA=c;                   //把指令寫入P0口
        delay(5);               //參考時(shí)序圖
        lcden=1;                //開使能
        delay(5);               //讀取指令
        lcden=0;                //關(guān)閉使能         
}

void write_data(unsigned char d)  //寫數(shù)據(jù)子函數(shù)
{
        lcdrs=1;             //高電平選擇為 寫數(shù)據(jù)
        LEDDATA=d;                //把數(shù)據(jù)寫入P0口
        delay(5);            //參考時(shí)序圖
        lcden=1;             //開使能
        delay(5);            //讀取數(shù)據(jù)
        lcden=0;                 //關(guān)閉使能
}
void initialize()      //LCD初始化函數(shù)
{   
    unsigned char num;
        lcden=0;
        write_com(0x38);   //設(shè)置16x2顯示,5x7點(diǎn)陣顯示,8位數(shù)據(jù)接口
        write_com(0x0c);   //00001DCB,D(開關(guān)顯示),C(是否顯示光標(biāo)),B(光標(biāo)閃爍,光標(biāo)不顯示)
        write_com(0x06);   //000001N0,N(地址指針+-1)
        write_com(0x01);      //清屏指令  每次顯示下一屏內(nèi)容時(shí),必須清屏            
        write_com(0x80+0x10);           //第一行,頂格顯示                           
        for(num=0;num<17;num++)        
        {
                write_data(mytable0[num]);
                delay(10);
        }
        write_com(0x80+0x50);           //第二行,從第一格開始顯示
        for(num=0;num<15;num++)      
        {
                write_data(mytable1[num]);
                delay(10);
        }
                for(num=0;num<16;num++)
        {
                write_com(0x1c);   //0001(S/C)(R/L)**;  S/C:高電平移動(dòng)字符,低電平移動(dòng)光標(biāo);  R/L:高電平左移,低電平右移
                delay(300);
        }
           delay(1000);
                     
        write_com(0x01);      //清屏指令  每次顯示下一屏內(nèi)容時(shí),必須清屏
        write_com(0x80);                                   
        for(num=0;num<14;num++)     
        {
                write_data(line0[num]);
                delay(10);
        }

        write_com(0x80+0x40);         
        for(num=0;num<15;num++)        
        {
                write_data(line1[num]);
                delay(10);
        }        
}
void value(unsigned char add,unsigned char dat)   
{       
         write_com(0x80+0x47+add);
         if(l==3&&add==2||l!=3&&add==1)
           {
              write_data(0x2e);
           }
         else
           {
              write_data(0x30+dat);
           }       
}
main()
{
   initialize();
   while(1)
_20v:
     {
       v20_on;                  
       ST=0;                  
       ST=1;
       ST=0;   
          while(EOC==0);
          OE=1;
                  getdata=P1;
          OE=0;
                   if(getdata<21)            
           {
             goto _2v;
           }
                  l=3;
              temp=getdata;      
          temp=(temp*1000/51)/2;
                  goto disp;

_2v:                          
         v2_on;
          ST=0;
          ST=1;
          ST=0;   
          while(EOC==0);
           OE=1;
           getdata=P1;
           OE=0;
           if(getdata<21)
           {
             goto _02v;
           }
           else if(getdata>204)
           {
             goto _20v;
           }
           l=2;
           temp=getdata;
           temp=(temp*1000/51)/2;
           goto disp;

_02v:                     
          v02_on;
          ST=0;
          ST=1;
          ST=0;   
          while(EOC==0);
           OE=1;
           getdata=P1;
           OE=0;
          if(getdata>204)
           {
             goto _2v;
           }
           l=1;
           temp=getdata;
           temp=(temp*1000/51)/2;
                   m=temp%10;
                   if(m>5){temp=temp/10+1;}
                   else{temp=temp/10;}
                   goto disp;

disp:          for(i=0;i<=3;i++)         
             {
               dispbuf[i]=temp%10;
               temp=temp/10;  
             }
                  if(l==3)
                    {
                           for(i=4;i>=3;i--)       
                           dispbuf[i]=dispbuf[i-1];
                    }
                  else
                   {
                          dispbuf[4]=dispbuf[3];
                   }
              for(k=0;k<5;k++)            
           {
                      value(k,dispbuf[4-k]);
               }
                 if(l==2){goto _2v;}
                 else if(l==1){goto _02v;}
          }
}

電壓表.png (129.26 KB, 下載次數(shù): 99)

電壓表.png

基于51單片機(jī)和Proteus仿真的自動(dòng)換擋電壓表.zip

69.9 KB, 下載次數(shù): 23, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人二区 | 欧美精品一区久久 | 毛片免费看的 | 久久亚洲欧美日韩精品专区 | 夜夜撸av| 精品久久久久久久 | 亚洲精品国产综合区久久久久久久 | 亚洲在线高清 | 国产精品久久久久久久一区二区 | 日韩一区二区福利 | 天天看天天操 | 午夜无码国产理论在线 | 粉嫩高清一区二区三区 | 91精品国产高清一区二区三区 | 欧美日韩视频网站 | 国产精品一区2区 | 欧美中文| 欧美国产视频 | 一区二区三区国产精品 | 精品久久久一区 | 黄色片在线 | 综合激情av | 91一区二区三区在线观看 | 午夜精品一区 | 欧美高清视频一区 | 亚洲精品乱码久久久久久黑人 | 91av久久久 | 91在线视频观看 | 一区二区三区视频在线 | 成人中文字幕在线观看 | 精品国产乱码久久久久久果冻传媒 | 欧美日韩精品免费观看 | av在线视| 国产精品18毛片一区二区 | 一级黄色播放 | 亚洲国产一区二区三区 | 一区二区精品视频 | 欧美 日韩精品 | 97超碰人人草 | 午夜精品三区 | 国产高清精品一区二区三区 |