应用电子论文

发布时间:2012-02-13 11:22:27   来源:文档文库   
字号:

安徽工贸职业技术学院

2012届应用电子技术专业毕业设计(论文)

论文标题: 电子秤的基本控制

作者姓名: 彭世财

指导老师: 王辉

完成时间: 201241

实习单位: 苏州维联网络科技有限公司

安徽工贸职业技术学院电气与信息工程

摘要

本系统采用单片机AT89S52为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和A/D转换部分组成。人机界面部分为键盘输入 12864点阵式液晶显示,可以直观的显示中文,使用方便。

软件部分应用单片机C语言实现了本设计的全部控制功能,包括基本的称重功能,和发挥部分的显示购物清单的功能,可以设置日期和重新设定10种商品的单价,具有超重报警功能,由于系统资源丰富,还可以方便的扩展其应用。

1 方案论证与比较............................................................................................4

1.1控制器部分.....................................................................................................4

1.2数据采集部分.................................................................................................4

1.2.1传感器..........................................................................................................4

1.2.2前级放大器部分..........................................................................................4

1.3.3 A/D转换器..................................................................................................5

1.3人机交互界面.................................................................................................6

1.3.1键盘输入......................................................................................................6

1.3.2显示输出......................................................................................................6

2、具体实现方案................................................................................................7

2.1 硬件组成.........................................................................................................7

2.1.1 硬件结构框图..............................................................................................7

2.1.2 各部分硬件电路实现..................................................................................7

2.2 软件组成.......................................................................................................11

2.2.1 流程图..........................................................................................................13

3、测试及结果分析..........................................................................................14

3.1测试结果及误差分析......................................................................................14

4、使用操作说明...............................................................................................15

5、附录...............................................................................................................16

6、参考书目.......................................................................................................26

1方案论证与比较

1.1、控制器部分

本系统基于51系列单片机来实现,因为系统需要大量的控制液晶显示和键盘。不宜采用大规模可编程逻辑器件:CPLDFPGA来实现。(因为大规模可编程逻辑器件一般是使用状态机方式来实现,即所解决的问题都是规则的有限状态转换问题。本系统状态较多,难度较大。)另外系统没有其它高标准的要求,我们最终选择了AT89S52通用的比较普通单片机来实现系统设计。内部带有8KB的程序存储器,在外面扩展了32K数据存储器,以满足系统要求。

1.2、数据采集部分

1.2.1、传感器

题目要求称重范围9.999Kg,重量误差不大于Kg,考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重。我们选择的是L-PSIII型传感器,量程20Kg,精度为,满量程时误差0.002Kg。可以满足本系统的精度要求。其原理如下图所示:

称重传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:

1.2.2、前级放大器部分

压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高。我们考虑可以采用以下几种方案可以采用:

方案、利用普通低温漂运算放大器构成多级放大器。

普通低温漂运算放大器构成多级放大器会引入大量噪声。由于A/D转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此中方案不宜采用。

方案二、由高精度低漂移运算放大器构成差动放大器。

差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放(OP07)做成一个差动放大器。

电阻R1R2电容C1C2C3C4用于滤除前级的噪声,C1C2为普通小电容,可以滤除高频干扰,C3C4为大的电解电容,主要用于滤除低频噪声。

优点:输入级加入射随放大器,增大了输入阻抗,中间级为差动放大电路,滑动变阻器R6可以调节输出零点,最后一级可以用于微调放大倍数,使输出满足满量程要求。输出级为反向放大器,所以输出电阻不是很大,比较符合应用要求。

缺点:此电路要求R3R4相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大噪声。对精度影响较大。

方案:采用专用仪表放大器,如:INA126INA121等。

此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。

INA126为例,接口如下图所示:

放大器增益,通过改变的大小来改变放大器的增益。

基于以上分析,我们决定采用制作方便而且精度很好的专用仪表放大器INA126

1.3.3A/D转换器

由上面对传感器量程和精度的分析可知:A/D转换器误差应在以下

12A/D精度:10Kg/4096=2.44g

14A/D精度:10Kg/16384=0.61g

