精品毕业论文
图2.7复位电路连接方式图
这是AT89C51单片机主控部分的接法,其中P3.1到P3.7与A/D转换芯片相连,做控制口。在A/D部分已经详细介绍了连法。P2.0-P2.3是四位数码显示管的控制端。P2.5和P2.6是按键的控制端。P0.0-P0.7是显示的数据输出端与四位数码管的A-G相连。
图2.8按键的控制端
这个是简单的按键部分,P2.4按键选通转换那一路,执行的方式是按一下显示下一路,按0-7路的方式循环。
精品毕业论文
3.数据采集软件设计
3.1系统模块层次图
模拟信号
A/D模块
图3.1系统模块层次图 显示模块 主控电路 按键模块 3.2程序流程
开始
初始化
开始A/D转换 调用数据处理子程序
调用显示子程序
否 If(K) 是 地址++
地址小于8
结束 图3. 程序流程图
3.3程序源代码
#include
精品毕业论文
#include
#define uchar unsigned char #define uint unsigned int //#define input P1 //#define TT P0 sbit START=P3^4; sbit CLK=P3^5; sbit OE=P3^6; sbit EOC=P3^7; sbit E=P3^0; sbit AA=P3^1;
sbit BB=P3^2; sbit CC=P3^3; sbit K1=P2^4; sbit P07=P0^7;
uchar t1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar a,b;
//void delay1();
void display(uint temp1); /*******延时1 *******/ void delay1(void) {
for(a=248;a>0;a--); for(b=248;b>0;b--); }
/******延时2*****/ void delay2() {
int i;
for(i=5000;i>0;i--); }
/********A/D转换程序********/ uchar AD() {
uchar dat; if(!EOC) {
START=1; START=0; }
精品毕业论文
while(!EOC); START=1; START=0; dat=input; return dat; }
/********加地址,选择模拟通道*******/ void get_add(uchar add) {
CC=add/4; BB=add%4/2; AA=add%2; delay2(); }
/******动态扫描程序******/ void display(uint temp1) {
uint aa,bb,cc,dd;
aa=temp1; temp1/=10; bb=temp1; temp1/=10; cc=temp1; dd=temp1/10;
P2=0xf1; P0=t1[dd]; delay1();
P2=0xf2; P0=t1[cc]; delay1();
P2=0xf4;
P0=t1[bb]&0X7F; delay1();
P2=0xf8; P0=t1[aa]; delay1();
精品毕业论文
}
/*****电压显示转温度显示函数*****/ void c_u(int aa) {
aa=aa*15.4*5*10/255; display(aa); }
/*****主程序****/ void main(void) {
uchar rr,tt; TMOD=0x02; TR0=1; ET0=1; IT0=1; EX0=1; EA=1; tt=0; while(1) {
get_add(tt); AD(); rr=input; c_u(rr); if(!K1) {
while(!K1); tt++;tt=tt%8; } } }
/****中断时钟脉冲*****/ void timer() interrupt 1 {
CLK=~CLK; }