2014-工程测控设计报告_数字时钟,涡流称重

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2014工程测控设计报告第1页工程测控设计报告班级:电子111姓名:学号:分组序号:电子1-03同组人:1.课程设计目的及要求(对设计的内容及最终应达到的效果进行概述)1.1利用51内核单片机作为CPU实现数字时钟的设计,用六位共阴数码管显示时间的时、分、秒,并能够通过按键进行时钟的调整。1.2设计涡流称重计,假设已将重量通过传感器转化为对应的电压量,本设计要实现此模拟电压量的测量和显示,然后将电压变换为重量并用数码管显示。1.3光电转速传感器已将转速转换为脉冲输出,本设计要实现对脉冲频率和周期的测量,测量频率范围10-10kHz,能够通过按键进行测频率和测周期功能之间的切换。1.4在分别实现以上三个功能的基础上,将三个功能整合到一起,能通过按键进行功能之间的切换。通过本次设计掌握51单片机最小系统的构成,了解相关外围电路的的原理和设计。复习巩固51单片机C语言程序设计方法。2.硬件电路的原理框图(其中包含:6个数码管的地址,4个按键的地址。以PCB板的左至右位顺序)。2.1单片机复位和时钟电路:如图1所示图1复位和时钟电路图2单片机按键电路2.2按键控制电路:如图2所示自左向右按键地址:K1:0xe0;K2:0xd0;K3:0xb0;K4:0x702.3电源及功能指示电路:如图3所示2.4数码管驱动电路:如图4所示2014工程测控设计报告第2页数码管地址从左向右依次是:0x00,0x01,0x02,0x03,0x04,0x05图3电源及功能指示电路图4数码管驱动电路2.5数码管显示电路:如图5所示图5数码管显示电路数字显示段码译码表:0-9:0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f3.软件设计[算法的原理概述,程序流程图及源程序(txt格式打印稿)]。3.1程序整体设计(1)主程序设计流程图初始化单片机用数码管显示select检测按键的值case1:按键值为K1电子时钟功能是case2:按键值为K2case3:按键值为K3否否涡流称重是测频率、测周期是按键4是否按下否按键4是否按下按键4是否按下否否是是是2014工程测控设计报告第3页(2)算法原理概述:单片机上电复位之后首先初始化单片机,其次动态显示”SELECT”指示进行功能选择选择,当K1-K3之中有键按下时则进入相应的子功能程序循环执行,在子程序执行过程中继续检测按键K4是否按下,若按下则退出当前功能重新返回到功能选择状态,否则继续执行该子功能程序。因而若要进行功能的切换,则先按下K4退出当前功能,然后按下相应的子功能选择按键。(3)主程序,主程序的文件名main.c#includecommon.h#includeADconvert.h#includeCLK.h#includeFRE.hvoidinitsiu(void);//初始化单片机程序voidSELECT_display();//选择状态的提示voidmain(){initsiu();//初始化单片机while(1){SELECT_display();fun_sel=inkey();switch(fun_sel){case0xe0:CLK_fun();break;case0xd0:ADC_fun();break;case0xb0:FRE_fun();break;}}}/*******************************************初始化程序*******************************************/voidinitsiu(void){ucharwe;for(we=0;we=5;we+)//使能数码管显示的各位flags[we]=0xff;shi=0;//设置时钟最初时间00:00:00fen=0;miao=0;clk_en=0xff;//使能时钟,更新时分秒tt=0;TMOD=0x51;//定时器1:gate=0-TR1=1开始计数,定时器0定时50msTH0=0X3C;TL0=0XAF;//设定定时器0定时50msTH1=0X3C;TL1=0XAF;//设定计数器1ET1=1;ET0=1;//打开定时器0中断TR0=1;//打开定时器0TR1=0;//停止定时器/计数器1EA=1;//总中断允许}//显示字符SELECTvoidSELECT_display(){zsd=(tt=10);P23=0;//使能三八译码器P20=0;//显示第一位P21=0;P22=0;P0=0x6d;delay();P20=1;//显示第二位P21=0;P22=0;P0=0x79;delay();//显示第三位P20=0;P21=1;P22=0;P0=0x38;delay();P20=1;//显示第四位P21=1;P22=0;P0=0x79;2014工程测控设计报告第4页delay();P20=0;//显示第五位P21=0;P22=1;P0=0x39;delay();P20=1;//显示第六位P21=0;P22=1;P0=0x07;delay();}3.2共用程序的设计:在程序执行过程中某一功能可能会重复调用,为了提高代码的重用性和可读性,在本部分着重进行通用程序的设计,包括按键检测子程序、数码管显示子程序、延时子程序,T1和T0中断的设计,以及数码管译码表的定义、全局变量的定义等。(1)头文件包含定义,数据类型简写的定义,全局变量的定义#includereg52.h//定义8052的特殊功能寄存器、中断#includeintrins.h//内部函数#includeMATH.H//数学函数#defineuintunsignedint//定义uint代替unsignedint#defineucharunsignedchar//定义uchar代替unsignedchar#defineulongunsignedlong//定义ulong代替unsignedlongucharcodetab[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f,0x08,0x01};//显示缓存译码ucharwetable[6],flags[6];//wetable[6]用于保存显示缓存;flags[6]用于位显示使能ucharshi,fen,miao,tt,clk_en;//保存时间时、分、秒,clk_en是否更新时间-FF时更新—00时停止ucharDp_en[6],flags_temp,fun_sel;//Dp_en[6]小数点是否亮,fun_num用于功能的选择//测频率所用到的变量定义ulongfrequency[3],Fre_temp,Fre_adj,Per;ucharFre_num,anjian,exp_num;sbitzsd=P1^0;//指示单片机状态sbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitDp=P0^7;(2)延时程序的设计:应用在数码管的显示中,以使选中位显示延时一段时间voiddelay(void)//延时4ms误差0us{unsignedchara,b,c;for(c=7;c0;c--)for(b=8;b0;b--)for(a=34;a0;a--);}(3)按键子程序:当有按键按下时,按键所对应的位置0,读取按键值相应位亦为0,根据返回的按键值能够判断出那个按键按下。在按键子程序中还用到了去抖动的方法,按键值改变时延时一段时间再检测以消除干扰;当按键按下之后则进行等待释放之后返回按键值,以防止在按键按下时多次进入按键子程序。2014工程测控设计报告第5页ucharinkey(void){ucharjjj,keydat;P2=0xff;//P2准备读入将P2高四位置位keydat=P2;//读入键值keydat=keydat&0xf0;//找出四个键的值if(keydat!=0xf0)//有键输入{_nop_();_nop_();jjj=P2;//再读,去抖动jjj=jjj&0xf0;if(jjj!=keydat)keydat=0xf0;do{jjj=P2;jjj=jjj&0xf0;}//等待键松手while(jjj!=0xf0);}return(keydat);//返回按键值}(4)显示子程序:针对不同的功能还包括小数点的显示;在时钟调整时,通过使能、禁止相应位的显示以实现闪烁,在其他功能状态所有数码管为始终保持使能状态。voiddisplay(void)//六位数码管显示程序{P23=0;//使能三八译码器if(flags[0]){P20=0;P21=0;P22=0;P0=tab[wetable[0]];if(fun_sel==0xd0)Dp=1;elseDp=0;delay();}//显示第二位if(flags[1]){P20=1;P21=0;P22=0;P0=tab[wetable[1]];if(tt=10&&fun_sel==0xe0)Dp=0;if(tt10&&fun_sel==0xe0)Dp=1;delay();}//显示第三位if(flags[2]){P20=0;P21=1;P22=0;P0=tab[wetable[2]];delay();}//显示第四位if(flags[3]){P20=1;P21=1;P22=0;P0=tab[wetable[3]];if(tt=10&&fun_sel==0xe0)Dp=0;if(tt10&&fun_sel==0xe0)Dp=1;delay();}//显示第五位if(flags[4]){P20=0;P21=0;P22=1;P0=tab[wetable[4]];if(fun_sel==0xd0)Dp=1;elseDp=0;delay();2014工程测控设计报告第6页}//显示第六位if(flags[5]){P20=1;P21=0;P22=1;P0=tab[wetable[5]];delay();}}(5)定时器和计数器的设计:T0工作在定时模式,除了在进行时钟调整时不更新时、分、秒时间之外,其他任何状态都在不停地工作并更新时间;T1工作在计数模式,定时器T0定时1秒钟,T1所计得的脉冲数即所测信号的频率。voidtimer0()interrupt1{TH0=0X3C;TL0=0XAF;tt++;if(tt==20){tt=0;if(clk_en){miao++;if(miao=60){miao=0;fen++;if(fen=60){fen=0;shi++;if(shi=24)shi=0;}}//工作在时钟模式if(fun_sel==0xe0){wetable[0]=shi/10;wetable[1]=shi%10;wetable[2]=fen/10;wetable[3]=fen%10;wetable[4]=miao/10;wetable[5]=miao%10;//显示第一位}}//工作在测频率模式时if(fun_sel==0xb0){TR1=0;//计数一秒停止计数器一Fre_temp=Fre_temp+TH1*256+TL1-15535;Fre_num++;if(Fre_num==3)Fre_num=0;frequency[Fre_num]=Fre_temp;//保存这一秒测得的频率Fre_temp=0;//重新赋值TH1=0x3C;TL1=0x0AF;TR1=1;}}}/*******************************************计数器1服务程序*******************************************/voidtimer1(void)interrupt3{//进入中断之后重新赋初值TH1=0x3C;//计数50000TL1=0x0AF;Fre_temp=Fre_temp+50000;}2014工程测控设计报告第7页3.3时钟功

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功