考虑到其他部分所带来的干扰,12A/D无法满足系统精度要求。所以我们需要选择14位或者精度更高的A/D

方案一、逐次逼近型A/D转换器,如:ADS7805ADS7804等。

逐次逼近型A/D转换,一般具有采样/保持功能。采样频率高,功耗比较低,是理想的高速、高精度、省电型A/D转换器件。

高精度逐次逼近型A/D转换器一般都带有内部基准源和内部时钟,基于89C52构成的系统设计时仅需要外接几个电阻、电容。

但考虑到所转换的信号为一慢变信号,逐次逼近型A/D转换器的快速的优点不能很好的发挥,且根据系统的要求,14AD足以满足精度要求,太高的精度就反而浪费了系统资源。所以此方案并不是理想的选择。

方案二、双积分型A/D转换器:如:ICL7135ICL7109等。

双积分型A/D转换器精度高,但速度较慢(如:ICL7135),具有精确的差分输入,输入阻抗高(大于),可自动调零,超量程信号,全部输出于TTL电平兼容。

双积分型A/D转换器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。故而采用双积分型A/D转换器可大大降低对滤波电路的要求。

作为电子秤,系统对AD的转换速度要求并不高,精度上14位的AD足以满足要求。另外双积分型A/D转换器较强的抗干扰能力,和精确的差分输入,低廉的价格。综合的分析其优点和缺点,我们最终选择了ICL7135

1.3、人机交互界面

1.3.1、键盘输入

键盘输入是人机交互界面中最重要的组成部分,它是系统接受用户指令的直接途径。我们采用了专用的键盘显示芯片ZLG7289

Intel8279是一种比较成熟的可编程键盘/显示芯片,可以满足小系统的要求。

ZLG7289是周立功单片机公司设计的串行输入输出可编程键盘/显示芯片有强大的键盘显示功能,支持64键控制。可以比较方便的扩展系统。另外ZLG7289内部有译码电路,大大简化了程序。

我们选择功能更好的ZLG7289作为键盘扫描显示芯片

1.3.2、显示输出

虽然ZLG7289具有控制数码管显示的功能,但考虑到本题目要求中文显示,数码管无法满足,只能考虑用带有中文字库的液晶显示器。由于可以分页显示,无需太大屏幕,我们选择了点阵式128×64LCD—OCM4X8C

2、具体实现方案

2.1、硬件组成:

2.1.1、硬件结构框图如下:

2.1.2、各部分硬件电路实现

(1)、基于AT89S52的主控电路图

主控电路以89C52为核心扩展32K RAM;单片机使用6M晶振,P0口外接上拉电阻,增大了带负载能力;A12A1574LS138译码器,输出作外部片选信号。 扩展了几个接口用于其它部分于单片机的通信

2)前端信号处理

INA126构成的放大器及滤波电路:

通过调节的阻值来改变放大倍数。微弱信号Vi1Vi2被分别放大后从INA126的第6脚输出。A/D转换器ICL7135的输入电压变化范围是-2V+2V,传感器的输出电压信号在020mv左右,因此放大器的放大倍数在200300左右,可将接成的滑动变阻器。

由于ICL7135对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。

3A/D转换器

基于ICL7135A/D转换器实现电路:

基准源选用芯片MC1403 2.5V分压得到:

由于ICL7135内部没有振荡器,所以需要外接。但A/D转换器精度与时钟频率的漂移无关。正向积分时间T1和反向积分时间T2按相同比例增加并不影响测量的结果。ICL7135的时钟频率典型值为200kHz最高允许为1200kHz,时钟频率越高,转换速度越快。每输出一位BCD码的时间为200个时钟周期,选通脉冲位于数据脉冲的中部,如果时钟频率太高,则数据的接受程序还没有接受完毕,数据就已经消失了。考虑到此系统频率要求不是太高,且单片机的工作频率也不是很高,因此我们取时钟频率的典型值:200kHz。由于频率比较低,对时钟漂移要求不高,我们采用阻容方式实现了基本的振荡电路。如下:

振荡频率约为160kHz

