LCD显示的c51单片机频率计

发布者:lcn18560863680最新更新时间:2016-10-20 来源: eefocus关键字:LCD显示  c51单片机  频率计 手机看文章 扫描二维码
随时随地手机看文章
课程设计题目:LCD显示的单片机频率计

课程设计任务及要求:

任务:用单片机的定时器/计数器测量外部脉冲的频率,并使用LCD1602显示结果。

要求:频率范围为1Hz~500KHz,精度为±1Hz。

LCD显示的单片机频率计

一 课题目标

本课题是用51系列单片机来实现频率计,并利用LCD1602液晶显示器来显示所测频率值。

二 课题分析

LCD频率计是利用十进制数字显示被测信号频率的数字测量仪器。根据定义,频率就是在1s内信号变化的周期数。在一个单片机系统中,对频率的测量就是要对外部信号的计数,每到1s,将计数所得的数值送到显示器上。在这里,我们重要是学习和掌握如何使用LCD1602液晶显示器来显示所测频率。这里要求实现对0~200kHz的信号频率进行准确测量,测量误差不超过±1Hz。频率计的功能是测出1s、对输入的脉冲计数和数字显示的硬件电路及相应的程序。实验原理图如下:LCD显示的c51单片机频率计 - 文俊 - 文俊的博客

 

三 实验元件及器材:

 一个AT89S52、一个发光二极管、一个1602液晶显示器、一个1K电阻、一个10K电阻、两个20pF电容、一个1uF电容、下载线插座、一个按键开关、一个晶振、若干导线。         

  

四 硬件电路设计及描述:

 

五 软件设计流程及描述:

#include

#define uchar unsigned char

uchar disp[];

uchar T0count, T1count;

void display()

{

 uchar i,j,k;

 uchar code dispcode[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};

 for(i=0;i<8;i++)

  {

   P2=0;

   P0=dispcode[disp[i]];

   P2=k;

     for(j=250;j>0;j--);

     k=k>>1;

  }

 P2=0;

}

#define LINE1           0

#define LINE2           1

#define LINE1_HEAD      0x80

#define LINE2_HEAD      0xC0

#define LCD_DELAY_TIME  40

#define DATA_MODE       0x38

#define OPEN_SCREEN     0x0C

#define DISPLAY_ADDRESS 0x80

#define CLEARSCREEN     LCD_en_command(0x01)

 

#define HIGH     1

#define LOW      0

#define TRUE     1

#define FALSE    0

#define MSB      0x80

#define LSB      0x01

 

#define  LCDIO   P2

sbit LCD1602_RS=P1^1;

sbit LCD1602_RW=P1^2;

sbit LCD1602_EN=P1^3;

 

#define LCDIO_delay(void);

void LCD_en_command(uchar command);

void LCD_en_dat(uchar temp);

void LCD_set_xy(uchar x, uchar y);

void LCD_write_char(uchar x,uchary,uchar dat);

void LCD_write_string(uchar X,uchar Y,uchar *s);

void LCD_init(void);

void delay_nms(unsigned int n);

 

void LCD_delay(void)

{

unsigned char i;

for(i=LCD_DELAY_TIME;i>0;i--){;}

}

 

void LCD_en_command(unsigned char command)

{

LCDIO=command;

LCD1602_RS=LOW;

LCD1602_RW=LOW;

LCD1602_EN=LOW;

LCD_delay();

LCD1602_EN=HIGH;

}

 

void LCD_en_dat(unsigned char dat)

{

LCDIO=dat;

LCD1602_RS=HIGH;

LCD1602_RW=LOW;

LCD1602_EN=LOW;

LCD_delay();

LCD1602_EN=HIGH;

}

 

void LCD_set_xy(uchar x, uchar y)

{

unsigned char address;

if (y== LINE1)

     address= LINE1_HEAD+x;

   else

     address= LINE2_HEAD+x;

LCD_en_command(address);

}

 

void LCD_write_char( uchar x,uchar y,uchar dat)

{

 LCD_set_xy( x,y );

 LCD_en_dat(dat);

}

 

void LCD_write_string(uchar X,uchar Y,uchar *s)

{

     LCD_set_xy( X,Y );

     while(*s)

     {

         LCD_en_dat(*s);

         s++;

      }

}

 

void LCD_init(void)

{

CLEARSCREEN;

LCD_en_command(DATA_MODE);

LCD_en_command(OPEN_SCREEN);

LCD_en_command(DISPLAY_ADDRESS);

CLEARSCREEN;

delay_nms(40);

}

 

void delay_nms(unsigned int n)

{

     unsigned int i;

     unsigned char j;

     for(i=n;i>0;i--)

     {for (j=250;j>0;j--);

  for(j=250;j>0;j--); }

}

 

void main(void)

{

   uchar string[]="0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09";

   uchar i,k;

   delay_nms(400);

   LCD_init();

   LCD_write_string(3,LINE1,"Char left");

   while(1)

     {

       LCD_write_string(0,LINE2,string);

       delay_nms(1000);

 

       k=string[0];

       for(i=0;i<16;i++)

          {

          string[i]=string[i+1];

          }

       string[i]=k;

     }

}

void init()

{

 T0count=0;

 T1count=0;

 TH0=0;

 TL0=0;

}

void main()

{

 init();

 TMOD=0X15;

 TH1=(65536-5*120000/12)/256;

 TL1=(65536-5*120000/12)%256;

 ET1=1;

 ET0=1;

 EA=1;

 TR1=1;

 TR0=1;

 T2MOD=0X2;

 RCAP2H=245;

 RCAP2L=74;

 TR2=1;

 

 while(1)

  {

    display();

  }

}

 

void time0()interrupt 1

{

 T0count++;

}

void time1()interrupt 3

{

  TH1=(65536-5*120000/12)/256;

  TL1=(65536-5*120000/12)%256;

  if(T1count==19)

    {

     calc();

     init();

    }

  else T1count++;

}

五 源程序及代码:

 

六 思考与讨论:

通过这次单片机的实训,使我们增进了对单片机的感性认识,使我们掌握了频率计的内部功能模块的应用,了解和掌握了单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。进一步加强综合应用能力及单片机应用系统开发和设计能力的训练。

关键字:LCD显示  c51单片机  频率计 引用地址:LCD显示的c51单片机频率计

上一篇:AT89S52抢答器程序
下一篇:AT89S52交通灯程序

推荐阅读最新更新时间:2024-03-16 15:16

