



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 .程序proteus仿真及C设计的电子日历,T89C51单片机、温度传感器DS18B20、LCD液晶1602A用DS1302时钟芯片、 包含单片机寄存器的头文件#include<reg51.h> / #include<intrins.h> /包含_nop_()函数定义的头文件 #define uchar unsigned char #define uint unsigned int sbit DQ=P37。/ds18b20与单片机连接口 。uchar data disdata5 温度值uint tvalue。/ uchar tflag。/温度正负标志 unsigned
2、 char code digit10=3456789。 /定义字符数组显示数字 sbit DATA=P36。 /位定义1302芯片的接口,数据输出端定义在P1.1引脚 sbit RST=P34。 /位定义1302芯片的接口,复位端口定义在P1.1引脚 sbit SCLK=P35。 /位定义1302芯片的接口,时钟输出端口定义在P1.1引脚 液晶引脚定义/ sbit RS=P20。 /寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P21。 /读写选择位,将RW位定义为P2.1引脚 sbit E=P22。 /使能信号位,将E位定义为P2.2引脚 。sbit BF=P07 /* 函数功能
3、:延时若干微秒 n入口参数: */ void delaynus(unsigned char n) unsigned char i。 for(i=0。i<n。i+)。 void Write1302(unsigned char dat) unsigned char i。 SCLK=0。 /拉低SCLK,为脉冲上升沿写入数据做好准备 delaynus(2)。 /稍微等待,使硬件做好准备 for(i=0。i<8。i+) DATA=dat&0x01。 /取出dat的第0位数据写入1302 delaynus(2)。 /稍微等待,使硬件做好准备 SCLK=1。 delaynus(2)。
4、/稍微等待,使硬件做好准备 SCLK=0。 /重新拉低SCLK,形成脉冲 dat>>=1。 /* 函数功能:根据命令字,向1302写一个字节数据 入口参数:Cmd,储存命令字;dat,储存待写的数据 */ void WriteSet1302(unsigned char Cmd,unsigned char dat) RST=0。 /禁止数据传递 SCLK=0。 /确保写数居前SCLK被拉低 RST=1。 /启动数据传输 delaynus(2)。 /稍微等待,使硬件做好准备 Write1302(Cmd)。 /写入命令字 写数据 / Write1302(dat)。 SCLK=1。 /将时
5、钟电平置于已知状态 RST=0。 /禁止数据传递 unsigned char Read1302(void) unsigned char i,dat。 delaynus(2)。 /稍微等待,使硬件做好准备 for(i=0。i<8。i+) /连续读8个二进制位数据 位,因为先读出的是字节的最低位1的各数据位右移dat将 /。 dat>>=1 1如果读出的数据是 if(DATA=1) / dat|=0x80。 /将1取出,写在dat的最高位 SCLK=1。 /将SCLK置于高电平,为下降沿读出 稍微等待 / delaynus(2)。 SCLK=0。 /拉低SCLK,形成脉冲下降沿
6、delaynus(2)。 /稍微等待 return dat。 /将读出的数据返回/dat已经是一位一位的存在单 / 片集中 unsigned char ReadSet1302(unsigned char Cmd) unsigned char dat。 RST=0。 /拉低RST SCLK=0。 /确保写数居前SCLK被拉低 RST=1。 /启动数据传输 Write1302(Cmd)。 /写入命令字 读出数据 / dat=Read1302()。 SCLK=1。 RST=0。 。 return dat void Init_DS1302(void) WriteSet1302(0x8E,0x00)。
7、WriteSet1302(0x80,(0/10)<<4|(0_x0010_)。 WriteSet1302(0x82,(0/10)<<4|(0_x0010_)。 WriteSet1302(0x84,(12/10)<<4|(12_x0010_)。 WriteSet1302(0x86,(16/10)<<4|(16_x0010_)。 WriteSet1302(0x88,(11/10)<<4|(11_x0010_)。 WriteSet1302(0x8c,(8/10)<<4|(8_x0010_)。 /* 1ms函数功能:延时 (3j+
8、2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒 */ void delay1ms() unsigned char i,j。 for(i=0。i<10。i+) for(j=0。j<33。j+) 。 /* 函数功能:延时若干毫秒 入口参数:n */ void delaynms(unsigned char n) unsigned char i。 for(i=0。i<n。i+) delay1ms()。 bit BusyTest(void) bit result。 RS=0。 RW=1。 E=1。 _nop_()。 _nop_()。 _nop_
9、()。 _nop_()。 result=BF。 E=0。 return result。 void WriteInstruction (unsigned char dictate) while(BusyTest()=1)。 RS=0。 RW=0。 E=0。 。 _nop_() _nop_()。 P0=dictate。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 E=0。 / void WriteAddress(unsigned char x) WriteInstruction(x|0x8
10、0)。 void WriteData(unsigned char y) while(BusyTest()=1)。 RS=1。 RW=0。 E=0。 P0=y。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 E=0。 void LcdInitiate(void) delaynms(15)。 WriteInstruction(0x38)。 delaynms(5)。 WriteInstruction(0x38)。 delaynms(5)。 WriteInstruction(0x38)。 del
11、aynms(5)。 WriteInstruction(0x0c)。 delaynms(5)。 WriteInstruction(0x06)。 delaynms(5)。 WriteInstruction(0x01)。 delaynms(5)。 void DisplaySecond(unsigned char x) unsigned char i,j。 i=x/10。/取十位 j=x_x0010_。/取个位 。 WriteAddress(0x49) 。 WriteData(digiti) WriteData(digitj)。 。 delaynms(50) void DisplayMinute(un
12、signed char x) unsigned char i,j。 i=x/10。/取十位 j=x_x0010_。/取个位 WriteAddress(0x46)。 WriteData(digiti)。 WriteData(digitj)。 delaynms(50)。 /延时1ms给硬件一点反应时间 void DisplayHour(unsigned char x) unsigned char i,j。 /j,k,l分别储存温度的百位、十位和个位 i=x/10。 j=x_x0010_。 WriteAddress(0x43)。 WriteData(digiti)。 WriteData(digitj
13、)。 。 delaynms(50) void delay_18B20(unsigned int i)/延时1微秒 while(i-)。 void ds1820rst()/*ds1820复位*/ unsigned char x=0。 DQ = 1。 /DQ复位 delay_18B20(4)。 /延时 。DQ = 0 delay_18B20(100)。 DQ = 1。 delay_18B20(40)。 uchar ds1820rd()/*读数据*/ unsigned char i=0。 unsigned char dat = 0。 for (i=8。i>0。i-) DQ = 0。 /给脉冲信
14、号 。 dat>>=1 给脉冲信号。 / DQ = 1 if(DQ) dat|=0x80。 delay_18B20(10)。 return(dat)。 void ds1820wr(uchar wdata)/*写数据*/ unsigned char i=0。 for (i=8。 i>0。 i-) DQ = 0。 DQ = wdata&0x01。 delay_18B20(10)。 DQ = 1。 wdata>>=1。 read_temp() uchar a,b。 ds1820rst()。 ds1820wr(0xcc)。 ds1820wr(0x44)。 ds18
15、20rst()。 ds1820wr(0xcc)。 ds1820wr(0xbe)。 。a=ds1820rd() 。b=ds1820rd() 。tvalue=b tvalue<<=8。 tvalue=tvalue|a。 if(tvalue<0x0fff) 。 tflag=0 else tvalue=tvalue+1。 tflag=1。 tvalue=tvalue*(0.625)。 return(tvalue)。 void ds1820disp() 。 uchar flagdat disdata0=tvalue/1000+0x30。 disdata1=tvalue_x0010_00
16、/100+0x30。 disdata2=tvalue_x0010_0/10+0x30。 。 disdata3=tvalue_x0010_+0x30 if(tflag=0) flagdat=0x20。 else flagdat=0x2d。 if(disdata0=0x30) disdata0=0x20。 if(disdata1=0x30) disdata1=0x20。 WriteAddress (0x80)。 WriteData (flagdat)。 WriteAddress (0x81)。 WriteData (disdata0)。 WriteAddress (0x82)。 WriteData
17、 (disdata1)。 WriteAddress (0x83)。 WriteData (disdata2)。 WriteAddress (0x84)。 。WriteData (0x2e) WriteAddress (0x85)。 WriteData (disdata3)。 /*结束*/ void main(void) unsigned char second,minute,hour。 /分别储存苗、分、小时, unsigned char ReadValue。 /储存从1302读取的数据 LcdInitiate()。 /将液晶初始化 WriteAddress(0x45)。 /写小时与分钟分隔符
18、的显示地址, 显示在第2行第6列 WriteData(':')。 /将字符常量写入LCD WriteAddress(0x48)。 /写分钟与秒分隔符的显示地址, 显示在第2行第9列 WriteData(':')。 /将字符常量写入LCD 初始化将1302 Init_DS1302()。 / while(1) read_temp()。/读取温度 ds1820disp()。/显示 ReadValue = ReadSet1302(0x81)。 /从秒寄存器读数据 。alue&0x0F)alue&0x70)>>4)*10 + (ReadV second=(ReadV 显示秒 / DisplaySecond(se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度共有产权住房租赁合同
- 二零二五年度配音演员聘用合同
- 二零二五年度珠宝店安全保卫人员聘用合同
- 二零二五年度影视声音后期制作合同(封面设计新颖)
- 二零二五年度美发行业国际交流与合作协议
- 二零二五年度国际贸易知识产权佣金协议
- 二零二五年度分手补偿协议书及子女教育费用承担
- 2025年度股份代持股份占比调整合同协议书模板
- 2025年度酒店餐饮服务兼职员工合同
- 二零二五年度隐名股东股权转让及管理权移交协议
- 2024年玩具陀螺项目可行性研究报告
- 城区绿地养护服务费项目成本预算绩效分析报告
- v建筑主墩双壁钢围堰施工工艺资料
- 新部编人教版六年级道德与法治下册全册全套课件
- 我国互联网公司资本结构分析-以新浪公司为例
- 【蓝天幼儿园小一班早期阅读现状的调查报告(含问卷)7800字(论文)】
- 粮油机械设备更新项目资金申请报告-超长期特别国债投资专项
- 个体户的食品安全管理制度文本
- 部编版道德与法治七年级下册每课教学反思
- 自考14237《手机媒体概论》备考试题库(含答案)
- 第二次全国土地调查技术规程完整版
评论
0/150
提交评论