標題:
STC12C5A60S2單片機使用ADC讀取IO電壓用OLED顯示程序
[打印本頁]
作者:
嗨嗨害
時間:
2023-5-1 18:40
標題:
STC12C5A60S2單片機使用ADC讀取IO電壓用OLED顯示程序
使用STC12C5A60S2讀取IO口0~5V的電壓使用0~255范圍表示電壓范圍
P0^6 SCLP0^7
SDAP1.0
ADC 通道0P1.1 ADC 通道1
單片機源程序如下:
//P0^6 SCL
//P0^7 SDA
//P1.0 ADC 通道0
//P1.1 ADC 通道1
#include <STC12C5A60S2.H>
#include <intrins.h>
#include <oled.h>
#define uchar unsigned char
#define uint unsigned int
/*聲明ADC相關(guān)寄存器 */
//sfr ADC_CONTR = 0xBC; //ADC 控制寄存器
//sfr ADC_RES = 0xBD; //ADC 高8位結(jié)果寄存器
//sfr ADC_LOW2 = 0xBE; //ADC 低2位結(jié)果寄存器
//sfr P1ASF = 0x9D; //P1 輔助控制寄存器
/*ADC操作的一些宏定義*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/**********************************************
*函數(shù)名稱:InitADC()
*函數(shù)功能:初始化ADC
*輸入:無
*返回:無
**********************************************/
void InitADC()
{
P1ASF = 0xf0; //開啟8路ADC功能 1111 0000
ADC_RES = 0; //清楚之前的結(jié)果
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
DelayMs(2); //ADC上電和延時
}
/**************************************
函數(shù)名稱:GetADCResult(unsigned int ch)
功能描述:讀取AD
入口參數(shù):unsigned int ch 輸入0-7分別讀取AD0-AD7值
返回值:無
***************************************/
unsigned char GetADCResult(unsigned char ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //查詢前必須等待
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//等待完成標志
ADC_CONTR &= ~ADC_FLAG; //關(guān)閉 ADC
return ADC_RES; //返回ADC結(jié)果
}
void main()
{
unsigned char temp , T ;
unsigned int a ,b ,c, d;
InitADC();//ADC初始化
OLED_Init();//初始化OLED
OLED_ColorTurn(0);//0正常顯示,1 反色顯示
OLED_DisplayTurn(1);//0正常顯示 1 屏幕翻轉(zhuǎn)顯示
while(1)
{
temp = GetADCResult(0);
T = GetADCResult(1);
a = (temp / 1000 );//打印千位
b = (temp % 1000 / 100 );//打印百位
c = (temp % 100 / 10 );//打印十位
d = (temp % 10 );//打印個位
DelayMs(100);
OLED_ShowString(53,2,"temp:",8);
OLED_ShowNum(86,2,temp,3,8);
OLED_ShowString(53,1,"T:",8);
OLED_ShowNum(86,1,T,3,8);
// OLED_ShowString(53,0,"a:",8);
// OLED_ShowNum(86,0,a,3,8);
//
// OLED_ShowString(53,1,"b:",8);
// OLED_ShowNum(86,1,b,3,8);
//
// OLED_ShowString(53,2,"c:",8);
// OLED_ShowNum(86,2,c,3,8);
}
}
復(fù)制代碼
Keil代碼下載:
試驗.rar
(61.67 KB, 下載次數(shù): 52)
2023-5-1 18:36 上傳
點擊文件名下載附件
源代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1