|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真圖
ad用的ADC0808芯片
#include "includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
//*************************************************************************************************
//* *
//* *******************************全局變量***************************** *
//* *
//*************************************************************************************************
unsigned char uc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(unsigned int uiNumber)
{
unsigned char ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。
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('.');
}
}
//*************************************************************************************************
//* *
//* ********************************主函數(shù)****************************** *
//* *
//*************************************************************************************************
void main()
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<設(shè)置定時(shí)器0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TMOD=0x01; //定時(shí)器0,模式1。
TH0=TIME0H;
TL0=TIME0L;
TR0=1; //啟動(dòng)定時(shí)器。
ET0=1; //開(kāi)定時(shí)器中斷。
EA=1; //開(kāi)總中斷
vdInitialize();
vWriteCMD(0x84); //寫(xiě)入顯示起始地址(第二行第一個(gè)位置)
vShowChar("Voltage:");
vWriteCMD(0xC9);
vShowChar("(V)");
while(1)
{
if(b_DATransform==1)
{
b_DATransform=0;
vWriteCMD(0xC4);
vShowVoltage(uiADTransform());
}
}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0中斷函數(shù)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void Time0() interrupt 1
{
if(uc_Clock==0)
{
uc_Clock=5;
b_DATransform=1;
}
else
uc_Clock--;
TH0=TIME0H; //恢復(fù)定時(shí)器0。
TL0=TIME0L;
}
部分代碼
仿真圖
電壓表.rar
(69.99 KB, 下載次數(shù): 113)
2018-9-27 15:09 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|