S3c2440的LCD显示项目详解
一、原理 LCD屏幕上如何显示? 电子枪打到上面显示。 电子枪如何移动? 每过一个CLK移动一次。 颜色如何确定? 由电子枪给的RGB确定。 RGB数据从哪里来? 电子枪从内存的framebuff内存里取数据来打。 电子枪如何得知跳到下一行? 有专门的换行脉冲来操作。 看下面这张图片: 先看左右,两侧都有黑框,右侧的黑框前还有换行脉冲的宽度,上下同理,上面也有换行脉冲的宽度。 如下图,左边是内存,右边是控制器内部,我们的目的就是要通过控制LCD控制器的寄存器,让他发出合适的时序,实现数据的传输。 二、编程 1.编程框架 编程框架如下: 从下往上编程,先写LCD控制器,控制调用两类LCD,然后写两个LCD的寄存器配置
[单片机]
C51单片机对抽油机的智能功率控制电路设计
为了实现抽油机能自动根据负载需要实时进行Δ/Y双向切换和间歇定时控制的目标,采用嵌入式控制技术设计了如图1所示的控制电路。 智能功率控制器的硬件系统以新华龙电子公司为C8051F206配套的实验板为基础,新增输出电路和键盘显示电路后形成。直接利用实验板上的C8051F206MCU、JTAG接口、晶振、复位及电源电路,大大降低了硬件设计工作量。 (1)输出电路 本系统的被控对象是电机的开关。为满足星角切换和开机/停机要求,需要对3只交流接触器(C1~C3)按一定组合关系进行控制,其电路原理和控制真值表如图2(a)和图2(b)所示。考虑到现场抗干扰的需要,在输出端口P0.1,P0.3和P0.5后采用了光电隔离电路(图2(c)),其
[单片机]
<font color='red'>C51单片机</font>对抽油机的智能功率控制电路设计
C51单片机学习笔记(二)——花样流水灯的实现
1.单片机引脚、晶振、复位的作用 复位电路:,复位是单片机的初始化操作。单片机启动时都需要先付薇,其作用是“清零”,也就是CPU和其他部件处于一个确定的初始状态,并从这个初始状态开始。 复位实质上是单片机的复位脚保持很短时间的高电平,按键复位就是通过按键接高电平(按一下的时间已经足够) 时钟电路(晶振):产生时间信号,使单片机按照一定的时间规律进行指令,晶振频率越高,时钟信号的周期就小,单片机运行也就越快。 32个I/O口 P1.0 ~ P1.7 对应1 ~ 8 号引脚 P2.0 ~ P2.7 对应21 ~ 28 号引脚 P3.0 ~ P3.7 对应10 ~ 17 号引脚 P0.0 ~ P0.7 对应39
[单片机]
<font color='red'>C51单片机</font>学习笔记(二)——花样流水灯的实现
基于AT89C51单片机的数据采集系统设计新方法
引言 近年来,随着制造技术的发展,单片机的价格越来越低,性能却不断提升,因而其应用范围也越来越广。然而在开发基于单片机的应用系统时,传统方法一般都需要大量的硬件设备,这些设备极易损坏而且携带不方便。为此,本文基于AT89C51数据采集系统详细说明了如何利用Pro-teus和两款串口仿真软件来进行单片机程序及外围电路的仿真设计。采用该方法可以大大简化硬件电路测试和系统调试过程,对单片机系统开发具有指导意义。本文介绍的基于AT89C5l单片机的数据采集系统能实现16路信号输入,每一路都是0~10 mV的信号,每秒钟采集一遍,从而将数据传给上位PC计算机。 1 硬件设计 1.1 主控芯片 AT89C51是一种带有4 KB闪烁可编
[单片机]
基于AT89<font color='red'>C51单片机</font>的数据采集系统设计新方法
采用AT89C51单片机和温度变送器实现炉温控制系统的设计
1、引 言 电加热炉随着科学技术的发展和工业生产水平的提高,已经在冶金、化工、机械等各类工业控制中得到了广泛应用,并且在国民经济中占有举足轻重的地位。对于这样一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象,很难用数学方法建立精确的数学模型,因此用传统的控制理论和方法很难达到好的控制效果。 单片机以其高可靠性、高性能价格比、控制方便简单和灵活性大等优点,在工业控制系统、智能化仪器仪表等诸多领域得到广泛应用。采用单片机进行炉温控制,可以提高控制质量和自动化水平。 2、单片机炉温控制系统结构 本系统的单片机炉温控制系统结构主要由单片机控制器、可控硅输出部分、热电偶传感器、温度变送器以及被控对象组成。如图1所示
[单片机]
采用AT89<font color='red'>C51单片机</font>和温度变送器实现炉温控制系统的设计
基于AT89C51单片机的恒温控制系统设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602显示+DS18B20测温+蜂鸣器报警+按键+风扇降温+小灯。 系统内使用AT89C51单片机作为主控,使用LCD1602显示采集到的温度数据和温度阈值,通过按键可以设定阈值,当检测到环境温度大于设定阈值时蜂鸣器就会进行报警,并且会通过风扇进行降温,当检测到环境温度低于设定阈值时加热小灯就会亮起。 二.仿真概述 1.LCD1602显示检测到的温度和温度阈值。 2.通过DS18B20温度传感器检测环境温度。 3.当温度低于阈值则通过加热小灯进行加热。 4.当温度高于阈值则通过蜂鸣器报警,并利用风扇进行降温。 三.程序设计 使用Keil 51进行
[单片机]
基于AT89<font color='red'>C51单片机</font>的恒温控制系统设计
用PIC16C54单片机制作简易AM频率计
目前,市面上有许多AM调幅的无线电控制产品,如汽车防盗器、玩具等。它们的遥控器发射电路大多采用LC振荡电路,容易发生频偏,影响遥控距离及操作。如欲对其进行检查或调整则需用频谱仪。频谱仪昂贵、笨重,仅适合于实验室使用。下面介绍的电路可检测AM频率超过900MHz,不但便宜,而且可制成掌上型,易于携带。 图1为一般AM遥控器发射之波形图(假设信号高电位为1,低电位为0),经载波调幅后由天线发射。 图2为频率计主要电路,由PIC16C54单片机控制计数。VCC为5V,可由12V或9V电池经7805稳压得到。接收天线用电路板上铜箔所形成的环形天线。R1、C1、R5用于调整接收灵敏度,一般来说灵敏度不需太高,以降低干扰的影响。无
[单片机]
用PIC16C54单片机制作简易AM<font color='red'>频率计</font>
08年洗礼 中国LCD显示器市场酝酿洗牌
2008年是中国LCD自有品牌显示器市场十分艰难的一年,无论厂商还是渠道都承受着巨大压力,价格一降再降,市场酝酿洗牌。 2008年前三季度,中国显示器自有品牌市场呈现同比下降局面,销量达926.9万台,同比下降5.5%。其中LCD销量为848.6万台,同比增长13.2%。从LCD的尺寸别分布可以看到,19 LCD的比例达到62.5%,引领LCD市场。19 LCD和大于19 LCD的销售构成中,宽屏液晶占据绝对主流;19 LCD中宽屏销售比重达90.2%;大于19 LCD中宽屏销售比重达97.2%。 2008年前三季度中国自有品牌显示器市场结构 2008年中国LCD显示器自有品牌的主流尺寸分别:19英寸
[焦点新闻]
08年洗礼 中国<font color='red'>LCD显示</font>器市场酝酿洗牌
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved