资源简介
基于51单片机的红外对管液滴测速设计,仿真中按键代替红外对管;光电对管放置的液滴泡两侧 检测液滴滴下并测速,液滴不在滴下时报警,按键按下取消报警 模拟有护士来了 证明液滴下完。 显示速度用的1602液晶
代码片段和文件信息
#include “lcd1602.h“
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++); //1ms基准延时程序
}
}
/***********************************************************
忙检测
************************************************************/
unsigned char LCD1602_check_busy()
{
bit result;
//LCD1602_DATA= 0xff;
LCD1602_RS=0;
LCD1602_RW = 1 ;
LCD1602_EN = 1 ;
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
//while(LCD1602_DATA & 0x80) ;
result=BF; //将忙碌标志电平赋给result
LCD1602_EN = 0 ;
return result;
}
/**********************************************************
写指令
************************************************************/
void LCD1602_write_cmd(uint8 cmd)
{
while(LCD1602_check_busy()==1);
LCD1602_RS = 0 ;
LCD1602_RW = 0 ;
LCD1602_EN = 0 ;
_nop_();
_nop_(); //空操作两个机器周期,给硬件反应时间
LCD1602_DATA = cmd ;
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
LCD1602_EN = 1 ;
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
LCD1602_EN = 0 ;
}
/***********************************************************
写数据
*************************************************************/
void LCD1602_write_data(uint8 dat)
{
while(LCD1602_check_busy()==1);
LCD1602_RS = 1 ;
LCD1602_RW = 0 ;
LCD1602_EN = 0 ;
LCD1602_DATA = dat ;
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
LCD1602_EN = 1 ;
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
LCD1602_EN = 0 ;
}
/***********************************************************
1602初始化
************************************************************/
void LCD1602_init(void)
{
delay1ms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间
LCD1602_write_cmd(0x38) ;
delay1ms(5); //延时5ms ,给硬件一点反应时间
LCD1602_write_cmd(0x38) ;
delay1ms(5);
LCD1602_write_cmd(0x38) ;
delay1ms(5); //延时5ms ,给硬件一点反应时间
LCD1602_write_cmd(0x0c) ;
delay1ms(5); //延时5ms ,给硬件一点反应时间
LCD1602_write_cmd(0x06) ;
delay1ms(5); //延时5ms ,给硬件一点反应时间
LCD1602_write_cmd(0x01) ;
delay1ms(5); //延时5ms ,给硬件一点反应时间
}
/************************************************************
设置显示坐标
************************************************************/
void LCD1602_set_postion(unsigned char x unsigned char y)
{
if(y<2)
{
y &= 0x01 ; //y值限定在0~1之间
x &= 0x0f ; //x值限定在0~15之间
if(y == 0)
x |= 0x40 ; //如果显示是在第二行,则x的值加0x40
x |= 0x80 ; //获得x的值
LCD1602_write_cmd(x) ;//写入坐标值到LCD
}
}
/************************************************************
指定位置写字符
*************************************************************/
void LCD1602_write_char(uint8 x uint8 y uint8 chardata)
{
LCD1602_set_postion(xy) ;
LCD1602_write_data(chardata) ;
}
/************************************************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-25 18:48 点滴测速-仿真\
文件 342687 2018-03-17 13:33 点滴测速-仿真\Last Loaded LCD1602.DBK
文件 4049 2018-03-17 12:32 点滴测速-仿真\lcd1602.c
文件 342687 2018-03-17 13:36 点滴测速-仿真\LCD1602.DSN
文件 1381 2018-03-17 12:26 点滴测速-仿真\lcd1602.h
文件 768 2018-03-25 18:48 点滴测速-仿真\LCD1602.PWI
目录 0 2018-03-17 13:31 点滴测速-仿真\Listings\
文件 8096 2018-03-17 13:31 点滴测速-仿真\Listings\lcd1602.lst
文件 6353 2018-03-17 13:31 点滴测速-仿真\Listings\main.lst
文件 17683 2018-03-17 13:31 点滴测速-仿真\Listings\main.m51
文件 2472 2018-03-17 13:31 点滴测速-仿真\main.c
文件 56912 2018-03-17 13:33 点滴测速-仿真\main.uvopt
文件 13442 2018-03-07 21:38 点滴测速-仿真\main.uvproj
文件 56910 2018-03-17 12:50 点滴测速-仿真\main_uvopt.bak
目录 0 2018-03-17 13:31 点滴测速-仿真\ob
文件 10749 2018-03-17 13:31 点滴测速-仿真\ob
文件 15088 2018-03-17 13:31 点滴测速-仿真\ob
文件 1908 2018-03-17 13:31 点滴测速-仿真\ob
文件 115 2018-03-17 13:31 点滴测速-仿真\ob
文件 6441 2018-03-17 13:31 点滴测速-仿真\ob
文件 2763 2018-03-17 13:33 点滴测速-仿真\ob
目录 0 2018-03-25 20:09 点滴测速程序\
文件 3330 2018-03-07 23:51 点滴测速程序\lcd1602.c
文件 1315 2018-03-07 23:51 点滴测速程序\lcd1602.h
目录 0 2018-03-17 13:37 点滴测速程序\Listings\
文件 6858 2018-03-17 13:37 点滴测速程序\Listings\lcd1602.lst
文件 6400 2018-03-17 13:37 点滴测速程序\Listings\main.lst
文件 16275 2018-03-17 13:37 点滴测速程序\Listings\main.m51
文件 2492 2018-03-12 13:49 点滴测速程序\main.c
文件 56897 2018-03-22 21:42 点滴测速程序\main.uvopt
文件 13442 2018-03-07 21:38 点滴测速程序\main.uvproj
............此处省略8个文件信息
- 上一篇:编译原理实验 语义分析与中间代码生成
- 下一篇:网络漏洞扫描原理分析
相关资源
- 027 简易电子秤 LCD1602显示 超重报警
- 已成功的DS18B20温度显示程序带高低限
- 51单片机温度报警器设计程序及prote
- 温度显示报警程序 温度传感器ds18
- labview温度超限报警器
- 18B20+1602温度报警完整
- 基于传感器的温度测量与报警系统设
- 51单片机和1602显示18b20温度报警系统
- Zabbix短信报警脚本
- 89C51汽车防盗报警设计
- 智能交通灯的完整C程序,显示车流量
- 自己写的一个wincc声音报警功能
- 基于51开发板的温度报警闹钟按键控制
- 基于STC89C52单片机的宿舍智能防火报警
- 51单片机测距报警.rar
- 气敏报警器 课程设计报告
- 基于GSM短信模块的家庭防盗报警系统
- 温度上下限报警.rar
- 多功能测温报警汉字时钟
- PCF8563实时时钟操作,定时报警设置
- 光纤网络掉线报警
- 温度检测控制报警程序
- 基于51单片机的温度显示报警系统
- 带报警的MPX4115气压计设计
- 基于51单片机的温度报警系统
- 基于单片机的火灾报警器
- 嵌入式系统/ARM技术中的基于嵌入式的
- 基于GSM短信模块的家庭防盗报警系统
- 0709 报警音 输液泵 注射泵
- 8086Proteus报警器
评论
共有 条评论