wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5318|回復: 8
打印 上一主題 下一主題
收起左側

基于單片機的酒精濃度測試儀的設計

[復制鏈接]
跳轉到指定樓層
樓主
設計的是一種以酒精濃度傳感器、AT89C51單片機和A/D轉換器為主的,檢測駕駛員呼出氣體的酒精濃度的,而且還帶有聲光報警功能的酒精濃度檢測儀。這種檢測儀不僅可以檢測出空氣環境中酒精濃度值,還可以由不同的環境來設定不同的閾值,當空氣中酒精濃度超過設定的閾值時進行聲光報警。系統主要為兩部分:硬件設計部分和軟件設計部分。硬件設計部分是利用MQ3氣敏傳感器先測量空氣中的酒精濃度,然后轉換為電壓信號,再通過A/D轉換器轉換成數字信號后再傳給單片機系統,最后由單片機系統和相應外圍電路進行信號處理,并由LCD顯示酒精濃度值并且對超過的閾值進行報警。軟件設計部分的程序采用的是模塊化設計思想,各個子程序的功能相對獨立,便于調試和修改。電路可分為單片機小系統電路、A/D轉換電路、聲光報警電路、LCD顯示電路,按鍵電路。
在硬件設計的時候,考慮到傳感器可以把酒精濃度這種非電量轉換為電量,可以輸出0-5V的電壓值并且電壓值比較穩定,外部干擾較小等特點。所以,可以直接把傳感器輸出的電壓值經過ADC0832采集數據送入單片機內進行處理。酒精濃度檢測儀的硬件電路設計主要包括:傳感器測量電路、AT89C51單片機系統、A/D轉換電路、LCD顯示電路、鍵盤電路、聲光報警電路。
單片機源程序如下:
  1. #include<reg51.H>
  2. #include<intrins.h>
  3. #include<stdio.h>
  4. #define uintunsigned int
  5. #define ucharunsigned char
  6. /**********************定義全局變量***************/
  7. //unsigned chardat=0x00 ;  //AD值
  8. unsigned charcount = 0x00;  //定時器計數
  9. unsigned charchannel;   //通道變量
  10. //ADC0832的引腳
  11. sbit ADCS=P1^2;  //ADC0832 chip seclect
  12. sbit ADDI=P1^1;  //ADC0832 k in
  13. sbit ADDO=P1^1;  //ADC0832 k out
  14. sbit ADCLK=P1^0;  //ADC0832 clock signal
  15. unsigned chardispbuf[3];
  16. uint temp;
  17. uint alc;//酒精濃度
  18. uchar dat; //獲取ADC轉換回來的值
  19. uchar*aa="M=T.TTmg/L";
  20. uchar*cc="alarm";
  21. uchar *dd="";
  22. uint sheding=60;
  23. ucharbb[16]={'A','l','c','o','h','o','l','=',' ','.',' ',' ','m','g','/','L'};   
  24. sbit RS =P2^0;   //定義端口
  25. sbit RW = P2^1;
  26. sbit EN = P2^2;
  27. sbit beep=P3^7;
  28. sbit k1=P1^3;//+鍵
  29. sbit k2=P1^4;//-鍵
  30. #define RS_CLRRS=0
  31. #define RS_SETRS=1
  32. #define RW_CLRRW=0
  33. #define RW_SETRW=1
  34. #define EN_CLREN=0
  35. #define EN_SETEN=1
  36. voidDelayUs2x(unsigned char t);
  37. voidDelayMs(unsigned char t);
  38. voidLCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);
  39. voidLCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);
  40. void init();
  41. voidwrite_com(unsigned char com);
  42. voidwrite_data(unsigned char date);
  43. voidDelayUs2x(unsigned char t)
  44. {   
  45. while(--t);
  46. }
  47. voidDelayMs(unsigned char t)
  48. {
  49. while(t--)
  50. {
  51. //大致延時1mS
  52. DelayUs2x(245);
  53.        DelayUs2x(245);
  54. }
  55. }
  56. /*********************************lcd1602各子函數**************************************/
  57. voidwrite_com(unsigned char com) //寫命令
  58. {
  59.       RS_CLR;
  60.       RW_CLR;
  61.       P0=com;
  62.       DelayMs(5);
  63.       EN_SET;
  64.       DelayMs(5);
  65.       EN_CLR;
  66. }
  67. voidwrite_data(unsigned char date)     //寫一個字符
  68. {
  69.       RS_SET;
  70.       RW_CLR;
  71.       P0=date;
  72.       DelayMs(5);
  73.       EN_SET;
  74.       DelayMs(5);
  75.       EN_CLR;
  76. }
  77. void initlcd()                    //初始化
  78. {
  79.       write_com(0x38);
  80.       write_com(0x0c);
  81.       write_com(0x06);
  82.       write_com(0x01);
  83. }
  84. /*------------------------------------------------
  85.   寫入字符串函數
  86. ------------------------------------------------*/
  87. void LCD_Write_String(unsigned char x,unsignedchar y,unsigned char *s)
  88. {
  89. if (y == 0)
  90.      {
  91.        write_com(0x80 + x);
  92.      }
  93. else
  94.      {
  95.      write_com(0xC0+ x);
  96.      }
  97. while (*s)
  98.      {
  99. write_data( *s);
  100. s ++;
  101.      }
  102. }
  103. /*------------------------------------------------
  104.   寫入字符函數
  105. ------------------------------------------------*/
  106. void LCD_Write_Char(unsigned char x,unsignedchar y,unsigned char Data)
  107. {
  108. if (y == 0)
  109.      {
  110.      write_com(0x80+ x);
  111.      }
  112. else
  113.      {
  114.      write_com(0xC0+ x);
  115.      }
  116. write_data(Data);  
  117. }
  118. /****************************************************************************
  119. 函數功能:AD轉換子程序
  120. 入口參數:CH
  121. 出口參數:dat
  122. ****************************************************************************/
  123. //采集并返回
  124. unsigned charAdc0832(unsigned char channel) //AD轉換,返回結果
  125. {
  126. uchar i=0;
  127. uchar j;
  128. uchar dat=0;
  129. uchar ndat=0;
  130. if(channel==0)channel=2;
  131. if(channel==1)channel=3;
  132. ADDI=1;
  133. _nop_();
  134. _nop_();
  135. ADCS=0;//拉低CS端
  136. _nop_();
  137. _nop_();
  138. ADCLK=1;//拉高CLK端
  139. _nop_();
  140. _nop_();
  141. ADCLK=0;//拉低CLK端,形成下降沿1
  142. _nop_();
  143. _nop_();
  144. ADCLK=1;//拉高CLK端
  145. ADDI=channel&0x1;
  146. _nop_();
  147. _nop_();
  148. ADCLK=0;//拉低CLK端,形成下降沿2
  149. _nop_();
  150. _nop_();
  151. ADCLK=1;//拉高CLK端
  152. ADDI=(channel>>1)&0x1;
  153. _nop_();
  154. _nop_();
  155. ADCLK=0;//拉低CLK端,形成下降沿3
  156. ADDI=1;//控制命令結束
  157. _nop_();
  158. _nop_();
  159. dat=0;
  160. for(i=0;i<8;i++)
  161. {
  162. dat|=ADDO;//收數據
  163. ADCLK=1;
  164. _nop_();
  165. _nop_();
  166. ADCLK=0;//形成一次時鐘脈沖
  167. _nop_();
  168. _nop_();
  169. dat<<=1;
  170. if(i==7)dat|=ADDO;
  171. }  
  172. for(i=0;i<8;i++)
  173. {
  174. j=0;
  175. j=j|ADDO;//收數據
  176. ADCLK=1;
  177. _nop_();
  178. _nop_();
  179. ADCLK=0;//形成一次時鐘脈沖
  180. _nop_();
  181. _nop_();
  182. j=j<<7;
  183. ndat=ndat|j;
  184. if(i<7)ndat>>=1;
  185. }
  186. ADCS=1;//拉低CS端
  187. ADCLK=0;//拉低CLK端
  188. ADDO=1;//拉高數據端,回到初始狀態
  189. dat<<=8;
  190. dat|=ndat;
  191. return(dat);//returnad k
  192. }
  193. /****************************************************************************
  194. 函數功能:定時器中斷延時程序 這一段的作用時隔一段時間抽樣一次 否側顯示的最后一位會不穩定
  195. 入口參數:
  196. 出口參數:
  197. ****************************************************************************/
  198. voidtimer0(void) interrupt 1
  199. {
  200.    TMOD = 0x01;
  201.    TH0 = 0x00;
  202.    TL0 = 0x00;
  203.    IE = 0x82;
  204.    TR0 = 01;
  205.    count++;
  206.   if (count == 0x0A)
  207.   {
  208.    count = 0x00;
  209.    dat= Adc0832(channel);
  210.   }
  211. }
  212. /*voidformat_data(uint dat)
  213. {
  214.   uint change_dat=dat;
  215.   uchar ptr[3];
  216. change_dat=(change_dat<<8)+(change_dat<<7)+(change_dat<<6)+(change_dat<<5)+(change_dat<<4)+(change_dat<<2);//乘500
  217.   change_dat=change_dat>>8;//除以256
  218.   ptr[0]=change_dat/100;   //得到個位數字
  219.   ptr[1]=(change_dat-(100*ptr[0]))/10; //得到十分位數字
  220.   ptr[2]=change_dat-(100*ptr[0])-(10*ptr[1]);//得到百分位數字
  221. }*/
  222. void keyscan()
  223. {
  224.                   
  225.    if(!k1)
  226.       {
  227.   DelayMs(5);
  228.               if(!k1)
  229.               {
  230.                     while(!k1);
  231.                     sheding+=5;
  232. LCD_Write_Char(2,1,sheding/100+'0');
  233.                     LCD_Write_Char(4,1,sheding%100/10+'0');
  234.                     LCD_Write_Char(5,1,sheding%10+'0');
  235.               }
  236.        }
  237.    if(!k2)
  238.        {
  239.        DelayMs(5);
  240.               if(!k2)
  241.               {
  242.                     while(!k2);
  243.                     sheding-=5;
  244.                     LCD_Write_Char(2,1,sheding/100+'0');
  245.                     LCD_Write_Char(4,1,sheding%100/10+'0');
  246.                     LCD_Write_Char(5,1,sheding%10+'0');
  247.               }
  248.       }
  249. }
  250. /****************************************
  251. 函數功能:主程序
  252. 入口參數:
  253. 出口參數:
  254. ****************************************/
  255. void main(void)
  256. {
  257.   uchar i;
  258.   P2=0xff;  //端口初始化
  259.   P0=0xff;  
  260.   P3=0xff;
  261.   channel=0x00; //channel=0
  262.   TMOD = 0x01;
  263.   TH0 = 0x00;
  264.   TL0 = 0x00;
  265.   IE = 0x82;
  266.   TR0 = 01;
  267.   initlcd();
  268.   LCD_Write_String(0,0,bb);
  269.   LCD_Write_String(0,1,aa);
  270.   //LCD_Write_String(11,1,cc);
  271.   LCD_Write_Char(2,1,sheding/100+'0');
  272.   LCD_Write_Char(4,1,sheding%100/10+'0');
  273.   LCD_Write_Char(5,1,sheding%10+'0');
  274.   while(1)
  275.   {
  276.    temp=dat*1.0/255*500;  //電壓值轉換,5V做為參考電壓,分成256份。
  277.    
  278.    if(temp<187)
  279.    {
  280.        alc=100*(temp-8)/895;
  281.    }
  282.    else
  283.    {
  284. alc=100*(temp-133)/272;
  285.    }
  286.        dispbuf[0]=alc%10+'0';  //個位
  287.        dispbuf[1]=alc/10%10+'0'; //十位
  288.        dispbuf[2]=alc/100%10+'0'; //百位
  289.       
  290.        //dispbuf[0]=temp%10+'0';   //個位
  291.        //dispbuf[1]=temp/10%10+'0'; //十位
  292.        //dispbuf[2]=temp/100%10+'0'; //百位
  293.       
  294.        LCD_Write_Char(8,0,dispbuf[2]);
  295.        LCD_Write_Char(10,0,dispbuf[1]);
  296.        LCD_Write_Char(11,0,dispbuf[0]);
  297.        keyscan();
  298.        if(alc>sheding)
  299.         {
  300.       //beep=0;
  301.              for(i=0;i<10;i--)
  302.              {
  303.                      beep=0;
  304.                      DelayMs(1);
  305.                      beep=1;
  306.              }
  307.             
  308.       
  309.              LCD_Write_String(11,1,cc);
  310.         }
  311.        else
  312.         {
  313.       LCD_Write_String(11,1,dd);
  314.         }
  315.   }
  316. }
