#include <reg52.h> //包含單片機的頭文件
//#include <intrins.h>
//#include <string.h>
//#include <math.h>
//#include "stdio.h"
//#include <stdarg.h>
//#include<stdlib.h>
#include"lcd.h" //包含LCD的頭文件
#include"iic.h" //包含IIC通信的頭文件
#define uchar unsigned char //自定義的數據類型
#define uint unsigned int //自定義的數據類型
sbit RED = P3^5; //定義RED接在單片機的P3^5引腳上
sbit YELLOW = P3^6; //定義YELLOW接在單片機的P3^6引腳上
sbit GREEN = P3^7; //定義GREEN接在單片機的P3^7引腳上
int AD; //AD
int CYCLE; //電壓
float CYC; //電壓
int ELE; //電量(百分比)
/******************************************//*
*
*函數名:void delay(uint z)
*參數:uint z
*返回值:void
*函數功能:延時函數
*
*//******************************************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
/******************************************//*
*
*函數名:int main() 改為int main()
*參數:void
*返回值:int
*函數功能:主函數
*
*//******************************************/
void main()
{
LcdInit(); //調用LCD初始化函數,進行LCD的初始化
init_pcf8591(0x03); //應該也是個初始化函數
RED = 0;YELLOW=0;GREEN=0; //讓RED,YELLOW,GREEN引腳都為零
while(1)
{
AD = adc_pcf8591(); //采集電壓,讓數值送入AD變量
LcdWriteCom(0x80); //對LCD顯示屏進行寫命令
LcdWriteData('A'); //對LCD顯示屏進行寫數據(顯示的東西)
LcdWriteData('D');
LcdWriteData(':');
LcdWriteData('0'+AD/100); //‘0’+AD/100這個加‘0’的意思是進行ASCII碼的轉換
LcdWriteData('0'+AD/10%10);
LcdWriteData('0'+AD%10);
CYC = (AD*100)/51; //CYC變量進行運算
CYCLE = CYC;
LcdWriteCom(0x80+0X40); //對LCD顯示屏進行寫命令
LcdWriteData('V'); //對LCD顯示屏進行寫數據(顯示的東西)
LcdWriteData('O');
LcdWriteData(':');
LcdWriteData('0'+CYCLE/100);
LcdWriteData('.');
LcdWriteData('0'+CYCLE/10%10);
LcdWriteData('0'+CYCLE%10);
LcdWriteData('V');
//3.20V-4.20V
ELE = CYCLE-320;
LcdWriteCom(0x8A+0X40);
LcdWriteData('E');
LcdWriteData(':');
LcdWriteData('0'+ELE/100);
LcdWriteData('0'+ELE/10%10);
LcdWriteData('0'+ELE%10);
LcdWriteData('%');
//以下內容就是對數據進行選擇處理,讀取并顯示電壓以及電量百分比 并依據不同的百分比驅動不同的指示燈
switch(ELE/10%10)
{
case 0:
case 1:
case 2:
case 3:
{
RED = 1;
YELLOW=0;
GREEN=0;
} break; //電量在0-30% 紅燈亮
case 4:
case 5:
case 6:
case 7:
{
RED = 0;
YELLOW=1;
GREEN=0;
} break;
case 8: case 9: {RED = 0;YELLOW=0;GREEN=1;} break;
default : {RED = 0;YELLOW=0;GREEN=0;} break;
}
// delay(100);
}
} |