📄 main.c
字号:
/*-----------------------------------------------------*
*工 程 名:AD.prj *
*硬件连接:PTB0/AD0 接模拟量输入端 *
*程序描述:获取1路A/D转换结果,并滤波,通过串口发送出去 *
*目 的:掌握AD转换的基本编程方法 *
*注 意:用SD-1实验板测试时,把液晶拔出,否则可能影响结果*
*----------《嵌入式应用技术基础教程》教学实例---------*/
/*[头文件]*/
#include "GP32C.H"
/*[函数声明]*/
extern void SCIInit(void); //串行口函数声明
extern void SCISend1(unsigned char o);
void SCISendN(unsigned char n,unsigned char ch[]);
//有关A/D转换函数声明
extern unsigned char adave(unsigned char n,unsigned char channel);
extern unsigned char advalue(unsigned char channel);
extern unsigned char admid(unsigned char channel);
/*[主程序]*/
void main(void)
{ int t;
unsigned char i;
unsigned char pl;
int va;//定义变量
SCIInit(); //串行口初始化
ADCLK=0b00110000; //A/D用内部总线时钟,2分频
while(1)//死循环
{
SCISendN(11,"通道0电压值");//发送通道0的电压值
pl=adave(20,0);//接收对收到的值滤波后取得的值。20*3(取中)
va=pl*5/255+48;//取第一位
SCISend1(va);//输出第一位的数值
SCISend1('.');//输出符号位
va=(pl*10/51)%10+48;//取第二位的数值
SCISend1(va);//发送
va=((pl*100)/51)%10+48;//取最后一位的数值
SCISend1(va);//发送
SCISendN(2,"伏");//发送伏;
for(t=0;t<1024;t++)
for(i=0;i<100;i++); //延时0.5S
pl=adave(20,1);
SCISendN(11,"通道1电压值");//发送通道1的电压值
va=pl*5/255+48;
SCISend1(va);
SCISend1('.');
va=(pl*10/51)%10+48;
SCISend1(va);
va=((pl*100)/51)%10+48;
SCISend1(va);
SCISendN(2,"伏");
for(t=0;t<1024;t++)
for(i=0;i<100;i++);//延时
//结束循环。
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -