• 基于51单片机数字频率计的设计


    目录
    前 言 1
    第一章 总体设计方案 2
    1.1 总设计框图 2
    1.2 硬件设计分析 2
    1.2.1 电源的设计 2
    (4):LCD1602的指令说明及时序 10
    (5): LCD1602的RAM地址映射及标准字库表 13
    第二章 软件设计与分析 15
    2.1 软件设计的组成 15
    2.2 各部分软件分析 15
    2.2.1 定时器0中断子函数 15
    2.2.2 定时器1中断子函数 15
    2.2.3 主函数 16
    2.3 总源程序 18
    第三章 软件介绍 28
    3.1 PROTEUS简介 28
    3.2 PROTEL 99 SE简介 29
    3.2.1 电路工程设计部分 29
    3.2.2 电路仿真与PLD部分 30
    3.3 Protel 99 SE的功能特性 30
    3.4 Protel99SE快捷键大全 30
    3.6仿真图 36
    3.7原理图 37
    第四章 减小误差措施及扩展方面 39
    4.1减小误差措施 39
    4.2扩展方面 39
    (1)预处理电路部分 39
    (2)增加电源部分 39
    4.3 功能上的完善 40
    4.3.1 增加键盘控制 40
    4.3.2 实现自动量程转换 40
    4.3.3 液晶显示器(LCD)进行数据的显示 41
    总结 42
    致谢词 43
    参考文献 44
    第二章 软件设计与分析
    2.1 软件设计的组成
    该系统由定时器0中断子函数、定时器1中断子函数、主函数和数据定义这几部分组成。
    2.2 各部分软件分析
    2.2.1 定时器0中断子函数
    void t0() interrupt 1 using 1
    {

    }
    2.2.2 定时器1中断子函数

    void t1() interrupt 3 using 3//定时器T1中断服务程序
    {	  
    	if(num==3999)
    	{
    		GATE=0;
    		TR0=0;
    		TR1=0;
    		aaa=TH0*256+TL0;
    		bbb=P1;
    		d=c/100.0;
    		c=0;
    		e=f;
    		f=1;
    		CLR=1;
    		CLR=0;
    		TH0=0x00;	
    		TL0=0x00;
    		TH1=0x06;
    		TL1=0x06;
    		num=0;
    		GATE=1;
    		TR0=1;
    		TR1=1;
    	}
    	else 
    		num++;
    }
    2.2.3  主函数
    void main()//主函数
    {	 
    	unsigned long a=0;
    	bit b=0;
    	uchar tab[10];
    	uint temp=0;
    	LCD_init();
    	init();
    	LCD_sfj1(0,0);
    	LCD_print("Welcome to use ");
    	LCD_sfj1(0,1);
    	LCD_print("Please Wating...");
    	delay3();
    	LCD_write(0,0x01); 
    	while(1)
    	{
    		if(K1==0)
    		{	
    			delay2(10);
    			if(K1==0)	
    			{
    				while(K1==0);
    				b=~b;
    				LCD_write(0,0x01); 
    			}
    		}
    		temp=fenjie(0);
    		if(temp>c)
    		c=temp; 
    		if(temp>c>>3&&temp<c>>1) 
    			f=0;
    		if(b==0)
    		{
    			a=(aaa*256)+bbb;
    			if(a==0)
    			{
    				LCD_sfj1(0,0);
    				LCD_print("F= 0000000000 Hz");	
    				LCD_sfj1(0,1);
    				LCD_print("F= 0000000000 Hz"); 	
    			}
    			else
    			{		
    				LCD_sfj1(0,0);
    				LCD_print("F=            Hz");
    				sprintf(tab,"%ld",a);
    				LCD_sfj1(2,0);LCD_print(tab);
    				LCD_sfj1(0,1);
    				LCD_print("P=            ms");
    				sprintf(tab,"%0.6f",1000.0/a);
    				LCD_sfj1(2,1);
    				LCD_print(tab);	
    			} 
    		}
    		else
    		{   
    			sprintf(tab,"%bd",e);
    			LCD_sfj1(0,0);
    			LCD_print(tab);
    			sprintf(tab,"Upp=%0.3fV",d);
    			LCD_sfj1(0,1);
    			LCD_print(tab);
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    线程的基本操作
    【算法系列专栏介绍】
    洛谷算法记录-P1013
    智慧电力平台打造无人值守配电房、变电所
    计算机毕业设计Java钢材出入库管理系统(源码+系统+mysql数据库+lw文档)
    【无标题】
    SQL 行列转换
    地形系统-unity3D地形的生成原理和地形表面贴图的混刷原理
    【vue项目适配可借助于插件lib-flexible 和postcss-px2rem】
    LaTex编写伪代码,并实现根据所在章编号(连字符),例如算法1-1
  • 原文地址:https://blog.csdn.net/newlw/article/details/128061584