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

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

QQ登錄

只需一步,快速開始

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

用51單片機(jī)制作萬用表,不能用,請(qǐng)大家?guī)兔纯?/span>

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
下面的是程序,和仿真,是之前一位壇友分享的,我畫了一個(gè)PCB,PCB的原理圖如下:


#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/***************引腳聲明*********************/
#define lcd P0
sbit rs=P2^7;     //LCD液晶控制端
sbit en=P2^6;
sbit SPK=P1^7;  //蜂鳴器引腳
sbit CS=P1^2;   //CS位定義為P1.2引腳
sbit CLK=P1^0;  //CLK位定義為P1.0引腳
sbit DIO=P1^1;  //DIO位定義為P1.1引腳
sbit key=P2^5;  //定義按鍵引腳
sbit a=P2^0;             //模擬量通道選擇端
sbit b=P2^1;             //模擬量通道選擇端
sbit c=P2^2;             //模擬量通道選擇端

/***********LCD顯示數(shù)組**************************/
uchar code table0[]="  DCV(0-5V)  ";
uchar table1[]="  V=0000.00 v";
uchar code table2[]="  DCI(0-100mA)";
uchar table3[]="  I=0000.00mA";
uchar code table4[]="  R(0-1k)    ";
uchar table5[]="  R=000.0   ";

/***************全局變量************************/
uchar flag=0;      //換擋標(biāo)志位


void delay(uint count)              //延時(shí)
{
uint i,j;
for(i=0;i<count;i++)
  for(j=0;j<120;j++);
}

/*************LCD1602驅(qū)動(dòng)程序************************/
void w_cmd(uchar com)                    //lcd1602寫命令
{
rs=0;
lcd=com;
en=1;
delay(5);
en=0;
}

void w_data(uchar dat)           //lcd1602讀數(shù)據(jù)
{
rs=1;
lcd=dat;
en=1;
delay(5);
en=0;
}

void w_str(uchar *s)       //lcd1602寫字符串
{
   while(*s)  w_data(*s++);
}

void init()              //lcd1602初始化
{
en=0;
w_cmd(0x38);
w_cmd(0x0c);
w_cmd(0x06);
w_cmd(0x01);
}

/*****************************************************
函數(shù)功能:將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)
***************************************************/
unsigned char  A_D()
{
unsigned char i,dat;
  CS=1;   //一個(gè)轉(zhuǎn)換周期開始
  CLK=0;  //為第一個(gè)脈沖作準(zhǔn)備
  CS=0;  //CS0,片選有效
  DIO=1;    //DIO1,規(guī)定的起始信號(hào)  
  CLK=1;   //第一個(gè)脈沖
  CLK=0;   //第一個(gè)脈沖的下降沿,此前DIO必須是高電平
  DIO=1;   //DIO1 通道選擇信號(hào)  
  CLK=1;   //第二個(gè)脈沖,第23個(gè)脈沖下沉之前,DI必須跟別輸入兩位數(shù)據(jù)用于選擇通道,這里選通道CH0
  CLK=0;   //第二個(gè)脈沖下降沿

  DIO=0;   //DI0,選擇通道0
  CLK=1;    //第三個(gè)脈沖
  CLK=0;    //第三個(gè)脈沖下降沿
  DIO=1;    //第三個(gè)脈沖下沉之后,輸入端DIO失去作用,應(yīng)置1
  CLK=1;    //第四個(gè)脈沖
  for(i=0;i<8;i++)  //高位在前
    {
     CLK=1;         //第四個(gè)脈沖
     CLK=0;
     dat<<=1;       //將下面儲(chǔ)存的低位數(shù)據(jù)向右移
  dat|=(unsigned char)DIO;   //將輸出數(shù)據(jù)DIO通過或運(yùn)算儲(chǔ)存在dat最低位
   }            
   CS=1;          //片選無效
return dat;  //將讀書的數(shù)據(jù)返回     
}
/**********************報(bào)警程序************************/
void BaoJing(void)
{  
         uinti, j;
         for(i = 0; i < 200; i++)    //產(chǎn)生脈沖使蜂鳴器發(fā)出聲音
         {
        SPK = 0; for (j = 0; j < 100; j++);
        SPK = 1; for (j = 0; j < 100; j++);
  }   
}
/*********************按鍵判定************************************/
void keyscan()
{
         if(key==0)                    //判斷是否按下
         {
                  delay(10);
                  if(key==0)
                  {
                          while(!key);
                          flag++;
                          if(flag>3)flag=0;

                  }
         }
}
/*******************定時(shí)器1初始化程序******************/
void Timer1_Init(void) //
{
         TMOD=0x11;  
         TH1= ( 65535 - 50000 ) / 256;   //0.2ms
         TL1= ( 65535 - 50000 ) % 256;
         ET1=1;              
         TR1=1;      
         EA=1;
}
/*******************定時(shí)器1中斷程序********************/
void Timer1 ( void ) interrupt 3  //定時(shí)器1中斷函數(shù) 0.2ms
{
         TH1= ( 65535 - 50000) / 256;  
         TL1= ( 65535 - 50000 ) % 256;
         keyscan();   //按鍵判定
}

