51单片机频率计
单片机C51数字频率计程序
单片机C51数字频率计程序**//头文件部分,文件名:plj.h/**************************************************#include<reg52.h>#include<absacc.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charextern const uchar NoDisp=0; //无显示extern const uchar NoCur=1; //有显示无光标extern const uchar CurNoFlash=2; //有光标但不闪烁extern const uchar CurFlash=3; //有光标且闪烁extern void LcdPos(uchar,uchar); //确定光标位置extern void LcdWd(uchar); //写字符extern void LcdWc(uchar); //送控制字(检测忙信号)extern void LcdWcn(uchar ); //送控制字子程序(不检测忙信号)extern void mDelay(uchar ); //延时,毫秒数由j决定extern void WaitIdle(void); //正常读写操作之前检测LCD控制器状态extern void RstLcd(void); //复位LCD控制器extern void WriteChar(uchar c,uchar xPos,uchar yPos);//在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符extern void WriteString(uchar *s,uchar xPos,uchar yPos);extern void SetCur(uchar Para); //设置光标extern void ClrLcd(void); //清屏命令extern void WaitIdle(void); // 正常读写操作之前检测LCD控制器状态extern void mDelay(uchar j);/**************************************************/**************************************************//液晶1602子程序,文件名:1602.c/**************************************************;连线图:; DB0---DPROT.0 DB4---DPROT.4 RS-------------P3.5 ; DB1---DPROT.1 DB5---DPROT.5 RW-------------P3.6 ; DB2---DPROT.2 DB6---DPROT.6 E--------------P3.7 ; DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND*; 需要11根单片机口线;80C51的晶振频率为12MHz;液晶显示程序;**************************************************/#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit RS = P3^5;sbit RW = P3^6;sbit EN = P3^7;#define DPORT P1void LcdPos(uchar,uchar); //确定光标位置void LcdWd(uchar); //写字符void LcdWc(uchar); //送控制字(检测忙信号)void LcdWcn(uchar ); //送控制字子程序(不检测忙信号)void mDelay(uchar ); //延时,毫秒数由j决定void WaitIdle(); //正常读写操作之前检测LCD控制器状态//在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符void WriteChar(uchar c,uchar xPos,uchar yPos){LcdPos(xPos,yPos);LcdWd(c);}void WriteString(uchar *s,uchar xPos,uchar yPos){ uchar i;if(*s==0) //遇到字符串结束return;for(i=0;;i++){if(*(s+i)==0)break;WriteChar(*(s+i),xPos,yPos);xPos++;if(xPos>=15) //如果XPOS中的值未到15(可显示的最多位)break;}}void SetCur(uchar Para) //设置光标{ mDelay(2);switch(Para){ case 0:{ LcdWc(0x08); //关显示break;}{ LcdWc(0x0c); //开显示但无光标break;}case 2:{ LcdWc(0x0e); //开显示有光标但不闪烁break;}case 3:{ LcdWc(0x0f); //开显示有光标且闪烁break;}default:break;}}void ClrLcd() //清屏命令{ LcdWc(0x01);}// 正常读写操作之前检测LCD控制器状态void WaitIdle(){ uchar tmp;RS=0;RW=1;EN=1;_nop_();for(;;){ tmp=DPORT;tmp&=0x80;if( tmp==0)}EN=0;}void LcdWd(uchar c) //写字符子程序{ WaitIdle();RS=1;RW=0;DPORT=c; //将待写数据送到数据端口EN=1;_nop_();_nop_();EN=0;}void LcdWc(uchar c) //送控制字子程序(检测忙信号){ WaitIdle();LcdWcn(c);}void LcdWcn(uchar c) //送控制字子程序(不检测忙信号){ RS=0;RW=0;DPORT=c;EN=1;_nop_();EN=0;}void LcdPos(uchar xPos,uchar yPos) //设置第(xPos,yPos)个字符的DDRAM地址{ unsigned char tmp;xPos&=0x0f; //x位置范围是0~15yPos&=0x01; //y位置范围是0~1if(yPos==0) //显示第一行tmp=xPos;elsetmp=xPos+0x40;tmp|=0x80;LcdWc(tmp);}void RstLcd() //复位LCD控制器{ mDelay(15); //如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30LcdWc(0x38); //显示模式设置LcdWc(0x08); //显示关闭LcdWc(0x01); //显示清屏LcdWc(0x06); //显示光标移动位置LcdWc(0x0c); //显示开及光标设置}void mDelay(uchar j) //延时,毫秒数由j决定{ uint i=0;for(;j>0;j--){ for(i=0;i<124;i++){;}}}//主函数:/*===================================== ========================================= ====公司名称:河海大学电气工程学院 *模块名:AT89C52单片机系统,全国电子设计大赛 *创建人:南东亮日期:2007。
51单片机数字频率计的代码
51单片机数字频率计的代码标题: 用51单片机实现数字频率计功能的创作导言:数字频率计是一种常见的电子测量仪器,用于测量信号的频率。
本文将介绍如何使用51单片机实现数字频率计的功能,通过编写相关代码和接线,实现对信号频率的测量和显示。
一、引言数字频率计是一种电子测量仪器,用于测量信号的频率。
它通过将输入信号与计时器进行比较,并将计数结果转换为频率值。
在本项目中,我们将使用51单片机来实现这一功能。
二、硬件设计我们需要准备的硬件有:51单片机、晶体振荡器、LCD显示屏、按键开关和一些连接线。
首先,将晶体振荡器连接到单片机的相应引脚上,以提供系统时钟。
然后将LCD显示屏连接到单片机的I/O端口上,用于显示测量结果。
最后,连接按键开关到单片机的I/O端口上,用于启动和停止测量。
三、软件设计1. 初始化我们需要初始化单片机的计时器和LCD显示屏。
通过设置计时器的工作模式和计数方式,以及LCD的显示模式和位置,来确保测量和显示的准确性。
2. 信号测量接下来,我们需要编写代码来测量输入信号的频率。
通过将输入信号与计时器进行比较,并在每个计数周期结束时进行计数,来获取信号的周期时间。
然后,通过计算周期时间的倒数,即可得到信号的频率。
3. 结果显示将测量得到的频率值转换为字符形式,并通过LCD显示屏进行显示。
可以使用LCD库函数来实现字符显示的功能,通过将频率值转换为字符数组,并逐个显示在LCD屏幕上。
四、实验结果经过测试,我们成功实现了数字频率计的功能。
当输入信号稳定时,可以准确地测量并显示信号的频率。
通过按下按键开关,可以启动和停止频率测量。
结论:通过51单片机的编程和硬件设计,我们成功实现了数字频率计的功能。
该频率计可以准确地测量输入信号的频率,并通过LCD显示屏进行显示。
这个项目不仅加深了我们对单片机的理解,还提高了我们的编程能力。
希望这个项目能对读者有所帮助,激发对电子技术的兴趣和研究。
基于51单片机的数字频率计设计
基于51单片机的数字频率计一、实验内容1.1数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用四位LED数码管动态显示4位数。
测量范围从1Hz—10kHz的正弦波、方波、三角波。
用单片机实现自动测量功能。
1.2频率测量仪的设计思路与频率的计算频率测量仪的设计思路主要是:设置单片机T1为计数器模式,对输入信号进行计数,T0设置为定时器模式,定时时间为1秒,则计数器所计数值即为被测信号频率。
1.3 基本设计原理基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以在单位时间内对被测信号上升沿计数的方法对正弦波、方波、三角波的频率进行自动的测量。
如果被测信号频率超过量程,则有警报灯闪烁。
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
1.4 频率计性能参数设计量程:0-10KHz波形:方波输入信号电压:5V二、数字频率计的硬件结构设计2.1 系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有电源电路、复位电路、显示器,报警电路等器件,如下图所示:图一数字频率计功能模块2.2 AT89C51单片机引脚说明在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合数码管,发光二极管,按键开关构成控制及显示模块。
在试验中选用P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。
基于51单片机的频率计设计报告
基于51单片机的频率计设计报告
在该设计报告中,我将介绍基于51单片机的频率计的设计原理、硬件设计和软件设计。
设计原理:
频率计是一种用于测量信号频率的仪器。
基于51单片机的频率计的设计原理是利用单片机的定时计数器来测量输入信号的脉冲个数,然后将脉冲个数转换为频率。
硬件设计:
硬件设计主要包括输入信号的采集电路、计数电路和显示电路。
输入信号的采集电路使用一个比较简单的电路,包括一个电阻和一个电容,用于将输入信号转换为脉冲信号。
计数电路使用单片机的定时计数器来进行计数。
在这个设计中,我们使用TIMER0和TIMER1作为计数器,分别用于测量输入信号的高电平时间和低电平时间,然后将两个时间相加得到一个完整的周期,再根据周期反推频率。
显示电路使用一个LCD模块来显示测量得到的频率。
在这个设计中,我们使用IO口将计算得到的频率发送给LCD模块,通过LCD模块来显示频率。
软件设计:
软件设计主要包括信号采集、脉冲计数和频率计算。
信号采集主要通过定时器的中断来进行。
在采集到一个脉冲之后,中
断程序会使计数器加1
脉冲计数是通过对输入信号高电平时间和低电平时间计数来完成的。
在脉冲计数的过程中,我们需要启动TIMER0和TIMER1,并设置正确的工
作模式和计数值。
频率计算是通过将高电平时间和低电平时间相加得到一个完整的周期,然后再根据周期反推频率来完成的。
最后,将计算得到的频率发送给LCD
模块进行显示。
总结:。
数字频率计(51单片机)
自动化与电子工程学院单片机课程设计报告课程名称:单片机原理与应用学院:自动化与电子工程院专业班级:学生姓名:完成时间:报告成绩:评阅意见:评阅教师日期目录第1章数字频率计概述11.1数字频率计概述01.2数字频率计的基本原理01.3单脉冲测量原理1第2章课程设计方案设计12.1系统方案的总体论述12.2系统硬件的总体设计22.3处理方法2第3章硬件设计33.1单片机最小系统3第4章软件设计44.1系统的软件流程图44.2程序清单6第5章课程设计总结6参考文献7附录Ⅰ仿真截图8附录Ⅱ程序清单14第1章数字频率计概述1.1数字频率计概述数字频率计又称为数字频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。
本数字频率计将采用定时、计数的方法测量频率,采用6个数码管显示6位十进制数。
测量范围从10Hz—5.5kHz,精度为1%,用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量频率的方法对方波的频率进行自动的测量。
1.2数字频率计的基本原理数字频率计最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T(如图1.1所示)。
图1.1 频率测量原理频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用的办法是使用单片机自带的计数器对输入脉冲进行计数;好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。
缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C51单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。
基于51单片机的频率计的设计
基于51单片机的频率计的设计频率计是一种测量信号频率的仪器或装置,其原理是通过对信号进行计数和定时来测量信号的周期,并进而计算出信号的频率。
在本篇文章中,我们将设计一个基于51单片机的频率计。
设计方案:1.硬件设计:(1)时钟电路:使用11.0592MHz晶振为主频时钟源。
(2)信号输入:选择一个IO口作为信号输入口,通过外部电平转换电路将信号转换为51单片机能够处理的电平。
(3)显示装置:使用一个数码管或液晶显示屏来输出测量结果。
2.软件设计:(1)初始化:设置51单片机的工作模式、引脚功能、定时器等。
初始化时,将IO口配置为输入模式,用于接收外部信号。
(2)定时器设置:利用定时器来进行时间的测量,可以选择适当的定时器和计数器来实现定时功能。
(3)外部中断设置:使用外部中断来触发定时器,当外部信号边沿发生变化时,触发定时器的启动或停止。
(4)中断处理:通过中断处理程序来对定时器进行启动、停止和计数等操作。
(5)频率计算:将计数结果经过一定的处理和运算,计算出信号的频率。
(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏输出。
3.工作流程:(1)初始化设置:对51单片机进行初始化设置,包括端口、定时器、中断等的配置。
(2)外部信号输入:通过外部电平转换电路将要测量的信号输入至51单片机的IO口。
(3)定时测量:当外部信号发生边沿变化时,触发外部中断,启动定时器进行定时测量。
(4)停止计时:当下一个信号边沿出现时,中断处理程序停止定时器,并将计数结果保存。
(5)频率计算:根据定时器的设置和计数结果,计算出信号的周期和频率。
(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏进行显示。
4.注意事项:(1)确保信号输入的稳定性:外部信号输入前需要经过滤波处理,保证稳定且无杂波的输入信号。
(2)测量精度的提高:如有必要,可以通过增加定时器的位数或扩大计数范围来提高测量精度。
(3)显示结果的优化:可以根据需要,通过增加缓冲区、优化数码管显示等方式来改善结果的可读性。
基于51单片机的数字频率计
• 6、RESET/VPD(9脚):复位信号输入端/备用电源输入 端;
单片机执行程序都是从地址0000H开始的,所以在进入系 统时必须对CPU进行复位,有时候程序运行错误或操作错 误,系统会处于锁死的状态为了摆脱这样的状态也必须对 单片机进行复位。
复位的方法比较简单:只要在RESET脚上加一个持续时 间为24个振荡周期(两个机器周期)的高电平就可以了。
• 7、EA/VPP(31脚):内/外部ROM选择端; • 8、P0口(39-32脚):双向IO口P00-P07(P0口无上拉
电阻,作输出用需要接上拉电阻);
• 9、P1口(1-8脚):准双向通用IO口; • 10、P2口(21-28脚):准双向通用IO口; • 11、P3口(10-17脚):准双向通用IO口;
环境干扰等因素。经实际多次测试频率在 等于1000Hz的时候最大相对误差达到0.1%, 符合误差要求。
• 实物图
2.3 显示模块
• 2.3.1 LCD1602简介
LCD1602是一种专门用来显示字母、数字、 符号等的点阵型液晶模块,它由若干个5X7 或者5X11等点阵字符位组成,每个点阵字 符位都可以显示一个字符,每位之间有一 个点距的间隔,每行之间也有间隔,起到 了字符间距和行间距的作用。LCD1602是= 显示的内容为16X2,即可以显示两行,每 行16个字符液晶模块。
2.3.4 LCD1602地址
比如第二行第一个字符的地址是40H,那么是否直接 写入40H就可以将光标定位在第二行第一个字符的位置呢? 这样不行,因为写入显示地址时要求最高位D7恒定为高 电平1,所以实际写入的数据应该40H+80H=C0H
51单片机——数字频率计
频率计是我们经常会用到的实验仪器之一,本实验要使用单片机和计数电路及液晶器件来设计一个宽频的频率计。
期望达到10Hz-1.1G范围的频率精确测量。
实验电路图(初步方案)1) 计数及显示电路:2)前置放大及分频电路:设计思路频率的测量实际上就是在1S时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用两种办法,1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。
由于单片机自带计数器输入时钟的频率通常只能是系统时钟频率的几分之一甚至几十分之一,因此采用单片机的计数器直接测量信号频率就受到了很大的限制。
本实验电路采用方式2,使用一片74LS393四位双二进制计数器和Atmega8的 T1计数器组成了24位计数器,最大计数值为16777215。
如果输入信号经过MB501分频器进行64分频后再进行测量,则固定1S时基下最高测量频率为1073.741760Mhz。
为了方便得到准确的1秒钟测量闸门信号,我们使用了Atmega8的异步实时时钟功能,采用32.768Khz的晶振由TC2产生1秒钟的定时信号。
测量原理:单片机打开测量闸门,即PB1输出高电平,同时TC2定时器启动。
74LS393开始对输入脉冲进行计数,74LS393每计数达256时,Atmega8的T1计数器也向上计数1次。
当1S定时到达时,单片机产生中断,PB1输出低电平关闭测量闸门,然后Atmega8读取74LS393和T1的计数值,然后送LCD显示。
实验进展2004-09-27根据设计思路编写程序初步获得了一些实验结果,如下图所示。
下图是测量8M有源晶振的输出结果。
由于1S的测量闸门时间在业余条件下不好测试,因此,实验程序中在LCD上同时显示实时时钟用于判断1S闸门时间的准确性。
实验中,我使用CDMA手机上显示的GPS卫星精确时间进行比较。
手机时间显示的最小单位是分钟,测量时一旦手机分钟值发生跳变,则立即记录下LCD显示的秒值,这样的话让频率计运行一段时间后,再多次记录下LCD显示的秒,就可以准确判断频率计的异步时钟是否准确。
51单片机频率计
51单片机频率计测量原理:使用51单片机的定时/计数器0定时1秒,与此同时外部中断0(int0脚)接受外接输入的方波信号并对其计数,当定时/计数器0溢出中断时,int0脚上对方波跳变次数的计数值就是被测方波的频率。
晶振采用12MHz。
测量范围:0~5000Hz测量精度为±1Hz,大于5000Hz误差就很大了,所以最佳测量频率是0~5000Hz。
(2014.10.28)输入频率为2337Hz输入频率为998Hz以下为c代码:#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71};uint freqCount,i,freqtemp;void delay(uchar n){uchar x,y;for(x=n;x>0;x--)for(y=110;y>0;y--);}void led_disp(uchar wei,uchar n){P0=table[n];switch(wei){case 1:P2=0x70;break;case 2:P2=0xb0;break;case 3:P2=0xd0;break;case 4:P2=0xe0;break;}delay(10);P0=0x00;P2=0x00;}void led_sweepdisp(uint n){uchar qian,bai,shi,ge;qian=n/1000;bai=n/100%10;shi=n/10%10;ge=n%10;led_disp(1,ge);led_disp(2,shi);led_disp(3,bai);led_disp(4,qian);}void T0_init(){TMOD=0x01;TH0=(65536-1000)/256; //1ms溢出一次TL0=(65536-1000)%256;ET0=1;TR0=1;}void int0_init(){EX0=1;IT0=1; //外部中断0跳变中断}void led_init(){P0=0x00;}uint getFreq(){return freqtemp;}void main(){led_init();int0_init();T0_init();EA=1;while(1){led_sweepdisp(getFreq());}}void int0()interrupt 0{freqCount++;}void T0_overflow()interrupt 1{TH0=(65536-1000)/256; //1ms溢出一次TL0=(65536-1000)%256;if(i++==981){EA=0;i=0;freqtemp=freqCount;freqCount=0;EA=1;}}。
基于.51单片机的频率计的设计说明书
4.2主程序
• 主程序首先对系统环境初始化,设置分频选通信号P2=0x00,选通 0通道。设置T0工作方式,采用硬件启动方式,GATE=1,当INT0 和TR0同时为1时启动计时,计数方式为方式1(16位),TH0和 TL0都置零。当外部中断INT0=1时等待,当外部中断为0时启动T0 即TR0=1,当INT0一直为0时就等待,一旦INT0=1就启动计数同时 等待,当INT0为0时跳出并关闭T0即TR0=0。这样就计得高电平期 间基准脉冲个数,当脉冲个数小于500时就选择10分频信号,即P2 自加1,同时记录分频一次;如果分频后脉冲个数还小于500则再次 分频,直到计数个数大于500
•
3.2 分频电路:
• 分频电路采用十进制的计数器74HC4017来分频,当被测信号脉冲个 数达到10个时74HC4017产生溢出,C0端输出频率为输入频率的1/10, 达到十分频的作用。如果当频率很高时需要多次分频只需将多片 74HC4017级联就可以了
• 74HC4017时序图如下图所示
系统分频电路如下图所示
• while(p32==1); //执行完这条语句后信号电平状态为低电平
• TR0=1;
//使能TR0;
• while(p32==0); //等待信号高电平到来,如果高电平来了则定时器开始计时,如果没来,则继续循 环等待。
• while(p32==1); //等待信号高电平结束后,如果低电平,则定时器停止计时
• 根据设计要求用单片机的内部定时器0产生基准信号,由INTO输入被测 信号,通过定时方式计算被测信号的高电平持续时间。并通过单片机计 算得出结果,最后由1062液晶显示器显示测量结果。
• 频率计的系统设计框架如下图所示
被测信号
基于51单片机的频率计
基于51单片机的智能频率计一数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示4位数。
测量范围从1HZ——9999HZ基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
二基本设计原理基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率f x。
时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。
闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。
秒信号结束时闸门关闭,计数器停止计数。
由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。
三数字频率计(低频)的硬件结构设计(一)系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。
可分为以下几个模块:传感器、放大整形模块、单片机系统、LCD显示模块。
各模块关系图如图2所示:光电传感器放大整形单片机显示图2 数字频率计功能模块(二)系统工作原理图所用元件:(三)稳压电源的设计选用三端集成稳压器CW7805为单片机提供稳定的+5V电源,使单片机能正常工作。
51单片机频率计
实验报告实验名称基于8255的8LED数显频率计课程名称_______ Protues软件设计(51单片机)_________班级学号 __________姓名 _________________一、实验要求基本要求:用P1或P3 口,产生一方波信号,频率为1000Hz,用一组数码管或LCD显示频率和周期以及脉宽等参数(也可用信号源或模拟信号源)。
将输出信号输入到另一端口(INT0/INT1 )作频率计的信号输入端,测量此方波信号的频率、周期和脉宽,在另一组数码管或LCD上将参数值显示出来。
(刷新时间1秒)o发挥部分:1、设置一功能键,能将当前数码管或LCD上的信号参数值锁定。
2、通过键盘,可修改方显示参数,刷新时间。
3、按键时,蜂鸣器发出提示音,表示按键有效4、用图形方式显示输入波形(用模拟示波器)动态显示格式:自定二、实验内容实验内容为基于8255的简易8LED数字显示频率计,利用8255的扩展功能,来扩展51单片机的功能管脚,使其可以实现利用8255的A,B端口实现输入输出功能,从而实现51单片机管脚的扩展。
三、实验原理频率计主要功能是测量频率。
频率是指一秒内发生相同波形的次数,根据这一定义,可以初步得出测量频率的方法,就是通过计量一定时间的脉冲次数就可以通过计算累加获得频率的次数,然后通过数值译码输送的数显电路当中去。
根据实验假设,可以知道实验中需要用的两个定时装置,一个为定时装置,另一个为计数装置。
而单片机中正好就设置了这样的计时器。
8051提供两个16位的内部定时器(计数器),分别为Time0, Time1 (简称T0,T1)这两个定时器可以用作为内部定时器或者外部计数器,作为内部计时的时候是计算的是内部的脉冲,以12MHz的计时脉冲系统为例,将此计数器时钟脉冲除12后送入定时器,因此定时器所计数的脉冲周期为1us。
若采用16位的定时器,最多可以计数65536,约为0,065&因而我们选择0.05S作为单位计数时间长度。
数字频率计(51单片机)
数字频率计(51单片机)数字频率计(51单片机)数字频率计(Digital Frequency Counter)是一种常用的电子测量仪器,可用于测量信号的频率。
在本文中,我们将介绍如何使用51单片机实现一个简单的数字频率计。
一、原理简介数字频率计的基本原理是通过计算信号波形周期内的脉冲数来确定频率。
在实际应用中,我们通常使用51单片机作为微控制器,通过计数器和定时器模块来实现频率计算。
二、硬件设计1.信号输入首先,我们需要将待测信号输入到频率计中。
可以使用一个输入接口电路,将信号连接到51单片机的IO口上。
2.计时模块我们需要使用51单片机的定时器/计数器来进行计时操作。
在这里,我们选择使用定时器0来进行计数,同时可以利用定时器1来进行溢出次数的计数,以扩展计数范围。
3.显示模块为了显示测量结果,我们可以使用数码管、LCD液晶显示屏等显示模块。
通过将结果以可视化的方式呈现,方便用户进行观察和读数。
三、软件设计1.定时器配置首先,我们需要对定时器进行配置,以确定计时器的计数间隔。
通过设置定时器的工作模式、计数范围和时钟频率等参数,可以控制定时器的计数精度和溢出时间。
2.中断服务程序当定时器溢出时,会触发中断,通过编写中断服务程序,实现对计数器的相应操作,例如将计数值累加,记录溢出次数等。
3.数字频率计算根据计数器的值和溢出次数,我们可以计算出信号的频率。
通过简单的公式计算,即可得到测量结果。
四、实验步骤1.搭建硬件电路,将待测信号连接到51单片机的IO口上,并连接显示模块。
2.根据硬件设计要求,配置定时器的工作模式和计数范围。
3.编写中断服务程序,实现对计数器的相应操作。
4.编写主程序,实现数字频率计算和显示。
5.下载程序到51单片机,进行测试。
五、实验结果与分析通过实验,我们可以得到信号的频率测量结果,并将结果以数码管或LCD屏幕的形式进行显示。
通过对比实际频率和测量频率,可以评估数字频率计的准确性和稳定性。
基于51单片机数字频率计的设计与开发
摘要在电子技术中,频率是最大体的参数之一,而且与许多电参量的测量方案、测量结果都有十分紧密的关系,因此频率的测量就显得更为重要。
测量频率的方式有多种,其中电子计数器测量频率具有精度高、利用方便、测量迅速,和便于实现测量进程自动化等优势,是频率测量的重要手腕之一。
电子计数器测频有两种方式:一是直接测频法,即在必然闸门时刻内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文论述了基于通用集成电路设计了一个简单的数字频率计的进程。
关键词:频率,信号,周期AbstractIn electronic technology,the frequency is the most basic one of the parameters,andwith a number of electrical parameters of the measurement program,measurement more important,There are several ways of mesuring frequency,in which electronic counter the frequency with high precision,easy to use ,quick measurements,and is easy to realize the advatages of automaion of measurement process is an important means of frequency Counter Frequency Measurement There are two ways:First,the directfrequency measurement method,thatis,the gate in a certain period of time measured the number of measured signal pulse;2is indirect frequency measurement method,such as cycle frequency measurement frequency measurement method for high-frequency signals offrequency measurement,indirect frequency measurement method for low-frequency signald of frequency this paper,based on a commom integrated circuit design of a simple digital frequency meter process.Key words:frequency,signal,period目录摘要 (Ⅰ)一、引言(一)数字频率计概述 (1)(二)问题提出 (1)(三)设计思想 (1)二、方案论证与比较(一)方案选择 (2)一、整体方案比较 (2)二、测频方案比较 (2)(二)测频原理 (2)三、数字频率计设计(一)数字频率计原理 (4)一、数字频率计的大体组成 (4)二、数字频率计的要紧技术指标 (5)(二)数字频率计的设计 (5)一、硬件电路设计 (5)二、软件的设计 (7)3、软件仿真 (9)四、大体元器件的论述(一)AT89S52简介 (9)一、要紧功能特性 (10)二、引脚功能 (11)(二)555按时器 (11)一、555按时器及其应用 (11)二、施密特触发器 (12)五、终止语(一)总结 (13)致谢 (14)参考文献 (15)附录 (16)一、引言(一)数字频率计概述数字频率计是运算机,通信设备,音频视频等科研生产领域不可缺少的测量仪器。
基于51单片机的数字频率计的设计
1 前言频率测量是电子学测量中最为基本的测量之一。
由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。
随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。
1.1频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。
本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点。
1.2频率计发展与应用在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。
单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。
单片机已成为电子系统的中最普遍的应用。
单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。
其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。
2 系统总体设计测频的原理2.1。
被测信号,测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端。
经过基选通门去触发主控电路,按十进制分频得出的分频脉冲,由晶体振荡器产生的基频,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信内累T号所产生的矩形波,至十进制计数电路进行直接计数和显示。
基于51单片机的频率计的设计讲解
基于51单片机的频率计的设计讲解频率计是一种测量信号频率的仪器。
基于51单片机的频率计设计能够实现对不同频率信号的测量,具有简单、可靠、价格低廉的优势。
本文将详细介绍基于51单片机的频率计的设计原理、电路设计和程序设计。
设计原理:基于51单片机的频率计的设计原理主要包括输入信号的检测和计数、计数值显示和频率计算。
当外部信号输入到单片机的输入引脚时,单片机通过计数器对输入信号的波形进行计数,计数值与输入信号的频率成正比。
通过将计数值转换为频率值,并在显示屏上显示,即可实现对输入信号频率的测量。
电路设计:输入电路:输入电路主要负责将外部信号通过耦合电容和电阻接入单片机的输入引脚。
在输入电路中,耦合电容的作用是将交流信号的AC分量通过,阻隔直流信号的DC分量。
电阻的作用是限制输入信号的幅值,防止单片机输入引脚的过大电流。
计数电路:计数电路是基于51单片机的频率计的核心部分,主要由计数器和时钟发生器组成。
计数器负责对输入信号的波形进行计数,时钟发生器负责提供计数脉冲。
计数器的选择应根据所需测量范围来确定,通常使用定时器/计数器来实现。
显示电路:显示电路主要由数码管和驱动电路组成。
通过将计数值转换为对应的数字,并将数字数据发送给数码管进行显示。
驱动电路负责控制数码管的亮度和显示方式。
程序设计:输入信号的采样:在程序中,通过定时器/计数器对输入信号进行采样,采样时间根据信号频率来确定。
采样得到的数据存储在特定的寄存器中,以供后续的计数和计算。
计数器的计数:通过对输入信号进行计数,得到计数值。
计数值的大小与输入信号的周期成反比,与输入信号频率成正比。
计数器的计数方式可以是边沿计数或脉冲计数,根据实际需求选择。
频率计算和显示:通过将计数值转换为频率值,并将频率值显示在数码管上。
频率计算可以采用简单的比例关系,如频率=计数值/计数时间。
将频率值转换为对应的数字,并通过驱动电路控制数码管的显示。
总结:基于51单片机的频率计通过对输入信号进行采样、计数、计算和显示,能够实现对不同频率信号的测量。
基于51单片机的高级频率计设计
基于51单片机的高级频率计设计
主要实现的功能有:(1)输入信号类型可是方波信号、正弦信号、三角
信号(2)系统测量频率的范围是1Hz-20MHz(3)系统测量频率过程中,量程是自动变换的,不需要用户手动操作,方便了用户的使用(4)对于低于
200KHz 的信号,信号的最低幅度可以是0.5V,基本系统可以实现微弱信号的检测(5)本系统对于低于10KHz 的方波信号可以测量其占空比。
本系统首先使用Protues 仿真软件进行仿真,在仿真通过之后,在腐蚀板子,然后硬件实现。
仿真图下:误差控制在千分之一内
实物图:误差控制在千分字之一内。
当然通过数据处理,可以做到更低
采集低频信号,并显示占空比
采集高频信号
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
基于51单片机的数字频率计
基于51单片机的数字频率计作者:刘祥静柴欣君白皓贺程梅许圣儒来源:《科学导报·学术》2020年第16期摘 ;要:本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。
并且引导一种创新的思维,把学到的知识应用到日常生活当中。
在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。
1.1数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。
测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。
用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
1.2频率测量仪的设计思路与频率的计算频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图1所示。
若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1Tx。
由图可知:T=NTo(注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。
)由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N 值越大,误差越小,测量的精度越高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称基于8255的8LED数显频率计课程名称Protues软件设计(51单片机)班级学号姓名一、实验要求基本要求:用P1或P3口,产生一方波信号,频率为1000Hz,用一组数码管或LCD显示频率和周期以及脉宽等参数(也可用信号源或模拟信号源)。
将输出信号输入到另一端口(INT0/INT1)作频率计的信号输入端,测量此方波信号的频率、周期和脉宽,在另一组数码管或LCD上将参数值显示出来。
(刷新时间1秒)。
发挥部分:1、设置一功能键,能将当前数码管或LCD上的信号参数值锁定。
2、通过键盘,可修改方显示参数,刷新时间。
3、按键时,蜂鸣器发出提示音,表示按键有效4、用图形方式显示输入波形(用模拟示波器)动态显示格式:自定二、实验内容实验内容为基于8255的简易8LED数字显示频率计,利用8255的扩展功能,来扩展51单片机的功能管脚,使其可以实现利用8255的A,B端口实现输入输出功能,从而实现51单片机管脚的扩展。
三、实验原理频率计主要功能是测量频率。
频率是指一秒内发生相同波形的次数,根据这一定义,可以初步得出测量频率的方法,就是通过计量一定时间的脉冲次数就可以通过计算累加获得频率的次数,然后通过数值译码输送的数显电路当中去。
根据实验假设,可以知道实验中需要用的两个定时装置,一个为定时装置,另一个为计数装置。
而单片机中正好就设置了这样的计时器。
8051提供两个16位的内部定时器(计数器),分别为Time0,Time1(简称T0,T1)这两个定时器可以用作为内部定时器或者外部计数器,作为内部计时的时候是计算的是内部的脉冲,以12MHz的计时脉冲系统为例,将此计数器时钟脉冲除12后送入定时器,因此定时器所计数的脉冲周期为1us。
若采用16位的定时器,最多可以计数65536,约为0,065s。
因而我们选择0.05S作为单位计数时间长度。
若当成外部计数器时则计数由T0或T1管脚送入脉冲,同样地,若采用16位的定时模式,则最多可以数65536个计数量,相当可观。
在51单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。
它们用于存放定时或计数的初始值。
此外,内部还有一个8位的方式寄存器TMOD 和一个8位的控制寄存器TCON。
用于选择和控制定时/计数器的工作。
其格式见下面两表:门控开关计数/定时方式选择门控开关计数/定时方式选择TCON控制寄存器TF1 TR1 TF0 TRO IE1 IT1 IE0 IT0T1请求有/无T1工作启/停T0请求有/无T0工作启/停INT1请求有/无INT1方式下沿INT1请求有/无INT1方式下沿根据定时时间要求或计数要求计算计数器初值;将工作方式控制字写入TMOD寄存器;将计数初值写入THX和TLX寄存器;启动定时器/计数器,即将TRX置位。
如果工作于中断方式,需置位EA(中断总开关)及ETX(允许定时/计数器中断),并编写中断服务程序。
实验当中规定要求为使用INT0/INT1作频率计的信号输入端,所以启用的是外部中断来执行计数过程。
外部中断有INT0和INT1两个,CPU通过两个外部引脚即可接受外部中断的请求。
外部中断信号的采样方式可分为电平触发(低电平)以及边缘触发(负边沿触发)两种。
若采用电平触发,需要将TCON寄存器中的IT0(或IT1)设定为0,则只要INT0引脚为低电平,视为外部中断要求。
若采用边缘触发,需要将TCON 寄存器中的IT0(或IT1)设定为1,则只要INT0引脚的信号由高电平转为低电平,则视为外部中断需求。
这些中断需求将反映在IE0(IE1)里,若IE寄存器的EX0(或EX1)=1,且EA=1,CPU则进入我们设定好的中断程序。
IE 中断启用寄存器IE7 IE6 IE5 IE4 IE3 IE2 IE1 IE0EA ------ ------- ES ET1 EX1 ET0 EX0显示单路部分,因为要求使用8LED数码管显示电路,所以只用对数码管分别送入数据信号和扫描信号即可。
显示原理如图所示所以利用8255分别写入数据和扫描信号既可以是其产生所要显示的内容。
8255的控制字的设置也有不少问题需要解决,需要对8255A进行控制字的写入根据设计的电路我设计的控制字为D8255=0x80;设定的各端口的地址为#define A8255 XBYTE[0xfff0]#define B8255 XBYTE[0xfff1]#define C8255 XBYTE[0xfff2]#define D8255 XBYTE[0xfff3]四、设计思路及设计流程图基本上可以分为三个阶段,第一阶段为读取外部指令,为测量频率,测量周期,测量脉宽。
我采用了P1端口的P1.0,P1.1P1.2三个管脚来作为外部指令的输入方式。
主程序流程图测量函数部分我使用的是利用外部中断INT0管脚输入信号,设置为负边沿触发,利用此来触发外部中断子程序void EX_INT0() interrupt 0。
同时计时器开始0.05s的计时程序,当计时次数满二十次的情况是正好满1S则锁存实验所得数据然后送进显示电路进行显示。
中断程序部分为:void EX_INT0() interrupt 0{countA++;}若要做的便是将CountA的数值在计时中断满二十次时进行锁存而后输出即可显示函数频率测量函数流程图因为测量数据分为测量周期还有测量脉宽等部分,对于周期测量我是对测量的频率值进行了一定的内部处理利用周期=1/频率这一特性进行的计算。
对于脉宽的测量也是建立在这一基础之上。
发生程序我嵌套在主程序中的扫描函数当中,当对主程序进行循环的是时候如果检测到有按键操作则启动发生程序void Play(char t){char i;for(i=0;i<120;i++){BEEP = ~BEEP;delay(t);}BEEP =0;}五、实验成品通过protues进行仿真程序,连接各电路,下图为运行后的初始画面程序共有三个外部按键,从上往下依次为频率,周期,脉宽。
以下分别为设定外部输入信号为1kHz的周期信号,所得到的实验画面此图为按下第二个按键的效果最后两个字符为us的意思,周期为1000us 此图为按下第三个按键后的效果图脉宽为500us六、实验代码#include<reg51.h>#include<absacc.h>//******定义8255控制端口以及ABC端口的地址#define A8255 XBYTE[0xfff0]#define B8255 XBYTE[0xfff1]#define C8255 XBYTE[0xfff2]#define D8255 XBYTE[0xfff3]#define uchar unsinged char#define uint unsigned int//*******输入按键操作********sbit PB0=P1^0;sbit PB1=P1^1;sbit PB2=P1^2;sbit BEEP=P3^0;char disbuffer[8]={0,1,2,3,4,5,6,7};char TAB[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,}; //0x83改为0x82修正了数字6的显示问题char chocode[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//char chocode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};char codevalue[8]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};//最初没有取反,后来前后次序乱使数据原本为12345678变为87654321 #define count_M1 50000#define H_0 (65636-count_M1)/256#define L_0 (65636-count_M1)%256char times=0;bit status_F=1;//char scan =1;unsigned long int freq =11;unsigned long int time=0;unsigned long int countA=0;unsigned long int mk=0; //设计处为短型,所以导致程序运行不正常sfr16 DPTR = 0x82;void delay(int);void display(void); //显示函数;void measureA(void);void measureTT(void);void measureMK(void);//*******延迟函数******void delay(int x){ int i;int j;for(i=0;i<x;i++)for(j=0;j<120;j++);}//*********发声程序********* 奇怪的现象,当T0 接输入时,喇叭会自动的响void Play(char t){char i;for(i=0;i<120;i++){BEEP = ~BEEP;delay(t);}BEEP =0;}//测量频率主函数main(){ P1=0xff;//设定P1端口的初始值防止外部干扰D8255=0x80;while(1){if(PB0==0){ Play(1);status_F=0;measureA();while(status_F==0);}if(PB1==0){ Play(2);status_F=0;measureA();while(status_F==0);measureTT();}if(PB2==0){ Play(3);status_F=0;measureA();while(status_F==0);measureMK();}else display();}}//测频率使用外部中断void measureA(void){IE=0x8f;TMOD=0x51;TH0=H_0;TL0=L_0;countA=0;IT1=1;IT0=1;PX0=1;TR0=1;TR1=0;}//************外部中断int0****计时程序*** void EX_INT0() interrupt 0{countA++;//display();}//********T0一秒时间中断************** void T0_1S(void) interrupt 1{ TH0=H_0;TL0=L_0;if(++times==20){ times=0;TR1=0;TR0=0;//DPL=TL1;DPH=TH1;freq=countA;codevalue[7]=TAB[freq/10000000];codevalue[6]=TAB[(freq/1000000)%10];codevalue[5]=TAB[(freq/100000)%10];codevalue[4]=TAB[(freq/10000)%10];codevalue[3]=TAB[(freq/1000)%10];codevalue[2]=TAB[(freq/100)%10];codevalue[1]=TAB[(freq/10)%10];codevalue[0]=TAB[(freq%10)];status_F=1;}}//**********测量周期************void measureTT(void){ time=1000000/freq;codevalue[1]=0xc1;codevalue[0]=TAB[5];codevalue[7]=TAB[(time/100000)%10];codevalue[6]=TAB[(time/10000)%10];codevalue[5]=TAB[(time/1000)%10];codevalue[4]=TAB[(time/100)%10];codevalue[3]=TAB[(time/10)%10];codevalue[2]=TAB[(time%10)];}//*******测量脉宽*******void measureMK(void){ mk=500000/freq;codevalue[1]=0xc1;codevalue[0]=TAB[5];codevalue[7]=TAB[(mk/100000)%10];codevalue[6]=TAB[(mk/10000)%10];codevalue[5]=TAB[(mk/1000)%10];codevalue[4]=TAB[(mk/100)%10];codevalue[3]=TAB[(mk/10)%10];codevalue[2]=TAB[(mk%10)];}void display(void){char i,p,temp;if(codevalue[7]==TAB[0])//不能拿codevalue直接和0xc0进行比较因为类型不同所以不能比较儿赋值的时候则不同!!!{codevalue[7]=0xff;if(codevalue[6]==TAB[0]){codevalue[6]=0xff;if(codevalue[5]==TAB[0]){codevalue[5]=0xff;if(codevalue[4]==TAB[0]){codevalue[4]=0xff;if(codevalue[3]==TAB[0]){codevalue[3]=0xff;if(codevalue[2]==TAB[0]){codevalue[2]=0xff;if(codevalue[1]==TAB[0]){codevalue[1]=0xff;if(codevalue[0]==TAB[0]){codevalue[0]=0xc0;}}}}}}}}for (i=0;i<8;i++){p=disbuffer[i];temp=chocode[p];B8255=~temp;temp=codevalue[p];A8255=temp;//delay(1); //多余的延时程序temp=chocode[i];B8255=~temp;delay(1);}}七、实验体会和意见在实验过程中遇到了很多很多的问题,刚开始拿到这个实验题目的时候基于8255的8Led的数显频率计,首先想到的8255是什么东西,想起8255是大二时的前续课程中《微机原理》中所讲过一章的内容中有所提及,8255为并口扩展芯片,可以编程,共有多种写入方式。