此外ICL7135外部还需要外接积分电阻、积分电容,但A/D转换器精度与外接的积分电阻、积分电容的精度无关,故可以降低对元件质量的要求。不过积分电容和积分电容的介质损耗会影响到A/D转换器的精度,所以应采用介质损耗较小的聚丙乙烯电容

ICL7135还需要外接基准电源,这是因为芯片内部的基准源一般容易受到温度的影响,而基准电源的变化会直接影响转换精度。所以当精度要求较高时,应采用外接基准源。一般接其典型值1V

(4)、人机交互界面

(a)、键盘接口图:

键盘控制芯片ZLG7289控制键盘的扫描,当监测到有键按下后ZLG72899脚便产生一个低电平通知单片机,单片机可以采用查询或者中断方式将数据通过P1.5以串行方式读入。因为查询方式会浪费大量的时间,所以本系统采用的是中断方式。

(b)LCD显示接口电路

.

LCD复位信号通过反相器接到单片机的RESET上,上电或手动复位时将随单片机同时复位。由于复位后并行口输出高电平,LCD处于选中状态,此时LCD将输出内部状态字,将会影响数据总线上的数据传输。所以外接一个反相器。


2.2、软件组成:

2.2.1、流程图

主程序流程如图所示:

中断服务程序流程图如下:

2.2.2、软件说明

由于涉及到大量数据的运算,程序不宜采用汇编语言,C语言大大缩短了开发时间,且程序可读性非常好。

程序中对AD采入的数据进行了数字滤波,进一步减小AD读入数据的误差。

7289键盘控制采用中断方式,加快了程序的执行效率。

详细的操作过程见使用说明。

3、测试及结果分析

31测试结果及误差分析:

注:由于传感器和其他器件本身并非理想线性,程序中对实测数据进行了线性补偿。

误差分析:经校准,非线性补偿后,误差已基本达到要求。

所用测量仪器:总重1Kg的砝码,万用表,示波器

4、使用操作说明

本系统采用32键键盘来实现,分为数字键:0-9,商品1-商品106个控制键。

本系统开机显示公司名称,后提示输入收银员编号和当前日期。正确输入后,进入称重显示。

数字键和小数点键:用于输入单价;

累加键:相当于确认,可以将当然信息保存至购物清单;并且将金额累加,得到所购买商品的总金额。

去皮键:用于去除皮重;

清单价:用于输入的单价错误的时候,重新输入;

购物清单键:当需要显示当前顾客的总的购物清单时,可以连续按下购物清单键,分页显示所购买的商品信息,并且若以达到最后一页,则显示总计金额,收银员编号,和公司名称,当然日期。

运行中如果顾客购买已存入的10种商品,只需按下相应的商品键,既可以将商品的名称和单价以中文的形式显示,同样累加键保存此商品的信息,包括其重量,金额和当前累计金额。

另外,已存入的10种商品的单价均可重新设置,直接输入其单价即可,方便实用。如果所称重物超过了系统最大量程10Kg,则蜂明器发出报警声音。

5、附录

电子秤的信号采集、处理、显示的程序.

#include

#include

//ad控制线

#define ad_244 XBYTE[0xbfff];

sbit ad_stb=P3^3;

sbit ad_start=P1^1;

//lcd控制线

sbit lcd_di=P1^7;

sbit lcd_rw=P1^2;

sbit lcd_e=P1^0;

//7289控制线

sbit cs7289=P1^3;

sbit clk7289=P1^4;

sbit dio7289=P1^5;

//sbit key7289=P1^6; //7289查询方式

sbit key7289=P3^2; //7289中断方式

sbit baoj=P3^5;

//7289子程序

void ini_7289(void);

void send7289(short);

short receive(void);

void keyin(void);

//lcd子程序

void ini_lcd(void);

void lcdd_send(short);

void lcdi_send(short);

void chk_busy(void);

//ad子程序

void ad(void);

void baojing(void);

void d_change(long);

//初始化,编号,日期

void ini();

void error1(void);

void nop1()

{}

void change(s)

int dealy; //全局变量

short sh=0; //商品号