/*主函數(shù)*/                                                                  
void main()
{
uint adval;
unsigned long int temp;
init();     //液晶初始化      
Timer1_Init();  //定時(shí)器1初始化  
while(1)
  {

          if(flag==0)              //直流電壓測(cè)量
          {     
                          c=0;b=0;a=0;    //通道選擇
                          w_cmd(0x80);
                          w_str(table0);
                          adval=A_D();    //進(jìn)行A/D轉(zhuǎn)換
                          temp=adval*5.0/255* 2*100;  //轉(zhuǎn)換成實(shí)際電壓并放大100
                          if(temp>500)
                          {
                                   BaoJing();   //超量程報(bào)警
                                   w_cmd(0xc0+0x00);      
                                   w_str("  V= .OL v  ");
                                   delay(500);
                          }
                          else
                          {
                                   table1[4]=temp/100000+0x30;
                                   table1[5]=temp%100000/10000+0x30;
                                   table1[6]=temp%10000/1000+0x30;
                                   table1[7]=temp%1000/100+0x30;
                                   table1[9]=temp%100/10+0x30;
                                   table1[10]=temp%10+0x30;                  
                                   w_cmd(0xc0+0x00);      
                                   w_str(table1);         
                                   delay(10);
                          }
          }

          if(flag==1)        //         直流電流測(cè)量
          {
                          c=0;b=0;a=1;    //通道選擇
                          w_cmd(0x80);
                          w_str(table2);         
                          adval=A_D();    //進(jìn)行A/D轉(zhuǎn)換
                          temp=adval*0.1/255*5000000/10;
                          if(temp>10000)
                          {
                                   BaoJing();   //超量程報(bào)警
                                   w_cmd(0xc0+0x00);      
                                   w_str("  I= .OL mA ");
                                   delay(500);
                          }
                          else
                          {
                                   table3[4]=temp/100000+0x30;
                                   table3[5]=temp%100000/10000+0x30;
                                   table3[6]=temp%10000/1000+0x30;
                                   table3[7]=temp%1000/100+0x30;
                                   table3[9]=temp%100/10+0x30;
                                   table3[10]=temp%10+0x30;  
                                   w_cmd(0xc0+0);     
                                   w_str(table3);

                                   delay(10);
                          }
    }
           if(flag==2)      //         電阻測(cè)量
           {   
                          c=0;b=1;a=0;    //通道選擇
                          adval=A_D();    //進(jìn)行A/D轉(zhuǎn)換
                          temp=adval*1.0/(255-adval)*1000;
                          if(temp>50000)
                          {
                                   BaoJing();   //超量程報(bào)警
                                   w_cmd(0xc0+0x00);      
                                   w_str("  R= .OL k  ");
                                   delay(500);
                          }
                          else
                          {
                                   w_cmd(0x80);
                                   w_str(table4);

                                   table5[4]=temp/1000+0x30;
                                   table5[5]=temp%1000/100+0x30;                 
                                   table5[6]=temp%100/10+0x30;            
                                   table5[8]=temp%10+0x30;   
                                   w_cmd(0xc0+0);     
                                   w_str(table5);
                                   delay(10);
                          }                                          
           }     
  }
}  



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

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2020-5-20 10:58 | 只看該作者
如果改了人家的圖紙,是有可能也要改動(dòng)程序的相關(guān)部分才可以正常工作的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:747209 發(fā)表于 2020-5-21 10:44 | 只看該作者
man1234567 發(fā)表于 2020-5-20 10:58
如果改了人家的圖紙,是有可能也要改動(dòng)程序的相關(guān)部分才可以正常工作的。

沒有改,只是從仿真圖畫了原理圖,生成了PCB
回復(fù)

使用道具 舉報(bào)

地板
ID:187802 發(fā)表于 2020-5-21 12:20 | 只看該作者
AD的時(shí)序要弄正確
回復(fù)

使用道具 舉報(bào)

5#
ID:755472 發(fā)表于 2020-5-21 12:24 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合色丁香婷婷六月图片 | 伊人久久大香线 | 欧美群妇大交群中文字幕 | 亚洲高清免费观看 | 色av一区二区三区 | 亚洲自拍偷拍免费视频 | 日韩国产一区二区三区 | 美女天天操| 欧美影院 | 亚洲成人网在线播放 | 中日av| 久久久久国产一区二区三区四区 | 久久一日本道色综合久久 | 成人三级在线播放 | 91视频在线看 | 九色国产 | 男女羞羞免费视频 | 水蜜桃亚洲一二三四在线 | 久久av一区二区三区 | 狠狠狠| av电影手机在线看 | 夜夜精品浪潮av一区二区三区 | 欧美国产日韩在线观看成人 | 久久国产精品视频 | 亚洲国产日韩一区 | 国产精品一区二区三区久久久 | 久久a久久 | 性福视频在线观看 | 人人鲁人人莫人人爱精品 | 亚洲电影中文字幕 | 国产成人啪免费观看软件 | 精品一区二区三区电影 | 欧美一区二区 | 久久久久久国产免费视网址 | 久久精品一区 | 国产91在线 | 中日 | www.黄色片视频 | 婷婷综合激情 | 国产成人99久久亚洲综合精品 | 999视频 | 黄色在线观看国产 |