基于单片机的酒精浓度测试仪(6)

2019-04-09 15:59

基于单片机的酒精浓度测试仪

附录三

#include \

void DELAY(unsigned int t) { while(t!=0) t--; }

void IICStart(void) {

SCL=0; DELAY(1);

SDA=1; SCL=1; DELAY(1); SDA=0; DELAY(1); SCL=0; }

void IICStop(void) { SDA=0;SCL=1; DELAY(1); SDA=1; DELAY(1); SCL=0; }

void SEND0(void) { SDA=0; SCL=1; DELAY(1); SCL=0; }

void SEND1(void) { SDA=1; DELAY(1); SCL=1; DELAY(1); SCL=0; }

bit Check_Ack(void) {

unsigned char errtime=250;

- 26 -

DELAY(1); SCL=1; DELAY(1); CY=SDA; while(CY) {

errtime--; CY=SDA; if (!errtime) {

IICStop();

return 1; } }

DELAY(1); SCL=0; return 0; }

void Write_byte(unsigned char dat) {

unsigned char i; for(i=0;i<8;i++) { if((dat<

unsigned char Read_byte(void) { unsigned char i,temp=0; for(i=0;i<8;i++) {

SDA=1; SCL=1; DELAY(1); if(SDA==1) { temp=temp<<1;

基于单片机的酒精浓度测试仪

- 27 -

基于单片机的酒精浓度测试仪

temp=temp|0x01; } else temp=temp<<1; SCL=0; } return temp; }

unsigned char rdeeprom(unsigned char addr) {

unsigned char temp=0; bit flag=0; IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); IICStart(); Write_byte(0xa1); Check_Ack(); temp=Read_byte(); SEND1(); IICStop();

return temp; }

void wrteeprom(unsigned char addr,unsigned char dat) {

IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); Write_byte(dat); Check_Ack(); IICStop(); }

#include \#include \void delay() {

- 28 -

int i,j; for(i=0; i<=10; i++) for(j=0; j<=2; j++) ; }

uchar Convert(uchar In_Date) { /*

uchar i, Out_Date = 0, temp = 0; for(i=0; i<8; i++) {

temp = (In_Date >> i) & 0x01; Out_Date |= (temp << (7 - i)); }

return Out_Date; */ return In_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(); }

基于单片机的酒精浓度测试仪

- 29 -

基于单片机的酒精浓度测试仪

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++; } }

//显示整型的温湿度数据用,共占用4位,其中一位符号位 void L1602_int(uchar hang, uchar lie, int num) {

uint temp;

uint gewei,shiwei,baiwei,sign; //首先将4位清空

L1602_char(hang, lie+0, ' '); L1602_char(hang, lie+1, ' '); L1602_char(hang, lie+2, ' '); L1602_char(hang, lie+3, ' ');

- 30 -


基于单片机的酒精浓度测试仪(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016禁止物质不使用保证书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: