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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機adc0832獲取光照強度,lcd一直顯示255

查看數: 2240 | 評論數: 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-3-25 01:02

正文摘要:

uchar ADC_read_data(uchar CH) {     uchar i,test,adval;     adval = 0x00;     test = 0x00;     CLK = 0;       //初始化     D ...

回復

ID:757219 發表于 2023-3-26 17:55
已解決,換了一個ADC0832.dll文件
ID:757219 發表于 2023-3-26 17:38
我用了別人的光照程序依舊不變,我已經開始懷疑是proteus的問題了,但我換了一個proteus8.13還是沒用
ID:757219 發表于 2023-3-26 17:16
angmall 發表于 2023-3-25 15:06
應該是時序的問題。

我用了您的程序并沒有得到解決。我認為是adc0832程序讀取的問題,使電阻改變lcd得不到改變,不知您有什么見解
ID:915071 發表于 2023-3-26 15:00
感覺沒什么問題呀,我跟你一樣的adc讀取程序,除了顯示部分有區別外,基本一致,我的能正常顯示。
#include "reg51.h"
#include<intrins.h>
#include "lcd.h"
#define uint unsigned int
#define uchar unsigned char


uchar getdata=0;
unsigned char dat = 0;
unsigned long int voltage = 0;
sbit CLK = P2^0;
sbit CS = P2^1;
sbit dio1 = P2^2;
sbit dio0 = P2^2;

uchar ADC0832_Read(uchar CH)
{
        unsigned char adval,test,i;
        adval = 0x00;
        test = 0x00;
        CLK = 0;
        dio1 = 1;
        _nop_();
        CS = 0;
        _nop_();
        CLK = 1;
        _nop_();
        if(CH == 0x00)
        {
                CLK = 0;
                dio1 = 1;
                _nop_();
                CLK = 1;
                _nop_();
                CLK = 0;
                dio1 = 0;
                _nop_();
                CLK = 1;
                _nop_();
        }
        else
        {
                CLK = 0;
                dio1 = 1;
                _nop_();
                CLK = 1;
                _nop_();
                CLK = 0;
                dio1 = 1;
                _nop_();
                CLK = 1;
                _nop_();       
        }
        CLK = 0;
        dio1 = 1;
        for(i=0;i<8;i++)
        {
                _nop_();
                adval<<=1;
                CLK = 1;
                _nop_();
                CLK = 0;
                if(dio0)
                adval |= 0x01;
                else
                adval |= 0x00;
        }
        for(i=0;i<8;i++)
        {
                test>>=1;
                if(dio0)
                test |= 0x80;
                else
                test |= 0x00;
                _nop_();
                CLK = 1;
                _nop_();
                CLK = 0;
        }
//        if(test == adval)
        getdata = test;
        _nop_();
        CS = 1;
        dio0 = 1;
        CLK = 1;
        return getdata;

}

void ADC_change(uchar input)
{
        unsigned char ADC[4] = {0};
       
        voltage = input*5000.0/255;

         ADC[0] = voltage/1000;
         ADC[1] = voltage/100%10;
         ADC[2] = voltage/10%10;
         ADC[3] = voltage%10;
         LcdWriteCom(0x80);
         //LcdWriteCom(0x81);
         LcdWriteData('0'+ADC[0]);
         //LcdWriteCom(0x82);
         LcdWriteData('0'+ADC[1]);
         //LcdWriteCom(0x83);
         LcdWriteData('0'+ADC[2]);
        // LcdWriteCom(0x84);
         LcdWriteData('0'+ADC[3]);
         //LcdWriteCom(0x86);
         LcdWriteData('m');
         LcdWriteData('v');
}

void main()
{
        LcdInit();
        while(1)
        {
                dat = ADC0832_Read(0x00);
                ADC_change(dat);       
        }
}
ID:155507 發表于 2023-3-25 15:06
應該是時序的問題。


  1. unsigned char Get_AD_Result()
  2. {
  3.         unsigned char i,dat1=0,dat2=0;
  4.         CS  = 0; //起始控制位
  5.         CLK = 0;
  6.         DIO = 1; _nop_(); _nop_();
  7.         CLK = 1; _nop_(); _nop_();
  8.         CLK = 0;DIO = 1; _nop_(); _nop_(); //第一個下降沿之前,設DI= 1/0
  9.         CLK = 1; _nop_(); _nop_();         //軒子單端/差分(SGL/DIF)模式中的單端輸入模式
  10.         CLK = 0;DIO = 1; _nop_(); _nop_(); //第二個下降沿之前,設DI = 0/1,選擇CH0/CH1
  11.         CLK = 1;DIO = 1; _nop_(); _nop_();
  12.         CLK = 0;DIO = 1; _nop_(); _nop_(); //第三個下降沿之前,設DI = 1
  13.         for(i=0;i<8;i++)    //第4~11個下降沿讀數據(MSB->LSB)
  14.         {
  15.                  CLK = 1; _nop_(); _nop_();
  16.                 CLK = 0; _nop_(); _nop_();
  17.                 dat1 = dat1 << 1 | DIO;       
  18.         }
  19.         for(i=0;i<8;i++)  //第11~18個下降沿讀數據(LSB->MSB)
  20.         {
  21.                  dat2 = dat2 << ((unsigned char)(DIO)<<i);
  22.                 CLK = 1; _nop_(); _nop_();
  23.                 CLK = 0; _nop_(); _nop_();
  24.         }
  25.         CS = 1;
  26.         return (dat1 == dat2) ? dat1:0; //如果MSB->LSB和LSB->MSB讀取的結果相同,則返回讀取的結果,否則返回0
  27. }

復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日干夜夜操 | 日本一区二区高清不卡 | 国产7777| 欧美一区二区三区视频 | 99福利网 | 国产福利视频 | 亚洲h视频| 在线视频日韩 | 欧美福利视频一区 | 国产小视频精品 | 91黄色片免费看 | 国产成人精品一区二区 | 亚洲一区久久 | 成人三级av| 国产精品亚洲一区二区三区在线观看 | 国产亚洲一区二区三区在线观看 | 丁香五月网久久综合 | 麻豆成人在线视频 | 91久久国产综合久久 | 中文字幕一区二区三区精彩视频 | 国产成人福利在线观看 | 久久99视频免费观看 | 成人在线视频一区 | 久久精品小视频 | 欧美日韩成人在线 | 成人国产精品久久 | 精品久久久久久亚洲精品 | 国产大片黄色 | 日韩一区二区久久 | 高清人人天天夜夜曰狠狠狠狠 | 一级片在线播放 | 夜夜爽99久久国产综合精品女不卡 | 97av在线 | 欧美一级艳情片免费观看 | 亚洲先锋影音 | 精品视频在线免费观看 | 久久久久久天堂 | 看av片网站 | 亚洲女人的天堂 | 中文区中文字幕免费看 | 日韩av在线一区 |