復制代碼


QQ截圖20190612150026.jpg (28.66 KB, 下載次數: 96)

原理圖

原理圖

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:553887 發表于 2019-6-12 22:10 | 只看該作者
MAIN.C(16): error C129: missing ';' before 'temp'
回復

使用道具 舉報

板凳
ID:553887 發表于 2019-6-12 22:11 | 只看該作者
怎么改呢
回復

使用道具 舉報

地板
ID:519003 發表于 2019-6-18 15:14 | 只看該作者

第15行的unsigned chardispbuf[3];改為unsigned char dispbuf[3];//char后打一個空格就行了
回復

使用道具 舉報

5#
ID:519003 發表于 2019-6-18 15:17 | 只看該作者

錯誤較多,我發源碼給你
#include<reg51.h>
#include"delay.h"
#include"lcd602.h"
#include"ds18b20.h"
//**************端口定義*******************
sbit LED = P1^0;
sbit k1 = P1^4;
sbit k2 = P1^5;
sbit k3 = P1^6;
//**************數組定義*******************
uchar code tab2[]={"Temp:     "}; //5
uchar code tab3[]={" H     "}; //3
uchar code tab4[]={"L     "}; //8
//**************變量定義*******************
int temp1 = 400;   //上限
int temp3 = 100;         //下限
bit flag = 0;         //上下限選擇標志
int temp4; //當上限減到負數時
uchar temp5 = 0;
/*******************按鍵********************/
void key()
{
     if(flag == 0) //上限
         {
                 write_zifu(2,0,'*');
                 write_zifu(2,8,' ');
             if(k1 == 0)
                 {
                    delayxms(5);
                        while(k1 == 0);
                        temp1 += 10;
                 }
       
                 if(k2 == 0)
                 {
                    delayxms(5);
                        while(k2 == 0);
                        temp1 -= 10;
                 }
         }

         if(flag == 1)        //下限
         {
                 write_zifu(2,0,' ');
                 write_zifu(2,8,'*');
             if(k1 == 0)
                 {
                    delayxms(5);
                        while(k1 == 0);
                        temp3 += 10;
                 }
       
                 if(k2 == 0)
                 {
                    delayxms(5);
                        while(k2 == 0);
                        temp3 -= 10;
                 }
         }
         

         if(k3 == 0) //上下限選擇標志
         {
            delayxms(5);
                while(k3 == 0);
                flag = ~flag;
         }
}
/*******************定時器T1初始化********************/
void T1_init()
{
          TMOD = TMOD | 0x10;            //設T1為方式1
          TH1 = (65535-20000)/256;       //計數20000個
          TL1 = (65535-20000)%256;
          EA = 1;                        //開啟總中斷         
          ET1 = 1;                       //允許T1中斷
          TR1 = 1;                       //啟動
}
/*******************主函數********************/
void main()
{       
            chushihua();//lcd1602初始化
          write_string(1,0,tab2);
          write_string(2,0,tab3);
          write_string(2,9,tab4);
          T1_init();
          while(1)
          {
                          key();
                          ds1820disp();
                          /*溫度上限*/
                      if(temp1 < 0)
                          {
                                   write_zifu(2,2,'-');
                                   temp4 = temp1;
                                   temp4 = ~temp4;
                                   temp4 += 1;
                                     write_num3(2,3,temp4);
                                   write_zifu(2,7,' ');
                          }
                          else
                          {
                                     write_zifu(2,2,'+');
                                   if(temp1>=1000)
                                   {
                                              write_num4(2,3,temp1);
                                   }
                                   else
                                   {
                                              write_num3(2,3,temp1);
                                   }
                          }

                          /*溫度下限*/
                      if(temp3 < 0)
                          {
                                   write_zifu(2,10,'-');
                                     write_num3(2,11,-(temp3));
                                   write_zifu(2,15,' ');
                          }
                          else
                          {
                                     write_zifu(2,10,'+');
                                   if(temp3>=1000)
                                   {write_num4(2,11,temp3);}
                                   else
                                   {write_num3(2,11,temp3);}
                          }

                          /*報警*/
                          if(flag_temp == 1) //溫度小于零
                          {
                              if((-t)>temp1 || (-t)<temp3) {LED = 0;}
                              else {LED = 1;}
                          }
                          else //溫度大于零
                          {
                              if(t>temp1 || t<temp3) {LED = 0;}
                              else {LED = 1;}
                          }
          }           
}
/**************************定時器T1中斷服務函數************************************/
void T1_time() interrupt 3   
{
      TH1 = (65535-20000)/256;       //計數20000個
          TL1 = (65535-20000)%256;
          temp5 += 1;
          if(temp5 >= 25)
          {
             temp5 = 0;
                 TR1 = 0;
                 ReadTemperature();
                 TR1 = 1;
          }
}
回復