short dot=0; //小数点标志

bit list=0;

short qb=0;

char xdata shuju[7]="";

short xdata bcd[5];

char xdata s1[16]="单价: ";

char xdata s2[16]="重量: Kg";

char xdata s3[16]="金额: ";

char xdata s4[16]="累计: ";

char code message0[]="信息学院 山东大学";

char code message1[]="输入收银员代号:";

char code message2[]="输入日期:";

char code message3[16]=" --山东大学-- ";

char code message5[16]="垃圾公司欢迎您!!";

char xdata bianhao[16]="收银员: ";

char xdata riqi[16]=" - - ";

long int xdata zongjia=0,jine=0,jine1=0;

int xdata shizhong=0,pizhong=0,zhongliang=0;

long int xdata qingdan[20][4];

char code shangpin[11][4]={{"单价"},{"苹果"},{" "},{"花生"},{"大米"},

{"桃子"},{"塑料"},{"瓜子"},{"桔子"},{"香蕉"},{"玉米"}};

long int xdata danjia[11]=

{0,2000,3635,5502,6660,3320,5502,660,3210,6600,5600};

char xdata jiage[6]={0x0,0x0,0x0,0xfe,0x0,0x0}; // 0.00

short xdata xiuzheng[]={0,2,5,6,7,8,9,12,13};

char s[16];

{s[6]=shuju[0];

s[7]=shuju[1];

s[8]=shuju[2];

s[9]=shuju[3];

s[10]=shuju[4];

s[11]=shuju[5];

s[12]=shuju[6];

}

//****************************************************************

void main()

{short i,j;

long int x,z;

int y;

int xdata duilie[3]={0};

P1=0xff;

ini_lcd(); //初始化LCD

lcdi_send(0x8a);

while(message0[i]) lcdd_send(message0[i++]);

ini_7289(); //初始化7289

pizhong=ad1();

lcdi_send(0x1); //总清

ini(); //初始页面,收银员编号,日期

lcdi_send(0x1); //总清

EA=1;EX0=1; //中断

//EX1=1;

//ad_start=1;

while(1)

{if(list){lcdi_send(0x80); //显示单位名称

for(i=0;i<16;i++) lcdd_send(message3[i]);

x=qingdan[0][0]; //商品名 单价

for(i=0;i<4;i++) s1[i]=shangpin[x][i];

x=qingdan[0][1];

d_change(x); change(s1);

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s1[i]);

x=qingdan[0][2]; //显示重量

d_change(x); change(s2);

s2[10]=s2[9];s2[9]='.';

if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(s2[i]);

x=qingdan[0][3];

d_change(x); change(s3);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(s3[i]); //以上为第一页

EA=0;EX0=0; //关键盘中断

for(j=1;j

{while(key7289);

x=qingdan[j][2];

d_change(x); change(s2); //显示数据

s2[10]=s2[9];

s2[9]='.'; if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s2[i]);

x=qingdan[j][1];

d_change(x); change(s1);

x=qingdan[j][0];

for(i=0;i<4;i++) s1[i]=shangpin[x][i];

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s1[i]);

x=qingdan[j][3];

d_change(x); change(s3);

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(s3[i]);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(0x20);

lcdi_send(0x98);

while(key7289==0);

}

while(key7289);

d_change(zongjia); change(s4);

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s4[i]);

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(bianhao[i]);

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(message5[i]);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(riqi[i]);

list=0;

while(key7289==0);

while(key7289==1);

while(key7289==0);

EA=1;EX0=1;

}

