資源簡介
基于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個文件信息
- 上一篇:編譯原理實驗 語義分析與中間代碼生成
- 下一篇:網絡漏洞掃描原理分析
評論
共有 條評論