资源简介
单片机课程设计自己做的频率计,可以在1602显示占空比和频率,已经通过老师答辩,频率误差在万分之5。

代码片段和文件信息
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit FreIn = P3^4;//P3.4口输入方波
uint time=0cnt=0;
unsigned long fre = 0qt1t2;
uchar code date[]=“t1= t2= “;
uchar code freq[]=“f= q= % “;
void clock_init()
{
uchar ij;
for(i=0;i<16;i++)
{
write_data(date[i]);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_data(freq[j]);
}
}
void Timer_Ini()
{
TMOD = 0x15;
TH1 = 0x4c;
TL1 = 0x00;
TH0 = 0x00;
TL0 = 0x00;
ET0 =1;
ET1 = 1;
EA = 1;
}
void fre_write( uint f)
{
uchar a[6];
uint i;
a[0]=f/100000;
a[1]=(f/10000)%10;
a[2]=(f/1000)%10;
a[3]=(f/100)%10;
a[4]=(f/10)%10;
a[5]=f%10;
write_com(0x80+0x42); //数据指针位置调整
for(i=0;i<6;i++)
{
write_data(0x30+a[i]);
}
}
void q_write( unsigned long q )
{
uchar b[2];
uint i;
b[0]=(q/10)%10;
b[1]=q%10;
write_com(0x80+0x4B); //数据指针位置调整
for(i=0;i<2;i++)
{
write_data(0x30+b[i]);
}
}
void t1_write(unsigned long t1)
{
uchar c[3];
uint i;
c[0]=t1/100;
c[1]=(t1/10)%10;
c[2]=t1%10;
write_com(0x80+0x03); //数据指针位置调整
for(i=0;i<3;i++)
{
write_data(0x30+c[i]);
}
}
void t2_write(unsigned long t2)
{
uchar d[3];
uint i;
d[0]=t2/100;
d[1]=(t2/10)%10;
d[2]=t2%10;
write_com(0x80+0x0A); //数据指针位置调整
for(i=0;i<3;i++)
{
write_data(0x30+d[i]);
}
}
void main()
{
init1602();
clock_init();
Timer_Ini();
while(FreIn==1);
while(FreIn==0);
TR1 = 1;
TR0 = 1;
while(1)
{
if(time==20)
{
while(FreIn==1);
while(FreIn==0);
TR1 = 0;
TR0 = 0;
fre = TH0*256 + TL0 + cnt*65536;
fre_write(fre);
TH1 = 0x00;
TL1 = 0x00;
while(FreIn==1);
while(FreIn==0);
TR1 = 1;
while(FreIn==1);
t1=TH1*256 + TL1;
while(FreIn==0);
t2=TH1*256 + TL1;
TR1=0;
t1_write(t1); //一个周期中高电平所占时间
t2_write(t2); //一个周期
q=t1*100/t2;
q_write(q);
time = 0;
cnt = 0;
TH0 = 0x00;
TL0 = 0x00;
TH1 = 0x4c;
TL1 = 0x00;
while(FreIn==1);
while(FreIn==0);
TR0=1;
TR1=1;
}
}
}
void T0_Ser() interrupt 1
{
cnt++;
}
void T1_Ser() interrupt 3
{
time++;
TH1 = 0x4c;
TL1 = 0x00;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12038 2018-06-11 19:06 FreTest\FreTest
文件 1063 2018-06-11 19:06 FreTest\FreTest.build_log.htm
文件 2418 2018-06-11 19:06 FreTest\FreTest.c
文件 4782 2018-06-11 19:06 FreTest\FreTest.hex
文件 31 2018-06-11 19:06 FreTest\FreTest.lnp
文件 5744 2018-06-11 19:06 FreTest\FreTest.LST
文件 16631 2018-06-11 19:06 FreTest\FreTest.M51
文件 14100 2018-06-11 19:06 FreTest\FreTest.OBJ
文件 4918 2016-07-07 09:55 FreTest\FreTest.plg
文件 167131 2018-06-11 19:06 FreTest\FreTest.uvgui.Administrator
文件 5414 2018-05-31 23:01 FreTest\FreTest.uvopt
文件 13847 2018-06-07 20:27 FreTest\FreTest.uvproj
文件 0 2016-07-07 08:40 FreTest\FreTest_uvproj.bak
文件 979 2018-06-07 20:23 FreTest\lcd1602.h
- 上一篇:SPI协议Verilog实现
- 下一篇:MAU 4-55船用螺旋桨 图谱
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- [免费]msp430f149控制PS2键盘并用1602显示
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- vhdl与lcd1602实现的多控制电子钟
- ADC0809数字电压表 LCD1602显示 汇编程序
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 一个适用的虚拟声卡频率计
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
评论
共有 条评论