專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)
十年專注單片機方案開發(fā)的方案公司英銳恩,分享MCD2-DEMO上1路8位AD顯示C語言例子。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
/*====================================================================
* PIC16F877A--10BIT AD
*2005 4 19
* HQGBOY
=====================================================================*/
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//數(shù)碼管字符表
const uchar led[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar ADResult0;
void display();
void delay(uint);
void delayus();
//系統(tǒng)各I/O口初始化子程序
void initial()
{
PORTA=0x00;
PORTC=0x00;
TRISA=0X01;
TRISC=0X00; //
ADCON0=0x81; //選擇A/D通道為RA0,打開A/D轉(zhuǎn)換器
//在工作狀態(tài),且使A/D轉(zhuǎn)換時鐘為32tosc
ADCON1=0X0E; //轉(zhuǎn)換結(jié)果右移,及ADRESH寄存器的高6位為"0"
//且把RA0口設(shè)置為模擬量輸入方式
}
//延時子程序
void delay(uint x)
{
uint j;
while(x--)
{
for(j=5535;--j;);
}
}
//延時子程序
void delayus()
{
uchar j;
for(j=5000;--j;);
}
//顯示初始化子程序
void initdis( )
{
PORTA=0xFB; //選通數(shù)碼管4
PORTC=0xC0;
PORTA=0xDF; //選通數(shù)碼管5
PORTC=0xC0;
PORTA=0xEF; //選通數(shù)碼管6
PORTC=0xC0;
}
//讀AD值
void ADReadFunc()
{
ADCON0=0x81;
delayus();
ADGO=1;
while(ADGO);
ADResult0=ADRESH;
}
//顯示子程序
void display()
{
uchar ADData1,ADData2,ADData3;
PORTC=0XFF;
ADData1=ADResult0/100;
PORTC=led[ADData1];
PORTA=0xfB; //選通數(shù)碼管4
delayus();
ADData2=(ADResult0-ADData1*100)/10;
PORTC=led[ADData2];
PORTA=0xDF; //選通數(shù)碼管5
delayus();
ADData3=ADResult0-ADData1*100-ADData2*10;
PORTC=led[ADData3];
PORTA=0xEF; //選通數(shù)碼管6
delayus();
}
//主程序
main()
{
initial();
initdis( ); //系統(tǒng)各I/O口初始化
while(1)
{
ADReadFunc();
display();
}
}