else{ y=0;

/* duilie[2]=duilie[1]; //数字滤波

duilie[1]=duilie[0];

y=ad1();

duilie[0]=y>>1;

x=duilie[0];

x=x<<1;

x=x+duilie[1]+duilie[2]; */

zhongliang=ad1();

shizhong=zhongliang-pizhong; //数据转换

x=danjia[sh];

jine1=shizhong*x;

jine=jine1/1000;

d_change(shizhong); change(s2); //显示数据

s2[10]=s2[9]; s2[9]='.';

if(s2[8]==32) s2[8]=0x30;

lcdi_send(0x90);

for(i=0;i<16;i++) lcdd_send(s2[i]);

d_change(danjia[sh]); change(s1);

for(i=0;i<4;i++) s1[i]=shangpin[sh][i];

lcdi_send(0x80);

for(i=0;i<16;i++) lcdd_send(s1[i]);

d_change(jine); change(s3);

lcdi_send(0x88);

for(i=0;i<16;i++) lcdd_send(s3[i]);

d_change(zongjia); change(s4);

lcdi_send(0x98);

for(i=0;i<16;i++) lcdd_send(s4[i]);

lcdi_send(0x98);

//while(1);

}

}

}

void keyin(void) interrupt 0 using 0 //中断0服务程序

{char X,i;

long int y;

send7289(0x15); //接收数据

X=receive();

cs7289=1;

X=X&0x1f;

switch(X)

{case 0xf : {zongjia=zongjia+jine;

qingdan[qb][0]=sh;

qingdan[qb][1]=danjia[sh];

qingdan[qb][2]=shizhong;

qingdan[qb][3]=jine;

qb++; sh=0;dot=0;

danjia[0]=0;

for(i=0;i<6;i++) jiage[i]=0;

}

break; //累加

case 0xe : pizhong=zhongliang; break; //去皮

case 0xd : {danjia[sh]=0;dot=0;} break; //清单价

case 0xc : {zongjia=0;jine=0;dot=0;list=0;qb=0;pizhong=0;

if(sh==0) danjia[sh]=0;} break; //总清

case 0xa : dot=1;break; //

case 0xb : list=1;break; //清单

case 0x19 : sh=10;break;

case 0x18 : sh=9;break;

case 0x17 : sh=8;break;

case 0x16 : sh=7;break;

case 0x15 : sh=6;break;

case 0x14 : sh=5;break;

case 0x13 : sh=4;break;

case 0x12 : sh=3;break;

case 0x11 : sh=2;break;

case 0x10 : sh=1;break;

case 0x1f :

case 0x1e :

case 0x1d :

case 0x1c :

case 0x1a : break;

case 0x1b : dot=1;break;

default :{ if(dot==0) {jiage[0]=jiage[1];jiage[1]=jiage[2];jiage[2]=X;}

if(dot==1) {jiage[4]=X;dot++; }

else if(dot==2) {jiage[5]=X; dot++;}

else if(dot>2) break;

// lcdi_send(0x84);

y=jiage[0];

y=y*10+jiage[1];

y=y*10+jiage[2];

y=y*10+jiage[4];

danjia[sh]=y*10+jiage[5];

}

}

while(key7289==0); //等待键盘松开

}

/*

void ad(void) interrupt 2 using 1

{short x,y;

x=ad_244;

y=x;

if(x&0x80) baojing();

else x=x>>4;

y=y&0xf;

bcd[x]=y;

} */

//初始页面

void ini() // 输入收银员编号,日期

{short i,j;

char X;

lcdi_send(0x80); //提示输入收银员编号

i=0;

while(message1[i]) lcdd_send(message1[i++]);

for(i=8;i<12;i++)

{

while(key7289);

send7289(0x15); //接收数据

X=receive();

cs7289=1;

bianhao[i]=X+0x30;

lcdi_send(0x93);

for(j=8;j<16;j++) lcdd_send(bianhao[j]);

while(key7289==0);

}

lcdi_send(0x88); //提示输入日期

i=0;

while(message2[i]) lcdd_send(message2[i++]);

for(i=0;i<10;i++) //输入日期

{if(i==4||i==7) i++;

while(key7289==1);

send7289(0x15); //接收数据

X=receive();

cs7289=1;

riqi[i]=X+0x30;

j=0;

lcdi_send(0x9a);

for(j=0;j<10;j++) lcdd_send(riqi[j]);

while(key7289==0);

}

while(key7289);

nop1();

while(key7289==0);

nop1();

lcdi_send(0x1);

}

//LCD子程序

void ini_lcd() //LCD初始化子程序

