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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8G1K08A--SOP8查詢ADC串口發送10位ADC值

  [復制鏈接]
跳轉到指定樓層
樓主
#include "STC8G.h"  //6路10位高速ADC(8路PWM可當8路D/A使用)  00 0000 0000
#include "intrins.h"
unsigned  int dy;unsigned  char tempData[9];/*MCU發送到串行口的數據*/unsigned  char shuzi[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};/*數組串行口顯示數值用*/
void UartInit() //9600bps@11.0592MHz
{
  SCON=0x50;/*8位數據,可變波特率*/AUXR|=0x40;/*定時器時鐘1T模式*/AUXR &= 0xFE;/*串口1選擇定時器1為波特率發生器*/TMOD&=0x0F;/*設置定時器模式*/
        TL1=0xE0;/*設置定時初始值*/TH1=0xFE;/*設置定時初始值*/ET1= 0;/*禁止定時器%d中斷*/TR1 = 1;/*定時器1開始計時*/
}
void LED1()
{
     P5M1=0;P5M0=0x20;//推挽輸出
}
void SendData(unsigned char dat)/* 串口發送字節數據函數 參數是你要發送的字節 */
{
     SBUF = dat;/*把要發送的數據給了SBUF寄存器*/while(!TI);/*等待數據發送完成*/TI = 0;/*清除發送完成標志位*/
}
void SendString(unsigned char *puf)   //發送一個字符串  
{
        while(*puf!='\0')/*遇到空格跳出循環*/{SendData(*puf);puf++;}SendData('\r');/*回車*/SendData('\n');/*換行*/        
}
void adccx()  //?只有8位數據 255
{
   ADC_CONTR |= 0x40;          //啟動AD轉換
   _nop_();
   _nop_();
   while (!(ADC_CONTR & 0x20));//查詢ADC完成標志
   ADC_CONTR &= ~0x20;         //清完成標志
         //dy = ADC_RES+ADC_RESL;    //只讀取8位ADC結果
         ADC_RESL=ADC_RESL&0XC0;     //讀取10位的低字節2位
         dy = (ADC_RES << 2)|ADC_RESL>>6;//讀取10位ADC結果
}
void adczh()
{
        adccx();tempData[0]=shuzi[dy/1000]; tempData[1]=shuzi[dy%1000/100];tempData[2]=shuzi[dy%100/10];  tempData[3]=shuzi[dy%10];   
        SendString(tempData);//由0-9發送串口數值
}
void main()
{
          unsigned char x =0; /* 定義一個8位變量 用于接收串口接收的字節 */
    P5M0 = 0x00;P5M1 = 0x10; /*設置ADC4(P5.4)為ADC口*/LED1(); /* IO設置*/ UartInit(); // 串口初始化
    P_SW2 |= 0x80;ADCTIM = 0x3f;/*設置ADC內部時序*/P_SW2 &= 0x7f;ADCCFG = 0x0f;/*設置ADC時鐘為系統時鐘/2/16*/ADC_CONTR = 0x80;/*使能ADC模塊*/
    while (1)
    {
     adczh();  
     if (RI)// 如果串口接收到數據
     {
     RI = 0;      //清中斷標志                         
     x =SBUF;
                 SendData(SBUF);     // 把接收的數據再發送出去
     if (x == 0x02)
     {
     P55 = !P55;  //翻轉led狀態
     }
     }
    }
}
void Uart() interrupt 4
{       
        if (RI)/*接收中斷標志位*/{RI = 0;/*清除RI位*/}if (TI)/*發送中斷標志位*/{TI = 0;/*清除TI位*/}
}

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:796012 發表于 2022-6-4 11:28 | 只看該作者
程序是拼湊修改的,供黑友一起學習琢磨
回復

使用道具 舉報

板凳
ID:796012 發表于 2022-6-4 14:04 | 只看該作者
把主函數那ADC_ADC_CONTR = 0x80;/*使能ADC模塊*/   修改成 = 0x84;/*使能ADC模塊 打開ADC模塊 將ADC引腳設置到P5.4*/  
以下是ADC5-0通道選擇:0x85 0x84  0x83 0x82 0x81 0x80
/*低位權值:8421。  P3.0/ADC0:0000  P3.1/ADC1:0001  P3.2/ADC2:0010  P3.3/ADC3:0011  P5.4/ADC4:0100  P5.5/ADC5:0101*/
回復

使用道具 舉報

地板
ID:546224 發表于 2022-7-12 19:22 | 只看該作者
“dy = (ADC_RES << 2)|ADC_RESL>>6;//讀取10位ADC結果”
這句確定可以正常運行嗎?ADC_RES是8位的值,左移兩位就會把高兩位結果丟掉
應該先把ADC_RES的值賦值給一個16位變量后再左移
回復

使用道具 舉報

