




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设置键按下?初始化主程序开始进入调节子程序YN设置完成显示当前温度是否在温度范围内?N报警Y调节子程序按键扫描设置键是否是2?设置键是否是3?设置键是否是1? NN调节上限N返回主程序显示当前温度值调节下限Y开始初始化定时器.LED及DS1302.开中断显示学号后六位 4键是否按下 日期模式时间模式 NY1键是否按下?1键是否按下? 读取当前时间.日期NN Y调节日期子程序调节时间子程序 显示日期,时间读取DS1302调节的日期值读取DS1302调节的时间值分秒是否都为0?整点报时 N Y重设初值中断扫描键值,并读取时钟值,刷新显示中断返回 N 中断程序 时间子程序入口日期写入DS1302 2或3按键加减秒闪烁秒调节 1按键2或 3按键加减分调节分闪烁 1按键2或 3按键加减时调节时闪烁进入主程序 1按键日期子程序入口2或 3按键加减日期写入DS1302日调节日闪烁 1按键2或 3按键加减月调节月闪烁 1按键2或 3按键加减年调节年闪烁进入主程序 1按键#include#define uchar unsigned char#define uint unsigned intsbit beep = P37 ;sbit RST = P34 ;sbit SCK = P35 ;sbit io = P36 ; sbit key1 = P10 ;sbit key2 = P11 ;sbit key3 = P12 ;sbit key4 = P13 ;uchar i,j,mod,flag ;uchar code LED10 =0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,;uchar disbuf8 = 0x62,0xa2,0xf7,0x7a,0x28,0xf7,0x7e,0x7e ;struct time uchar second ; uchar minute ; uchar hour ; uchar day ; uchar month ; uchar year ;current_time ;#define ctime current_time /延时程序:void delay(int n)unsigned int i,j;for(i=0;in;i+)for(j=0;j121;j+);/滴一声,用来按键伴音void di() uchar i ; for(i=0;i0; i-) di(); delay(140); /DS1302的写驱动,传入参数为一个地址和数据void write(uchar addr,uchar dat) uchar i ; RST = 0 ; SCK = 0 ; RST = 1 ; for(i=0;i=1 ; SCK = 1 ; for(i=0;i= 1 ; SCK = 1 ; RST = 0 ;/DS1302的读驱动,传入参数为一个地址,返回参数为读到的数据uchar read(uchar addr) uchar i,dat ; RST = 0 ; SCK = 0 ; RST = 1 ; for(i=0;i=1 ; SCK = 1 ; for(i=0;i=1 ; if(io) dat|=0x80 ; SCK=1 ; RST=0 ; dat=(dat/16*10)+(dat&0x0f); return dat ;/读取DS1302的时间和日期void read_time() ctime.second = read(0x81); ctime.minute = read(0x83); ctime.hour = read(0x85); ctime.day = read(0x87); ctime.month = read(0x89); ctime.year = read(0x8d);/设定时间和日期void set_time() if(!flag) write(0x8e,0x00); write(0x80,(ctime.second/10)4|(ctime.second%10); write(0x82,(ctime.minute/10)4|(ctime.minute%10); write(0x84,(ctime.hour/10)4|(ctime.hour%10); write(0x8e,0x80); else write(0x8e,0x00); write(0x86,(ctime.day/10)4|(ctime.day%10); write(0x88,(ctime.month/10)4|(ctime.month%10); write(0x8c,(ctime.year/10)4|(ctime.year%10); write(0x8e,0x80); /刷新显示时间日期缓冲区void display() switch(flag) uint a=1; case 1 : disbuf0 = LEDctime.day%10;delay(a); disbuf1 = LEDctime.day/10;delay(a); disbuf3 = LEDctime.month%10;delay(a); disbuf4 = LEDctime.month/10;delay(a); disbuf6 = LEDctime.year%10;delay(a); disbuf7 = LEDctime.year/10;delay(a); break ; default : disbuf0 = LEDctime.second%10;delay(a); disbuf1 = LEDctime.second/10;delay(a); disbuf3 = LEDctime.minute%10;delay(a); disbuf4 = LEDctime.minute/10;delay(a); disbuf6 = LEDctime.hour%10;delay(a); disbuf7 = LEDctime.hour/10;delay(a); /显示学号void show() uint m;for(m=0;mi); P0=disbufi; i+;/3msx8x20,大约480ms从DS1302芯片读取一下时间 if(j=20) j=0 ; display(); if(mod=0) read_time(); /DS18B20 的读写程序,数据脚P2.7 /温度传感器18B20 汇编程序,采用器件默认的12 位转化/最大转化时间750 微秒,显示温度-55 到+125 度,显示精度/为0.1 度,显示采用4 位LED 共阳显示测温值/P0 口为段码输入,P20P23为位选/*/#include reg52.h#include stdlib.h#include intrins.h#include intrins.h /_nop_();延时函数用#define dm P0 /段码输出口#define uchar unsigned char#define uint unsigned intsbit DQ=P25; /温度输入口sbit w0=P23; /数码管4sbit w1=P22; /数码管3sbit w2=P21; /数码管2sbit w3=P20; /数码管1sbit beep=P17; /蜂鸣器和指示灯sbit set=P10; /温度设置切换键sbit add=P11; /温度加sbit dec=P12; /温度减int temp1=0; /显示当前温度和设置温度的标志位为0 时显示当前温度uint h;uint temp;uchar r;uchar high=40,low=15,high1;uchar sign;uchar q=0;uchar tt=0;uchar scale;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小数断码表uchar code table_dm12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;uchar code duanmaya=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40;/共阳LED 段码表0 1 2 3 4 5 6 7 8 9 不亮 -uchar table_dm1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /个位带小数点的断码表uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00; /显示单元数据,共4 个数据和一个运算暂用void delay(uint t)for (;t0;t-);void scan()int j;for(j=0;j0;i-)DQ=1;_nop_();_nop_(); /从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0x01; /最低位移出delay(6); /66 usval=val/2; /右移1 位DQ=1;delay(1);/*DS18B20 读1 字节函数*/从总线上取1 个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0x80;delay(6); /66 usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位delay(200);write_byte(0xcc); /发命令write_byte(0x44); /发转换命令ow_reset();delay(1);write_byte(0xcc); /发命令write_byte(0xbe);temp_data0=read_byte(); /读温度值的第字节temp_data1=read_byte(); /读温度值的高字节temp=temp_data1;temp6348) / 温度值正负判断tem=65536-tem;n=1; / 负温度求补码,标志位置1display4=tem&0x0f; / 取小数部分的值display0=ditabdisplay4; / 存入小数部分显示值display4=tem4; / 取中间八位,即整数部分的值display3=display4/100; / 取百位数据暂存display1=display4%100; / 取后两位数据暂存display2=display1/10; / 取十位数据暂存display1=display1%10; /个位数据r=display1+display2*10+display3*100;/符号位显示判断/if(!display3)display3=0x0a; /最高位为0 时不显示if(!display2)display2=0x0a; /次高位为0 时不显示if(n)display3=0x0b; /负温度时最高位显示-void BEEP()if(r=high&r129)|r128)horl=256-horl;n=1;display3=horl/100;display3=display3&0x0f;display2=horl%100/10;display1=horl%10;display0=0;if(!display3)display3=0x0a; /最高位为0 时不显示if(!display2)display2=0x0a; /次高位为0 时不显示if(n)display3=0x0b; /负温度时最高位显示-/*按键查询程序*/void keyscan()int temp1; /最高温度和最低温度标志位if(set=0)while(1)delay(500);/消抖if(set=0)temp1+;while(!set)scan();if(temp1=1)xianshi(high);scan();if(add=0)while(!add)scan();high+=1;if(dec=0)while(!dec)scan();high-=1;if(temp1=2)xianshi(low);if(add=0)while(!add)scan();low+=1;if(dec=0)while(!dec)scan();low-=1;scan();if(temp1=3)temp1=0;break;/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 十堰市张湾区2025届数学四下期末复习检测试题含解析
- 山东电力高等专科学校《合唱指挥法》2023-2024学年第一学期期末试卷
- 延安职业技术学院《热工检测仪表》2023-2024学年第二学期期末试卷
- 辽宁省沈阳市和平区重点名校2025年初三第一次质量检查试题语文试题含解析
- 运城市闻喜县2025届三年级数学第二学期期末学业质量监测试题含解析
- 营口职业技术学院《新闻传播伦理与法规》2023-2024学年第一学期期末试卷
- 山东省济南市莱芜区2024-2025学年初三生物试题第一次联考试题含解析
- 江苏省宜兴市官林学区市级名校2024-2025学年初三第二次质量测试(5月)数学试题试卷含解析
- 日照航海工程职业学院《临床中药学》2023-2024学年第二学期期末试卷
- 江苏第二师范学院《日语中级听力》2023-2024学年第一学期期末试卷
- 2025年金华市轨道交通集团招聘笔试参考题库含答案解析
- 2024版心肺复苏培训课件
- 地下综合管廊建设项目可行性研究报告
- 基于多源异构数据的地质知识图谱构建与应用
- 2024年领导干部任前廉政知识考试测试题库及答案
- 《公共资源交易主体信用评价实施指南》编制说明
- 中通服网盈科技有限公司连云港分公司(中国电信)招聘笔试冲刺题2024
- 国内外知识产权保护对比研究
- DB3707T 080-2023 奶牛接产助产及产后操作操作规程
- 绍兴银行社会招聘真题
- 《储水式电热水器的安全使用年限》
评论
0/150
提交评论