版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <REG52.H>#include <ABSACC.H>/* 宏定义 8255地址*/#define c8255 XBYTE0xB000 /* 1 0 1 1 */#define c8255a XBYTE0x8000 /* 1 0 0 0 */#define c8255b XBYTE0x9000 /* 1 0 0 1 */#define c8255c XBYTE0xA000 /* 1 0 1 0 */#define uchar unsigned char#define uint unsigned int/*18B20*/ sbit DQ=P20; /*
2、 定义全局变量*/uchar fw; /0表示正温 1表示负温 sbit y1=P10;sbit y2=P11;sbit y3=P12;sbit y4=P13;sbit y5=P14;sbit y6=P15;sbit y7=P16;sbit y8=P17;uchar code ac="0123456789"uchar code ac1="液滴"uchar code ac2="点滴输液报警器"/uchar code ac3="断滴四秒报警"uchar code ac4="用时"uchar code
3、 AC_TABLE=0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, /*第一行汉字位置*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, /*第二行汉字位置*/0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, /*第三行汉字位置*/0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /*第四行汉字位置*/;/*1302*/ sbit RST=P23; sbit IO=P22; sbit SCLK=P21; uchar bdata AB; uchar bdata AD
4、; sbit AB0=AB0; sbit AB7=AB7; sbit AD0=AD0; sbit AD7=AD7;/* 定义1302时间数据部分*/uchar data time7=0x00,0x00,0x00,0x27,0x04,0x07,0x08; /用于保存从1302中取得的时间数据uchar code shuzi=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20,0x2e,0x2b,0x2d,0x3a; /空格 . + - :uchar code timeshuzi11=0xb0,0xb1,0xb2,0xb3,0xb4,0xb
5、5,0xb6,0xb7,0xb8,0xb9,0xba;/调时间用大写的数字uchar code dz1302=0x8c,0x88,0x86,0x84,0x82; / 内部地址年 月 日 时 秒uchar code youbiaodizi=0x90,0x91,0x93,0x94,0x96,0x97,0x8a,0x8b,0x8d,0x8e; /调时间的 游标动态/* 模块数据定义部分*/void delay(uint b) /延时函数,延时时间为bmsuchar j;while(b-) for(j=0;j<125;j+) /延时1ms ; /*- 8255与液晶接口程序 -*/void KZ
6、(unsigned char i) unsigned char xdata *addr; addr=&c8255; *addr=i; void PA(unsigned char i) unsigned char xdata *addr1; addr1=&c8255a; *addr1=i; void PB(unsigned char i) unsigned char xdata *addr2; addr2=&c8255b; *addr2=i; /*数据转换* BCD转换为十进制 */turnbcd(unsigned char bcd) unsigned char n_n;
7、 n_n=(bcd&0xf0)/16*10+(bcd&0x0f); return(n_n); /* 十进制转BCD码 */turnsjz(unsigned char dd) unsigned char b_c; b_c=(dd/10)*16+(dd-(dd/10)*10); return(b_c); void write_com(unsigned char com) /写命令到LCD0000 RST E RW RS / 1 1 0 0 delay(5); PB(0xFC); /1100 PA(com); PB(0xFC); /1100 delay(1); PB(0xF8); /
8、1000void write_data(unsigned char dat) /写数据到LCD 0000 / 1 1 0 1 delay(5); PB(0xFD); /1101 PA(dat); PB(0xFD); /1101delay(1);PB(0xF9); /1001 /* a写数据的地址 b 、c为要写的数据数字(0-9) 显示0-9功能*/void xianshi(unsigned char a,unsigned char b,unsigned char c) write_com(AC_TABLEa); write_data(shuzib); write_data(shuzic);/
9、*-18B20程序-*/void FW_DS18B20(void) unsigned char x=0; DQ = 1; delay(2); DQ = 0; delay(15); DQ = 1; delay(2); x=DQ; delay(1); /* 读一个字节*/ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay(4); return(dat);/* 写一个字节*/void Wri
10、teOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; /* 该函数的返回值为得到温度的 真实值000.0000 */unsigned int read_temperature() unsigned int g; unsigned char l,h; FW_DS18B20(); /初始化复位18B20 WriteOneChar(0xCC); /跳过读序号列号的操作(书上提供) WriteOne
11、Char(0x44); /开始温度转换 delay(1); FW_DS18B20(); /初始化复位18B20 WriteOneChar(0xCC); /跳过读序号列号的操作(书上提供) WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 l=ReadOneChar(); /读低字节 h=ReadOneChar(); /读高字节(前四个是零表示正温度 是一表示负温度) fw=h&0x80; /取出高字节 该数据为符号位 (0表示 正数 1表示负数) g=turnbcd(0x0f&h)*256+l;return(g); /*读出温度加显
12、示精确到小数点后一位温度值小于99度进行温度的正负判断*/void wendu(void) unsigned int y; uchar h; uchar n; uchar v; h=0; n=0; v=0; y=read_temperature(); y=y*0.625; /40959.375 y=y%10000; /0959 y=y%1000; /959 h=y/100; /9 y=y%100; /59 n=y/10; /5 v=y%10; /9 if(fw=0) xianshi(12,10,12); /表示温度的 正 负 植 else xianshi(12,10,13); xianshi(
13、13,h,n); /温度高两位 xianshi(14,11,v);/温度小数点 和 后一位 write_com(0x97); /温度 标号 write_data(0xa1); write_data(0xe6); /* 写数据 低位开始 */ void inputbyte(unsigned char a_a) unsigned char b_b; AB=a_a; for(b_b=8; b_b>0; b_b-) IO = AB0; SCLK = 1; SCLK = 0; AB = AB >> 1; /* 读取字节有返回值*/outputbyte() unsigned char b
14、_b; for(b_b=7; b_b>0; b_b-) AD7=IO; SCLK = 1; SCLK = 0; AD = AD>>1; return(AD); /*往1302里写数据参数分别为 地址 和 数据*/void w1302(unsigned char add,unsigned char dat) RST=0; SCLK=0; RST=1; inputbyte(add); inputbyte(dat); SCLK = 1; RST = 0; /*设置初始时间 秒 分 时 日 月 星期 年*/void set1302() unsigned char q_q=0;unsi
15、gned char b_b; unsigned char add = 0x80; w1302(0x8e,0x00); for(b_b =7; b_b>0; b_b-) w1302(add,timeq_q); add +=2; q_q+; /*读取1302某地址的数据 返回值为该地址的数据*/unsigned char r1302(unsigned char add) unsigned char ucdata; RST=0; SCLK=0; RST=1; inputbyte(add); ucdata = outputbyte(); SCLK = 1; RST = 0; return(ucd
16、ata);/*保存当前时间格式为: 秒 分 时 日 月 星期 年 */void get1302() unsigned char b_b; unsigned char ducaddr = 0x81; for (b_b=0; b_b<7; b_b+) /读数据 连续读数 放到数组里 timeb_b=turnbcd(r1302(ducaddr); /格式为: 秒 分 时 日 月 星期 年 ducaddr += 2; /*-调时间部分-*/* 写全宽数字字体*/void xianshishuzi(unsigned char a,unsigned char b) /显示功能 a写数据的地址 b为要
17、写的数据数字(0-9) write_com(AC_TABLEa); /给一个地址写 write_data(0xa3); write_data(shuzib);/* 时间显示功能*/void timexianshi(void) /显示时间 为固定 get1302();xianshi(20,time2/10,time2%10);/时xianshi(21,14,time1/10); /分xianshi(22,time1%10,14); /分xianshi(23,time0/10,time0%10);/秒/*写汉字功能a地址和要写第c个数字就可以连续写完 b个数*/void Inhanzi(uchar
18、 *str,uchar z,uchar d,uchar w) write_com(0x30); while(w!=0) write_com(AC_TABLEz); write_data(strd); d+; write_data(strd); d+; z+; w-; /*t0中断*/ uchar counter;void time0() interrupt 1 using 1 /定时器中断0,采用第一组通用工作寄存器 counter=counter+1; /中断次数寄存器加1TH0=(65535-50000)/256; /定时100ms,装入计数初值TL0=(65535-50000)%256;
19、INT1=0; if(counter=80) INT1=1; while(1); counter=0; INT1=0; /*-初始化部分-*/void main(void) uchar i=0,k=0,a,b,c,d,e,f; delay(100); INT1=0; TMOD=0x01; /定时器0为工作方式1 /启动定时器0 ET0=1; /开中断 PT0=1; /设置高优先级 TH0=(65535-50000)/256; /定时100ms,装入计数初值 TL0=(65535-50000)%256; IT0=1; EX0=0; KZ(0x88); /8255初始化 delay(1); PB(0x07); delay(6); PB(0x0f); delay(1); write_com(0x30); /8BitMCU,基本指令集合 write_com(0x03); /AC归0,不改变DDRAM内容 write_com(0x0c); /显示ON,游标OFF,游标位反白OFF write_com(0x01); /清屏,AC归0 write_com(0x06); /写入时,游标右移动 /Inhanzi(ac3,9,0,6); I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河海大学教师招聘考试备考题库及答案解析
- 2026年武汉体育学院体育科技学院教师招聘考试备考试题及答案解析
- 2026年湖南医药学院教师招聘考试备考试题及答案解析
- 2026年应急管理知识培训试题及答案
- 2026年及未来5年市场数据中国危险品运输行业投资分析及发展战略研究咨询报告
- 2026年高考生物最后冲刺押题试卷及答案(九)
- 2026年高考历史百校联考冲刺考试卷及答案(十二)
- 2026年体育考编面试试题及答案
- 2026全球与中国电池石墨负极行业前景动态与需求趋势预测报告
- 2026年荆州江陵县中小学教师公开招聘40人备考题库及答案详解(必刷)
- 拱形骨架坡预制块施工方案
- GB/T 46165-2025洁净室用丁腈手套
- 2025年A类业余无线电操作技术能力考试题库及答案
- 汽配厂物流安全培训内容课件
- 抖音店铺转让合同协议书
- 公司新人培训课件
- 2025年机械设计制造自动化专业知识测试题库及答案
- 汇款变更协议书
- DB4201∕T 581.2-2019 武汉市桥梁隧道养护技术规程 第2部分:隧道
- 国际民用航空适航及维修相关知识测试试卷
- 劳动创造美班会课件
评论
0/150
提交评论