资源简介
单片机课程设计自己做的频率计,可以在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船用螺旋桨 图谱
相关资源
- 基于51单片机的自动门系统.zip
- 51单片机入门常用函数
- 基于51单片机温控风扇
- 加湿器源码
- 51单片机的电机测速
- 基于51单片机的数字频率计及proteus仿
- 51单片机开发板原理图经典
- 51单片机控制TC35 之发送TEXT短信
- 51单片机正弦波C程序
- 这是普中科技51单片机原理图
- 基于51单片机红绿灯程序设计
- 51单片机实现交通灯系统模拟
- 信号发生器 8038 51单片机
- 51单片机多机通信类IIC方式
- 彼岸之光 倒计时牌51单片机课程设计
- 1602 基于89C51单片机的DS18B20恒温控制系
- 51单片机 的交通灯仿真与原理图
- 基于C51单片机的交通灯开发
- 51单片机+CS5460+12864液晶的单相电能表
- 51单片机12864坦克大战游戏(仿真+程序
- 89C52单片机通过LCD1602显示任意长度字
- 基于51单片机蓝牙遥控小车程序
- DSP2812的LCD1602显示程序
- STC12C5A60S2内部AD+LCD1602显示
- 51单片机彩灯控制器的设计(仿真图、
- DAC0832产生三种波形DDS信号产生(测试
- DHT11的51单片机驱动
- 51单片机多功能电压-电流表测量系统
- 组态王与51单片机通讯程序
- 51单片机Proteus仿真320x240TFT彩屏.rar
评论
共有 条评论