资料介绍
温度量测与电压量测实例程序分析
#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++);?//?内循环?
}???????//?延迟函数结束?
#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++);?//?内循环?
}???????//?延迟函数结束?
?
#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++);?//?内循环?
}???????//?延迟函数结束?
?
?
?
#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、温度量测实例演练
/* 温度量测实例演练(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
}???????//?延迟函数结束?
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
}???????//?延迟函数结束?
?
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
}???????//?延迟函数结束?
?
?
?
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
}???????//?延迟函数结束?
?
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- python的12个经典实例程序详细说明 32次下载
- Verilog的135个经典设计实例程序合集免费下载 108次下载
- LabVIEW初级教程之VI网络发布的实例程序合集免费下载 30次下载
- C语言指针的表达式实例程序说明 4次下载
- 使用C语言从视频截图的方法实例程序说明 3次下载
- 使用单片机实现Modbus通讯协议的实例程序和讲解分析
- 使用51单片机设计门禁系统的实例程序免费下载
- Arduino进行端口通信的实例程序免费下载
- u盘读写模块实例程序 37次下载
- AVR产生PWM波实例程序 5次下载
- LCD实例程序 33次下载
- 精品verilog实例程序代码 46次下载
- 单颗LED结点温度量测
- 进销存管理实例程序源代码
- 人力资源管理实例程序源代码
- 送电电压电流核相、测相量及分析 868次阅读
- PT100温度电压转换电路的工作原理分析 6440次阅读
- 用OpenVINO? C++ API编写YOLOv8-Seg实例分割模型推理程序 1666次阅读
- 详解西门子PLC模拟量编程实例 3180次阅读
- 模拟量是什么? 1.1w次阅读
- 西门子S7-300 PLC模拟量编程实例 8204次阅读
- 8位 PIC16 PIC? MCU B类安全软件库例程分析 2455次阅读
- 区块链的度量标准脉冲影响和广度解析 936次阅读
- 简单实用的6个PLC程序实例分析 9877次阅读
- S7-200模拟量使用说明及模拟量编程实例 5.1w次阅读
- 学好PLC须掌握的三个典型程序实例 3.6w次阅读
- eigrp度量值修改 4322次阅读
- 用实例深入阐述双端口分析和回归比分析 6213次阅读
- PCI驱动程序开发实例 6831次阅读
- 读写24LCxx系列的EEPROM的实例程序 2267次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论