资料编号:008
百度云盘下载链接:https://pan.baidu.com/s/1VT9G20qMpy8H2pdrQNGg6g?pwd=iqf6
更多资源下载链接: 资料合集
硬件构成:单片机+最小系统+LCD1602液晶显示模块+NE555模块+电位器调节模块+按键模块
本设计基于STC89C51/52与AT89S51/52、AT89C51/52程序通用,可任选单片机!
-
1.采用LCD1602液晶显示频率值,测量范围0~500KHZ(理论上500KHZ,实际480KHZ左右)。
-
2.配有鳄鱼夹,可以测量方波的频率。拨动开关,也可以测NE555产生的频率,通过电位器调节频率值的大小。
sbit LCD_RS=P1^0; //片选信号
sbit LCD_RW=P1^1; //读写信号
sbit LCD_E=P1^2; //使能信号
#define LCD_DB P0 //数据信号
unsigned char character[10]={0};//在屏幕上显示的字符串
unsigned char character_1[]={"fre= Hz"};
unsigned char FLAG = 0; //是否分频选择标志
void LCD_init(void);//初始化函数
void LCD_write_command(unsigned char command);//写指令函数
void LCD_write_data(unsigned char dat);//写数据函数
void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat);//在某个屏幕位置上显示一个字符,X(0-15),y(1-2)
void delay_n40us(unsigned int n);//延时函数
void timer_init(); //中断初始化函数
//-----------------------------延时函数---------------------------
void delay_n40us(unsigned int n) //延时函数
{
unsigned int i;
unsigned char j;
for(i=n;i>0;i--)
for(j=0;j<2;j++);
}
void delay_1s()
{
unsigned int i,j;
for(i = 0;i<100;i++)
for(j = 0;j<1000;j++);
}
//---------------------lcd1602液晶显示函数--------------------
void LCD_init(void) //液晶初始化函数
{
LCD_write_command(0x38);//设置8位格式,2行,5x7
LCD_write_command(0x38);//设置8位格式,2行,5x7
LCD_write_command(0x38);//设置8位格式,2行,5x7
LCD_write_command(0x0c);//整体显示,关光标,不闪烁
LCD_write_command(0x06);//设定输入方式,增量不移位
LCD_write_command(0x01);//清除屏幕显示
delay_n40us(100);//清屏延时
}
void LCD_write_command(unsigned char dat) //写命令函数
{
LCD_DB=dat;
LCD_RS=0;//指令
LCD_RW=0;//写入
LCD_E=1; //使能
LCD_E=0;
delay_n40us(1);//写命令延时
}
void LCD_write_data(unsigned char dat) //写数据函数
{
LCD_DB=dat;
LCD_RS=1;//数据
LCD_RW=0;//写入
LCD_E=1;//使能
LCD_E=0;
delay_n40us(1); //写数据延时
}
void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat)//显示一个字符
{
unsigned char address;
if(y==1)
address=0x80+x; //显示在第一排的时候的x的地址
else
address=0xc0+x; //显示在第二排的时候的x的地址
LCD_write_command(address); //输入地址
LCD_write_data(dat); //输入数据
}
void LCD_disp_num(unsigned char x,unsigned char y,unsigned char dat)//显示一个数字
{
unsigned char address;
if(y==1)
address=0x80+x; //显示在第一排的时候的x的地址
else
address=0xc0+x; //显示在第二排的时候的x的地址
LCD_write_command(address); //输入地址
LCD_write_data(dat+48); //输入数据
}
百度云盘下载链接:https://pan.baidu.com/s/1VT9G20qMpy8H2pdrQNGg6g?pwd=iqf6
更多资源下载链接: 资料合集



