脉冲计数器 - 范文中心

脉冲计数器

03/16

脉冲计数器

实验成员:吴敏、马文铂

指导老师:王磊老师

参看文献:51单片机C 语言编程(电子工业出版社 郭天祥主编)

实验原理:

单片机外部中断,是由低电平触发,由此可以给方波脉冲

计数,同时,可以通过控制键盘输入来给计数设置一个基数,基数、

脉冲数都可以通过液晶显示出来,达到脉冲计数的目的。

实验步骤:

1) 通过键盘输入,在液晶上显示输入的值,液晶输入分

为写命令和写数据两步。

2) 通过检测外部中断端口,检测低电平,继而给外部脉

冲计数。同时把脉冲计数值放在一个变量里。

3) 同过定时器定时,当时间达到1秒时,把脉冲计数值

显示出来,同时把存放脉冲的变量清零。

4) 把脉冲值和通过键盘输入的计数相乘,把结果显示在

液晶显示屏上

实验中所遇到的问题:

1) 我先通过外部按键来控制外部中断的输入,这就存在

一个按键检测延时的问题,而脉冲的频率很大,每次

的延时检测都会使程序一直呆在中断里面而计数器

不工作,所以液晶上也就一直不会显示脉冲的个数。

2) 外部信号发生器,我一开始是接的50欧的脉冲发生

器,而这个信号发生器是需要一定的工作电阻的,所

以液晶显示结果与信号发生器上的频率不符。

3) 当我改为TTL 脉冲发生器时,液晶显示结果还是与信

号发生器上的不符,检查发现是由于信号发生器一段

没有接地,也就是单片机与信号发生器没有共地。共

地之后,液晶显示结果与信号发生器上的频率完全相

符合,实验成功。

程 序:

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};

uint Count = 0;

uchar x = 0;

sbit KEY = P3^2

sbit E=P2^7;

sbit RW=P2^6;

sbit RS=P2^5;

void Delay_1ms(uint i)

{

uchar x,j;

for(j=0;j

for(x=0;x

}

void Delay(uint del)

{

uint i,j;

for(i=0; i

for(j=0; j

;

}

void delay()

{

int i,j;

for(i=0; i

for(j=0; j

;

}

void Outside_Init(void)

{

EX0 = 1;

IT0 = 1;

EA = 1;

}

void Outside_Int(void) interrupt 0

{

//Delay(3); //延时30ms ,去掉这行会出现按一下中断几次的情况

// if(KEY == 0) //对按键迚行抗干扰处理

// {

Count++;

//}

}

void Time0_Init()

{

// PT0=1;

TMOD = 0x01;

TH0 = 0x4c;

TL0 = 0x00;

TR0 = 1;

}

void Time0_Int() interrupt 1

{

TH0 = 0x4c;

TL0 = 0x00;

x++;

}

uchar Convert(uchar In_Date)

{

uchar i, Out_Date = 0, temp = 0;

for(i=0; i

{

temp = (In_Date >> i) & 0x01;

Out_Date |= (temp

}

return Out_Date;

}

void enable(uchar del)

{

P0 = Convert(del);

RS = 0;

RW = 0;

E = 0;

delay();

E = 1;

delay();

}

void write(uchar del)

{

P0 = Convert(del);

RS = 1;

RW = 0;

E = 0;

delay();

E = 1;

delay();

}

void L1602_init(void)

{

enable(0x01);

enable(0x38);

enable(0x0c);

enable(0x06);

enable(0xd0);

}

void L1602_char(uchar hang,uchar lie,char sign)

{

uchar a;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

enable(a);

write(sign);

}

void L1602_string(uchar hang,uchar lie,uchar *p)

{

uchar a;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

enable(a);

while(1)

{

if(*p == '\0') break;

write(*p);

p++;

}

}

uchar Keyscan(void)

{

uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};

for(j=0; j

{

P1 = Buffer[j];

_nop_();

_nop_();

_nop_();

temp = 0x01; for(i=0; i

{

if(!(P1 & temp))

{

return (i+j*4);

}

temp

}

}

}

void Main(void)

{

uchar Key_Value;

L1602_init();

L1602_string(1,1,"maicong ");

L1602_string(2,1,"You Press The ");

Outside_Init();

Time0_Init(); ET0=1; EX0=1; while(1) { P1 = 0xf0; if(P1 != 0xf0) {

}

}

}

Delay_1ms(15); if(P1 != 0xf0) { Key_Value = Keyscan(); } L1602_char(2,15,Key_Value / 10 + 48); L1602_char(2,16,Key_Value % 10 + 48); if(x==20) { EX0=0; L1602_char(1,16,(Key_Value*Count) % 1000%100%10 + 48); L1602_char(1,15,(Key_Value*Count) % 1000%100/10 + 48); L1602_char(1,14,(Key_Value*Count) % 1000/100 + 48); L1602_char(1,13,(Key_Value*Count) / 1000 + 48); L1602_char(1,11,Count % 100%10 + 48); L1602_char(1,10,Count %100/10 + 48); L1602_char(1,9,Count / 100 + 48); Count=0; x=0; EX0=1; }


相关内容

  • 实验十一 同步计数器的逻辑功能测试及应用
    实验十一 计数器74LS161的逻辑功能测试及应用 一. 实验目的 1.熟悉集成计数器触的逻辑功能和各控制端作用. 2.掌握集成计数器逻辑功能测试方法. 3.掌握计数器使用方法. 二. 实验设备与器件 1.实验设备:DLBS 系列数字逻辑实 ...
  • 电工电子综合课程设计-广告彩灯控制电路设计
    课 程 设 计 题 目 学 院 专 业 班 级 姓 名 指导教师 广告彩灯控制电路设计 自动化学院 自动化 2011 年 7 月 12 日 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 广告彩灯控制电 ...
  • 交通灯控制器课程设计实验报告
    2011级课程设计实验报告 交 通 灯 控 制 器 专业年级: 2011级通信工程一班 姓 名: 谢仙 学 号: 20114505 指导教师: 杨菊秋 院(系): 计算机与信息工程学院 2013年06月25日 目 录 1 引言------- ...
  • 如何看懂电路图
    d 如何看懂电路图2--电源电路单元 前 面介绍了电路图中的元器件的作用和符号.一张电路图通常有几十乃至几百个元器件,它们的连线纵横交叉,形式变化多端,初学者往往不知道该从什么地方开始, 怎样才能读懂它.其实电子电路本身有很强的规律性,不管 ...
  • 数字计步器
    广东药科大学 课程设计报告书 课程设计名称:模数电.高频 课程设计题目:数字计步器 学院:医药信息工程 专业班级: 2016年6月27日 目录 前言---------------------------------------------- ...
  • 磁性角度传感器ZK-CG-A V说明书
    ZK-CG-A说明书 版本号:V10 产品类别:磁性角度传感器 概述:ZK-CG-A是一种基于霍尔效应的磁性角度传感器,应用时 A/B正交脉冲输出4096个/圈.需要配套磁铁,定位精度小于0.1度, 深圳市中科伺服科技有限公司 目录 第一章 ...
  • 频率计数器
    一.实验目的 本应用系统实验的目的是通过在"单片机原理及应用"课堂上学习的知识,以及查阅资料,培养一种自学的能力.并且引导一种创新的思维,把学到的知识应用到日常生活当中.在设计的过程中,不断的学习,思考和同学间的相互讨论 ...
  • 数字积分器
    题目:数字积分器 一 设计题目:数字积分器 二 设计任务与要求: 1. 2. 3. 4. 模拟输入信号0~10V,积分时间1~10秒,步距1秒. 积分值为0000~9999. 误差小于1%±1LSB . 应具有微调措施,以便校正精度. 三 ...
  • 采用单片机设计频率计_毕业设计论文
    毕业设计论文 采用单片计设计频率计 系 专业 班级指导教师 职称 讲师 设计时间 目录 摘 要 ........................................................................ ...
  • 高精度激光测距接收系统的研究
    2010年10月第10期(总第143期) 广西轻工业 GUANGXI JOURNAL OF LIGHT INDUSTRY 机械与电气 高精度激光测距接收系统的研究 赵倩 (南京理工紫金学院,江苏南京210046) [摘 这种测距方法既适用于 ...