欢迎来到天天文库
浏览记录
ID:33870809
大小:63.50 KB
页数:8页
时间:2019-03-01
《简易频率计的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、.单片机课程设计——简易频率计数器的设计...简易频率计数器的设计一、设计要求自制一个单片机最小系统,包括串口下载、复位电路,采用外部计数器T0或T1作为外部频率输入,外部频率由信号源提供,计算出来的频率显示在四位一体的数码管上。二、设计原理及步骤51单片机有40个引脚,都有对应的功能。先设计一个最小系统,9号位接一个复位电路,能够将数码管显示清零。在通过时钟引脚18、19脚接一个振荡电路,用来控制时钟信号。1S内跳动的次数就是频率,在频率计数器中必须要有一个定时和计数功能,设置T0计数,T1定时,内部T1定时50MS,T0
2、计数20次,通过外部中断产生的信号就是对应的频率。用几个三态门作为总线的驱动器,而74LS244芯片可以起到这个作用,排阻有稳定电路和保护电路的功能,然后连接到四位数码显示管,通过引脚的一一对应和相应功能显示出来。这样就完成了整个设计。三、设计原理图及仿真用PROTEUS7.2软件设计,找到自己需要的元件,按照自己的构思设计连接好实线,而与原理图对应的程序则通过KEILC51生成的HEX文件在仿真中加入C51芯片中。...根据原理设计仿真测试结果:数码管和示波器显示的频率一致,满足设计要求四、程序设计#include3、51.h>bitint_flag;unsignedcharvolatileT0Count;unsignedcharvolatileT1Count;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharcodetemp[]={0xfe,0xfd,0xfb,0xf7};unsignedlongsum;unsignedcharLed[4];...voiddelay(unsignedintnum){while(-4、-num);}voidinit(void){TMOD=0x51;//T1定时,T0计数TH0=(65536-50000)/256;//定时50msTL0=(65536-50000)%256;TH1=0x00;TL1=0x00;}voiddisp(void){unsignedchari;for(i=0;i<4;i++){P2=temp[i];//片选P0=table[Led[i]];//取数据显示delay(100);//延时1毫秒}}...voidmain(void){EA=1;init();TR0=1;TR1=1;ET1=5、1;ET0=1;while(1){if(int_flag==1){int_flag=0;sum=TL1+TH1*256+T1Count*65536;//计算脉冲个数Led[0]=sum%10000/1000;//显示千位Led[1]=sum%1000/100;//显示百位Led[2]=sum%100/10;//显示十位Led[3]=sum%10;//显示个位T0Count=0x00;T1Count=0;TH1=0x00;TL1=0x00;...TR1=1;}disp();}}voidint_t0(void)interrupt6、1{TH0=(65535-50000)/256;TL0=(65536-50000)%256;T0Count++;if(T0Count==20){TR1=0;int_flag=1;T0Count=0x00;}}voidint_T1(void)interrupt3{T1Count++;}...六、设计体会在做课程设计的过程中,我进一步认识到全面专业知识以及逻辑思考方式对研究问题的重要性,同时我更加具体的掌握了课程设计的基本方法。经过不断的努力,我终于完成了这次课程设计,总的来说我学到了不少知识,知道了理论联系实际的重要性。在设计7、过程中我遇到了不少问题,但并没有放弃,查阅了很多书籍,自己独立思考,并与自己学过的知识联合起来,我相信这对我以后的学习和工作有一定的积极影响。首先,通过单片机实验教材,我照步进行了keilc51和proteus7.2的使用流程和创建基本工程,并且通过在设计过程中频繁使用更进一步的掌握了它们的使用方法。由于经过多次电工实习,我的焊接水平有了显著的提高,感觉这次自己焊点都比较理想,不过在布局上依然不够美观,看起来比较杂乱,这是需要改进的地方。我按照要求完成了板子的焊接,第一次检测的时候,发现按下复位键结果出现4个0,而没按键时没8、显示数字,一开始我还以为是电路连线或者程序的问题,经过万用表检测和不断的测试,发现这些都没有问题,而最主要的问题出现在设计的复位电路上,经过纠正后才得到了正确的现象,从这里可以看出我对频率计设计部分的功能掌握的还不够清楚。每一次的课程设计都给我留下了难忘的印象,看着自己的劳动成果...也比
3、51.h>bitint_flag;unsignedcharvolatileT0Count;unsignedcharvolatileT1Count;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharcodetemp[]={0xfe,0xfd,0xfb,0xf7};unsignedlongsum;unsignedcharLed[4];...voiddelay(unsignedintnum){while(-
4、-num);}voidinit(void){TMOD=0x51;//T1定时,T0计数TH0=(65536-50000)/256;//定时50msTL0=(65536-50000)%256;TH1=0x00;TL1=0x00;}voiddisp(void){unsignedchari;for(i=0;i<4;i++){P2=temp[i];//片选P0=table[Led[i]];//取数据显示delay(100);//延时1毫秒}}...voidmain(void){EA=1;init();TR0=1;TR1=1;ET1=
5、1;ET0=1;while(1){if(int_flag==1){int_flag=0;sum=TL1+TH1*256+T1Count*65536;//计算脉冲个数Led[0]=sum%10000/1000;//显示千位Led[1]=sum%1000/100;//显示百位Led[2]=sum%100/10;//显示十位Led[3]=sum%10;//显示个位T0Count=0x00;T1Count=0;TH1=0x00;TL1=0x00;...TR1=1;}disp();}}voidint_t0(void)interrupt
6、1{TH0=(65535-50000)/256;TL0=(65536-50000)%256;T0Count++;if(T0Count==20){TR1=0;int_flag=1;T0Count=0x00;}}voidint_T1(void)interrupt3{T1Count++;}...六、设计体会在做课程设计的过程中,我进一步认识到全面专业知识以及逻辑思考方式对研究问题的重要性,同时我更加具体的掌握了课程设计的基本方法。经过不断的努力,我终于完成了这次课程设计,总的来说我学到了不少知识,知道了理论联系实际的重要性。在设计
7、过程中我遇到了不少问题,但并没有放弃,查阅了很多书籍,自己独立思考,并与自己学过的知识联合起来,我相信这对我以后的学习和工作有一定的积极影响。首先,通过单片机实验教材,我照步进行了keilc51和proteus7.2的使用流程和创建基本工程,并且通过在设计过程中频繁使用更进一步的掌握了它们的使用方法。由于经过多次电工实习,我的焊接水平有了显著的提高,感觉这次自己焊点都比较理想,不过在布局上依然不够美观,看起来比较杂乱,这是需要改进的地方。我按照要求完成了板子的焊接,第一次检测的时候,发现按下复位键结果出现4个0,而没按键时没
8、显示数字,一开始我还以为是电路连线或者程序的问题,经过万用表检测和不断的测试,发现这些都没有问题,而最主要的问题出现在设计的复位电路上,经过纠正后才得到了正确的现象,从这里可以看出我对频率计设计部分的功能掌握的还不够清楚。每一次的课程设计都给我留下了难忘的印象,看着自己的劳动成果...也比
此文档下载收益归作者所有