{

lcdi_send(0x30);

lcdi_send(0x1); //总清

lcdi_send(0xc);

lcdi_send(0x2); //光标右移,AC+1

}

void lcdd_send(short X) //LCD发送数据子程序

{chk_busy();

nop1();

lcd_di=1;lcd_rw=0;lcd_e=0;

P0=X;

for(dealy=0;dealy<5;dealy++);//

lcd_e=1; X=X;

P0=0xff;

}

void lcdi_send(short X) //LCD发送指令子程序

{chk_busy();

nop1();

lcd_di=0;lcd_rw=0;lcd_e=0;

P0=X;

for(dealy=0;dealy<5;dealy++);//

lcd_e=1; X=X;

P0=0xff;

}

void chk_busy()

{short i=0xff;

while(i&0x80)

{lcd_di=0;

lcd_rw=1;

lcd_e=0;

i=P0;

lcd_e=1;

}

}

//7289子程序

void ini_7289()

{short i;

cs7289=1; key7289=1; dio7289=1; //7289初始化子程序

for(i=0;i<50;i++)

for(dealy=0;dealy<5000;dealy++); //延时25ms

send7289(0xa4); cs7289=1;

}

void send7289(short X) //7289发送数据子程序

{short i,j=1;

cs7289=0;

for(dealy=0;dealy<6;dealy++); //延时50us

for(i=7;i>=0;i--)

{j=j<

dio7289=X&j;

j=1;j=1;clk7289=1;

for(dealy=0;dealy<1;dealy++) ; //延时10us

clk7289=0;

for(dealy=0;dealy<1;dealy++) ; //延时10us

}

dio7289=0;

}

short receive() //7289接收数据子程序

{short i,X=0;

dio7289=1;

for(dealy=0;dealy<6;dealy++); //延时50us

for(i=0;i<=7;i++)

{clk7289=1;

for(dealy=0;dealy<1;dealy++); //延时10us

X=X<<1;

if(dio7289)X++;

clk7289=0;

for(dealy=0;dealy<1;dealy++); //延时10us

}

dio7289=0;

return(X);

}

//ad

//AD子程序

int ad1()

{short k,x;

int ad_zhi=0,xz;

EA=0;

ad_start=1;

for(k=0;k<5;k++)

{ while(ad_stb);

x=ad_244;

x=x&0xf;

ad_zhi=ad_zhi*10+x;

}

ad_start=0;

EA=1;EX0=1;

ad_zhi=ad_zhi>>1;

xz=ad_zhi-50;

xz=xz/100;

ad_zhi=ad_zhi+xiuzheng[xz];

return(ad_zhi);

void d_change(long X)

{char qian,bai,shi,ge,shifen,baifen;

long int yu;

if(X>999999) error1();

qian=X/100000; yu=X%100000;

bai=yu/10000; yu=yu%10000;

shi=yu/1000; yu=yu%1000;

ge=yu/100; yu=yu%100;

shifen=yu/10;

baifen=yu%10;

qian=qian+0x30;

bai=bai+0x30;

shi=shi+0x30;

ge=ge+0x30;

shifen=shifen+0x30;

baifen=baifen+0x30;

if(qian==0x30)

{qian=0x20;

if(bai==0x30)

{bai=0x20;

if(shi==0x30) shi=0x20;

}

}

shuju[0]=qian;

shuju[1]=bai;

shuju[2]=shi;

shuju[3]=ge;

shuju[4]='.';

shuju[5]=shifen;

shuju[6]=baifen;

}

void baojing()

{short i;

for(i=0;i<50;i++)

{baoj=0;

for(dealy=0;dealy<10;dealy++);

baoj=1;

for(dealy=0;dealy<10;dealy++);

}

}

6、参考书目

《电子电路设计与实践》 山东科学技术出版社 姚福安著

《新型集成电路》 西安电子科技大学出版社 杨振江著

8051单片机实践与应用》 清华大学出版社 吴金戎著

《积分式A/D转换器其他专用集成电路分册》

科学技术文献出版社 梁廷贵著

本文来源:https://www.2haoxitong.net/k/doc/314779fc0242a8956bece475.html

《应用电子论文.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式