基于stc89c52、ds18b20、lcd1602、at24c02温度警报器的单片机课程设计内容摘要:
六、附录 系统总硬件电路原理图 include include include include define PCF8591 0x90 //PCF8591 地址 define AT24C02 0xa0 // AT24C02 地址 sfr AUXR = 0x8E。 define uchar unsigned char define uint unsigned int sbit sda=P2^0。 //I2C总线的使能端 sbit scl=P2^1。 sbit DQ = P3^7。 sbit K8=P1^5。 sbit K7=P1^7。 sbit K6=P1^6。 sbit K2=P1^2。 sbit K1=P1^1。 sbit K3=P1^3。 sbit beep=P1^5。 sbit LED=P1^4。 sbit RS=P2^6。 sbit RW=P2^5。 sbit EN=P2^7。 //LCD 的位定义 int M1,dz1=0,dz2=0。 unsigned long M2。 uint high,low。 uint tem1,tem2,tem3。 uint temp,temp1,temp2。 uint QWE。 uchar adc。 uchar num=0。 //quan ju bian liang char V1,V2,V3,ho1,ho2,mi1,mi2,s1,s2,h1,h2,L1,L2。 // 定义电压、时、分、秒 uint t1,t2,t3。 //定义温度 最高温度 最低温度 char Hou1=0,Hou2,Min1,Min2。 //定义时、分、 uchar code table_Digital[]=0123456789。 uchar code table[]= :.THLV。 uchar code table1[]=0123456789。 /******************LCD 液晶显示部分 *****************/ void delay(uint z) { uint x,y。 for(xz。 x0。 x) for(y=0。 y110。 y++)。 } void write_(uchar ) { /*写命令函数 */ RS=0。 P0=。 delay(5)。 EN=1。 delay(5)。 EN=0。 } void write_date(uchar date) { /*写数据函数 */ RS=1。 P0=date。 delay(5)。 EN=1。 delay(5)。 EN=0。 } void lcd_init() { /*液晶初始化函数 */ RW=0。 EN=0。 write_(0x38)。 delay(5)。 write_(0x38)。 delay(5)。 write_(0x0c)。 write_(0x01)。 } void Time_init(void) { /*日期及时间初始化函数,此处对变量直接赋值即可设定你所需要的时间 */ ho1=0。 ho2=0。 mi1=Min1。 mi2=Min2。 s1=0。 s2=0。 t1=tem1。 t2=tem2。 t3=tem3。 } void show1(void) { /*显示初始化函数,亦可用于控制液晶更新实时时间 */ write_(0x80)。 write_date(table[7])。 write_(0x81)。 write_date(table_Digital[M2/1000])。 write_(0x82)。 write_date(table[3])。 write_(0x83)。 write_date(table_Digital[M2/100%10])。 write_(0x84)。 write_date(table_Digital[M2%10])。 /*以上显示年月日 */ /*以下显示时分秒 */ write_(0x86)。 write_date(table_Digital[ho1])。 write_(0x87)。 write_date(table_Digital[ho2])。 write_(0x88)。 write_date(table[2])。 write_(0x89)。 write_date(table_Digital[mi1])。 write_(0x8A)。 write_date(table_Digital[mi2])。 write_(0x8B)。 write_date(table[2])。 write_(0x8C)。 write_date(table_Digital[s1])。 write_(0x8D)。 write_date(table_Digital[s2])。 } void show2(void) { /*显示温度 ******/ write_(0xc0)。 write_date(table[4])。 write_(0xc1)。 write_date(table1[tem1=M1/1000])。 write_(0xc2)。 write_date(table1[tem2=(M1%1000)/100])。 write_(0xc3)。 write_date(table1[tem3=(M1%100)/10])。 write_(0xc5)。 write_date(table[5])。 write_(0xc6)。 write_date(table_Digital[h1])。 write_(0xc7)。 write_date(table_Digital[h2])。 write_(0xC9)。 write_date(table[6])。 write_(0xca)。 write_date(table_Digital[L1])。 write_(0xCb)。 write_date(table_Digital[L2])。 } void InitTimer0(void) { /*中断初始化函数 */ TMOD = 0x01。 TH0 = 0x3C。 TL0 = 0xB0。 EA = 1。 ET0 = 1。 TR0 = 1。 } void Time24H()。 //24 小时时间函数的声明 void Calendar()。 //日期控制函数的声明 void Timer0Interrupt(void) interrupt 1 { /*每 5000us中断一次 */ TH0 = 0x3c。 TL0 = 0xb0。 num++。 if(num==20) { num=0。 Time24H()。 } } void Time24H() { /*一天的时间控制 */ s2++。 if(s29) { s2=0。 s1++。 if(s15) { s1=0。 mi2++。 if(mi29) { mi2=0。 mi1=mi1+1。 if(mi15) { mi1=0。 ho2++。 if(ho12) if(h29) { ho2=0。 ho1++。 } if(ho1==2) if(ho23) { ho2=0。 ho1=0。 Calendar()。 } } } } } } /*******************以上是液晶显示部分 **************/ /******************按键调整时间和温度上下限 *********/ key() { if(K1==0) {delay(500)。 if(K1==0) QWE++。 while(!K1) { if(QWE==1) { write_(0x86)。 write_(0x0e)。 } if(QWE==2) { write_(0x87)。 write_(0x0e)。 } if(QWE==3) { write_(0x89)。 write_(0x0e)。 } if(QWE==4) { write_(0x8A)。 write_(0x0e)。 } if(QWE==5) { write_(0xC6)。 write_(0x0e)。 } if(QWE==6) { write_(0xC7)。 write_(0x0e)。 } if(QWE==7) { write_(0xCA)。 write_(0x0e)。 } if(QWE==8) { write_(0xCB)。 write_(0x0e)。 } if(QWE==9) { QWE=0。 } } } if(QWE!=0) { if(K2==0) { delay(5000)。 if(K2==0) { while(!K2)。 //bulijie if(QWE==1) {ho1++。 if(ho12)。基于stc89c52、ds18b20、lcd1602、at24c02温度警报器的单片机课程设计
相关推荐
度,可编程为 9位~ 12 位转换精度,测温分辨率可达 摄氏度,分辨率设定参数以及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。 被测温度用符号扩展的 16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个 DS18B20可以并联到 3 根或 2 根线上, CPU只需一 根端口线就能与诸多 DS18B20 通信,占用微处理器的端口较少
经过一个放大电路即可发送给 ADC0804 采集,信号经过 A/D 转换模块后传送进入单片机进行 4 处理。 单片机内部程序中预先设定报警临界 值,包括温度过高报警和气体浓度过高报警。 单片机正常工作后,判断所接收到的数据是否达到报警临界值,如果到达报警值单片机控制蜂鸣器和 LED 灯进行报警,如果没有达到报警值单片机继续接收并处理新数据。 如果单片机接收到报警按键信号,直接报警。 单片机实时向
nterface and methods of operation. Briefed the form of the production process of the preparation process, adding that the process of piling the final and the author describes the process of software
完成。 其原理图如图 31所示。 图 31 电路原理图 键盘输入模块 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。 采用的是矩阵式按键键盘,它由行和列组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多 I/O口。 本设计中使用的这个 4 4键盘不但能完成密码的输入还能作特别功能键使用。 键盘的每个按键功能在程序设计中设置。
温度来洗涤可充分溶解洗衣粉,加快洗衣粉中弱酸性物质与污物的化学反应速度,提高洗衣粉中酶的活性,同时有利于溶解汗渍, 血渍,降低灰尘,油污的粘附作用,从而可在同样的洗净比下大幅度降低洗涤过程对机械力的需求。 3) 温度高有利于污物在水中的扩散。 4) 高温能有效的杀死一些细菌。 没有 加温的洗涤的波轮式洗衣机无论怎样的水流,要达到一定的洗净比,都必须有足够的机械力,而机械力对衣物是由损伤的
库设备较多,相互连锁繁杂 统。 江苏科技大学南徐学院本科毕业论文 11 控制过程具有很强的时序性。 现场环境恶劣,粉尘、潮湿、振动、噪声、电磁干扰都比较严重,给电设备运行及检修都带来不便。 整个系统控制分散,覆盖距离远。 立体车库监控系统的主要功能 为了保证一次设备运行的可靠与安全,需要有许多辅助电气设备为之服务,能够实现某项控制功能的若干个电器组件的组合,称为控制回路或二次回路。