电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>C语言|源代码>温度量测与电压量测实例程序分析

温度量测与电压量测实例程序分析

2017-09-06 | rar | 0.15 MB | 次下载 | 免费

资料介绍

温度量测与电压量测实例程序分析

1、温度量测实例演练

/* 温度量测实例演练(ch11-7-4.c) */
#include
/* 声明驱动信号阵列 */
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 0 ̄4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 5 ̄9
#define? SCANP?P1???//?定义扫瞄信号连接埠?
#define? SEG7P?P2???//?定义七节显示器连接埠?
sbit?INTR=P3^2; ???//?定义IRQ接脚?
unsigned char xdata? adc; ?//?声明外部记忆体变量?
unsigned char _adc; ??//?声明变量?
unsigned char disp[4]={0, 0, 0, 0};?//?声明显示区阵列?
unsigned char _adc;???//?声明变量?
void dataproc(unsigned char);//?声明资料处理函数?
void display(void);???//?声明显示函数?
void delay1ms(char);??//?声明延迟函数?
main()??????//?主程序?
{?while(1)????//?while开始?
?{?display();???//?显示?
??_adc=adc;????
??/*读取外部记忆体,目的是让ADC0804之RD=0、INTR=1*/
??adc=0xff;
??while(INTR==1); ?//?等待中断
??_adc=adc; ???//?读取外部记忆体?
??dataproc(_adc);??//?资料处理?
?}??????//?while结束?
}???????//?主程序结束?
//====资料处理函数====
void dataproc(unsigned char data_in)
{?int results;????//?声明变量??
?results= data_in;???//?读取ADC0804转换结果?
?disp[3]=results/1000;??//?取得千位数?
?disp[2]=(results/100)%10;?//?取得百位数?
?disp[1]=(results/10)%10;?//?取得十位数?
?disp[0]=results%10;???//?取得个位数?
}????????//?资料处理函数结束?
//====显示函数====
void display(void)
{?char i, scan;????//?声明变量?
?char times=20;????//?扫瞄20次?
?while (--times>=0)???//?while循环开始?
?{?scan=1;?????//?初始扫瞄信号?
??for(i=0;i<4;i++)??//?for叙述开始?
??{?SEG7P=0xff;???//?关闭7节显示器?
???SCANP=~scan;??//?输出扫瞄信号?
???SEG7P=TAB[disp[i]];?//?转换成驱动信号,并输出到P0
???delay1ms(4);??//?延迟4ms
???scan<<=1;???//?下一个扫瞄信号?
??}??????//?结束for叙述?
?}???????//?结束while叙述?
}????????//?display函数结束?
//====延迟函数====
void delay1ms(char x)
{?int i,j;????//?声明变量?
?for(i=0;i ??for(j=0;j<120;j++);?//?内循环?
}???????//?延迟函数结束?

2、电压量测实例演练之

/* 电压量测实例演练之三(ch11-7-3.c) */
#include
/* 声明驱动信号阵列 */
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 0 ̄4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 5 ̄9
#define? SCANP?P1???//?定义扫瞄信号连接埠?
#define? SEG7P?P2???//?定义七节显示器连接埠?
unsigned char xdata?adc;?//?声明外部资料变量?
unsigned char _adc;???//?声明变量?
unsigned char disp[4]={0, 0, 0, 0};?//?声明显示区阵列?
void display(void);???//?声明显示函数?
void delay1ms(char);??//?声明延迟函数?
main()??????//?主程序?
{?IE=0x81;????//?设定中断
?TCON=0x01;????//?设定触发方式?
?_adc=adc;???
?// 读取ADC0804,其目的是输出RD=0到ADC0804,让其INTR=1
?adc=0xff; ???
?// 写入ADC0804,其目的是输出WR=0到ADC0804,即SOC
?display();???//?显示资料?
?while(1); ???//?等待?
}??????//?主程序结束?
//====中断函数====
void int_adc(void)? interrupt? 0
{?int results;????//?声明变量?
?results= 196*adc;???//?读取ADC0804转换结果乘以196倍?
?disp[3]=results/10000;??//?取得千位数?
?disp[2]=(results/1000)%10;?//?取得百位数?
?disp[1]=(results/100)%10;?//?取得十位数?
?disp[0]=results%10;???//?取得个位数?
?display();?????//?显示资料?
?_adc=adc;
?// 读取ADC0804,其目的是输出RD=0到ADC0804,让其INTR=1
?adc=0xff; ???
?// 写入ADC0804,其目的是输出WR=0到ADC0804,即SOC
}??????//?资料处理函数结束?
//====显示函数====
void display(void)
{?char i,scan;??//?声明变量?
?char times=20;??//?扫瞄20次?
?while (--times>=0)?//?while循环开始?
?{?scan=1;???//?初始扫瞄信号?
??for(i=0;i<4;i++)//?for叙述开始?
??{?SEG7P=0xff;?//?关闭7节显示器?
???SCANP=~scan;//?输出扫瞄信号?
???SEG7P=TAB[disp[i]];?//?转换成驱动信号,并输出到P0
???delay1ms(4);//?延迟4ms
???scan<<=1;?//?下一个扫瞄信号?
??}????//?结束for叙述?
?}?????//?结束while叙述?
}??????//?display函数结束?
//====延迟函数====
void delay1ms(char x)
{?int i,j;????//?声明变量?
?for(i=0;i ??for(j=0;j<120;j++);?//?内循环?
}???????//?延迟函数结束?
?

3、电压量测实例演练之二

/* 电压量测实例演练之二(ch11-7-2.c) */
#include
/*声明驱动信号阵列 */
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 0 ̄4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 5 ̄9
#define? SCANP?P1???//?定义扫瞄信号连接埠?
#define? SEG7P??P2??//?定义七节显示器连接埠?
sbit?INTR=P3^2;
unsigned char xdata? adc;
unsigned char _adc;
unsigned char disp[4]={0, 0, 0, 0};?//?声明显示区阵列?
unsigned char _adc;???//?声明变量?
void dataproc(unsigned char);?//?声明资料处理函数?
void display(void);???//?声明显示函数?
void delay1ms(char);??//?声明延迟函数?
main()??????//?主程序?
{?while(1)????//?while开始?
?{?display();???//?显示?
??_adc=adc;???
??/*读取外部记忆体,目的是让ADC0804之RD=0、INTR=1*/
??adc=0xff;
??while(INTR==1);
??_adc=adc;
??dataproc(_adc);??//?资料处理?
?}??????//?while结束?
}???????//?主程序结束?
//====资料处理函数====
void dataproc(unsigned char data_in)
{?int results;???//?声明变量?
?results= data_in*196;?//?读取ADC0804转换结果乘以196倍?
?disp[3]=results/10000;?//?取得千位数?
?disp[2]=(results/1000)%10;?//?取得百位数?
?disp[1]=(results/100)%10;?//?取得十位数?
?disp[0]=results%10;??//?取得个位数?
}???????//?资料处理函数结束?
//====显示函数====
void display(void)
{?char i, scan;???//?声明变量?
?char times=20;???//?扫瞄20次?
?while (--times>=0)??//?while循环开始?
?{?scan=1;????//?初始扫瞄信号?
??for(i=0;i<4;i++)?//?for叙述开始?
??{?SEG7P=0xff;??//?关闭7节显示器?
???SCANP=~scan;?//?输出扫瞄信号?
???SEG7P=TAB[disp[i]];?//?转换成驱动信号,并输出到P0
???delay1ms(4);?//?延迟4ms
???scan<<=1;??//?下一个扫瞄信号?
??}?????//?结束for叙述?
?}??????//?结束while叙述?
}???????//?display函数结束?
//====延迟函数====
void delay1ms(char x)
{?int i,j;????//?声明变量?
?for(i=0;i ??for(j=0;j<120;j++);?//?内循环?
}???????//?延迟函数结束?
?
?
?

4、电压量测实例演练之

/* 电压量测实例演练之一(ch11-7-1.c) */
#include
/*声明驱动信号阵列*/
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 0 ̄4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 5 ̄9
#define? ADC?P0?//?定义ADC连接埠?
#define? SCANP?P1?//?定义扫瞄信号连接埠?
#define? SEG7P?P2?//?定义七节显示器连接埠?
//=========================================
unsigned char disp[4]={0, 0, 0, 0};?//?声明显示区阵列?
unsigned char _adc;?//?声明变量??
void dataproc(unsigned char);?//?声明资料处理函数??
void display(void);?//?声明显示函数?
void delay1ms(char);//?声明延迟函数?
main()????//?主程序?
{?while(1)??//?while开始?
?{?display();?//?显示?
??_adc=ADC;?//?读取外部记忆体?
??dataproc(_adc);?//?资料处理?
?}????//?while结束?
}?????//?主程序结束?
//====资料处理函数====
void dataproc(unsigned char data_in)
{?int results;????//?声明变量?
?results= data_in*196;??//?读取ADC0804转换结果乘以196倍?
?disp[3]=results/10000;??//?取得千位数?
?disp[2]=(results/1000)%10;?//?取得百位数?
?disp[1]=(results/100)%10;?//?取得十位数?
?disp[0]=results%10;???//?取得个位数?
}????????//?资料处理函数结束?
//====显示函数====
void display(void)
{?char i,scan;???//?声明变量?
?char times=20;???//?扫瞄20次?
?while (--times>=0)??//?while循环开始?
?{?scan=1;????//?初始扫瞄信号?
??for(i=0;i<4;i++)?//?for叙述开始?
??{?SEG7P=0xff;??//?关闭7节显示器?
???SCANP=~scan;?//?输出扫瞄信号?
???SEG7P=TAB[disp[i]];?//?转换成驱动信号,并输出到P0
???delay1ms(4);?//?延迟4ms
???scan<<=1;??//?下一个扫瞄信号?
??}?????//?结束for叙述?
?}??????//?结束while叙述?
}???????//?display函数结束?
//====延迟函数====
void delay1ms(char x)
{?int i,j;????//?声明变量?
?for(i=0;i ??for(j=0;j<120;j++);?//?内循环?
}???????//?延迟函数结束?
?
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  92次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7蓝牙设备在嵌入式领域的广泛应用
  14. 0.63 MB  |  3次下载  |  免费
  15. 89天练会电子电路识图
  16. 5.91 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费