使用道具 舉報

6#
ID:519003 發表于 2019-6-18 15:18 | 只看該作者

是這個,這個是正確的
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
/**********************定義全局變量***************/
//unsigned char dat=0x00 ;  //AD值
unsigned char count = 0x00;  //定時器計數
unsigned char channel;   //通道變量
//ADC0832的引腳
sbit ADCS =P1^2;  //ADC0832 chip seclect
sbit ADDI =P1^1;  //ADC0832 k in
sbit ADDO =P1^1;  //ADC0832 k out
sbit ADCLK =P1^0;  //ADC0832 clock signal
unsigned char dispbuf[3];
uint temp;
uint alc;//酒精濃度
uchar dat; //獲取ADC轉換回來的值
uchar *aa="M=T.TTmg/L";
uchar *cc="alarm";
uchar *dd=" ";
uint sheding=60;
uchar bb[16]={'A','l','c','o','h','o','l','=',' ','.',' ',' ','m','g','/','L'};       
sbit RS = P2^0;   //定義端口
sbit RW = P2^1;
sbit EN = P2^2;
sbit beep=P3^7;
sbit k1=P1^3;//+鍵
sbit k2=P1^4;//-鍵
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);
void init();
void write_com(unsigned char com);
void write_data(unsigned char date);
void DelayUs2x(unsigned char t)
{   
while(--t);
}
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延時1mS
DelayUs2x(245);
         DelayUs2x(245);
}
}
/*********************************lcd1602各子函數**************************************/
void write_com(unsigned char com) //寫命令
{
        RS_CLR;
        RW_CLR;
        P0=com;
        DelayMs(5);
        EN_SET;
        DelayMs(5);
        EN_CLR;
}
void write_data(unsigned char date)         //寫一個字符
{
        RS_SET;
        RW_CLR;
        P0=date;
        DelayMs(5);
        EN_SET;
        DelayMs(5);
        EN_CLR;
}
void initlcd()                        //初始化
{
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
/*------------------------------------------------
  寫入字符串函數
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
        {
         write_com(0x80 + x);
        }
else
        {
        write_com(0xC0 + x);
        }
while (*s)
        {
write_data( *s);
s ++;
        }
}
/*------------------------------------------------
  寫入字符函數
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
        {
        write_com(0x80 + x);
        }
else
        {
        write_com(0xC0 + x);
        }
write_data(Data);  
}
/****************************************************************************
函數功能:AD轉換子程序
入口參數:CH
出口參數:dat
****************************************************************************/
//采集并返回
unsigned char Adc0832(unsigned char channel) //AD轉換,返回結果
{
uchar i=0;
uchar j;
uchar dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令結束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//收數據
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次時鐘脈沖
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}  
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//收數據
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次時鐘脈沖
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高數據端,回到初始狀態
dat<<=8;
dat|=ndat;
return(dat);//return ad k
}
/****************************************************************************
函數功能:定時器中斷延時程序 這一段的作用時隔一段時間抽樣一次 否側顯示的最后一位會不穩定
入口參數:
出口參數:
****************************************************************************/
void timer0(void) interrupt 1
{
   TMOD = 0x01;
   TH0 = 0x00;
   TL0 = 0x00;
   IE = 0x82;
   TR0 = 01;
   count++;
  if (count == 0x0A)
  {
   count = 0x00;
   dat= Adc0832(channel);
  }
}
/*void format_data(uint dat)
{
  uint change_dat=dat;
  uchar ptr[3];
  change_dat=(change_dat<<8)+(change_dat<<7)+(change_dat<<6)+(change_dat<<5)+(change_dat<<4)+(change_dat<<2);//乘500
  change_dat=change_dat>>8;//除以256
  ptr[0]=change_dat/100;   //得到個位數字
  ptr[1]=(change_dat-(100*ptr[0]))/10; //得到十分位數字
  ptr[2]=change_dat-(100*ptr[0])-(10*ptr[1]); //得到百分位數字
}*/
void keyscan()
{
                     
   if(!k1)
        {
  DelayMs(5);
                 if(!k1)
                  {
                        while(!k1);
                        sheding+=5;
LCD_Write_Char(2,1,sheding/100+'0');
                        LCD_Write_Char(4,1,sheding%100/10+'0');
                        LCD_Write_Char(5,1,sheding%10+'0');
                  }
         }
   if(!k2)
         {
          DelayMs(5);
                 if(!k2)
                  {
                        while(!k2);
                        sheding-=5;
                        LCD_Write_Char(2,1,sheding/100+'0');
                        LCD_Write_Char(4,1,sheding%100/10+'0');
                        LCD_Write_Char(5,1,sheding%10+'0');
                  }
        }

}
/****************************************
函數功能:主程序
入口參數:
出口參數:

****************************************/
void main(void)
{
  uchar i;
  P2=0xff;   //端口初始化
  P0=0xff;   
  P3=0xff;  
  channel=0x00;  //channel=0
  TMOD = 0x01;
  TH0 = 0x00;
  TL0 = 0x00;
  IE = 0x82;
  TR0 = 01;
  initlcd();
  LCD_Write_String(0,0,bb);
  LCD_Write_String(0,1,aa);
  //LCD_Write_String(11,1,cc);
  LCD_Write_Char(2,1,sheding/100+'0');
  LCD_Write_Char(4,1,sheding%100/10+'0');
  LCD_Write_Char(5,1,sheding%10+'0');
  while(1)
  {
   temp=dat*1.0/255*500;  //電壓值轉換,5V做為參考電壓,分成256份。
   
   if(temp<187)
   {

         alc=100*(temp-8)/895;
   }
   else
   {
alc=100*(temp-133)/272;
   }
          dispbuf[0]=alc%10+'0';         //個位
          dispbuf[1]=alc/10%10+'0'; //十位
          dispbuf[2]=alc/100%10+'0'; //百位
       
          //dispbuf[0]=temp%10+'0';         //個位
          //dispbuf[1]=temp/10%10+'0'; //十位
          //dispbuf[2]=temp/100%10+'0'; //百位
       
          LCD_Write_Char(8,0,dispbuf[2]);
          LCD_Write_Char(10,0,dispbuf[1]);
          LCD_Write_Char(11,0,dispbuf[0]);
          keyscan();
          if(alc>sheding)
          {
        //beep=0;
                for(i=0;i<10;i--)
                {
                         beep=0;
                         DelayMs(1);
                         beep=1;
                }
               
       
                LCD_Write_String(11,1,cc);
          }
          else
          {
        LCD_Write_String(11,1,dd);
          }
  }
}

回復

使用道具 舉報

7#
ID:553887 發表于 2019-6-20 22:14 | 只看該作者
gagalonghun 發表于 2019-6-18 15:18
是這個,這個是正確的
#include  
#include

樓主負責又細心
回復

使用道具 舉報

8#
ID:659880 發表于 2020-6-15 10:22 來自觸屏版 | 只看該作者
這個原理圖不清晰呀,還有beep的端口是干啥用的呀
回復

使用道具 舉報

9#
ID:782510 發表于 2020-12-8 23:43 | 只看該作者
有仿真圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
亚洲精品久久久久久一区二区| 国产特级黄色片| 18岁成人毛片| 国产xxxx孕妇| 日本簧片在线观看| 男男互摸gay网站| 最新日本在线观看| 视频一区在线| 国产午夜久久| 中文字幕永久在线不卡| 欧美精品影院| 小黄文在线观看| 好男人官网在线观看| 上原亚衣加勒比在线播放| 高h视频在线观看| 国产精品17p| 尤物视频网站在线观看| 成人在线视频成人| 警花av一区二区三区| 国产精品日本| 亚洲国产一区二区三区 | 亚州av电影免费在线观看| 小视频免费在线观看| 婷婷亚洲综合| 久久精品在线观看| 亚洲图片欧美日产| 久久免费看av| 国产精品久久不卡| 五月婷中文字幕| av在线电影观看| 日韩一区电影| 中文字幕一区二区三区不卡在线| 亚洲精品中文字幕有码专区| 美日韩精品免费| 萌白酱视频在线| 成人午夜国产福到在线| 中文字幕在线中文字幕在线中三区| 亚洲美女毛片| 7777精品伊人久久久大香线蕉超级流畅| 久久久久国产视频| 国产第一页视频| 99在线无码精品入口| 成人高潮成人免费观看| 在线精品一区二区| 在线电影院国产精品| 国产精品乱码视频| av电影在线不卡| 青草视频.com| 久久香蕉精品香蕉| 亚洲婷婷综合久久一本伊一区| 欧美黄色免费网站| 午夜不卡福利视频| 热99精品视频| 日本免费一区二区三区等视频| 91蜜桃免费观看视频| 欧美精品国产精品日韩精品| 九九热免费在线观看| 牛人国产偷窥女洗浴在线观看| 波多野结衣在线播放| 久久国产剧场电影| 波霸ol色综合久久| 中文字幕日韩久久| 18深夜在线观看免费视频| 成人毛片视频免费看| 麻豆mv在线看| 国产精品久久久久久一区二区三区| 国产精品久久久久久久久久99| 色婷婷在线影院| 另类av导航| 男男视频亚洲欧美| 欧美激情三级免费| 亚洲第一成人网站| 中文在线中文字幕| 精品一区二区精品| 欧美中文字幕在线| 校园春色 亚洲| 欧洲一区二区三区| 亚洲男同性视频| 色就是色欧美| 亚洲人在线播放| 国产伦一区二区三区| 亚洲激情视频在线| 免费看黄色片的网站| 一区二区三区高清在线视频| 国产成人啪免费观看软件| 国产精品成人品| 在线中文字幕网站| 亚洲最好看的视频| 中文字幕亚洲欧美一区二区三区 | 亚洲精品色图| 久久免费国产视频| 久久久久久久极品内射| free欧美| 91精品国产欧美一区二区| 91国内在线播放| 免费黄网站在线观看| 国产精品欧美一区喷水| 午夜免费电影一区在线观看| 国产精品久久久亚洲第一牛牛| 99在线精品视频在线观看| 日韩免费av一区二区| 99热这里只有精品在线| 欧美丝袜丝交足nylons172| 欧美激情精品在线| 无码人妻丰满熟妇奶水区码| 欧美激情影院| 欧美大胆在线视频| 影音先锋国产在线| 99国产**精品****| 国产精品v片在线观看不卡| 国产成人手机在线| 亚洲精品裸体| 精品视频一区在线| 天天搞夜夜操| 亚洲天堂精品在线观看| 亚洲黄色av片| 伊人久久综合一区二区| 亚洲国产精品高清久久久| 久久亚洲成人av| 久久福利影院| 国产高清精品一区二区| 蜜桃福利入口| 国产精品久久一卡二卡| 九九久久久久久| aaaa欧美| 68精品国产免费久久久久久婷婷| 亚洲国产日韩在线观看| 免费在线观看视频一区| 免费观看国产视频在线| 蜜芽tv福利在线视频| 91精品国产入口| 一级做a爱片性色毛片| 欧美激情福利视频在线观看免费| 91高清在线| hitomi一区二区三区精品| 日韩av黄色网址| 97天天综合网| 欧美激情小视频| 欧美黑人xxxx猛牲大交| 久久久精品国产99久久精品芒果 | 亚洲人成在线观看| 99热这里只有精品99| 蜜臀av一区二区在线观看| 国产妇女馒头高清泬20p多| 久久精品视频免费看| 中文字幕在线看视频国产欧美在线看完整| 成人1区2区3区| 26uuu国产在线精品一区二区| 中文字幕 欧美 日韩| 亚洲欧洲色图| 亚洲一区三区视频在线观看| h片在线观看网站| 欧美大片网站在线观看| 国产三级做爰在线观看| 亚洲va国产天堂va久久en| 久视频在线观看| 免费人成黄页网站在线一区二区| 亚洲 激情 在线| 成人免费看片39| 成人免费在线视频播放| 国产91亚洲精品久久久| 91最新国产视频| 国产日产一区二区三区| 欧美精品第一页在线播放| 黄色三级电影网| 亚洲精品电影在线观看| 国产精品爱久久久久久久小说| 国产欧美一区二区精品秋霞影院| 午夜国产福利一区二区| 视频一区二区中文字幕| 超碰男人的天堂| 玖玖精品视频| 久久久久久久久免费看无码| 久热精品视频| 精品一区二区在线观看视频| 国产一区在线不卡| 九九九久久久久| 久久久亚洲精品一区二区三区| 日本在线一级片| 91原创在线视频| 亚洲精品男人天堂| 国产精品乱码一区二区三区软件| 一级片视频播放| 亚洲高清久久久| 午夜福利理论片在线观看| 欧美日韩中文在线观看| 中文乱码字幕av网站| 精品久久人人做人人爰| 在线成人私人影院| 国产最新精品视频| 国产午夜精品无码一区二区| 91色在线porny| 一级特黄aa大片| 91精品国产一区二区| 狠狠干狠狠搞| 青青草原成人在线视频| 欧美bbbxxxxx| 800av在线免费观看| 2023国产精品久久久精品双| 这里只有精品在线观看视频 | 精品国产第一区二区三区观看体验| 影音av资源站| 日韩免费在线免费观看| 国产精品videossex撒尿| 男女激情无遮挡| 日本成人中文字幕在线视频| 欧美在线观看不卡| 337p亚洲精品色噜噜狠狠| 亚洲男人网站| 三区精品视频| 亚洲欧美日韩精品一区二区| 五月婷婷中文字幕| 欧美一区二区三区公司| 在线视频中文字幕久| 日本不卡一区二区三区在线观看| 91精品婷婷色在线观看| 亚洲第一精品在线观看| 91麻豆精品91久久久久同性| 福利片在线观看| 欧妇女乱妇女乱视频| 久久国产日韩欧美精品| 成人爽a毛片一区二区| 欧美成人h版在线观看| 日日夜夜亚洲精品| 日本三级日本三级日本三级极| 精品视频一二| 四虎成人在线播放| 一区二区三区在线观看国产| h视频在线观看网站| 91亚洲精品视频| 韩国一区二区三区在线观看| av首页在线观看| 中文字幕国产日韩| 91麻豆精品国产综合久久久| 深爱五月激情网| 欧美日韩国产高清一区二区| www.黄在线观看| 国产又粗又猛大又黄又爽| 亚洲一区国产视频| 嫩草精品影院| 手机av在线网站| 色婷婷综合中文久久一本| chinese偷拍一区二区三区| 天天摸天天舔天天操| 最新久久zyz资源站| 在线观看视频污| 久久艹这里只有精品| 欧美日韩一区小说| 亚州一区二区三区| 久草视频免费在线播放| 久久久91精品| 欧美一区二区三区久久精品茉莉花 | 999av视频| 91久久中文字幕| 国内精品视频一区二区三区八戒| www.就去干.com| 国产精品亚洲αv天堂无码| 福利精品视频在线| xx欧美视频| 欧美超碰在线观看| 成人疯狂猛交xxx| 国产成人av一区二区三区在线| 97中文字幕| 免费黄色在线播放| 亚洲电影免费观看| 日韩成人精品一区| 国产麻豆综合视频在线观看| 91精品国产高清一区二区三区| 未满十八勿进黄网站一区不卡| 黄色大全在线观看| 91色精品视频在线| 久久嫩草精品久久久精品| 欧美黄色激情| 亚洲免费激情视频| 亚洲精品免费网站| 久久久www成人免费无遮挡大片| 黄色av电影在线播放| 青青草在线观看视频| 成人免费午夜电影| 亚洲天天做日日做天天谢日日欢| 成人国产激情| 久草av在线播放| 99热手机在线| 国产精品久久久久久久久动漫| 香蕉免费毛片视频| 欧美亚洲丝袜传媒另类| 欧美一区国产| 国产欧美一区二区三区视频在线观看| 九九九久久久| 91国偷自产一区二区三区成为亚洲经典 | 亚洲天堂男人网| 一本色道久久综合亚洲精品婷婷| 欧美视频在线视频| 亚洲欧美日本伦理| 黄色三级在线| 91资源在线播放| 狠狠色狠狠色综合人人| 色婷婷精品久久二区二区蜜臀av| 日韩av有码| 你懂的视频在线观看| 亚洲视频在线免费播放| 黄色大片中文字幕| 久久精品国亚洲| 亚洲国产精品传媒在线观看| 亚洲码欧美码一区二区三区| 黄色大片a级| a级片在线观看免费| 欧美国产视频在线观看| 亚洲精品美女视频| 福利一区二区在线| 五月天色综合| 日本一二三区视频免费高清| 久久午夜鲁丝片| а 天堂 在线| 国产成人成网站在线播放青青| 91精品蜜臀在线一区尤物| 国产最新精品精品你懂的| 伊人久久大香| 李宗瑞系列合集久久| 精品国产av一区二区三区| 老女人性生活视频| 精品日韩欧美| 久久影院免费观看| 亚洲国产精品影院| 三级成人在线视频| 国产精品欧美综合亚洲| 色哟哟在线观看视频| 久久久久久国产精品mv| 中文字幕日韩在线播放| 亚洲女同ⅹxx女同tv| 夜久久久久久| 国产+成+人+亚洲欧洲在线 | 国产无遮挡aaa片爽爽| 久草视频国产在线| 91免费视频网站| 色一区av在线| 日本道精品一区二区三区| 国产乱国产乱300精品| 国产欧美日韩免费观看| 高潮在线视频| 亚洲精品男人| 免费看又色又爽又黄网站| 精品国产乱码久久久久久蜜臀网站| 蜜桃传媒一区二区亚洲av| 成人黄色片视频| 日本免费高清一区二区| 热re91久久精品国99热蜜臀| 亚洲高清av在线| 在线免费不卡视频| 亚洲免费在线电影| 成人国产精品免费网站| 亚洲免费网站| 91日韩免费| 神马日本精品| 亚洲欧美久久精品| 2018av在线| 国产精品刘玥久久一区| 四虎精品成人免费网站| 3d黄动漫网站| 天堂在线视频播放| 中文天堂网在线www| 亚洲精品一级片| 伊人亚洲综合网| 波多野结衣啪啪| 日韩大片免费在线观看| 日本少妇aaa| 国产呦小j女精品视频| 国产xxx在线观看| 中文字幕亚洲日本| 波多野结衣在线免费观看| 免费男同深夜夜行网站| av免费观看网| 欧美丰满熟妇xxxxx| www.这里只有精品| 9l视频白拍9色9l视频| 亚洲男女性事视频| 亚洲成色777777女色窝| 欧美一区二区三区免费视频| 制服丝袜av成人在线看| 日韩限制级电影在线观看| 亚洲黄色片网站| 国产一区二区三区直播精品电影 | 鲁大师成人一区二区三区| 国自产拍偷拍福利精品免费一 | 色yeye香蕉凹凸一区二区av| 一本色道久久综合亚洲精品小说| 中文字幕精品在线| 久久精品国产亚洲精品2020| 97涩涩爰在线观看亚洲| 国产成人精品免费视频| 国产精品美女黄网| 黄色网址在线免费看| 日日摸天天爽天天爽视频| 91免费视频污| 性生交大片免费全黄| 丰满人妻老熟妇伦人精品| 韩国av永久免费| 夜夜爽视频导航| 色吊丝在线永久观看最新版本| a毛片在线观看|