仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
CUC%%INCC@UKAGC)PP.png (80 KB, 下載次數: 93)
下載附件
仿真圖
2018-9-27 15:05 上傳
ad用的ADC0808芯片
#include "includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
//*************************************************************************************************
//* *
//* *******************************全局變量***************************** *
//* *
//*************************************************************************************************
unsigned char uc_Clock=0; //定時器0中斷計數
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(unsigned int uiNumber)
{
unsigned char ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把計算數字的每個位存入數組。
ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48); //從首位到末位逐一輸出。
if(ucCount==0)
vShowOneChar('.');
}
}
//*************************************************************************************************
//* *
//* ********************************主函數****************************** *
//* *
//*************************************************************************************************
void main()
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<設置定時器0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TMOD=0x01; //定時器0,模式1。
TH0=TIME0H;
TL0=TIME0L;
TR0=1; //啟動定時器。
ET0=1; //開定時器中斷。
EA=1; //開總中斷
vdInitialize();
vWriteCMD(0x84); //寫入顯示起始地址(第二行第一個位置)
vShowChar("Voltage:");
vWriteCMD(0xC9);
vShowChar("(V)");
while(1)
{
if(b_DATransform==1)
{
b_DATransform=0;
vWriteCMD(0xC4);
vShowVoltage(uiADTransform());
}
}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時器0中斷函數>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void Time0() interrupt 1
{
if(uc_Clock==0)
{
uc_Clock=5;
b_DATransform=1;
}
else
uc_Clock--;
TH0=TIME0H; //恢復定時器0。
TL0=TIME0L;
}
部分代碼
仿真圖
電壓表.rar
(69.99 KB, 下載次數: 113)
2018-9-27 15:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|