5#
ID:796012 發表于 2022-7-16 14:23 | 只看該作者
kiki900330 發表于 2022-7-12 19:22
“dy = (ADC_RES >6;//讀取10位ADC結果”
這句確定可以正常運行嗎?ADC_RES是8位的值,左移兩位就會把高兩 ...

沒仔細研究過,我這精度要求不是很高,就很久沒琢磨了。放在太陽能電路上,夠12伏就升壓供小愛音箱,低于11伏就關停。運行了半個月吧,還行
回復

使用道具 舉報

6#
ID:229641 發表于 2022-7-16 16:20 來自手機 | 只看該作者
玉萌業余發展 發表于 2022-7-16 14:23
沒仔細研究過,我這精度要求不是很高,就很久沒琢磨了。放在太陽能電路上,夠12伏就升壓供小愛音箱,低于 ...

這個片子的例程大佬有嗎?能不能分享一下?
回復

使用道具 舉報

7#
ID:188720 發表于 2022-7-21 09:34 | 只看該作者
觸景情傷 發表于 2022-7-16 16:20
這個片子的例程大佬有嗎?能不能分享一下?

去看STC官方提供的技術手冊,例程非常豐富。
回復

使用道具 舉報

8#
ID:639666 發表于 2023-2-7 16:03 | 只看該作者
玉萌業余發展 發表于 2022-6-4 14:04
把主函數那ADC_ADC_CONTR = 0x80;/*使能ADC模塊*/   修改成 = 0x84;/*使能ADC模塊 打開ADC模塊 將ADC引腳設 ...

能給個完整電路圖嗎?電壓檢測端子是芯片的第1腳嗎?
回復

使用道具 舉報

9#
ID:1042619 發表于 2023-2-9 16:57 | 只看該作者
   感謝樓主精彩分享! 如有需要也可參考STC-ISP 6.91J一體化軟件范例程序:下載STC8G系列ADC-基本操作(查詢方式)范例代碼
  
#include "reg51.h"
#include "intrins.h"

sfr     ADC_CONTR   =   0xbc;
sfr     ADC_RES     =   0xbd;
sfr     ADC_RESL    =   0xbe;
sfr     ADCCFG      =   0xde;

sfr     P_SW2   =   0xba;
#define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)

sfr     P0M1    =   0x93;
sfr     P0M0    =   0x94;
sfr     P1M1    =   0x91;
sfr     P1M0    =   0x92;
sfr     P2M1    =   0x95;
sfr     P2M0    =   0x96;
sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;
sfr     P4M1    =   0xb3;
sfr     P4M0    =   0xb4;
sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    P1M0 = 0x00;                                //設置P1.0為ADC口
    P1M1 = 0x01;
    P_SW2 |= 0x80;
    ADCTIM = 0x3f;                              //設置ADC內部時序
    P_SW2 &= 0x7f;
    ADCCFG = 0x0f;                              //設置ADC時鐘為系統時鐘/2/16
    ADC_CONTR = 0x80;                           //使能ADC模塊

    while (1)
    {
        ADC_CONTR |= 0x40;                      //啟動AD轉換
        _nop_();
        _nop_();
        while (!(ADC_CONTR & 0x20));            //查詢ADC完成標志
        ADC_CONTR &= ~0x20;                     //清完成標志
        P2 = ADC_RES;                           //讀取ADC結果
    }
}


回復

使用道具 舉報

10#
ID:796012 發表于 2023-3-20 14:37 | 只看該作者
大漠孤煙001 發表于 2023-2-9 16:57
感謝樓主精彩分享! 如有需要也可參考STC-ISP 6.91J一體化軟件范例程序:下載STC8G系列ADC-基本操作(查 ...

回復

使用道具 舉報

11#
ID:1060517 發表于 2023-3-21 13:18 | 只看該作者
請問STC8G1K08A誤觸發是什么原因
回復

使用道具 舉報

12#
ID:796012 發表于 2023-5-17 09:02 | 只看該作者
unsigned int dy;  dy=ADC_RES<<2|ADC_RESL;/*10位ADC*/       
回復

使用道具 舉報

13#
ID:796012 發表于 2023-5-17 09:05 | 只看該作者
unsigned int dy;  /*先聲明16位變量*/
dy=ADC_RES<<2|ADC_RESL;/*低2位和高8位拼成10位ADC*/       
回復

使用道具 舉報

14#
ID:9486 發表于 2023-6-20 09:51 | 只看該作者
電路圖有嗎,P5.4來檢測電壓?
回復

使用道具 舉報

15#
ID:232366 發表于 2024-7-8 21:04 | 只看該作者
玉萌業余發展 發表于 2023-5-17 09:05
unsigned int dy;  /*先聲明16位變量*/
dy=ADC_RES

此改動后不知道為什么采樣口直接對地AD值還有2  變成2-1023了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视视频在线观看入口直接观看 | 国产欧美一区二区三区在线看 | 黄色免费网站在线看 | 久久黄网 | 日韩伦理一区二区 | 亚洲精品电影网在线观看 | 成人国产精品久久久 | 国产欧美一区二区在线观看 | 久久久国产精品网站 | 国产成人久久精品一区二区三区 | 狠狠操狠狠搞 | 国产精品一区二区三区四区 | 亚洲一区二区三区免费 | 天天天天操 | 久久精品色欧美aⅴ一区二区 | 在线一区二区三区 | 91精品国产综合久久福利软件 | 蜜桃视频麻豆 | 电影91久久久 | 亚洲精品电影在线观看 | 精品美女视频在线观看免费软件 | 国产一区二区三区在线看 | 欧美99| 亚洲免费一区二区 | 99亚洲精品视频 | 日日骚网 | 久久激情五月丁香伊人 | 日韩精品| 久久精品在线 | 国产亚洲精品美女久久久久久久久久 | 91在线一区 | 日韩最新网站 | 欧美视频一区 | 日韩成人高清在线 | 一级做a爰片性色毛片16 | 亚洲精品1区2区3区 91免费看片 | 国产九九九九 | 激情一区二区三区 | 欧美日韩不卡合集视频 | 91一区二区 | 成年人在线播放 |