標(biāo)題: 自制溫度傳感器+原理圖+c代碼 [打印本頁]

作者: 13373921132    時間: 2017-5-8 10:14
標(biāo)題: 自制溫度傳感器+原理圖+c代碼
請看附件
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit adrd=P3^7;                          //IO口定義
sbit adwr=P3^6;
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char j,k,adval;
void delay(unsigned char i)                //延時程序
{
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,                                //數(shù)碼管編碼
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar bai_c,uchar sh_c,uchar g_c)                        //顯示程序
{  



   P0=table[bai_c];                //顯示百位
   dula=1;
   dula=0;

   P0=0xfe;
   wela=1;
   wela=0;
   delay(5);

   P0=table[sh_c];                //顯示十位
   dula=1;
   dula=0;

   P0=0xfd;
   wela=1;
   wela=0;
   delay(5);

   P0=table[g_c];                //顯示個位
   dula=1;
   dula=0;

   P0=0xfb;
   wela=1;
   wela=0;
   delay(5);
}
void main()                      //        主程序
{

  uchar a,A1,A2,A2t,A3;
    while(1)
  {
    wela=1;
    P0=0;                       //選通ADCS
    adwr=0;                        //AD寫入(隨便寫個什么都行,主要是為了啟動AD轉(zhuǎn)換)
    _nop_();
    adwr=1;
    delay(1);                  //延時1ms,等待采樣轉(zhuǎn)換結(jié)束
    P0=0xff;                    //關(guān)閉ADCS

    wela=0;                     //關(guān)閉有AD片選信號鎖存器的鎖存端以防止在操作數(shù)碼管時使AD的片選發(fā)生變化
       for(a=20;a>0;a--)        //需要注意的是ADC0804在寫和讀之間的時間間隔要足夠長否則無法讀出數(shù)據(jù)
    {                           //這里把顯示部分放這里的原因也是為了增加寫讀之間的時間間隔                                                                                                                                                                                                                           
        display(A1,A2,A3);
    }                                  //送去顯示各位。

     wela=1;                     //重新打開有AD片選信號鎖存器的鎖存端
     P1=0xff;                    //讀取P1口之前先給其寫全1
     P0=0;                       //選通ADCS
     adrd=0;                     //AD讀使能
     adval=P1;                   //AD數(shù)據(jù)讀取賦給P1口
     adrd=1;
     P0=0xff;                     //關(guān)閉ADCS
     adwr=0;

     P1=adval;                    //同時把AD的值送八個發(fā)光二極顯示
     A1=adval/100;                    //分出百,十,和個位
     A2t=adval%100;
     A2=A2t/10;
     A3=A2t%10;
   }
}



作者: soukong    時間: 2020-12-28 19:22
附件在哪,麻煩發(fā)一下唄




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1