毕业设计C代码基于单片机的烟叶水分测量仪(ADC0832 + 4x4key + 7segledx4)_第1页
毕业设计C代码基于单片机的烟叶水分测量仪(ADC0832 + 4x4key + 7segledx4)_第2页
毕业设计C代码基于单片机的烟叶水分测量仪(ADC0832 + 4x4key + 7segledx4)_第3页
毕业设计C代码基于单片机的烟叶水分测量仪(ADC0832 + 4x4key + 7segledx4)_第4页
毕业设计C代码基于单片机的烟叶水分测量仪(ADC0832 + 4x4key + 7segledx4)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计c代码-基于单片机的烟叶水分测量仪(adc0832 + 4x4key + 7segledx4)#include#include #include unsigned char code ying4=0xfe,0xfd,0xfb,0xf7;/阴极控制码unsigned char code yang11=0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/0-9数值码unsigned char code yang_point11=0x80,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0x

2、ef;/带小数点的0-9数值码unsigned char a,b,c,d,m,n;/显示数组用 unsigned char key;/键盘扫描键值 unsigned char scn;/键盘按键标志位unsigned int vrs=100;/默认水分与电压比例系数为1(放大100倍成100以便储存)unsigned int f1=300;/f1默认放大3倍(这里仅仅为了演示程序效果,倍数的默认设置应根据实际使用环境)unsigned int f2=400;/f2默认放大4倍unsigned int f3=2000;/f3默认放大20倍sbit adcs =p14; /adc0832 chip

3、 seclectsbit addi =p16; /adc0832 k insbit addo =p17; /adc0832 k outsbit adclk =p15; /adc0832 clock signal/*延时子程序*/void delay(unsigned int t) /延时子程序:bt从0加到225,在12m晶体下cpu大概耗时1毫秒unsigned int bt;for(;t0;t-)for(bt=0;bt255;bt+); /*读adc0832子程序*/unsigned char adc0832(unsigned char channel) unsigned char i=0

4、;unsigned char dat=0;unsigned char ndat=0;unsigned char j=0;/芯片初始化/if(channel=0)channel=2;/通道号10,只对ch0进行单通道转换/if(channel=1)channel=3;/通道号11,只对ch2进行单通道转换addi=1;/在第1 个时钟脉冲的下沉之前di端必须是高电平,表示启始信号adclk=0;/拉低clk端_nop_();_nop_();adcs=0;/拉低cs端,使能adc0832_nop_();_nop_();adclk=1;/拉高clk端_nop_();_nop_();adclk=0;/

5、拉低clk端,形成下降沿1_nop_();_nop_();adclk=1;/拉高clk端addi=channel&0x01;/在第2个脉冲下沉之前di端应输入第1位通道选择数据_nop_();_nop_();adclk=0;/拉低clk端,形成下降沿2_nop_();_nop_();adclk=1;/拉高clk端addi=channel&0x02;/在第3个脉冲下沉之前di端应输入第2位通道选择数据_nop_();_nop_();adclk=0;/拉低clk端,形成下降沿3_nop_();_nop_(); /收数据for(i=0;i8;i+) adclk=1; _nop_(); _nop_()

6、; adclk=0;/形成第4-11个下降沿,从第四个下降沿开始接受最高位 _nop_(); _nop_(); dat=1;dat|=addo; for(i=0;i8;i+) j=0; j|=addo;/收数据 j=7;ndat|=j;if(i=1; adclk=1; _nop_(); _nop_(); adclk=0;/形成第12-19次下降沿 _nop_(); _nop_(); adcs=1;/拉高cs端,ad结束工作if(dat=ndat) return(dat);/校验返回结果/*水分数据显示子程序*/display_water()unsigned int i=0;unsigned c

7、har k;unsigned int v;float f;while(p2=0xf0) /数据处理 k=adc0832(0); f=(k/255.0)*50.0*vrs; /浮点计算,精度更高(v=k/255*5*1000*vrs/100) v=(int) f; /v= k*20;/获得05v的电压值(v=k*1000/255*5),字符类型为int,精度较低 a=v/10000; b=(v%10000)/1000;/除1000取余再除100取整得百位 c=(v%1000)/100;/除100取余再除10取整得十位 d=(v%100)/10;/除10取余个位for(i=1;i5;i+) p1=

8、yingi-1; /p1口控制数码管阴极 switch(i) /p3口输入数码管段码 case 1:p3=yangd+1 ;break; case 2:p3=yangc+1 ;break; case 3:p3=yang_pointb+1 ;break; case 4:p3=yanga+1 ;break; default:break; delay(2);/消除视觉暂 if(i=4) i=0;/*键盘扫描子程序*/scan() scn=0;/有效按键标志置0 if(p2!=0xf0) delay(2); if(p2!=0x0f) /行判断 p2=0x0f;/行置高,列置低 if(!p2_0)/第1

9、行 key=0; else if(!p2_1)/第2行 key=4; else if(!p2_2)/第3行 key=8; else if(!p2_3) /第4行 key=12; /列判断 p2=0xf0; /列置高,行置低 if(!p2_4)/第1列 key+=0; else if(!p2_5) /第2列 key+=1; else if(!p2_6)/第3列 key+=2; else if(!p2_7)/第4列 key+=3; while(p2!=0xf0) p3=0x00;/按键松开后才跳出扫描 p2=0xf0; scn=1;/扫描成功标志位置1 /*系数显示子程序*/display_vrs

10、()unsigned int i;a=vrs/1000;b=(vrs%1000)/100;c=(vrs%100)/10;d=vrs%10;while(p2=0xf0) for(i=1;i=0) & (key=9) )/有效的系数输入键,包括0-9数字键 if(w=1) vrs1=key;w+; /系数十位 else if(w=2) vrs2=key;w+; /系数个位 else if(w=3) vrs3=key;w+; /系数十分为 else if(w=4) vrs4=key;w+; /系数百分位 else vrs=2000;/w=1;/位数超出重新输入 if(key=11) vrs=vrs1

11、*1000+vrs2*100+vrs3*10+vrs4;/enter(11号键)确定输入系数,当前使用不储存,放大100倍以节省存储空间 if(key=12) f1=vrs1*1000+vrs2*100+vrs3*10+vrs4;/f1(12号键)储存输入系数到f1,放大100倍以节省存储空间 if(key=13) f2=vrs1*1000+vrs2*100+vrs3*10+vrs4;/f2(12号键)储存输入系数到f2,放大100倍以节省存储空间 if(key=14) f3=vrs1*1000+vrs2*100+vrs3*10+vrs4;/f3(12号键)储存输入系数到f3,放大100倍以节

12、省存储空间 for(i=1;i5;i+) p1=yingi-1; /p1口控制数码管阴极 switch(i) /p3口输入数码管段码 case 1:p3=yangvrs4+1 ;break; case 2:p3=yangvrs3+1 ;break; case 3:p3=yang_pointvrs2+1 ;break; case 4:p3=yangvrs1+1 ;break; default:break; delay(2);/消除视觉暂 if(i=4) i=0; /*主函数*/void main(void) while(1) p2=0xf0; scan();/扫描键盘if(key=10) input();/设input(10号键)为系数修

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论