单片机源程序:
/**********************BST-V51实验开发板例程************************
* 平台:BST-V51 + Keil U3 + STC89C52
* 名称:四路AD数值LCD1602屏显示
* 公司:深圳市亚博软件开发有限公司
* 晶振:11.0592MHZ
******************************************************************/
/*-----------------------------------------------
名称:IIC协议 PCF8591ADDA转换 显示有4个,注意只有2个可以调节电压的
内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压通过液晶显示,并输出模拟量,用LED亮度渐变指示
------------------------------------------------*/
#include
#include
#include "LCD1602.h"
#include "IIC.h"
#include "stdio.h"
unsigned char TempData[8];
unsigned char showtext[12];
/*------------------------------------------------
延时程序
------------------------------------------------*/
void mDelay(unsigned char j)
{
unsigned int i;
for(;j>0;j--)
{
for(i=0;i<125;i++);
}
}
/*------------------------------------------------
初始化定时器1
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10;
TH1=0xff; /* Init value */
TL1=0x00;
EA=1; /* interupt enable */
ET1=1; /* enable timer1 interrupt */
TR1=1;
}
/*------------------------------------------------
主程序
------------------------------------------------*/
void main()
{
//unsigned char num; //DA数模输出变量
float ADtemp; //定义中间变量
LCD1602_init();
mDelay(20);
Init_Timer1();
LCD_Write_String(0,0,"rank:"); //在第一行显示
while(1)
{
mDelay(20); //延时用于清晰看出变化
if(ADFlag) //定时采集输入模拟量
{
ADFlag=0;
ADtemp = ReadADC(0)*(5.0/256);
// TempData[0]=(unsigned int)(ReadADC(0))*(5/256);//处理0通道电压显示
// TempData[1]=(unsigned int)(ReadADC(0))*50/256%10;
// TempData[2]=(unsigned int)(ReadADC(0))*500/256%10;
sprintf(showtext,"%1.2fV",ADtemp);
LCD_Write_String(5,0,showtext);
// LCD_Write_Char(5,0,TempData[0] + '0');
// LCD_Write_Char(6,0,'.');
// LCD_Write_Char(7,0,TempData[1] + '0');
// LCD_Write_Char(8,0,TempData[2] + '0');
// LCD_Write_Char(9,0,'V');
}
}
}
/*------------------------------------------------
定时器中断程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描
{
static unsigned int j;
TH1=0xfb; //重新赋值
TL1=0x00;
j++;
if(j==200)
{j=0;ADFlag=1;} //定时置位AD采样标志位
……………………
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』