基于51单片机的温度检测系统内容摘要:
LL S 2S O UN D E RG ND. 开机滚动显示界面 临界温度设置界面 传感器异常警告界面 D7D6D5D4D3D2D1D0ENRWRSV C CG ND D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 LD7D6D5D4D3D2D1D0ENRWRSV C CG ND D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 LD7D6D5D4D3D2D1D0ENRWRSV C CG ND D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1LM 01 6 L. 八、程序清单 include include include define uchar unsigned char define uint unsigned int sbit DQ = P3^7。 //定义 DS18B20 端口 DQ sbit K5=P2^3。 sbit K6=P2^2。 sbit K7=P2^1。 bit presence。 //初始化标志位 sbit lcdrs = P2^6。 //加按键 sbit lcdrw = P2^5。 //减按键 sbit lcden = P2^7。 //确定 uint T,Temp。 //T 包含两个单元,用来存储 16位温度信息 uchar code cdis1[ ] = { WELCOM TO USE! }。 //正常测温显示界面 uchar code cdis2[ ] = {TEMP: . C}。 uchar code cdis3[ ] = { DS18B20 ERR0R }。 uchar code cdis4[ ] = { PLEASE CHECK }。 uchar code cdis5[ ] = {Zhong Qian Peng}。 //开始滚动界面 uchar code cdis6[ ] = {Communication 1}。 uchar code cdis7[ ] = {!!!!Warning!!!!}。 //过温语句 uchar code cdis8[ ] = {OVER TEMP}。 uchar code cdis9[ ] = {Please set temp!}。 //设定温度 uchar code cdis10[ ] = {Max Temp C}。 //可设两位 uchar bai,shi,ge,xiaoshu1,xiaoshu2,xiaoshu3,xiaoshu4,fuhao,th_temp,tl_temp。 char set=30。 //set 存有设定的温度,设初值为 30 define delayNOP()。 {_nop_()。 _nop_()。 _nop_()。 _nop_()。 }。 /******************************************************************* . * 两个延时函数 * *******************************************************************/ //1us void Delay(unsigned int num) { while( num )。 } //1ms void delay1(int ms) { unsigned char y。 while(ms) { for(y = 0。 y250。 y++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } } } void warning() //蜂鸣器发声 {speaker=1。 delay1(1)。 speaker=0。 delay1(1)。 } /****************************************************************** * 检查 LCD 忙状态 * * lcd_busy 为 1时,忙,等待。 lcdbusy 为 0时 ,闲,可写指令与数据。 * ******************************************************************/ bit lcd_busy() { bit result。 lcdrs = 0。 lcdrw = 1。 lcden = 1。 delayNOP()。 result = (bit)(P0amp。 0x80)。 lcden = 0。 return(result)。 } /****************************************************************** . * 写指令数据到 LCD * * RS=L, RW=L, E=高脉冲, D0D7=指令码。 * ******************************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy())。 lcdrs = 0。 lcdrw = 0。 lcden = 0。 _nop_()。 _nop_()。 P0 = cmd。 delayNOP()。 lcden = 1。 delayNOP()。 lcden = 0。 } /******************************************************************* * 闪动子程序 ,闪动 1 次 * *******************************************************************/ void flash() { delay1(600)。 //控制停留时间 lcd_wcmd(0x08)。 //关闭显示 delay1(200)。 //延时 lcd_wcmd(0x0c)。 //开显示 delay1(200)。 } /******************************************************************* * 写显示数据到 LCD * * RS=H, RW=L, E=高脉冲, D0D7=数据。 * *******************************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy())。 lcdrs = 1。 lcdrw = 0。 lcden = 0。 P0 = dat。 . delayNOP()。 lcden = 1。 delayNOP()。 lcden = 0。 } /************************************* /* LCD 初始化设定 * /*************************************/ void lcd_init() { delay1(15)。 lcd_wcmd(0x01)。 //清除 LCD 的显示内容 lcd_wcmd(0x38)。 //16*2 显示, 5*7 点阵, 8位数据 delay1(5)。 lcd_wcmd(0x38)。 delay1(5)。 lcd_wcmd(0x38)。 delay1(5)。 lcd_wcmd(0x0c)。 //显示开,关光标 delay1(5)。 lcd_wcmd(0x06)。 //移动光标 delay1(5)。 lcd_wcmd(0x01)。 //清除 LCD 的显示内容 delay1(5)。 } /********************* * 设定显示位置 * *********************/ void lcd_pos(uchar pos) {。基于51单片机的温度检测系统
相关推荐
算机的显示器和液晶电视等。 电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏 LCD 进行显示,具体连接方式如图 所示: 主电路 控制电路即 单片机 电路 , 主要由 MCS51 单片机组成 , 单片机运行系统程序 , 结合外部输入来控制显示电路 , 显示相应运算结果。 结合键盘电路、显示电路,主图 6 键盘电路图
定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 图 ( a)数码管引脚图 ( b)共阳极内部结构图 ( c)共阴极内部结构图 本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的 a、 b、 c、 d、 e、 f、 g、 h 引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示 0~ 9 的编码见表。 表 共阴极数码显示管字型代码
路 (OC)输出及非箱位保护式输入结构,如 图 所示。 上拉电阻 R 源端与 IC 卡的供电电源相连接。 当 IC 卡处于供电状态时,整个接日电路接通,接口设备与 IC 卡间构成逻辑通路 :而当 IC 卡处于下电状态时,上拉电阻 R 的源端失去了供电,整个与卡接 口 的电路均处于不带电状态。 所有的 IC 卡接口部分都加入了箱位保护二极管,这些箱位二极管可以使各引脚上的电压严格地限定在
918171615IN 3IN 4IN 5IN 6IN 7S T A R TE O CD3OEC L O C KV c cV1G N DD1IN 2IN 1IN 0A D D AA D D BA D D CA L ED7D6D5D4D0V2D2A D C 0 8 0 9【精品文档】世界上,成功的有两种人,一种人是傻子,一种人是疯子。 傻子是会吃亏的人,疯子是会行动的人。 AT89C52 单片机
片机原理及接口技术 .北京 .北京航空航天大学出版社 ,2020 【 7】饶庆和 .89C51 单片机实用技术 .北京 .人民邮电出版社 ,2020 【 8】清华大学电子学教研组 .闫石 .数字电路基础 .高等教育出版社 ,2020 【 9】李华 .MCS51 系列单片机使用接口技术 .北京航空航天大学出版社 ,1993 【 10】杨欣 .王玉凤 .51 单片机应用实例详解 清华大学出版社
如大写的英文字母 “ A” 的代码是 01000001B( 41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母 “ A”。 LCD1602 液晶模块内部的控制器共有 11 条控制指令。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志 位是不是 为低电平 ,是低电平则 表示不忙,否则此指令失效。 要显示字符时要先输入显示字符地址