标题:
单片机频率计仿真图与源程序(带详细注释)
[打印本页]
作者:
shane1212
时间:
2018-6-10 18:22
标题:
单片机频率计仿真图与源程序(带详细注释)
各种找资料,花了三天时间弄出来的东西,有源程序
单片机频率计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(32.46 KB, 下载次数: 30)
下载附件
2018-6-11 05:06 上传
0.png
(50.62 KB, 下载次数: 27)
下载附件
2018-6-11 05:07 上传
带详细注释的单片机源码如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^0; //数据/命令寄存器选择控制端
sbit RW=P2^1; //读写控制端
sbit E=P2^2; //使能控制端
sfr LCD=0x90; //P1口作为总线端口
sbit BF=LCD^7; //就绪线BF,低电平有效
void lcd_cmd(uchar cmd)
{ LCD=cmd;
RS=0;//选择命令寄存器
RW=0;//执行写数据操作
E=1;
_nop_();//延时
E=0; //使能信号有效
while(1)
{LCD=0xff;//总线变高
RS=0; //选择命令寄存器
RW=1;//读操作
E=0; //使能信号有效
_nop_();
E=1; //撤销使能信号
if(BF==0)break; //如果就绪,返回
}
}
void lcd_dat(uchar dat)
{
LCD=dat;//显示数据总线
RS=1;//选择数据寄存器
RW=0;//执行写数据操作
E=1;
_nop_();//延时
E=0; //使能信号有效
while(1)
{LCD=0xff;//总线变高
RS=0; //选择命令寄存器
RW=1;//读操作
E=0; //使能信号有效
_nop_();
E=1; //撤销使能信号
if(BF==0)break; //如果就绪,返回
dat=LCD;
}
}
void init_lcd(void)//初始化液晶屏
{
lcd_cmd(0x01); //清屏幕
lcd_cmd(0x3c); //设置双行显示,5*10点阵
lcd_cmd(0x0c); //开显示,关闭光标
}
void disp_str(uchar x,uchar y,uchar *p) //在x行、y列显示字符串p
{
if(x==0) //如果在第一行显示
lcd_cmd(0x80+y); //设置写入地址
else //如果在第二行显示
lcd_cmd(0xc0+y);//设置写入地址
while(*p) //将字符依次发送到液晶屏
lcd_dat(*p++);
}
复制代码
全部资料51hei下载地址:
pinlvji1.rar
(45.24 KB, 下载次数: 110)
2018-6-10 18:22 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
limuzi0916
时间:
2020-1-14 11:20
怎样才可以下载啊
作者:
Melody.点
时间:
2020-4-5 14:32
这个频率测量用的什么方法?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1