微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC89C52单片机UART AD DA测试实验

STC89C52单片机UART AD DA测试实验

时间:11-21 来源:互联网 点击:

函数名称:main
函数功能:完成对采集到的电压值的处理,然后显示到前三个数码管上,把采集到的
数据同时写入PCF8591里,让其转换成模拟信号,改变发光二极管D11的亮
暗程度
参数介绍:cBai:因为把数分离,才能显示到数码管上,作为分离后显示在第一个数
码管上的数
cShi:显示在第二个数码管上的数
cGe:显示在第三个数码管上的数
iTempValue:临时变量,赋予从PCF8591通道0读出来的数值
返回值:
注意事项:无
///////////////////////////////////////////////////////////////////////////

void main()
{
uchar cBai,cShi,cGe;
int iTempValue;
DelayMs(50);//稳定系统
Init_UART();//初始化串口
Init_IIC();//IIC总线初始化
while(1) //大循环是用来不停地扫描PCF8591的数据变换
{
iTempValue=Read_channel(0);//从PCF8591通道0读出来的数值
fValue=(float)iTempValue/51; //要把num强制转换为float型进行计算
cBai=iTempValue/51;//下面这三个分离是把从通道读取到的数值转换为电压
cShi=iTempValueQ*10/51; //想一下5V为255那么1v是不是代表51
cGe=iTempValueQ*10Q*10/51;//1.8v是不是数值92
Display_V(cBai,cShi,cGe);//把电压值显示到数码管上
Write_Data(iTempValue);//把采集到数据写到PCF8591,让其转换成模拟信号
if(cFlag==1)
{
cFlag=0;//对标志位清零,以便下次再发送
TI=1; //这一点至关重要
printf("The Volatage is %f V\n",fValue); //头文件stdio.h的标准函数
printf("The Num is %d \n\n",iTempValue);
while(!TI);//判断是否发送完毕
TI=0;//发送完成后记住要清零,为了下次发送
}
}
}

void Timer0_Routine() interrupt 1
{
TL0=TIMS;
TH0=TIMS>>8; //定时1毫秒所要装的初值
cCount++;
if(cCount==1000)
{
cCount=0;
cFlag=1;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top