单片机应用实例一个液晶显示的数字式电脑温度计

上传人:be****l 文档编号:67781881 上传时间:2022-04-01 格式:DOC 页数:14 大小:101KB
返回 下载 相关 举报
单片机应用实例一个液晶显示的数字式电脑温度计_第1页
第1页 / 共14页
单片机应用实例一个液晶显示的数字式电脑温度计_第2页
第2页 / 共14页
单片机应用实例一个液晶显示的数字式电脑温度计_第3页
第3页 / 共14页
点击查看更多>>
资源描述
. . . 液晶显示器分很多种类,按显示方式可分为段式,行点阵式和全点阵式。段式与数码管类似,行点阵式一般是英文字符,全点阵式可显示任何信息,如汉字、图形、图表等。这里我们介绍一种八段式四位LCD显示器,该显示器置驱动器,串行数据传送,使用非常方便。原理图如下图:广告:错误!嵌入对象无效。下图是太阳人科技开发生产的4位带串行接口的液晶显示模块SMS0403的外部引线简图:有关该模块的具体参数,请查看该公司。此例中使用的温度传感器为美国DALLAS公司生产的单总线式数字温度传感器。该传感器本站有其详细的资料可供下载。此例稍加改动,即可做成温控器。下载驱动该模块的源程序LCD.PLM例2:saved from url=(0044)go18.163./_NTES/jlsplhd/cxyd7.htm LED显示电脑电子钟本例介绍一种用LED制作的电脑电子钟(电脑万年历)。其制作完成装潢后的照片如下图:上图中,年、月、日与时间选用的是1.2寸共阳数码管,星期选用的是2.3寸数码管,温度选用的是0.5寸数码管,也可根据个人的爱好选用不同规格的数码管。原理图如下图所示:上图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302,温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片选用的是仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或国产的AMT9595。整个电子钟用两个键来调节时间和日期。一个是位选键,一个是数字调节键。按一下位选键,头两位数字开始闪动,进入设定调节状态,此时按数字调节键,当前闪动位的数字就可改变。全部参数调节完后,五秒钟没有任何键按下,则数字停止闪动,退出设定调节状态。源程序清单如下(无温度显示程序):start:do;$include(reg51.dcl) declare (sclk,io,rst) bit at (0b3h) register; /* p33,p34,p35 */ declare (command,data,n,temp1,num) byte; declare a(9) byte; declare ab(6) byte; declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh, 0e0h,0feh,0f6h,00h); declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h, 2ch,0fdh,7dh,00h); declare da literally p15,clk literally p16,ale literally p17, mk literally p11,sk literally p12;clear:procedure; sclk=0;io=0;rst=0;end clear;send1302:procedure(comm); declare (i,comm) byte; do i=0 to 7; comm=scr(comm,1); io=cy; call time(1); sclk=0; call time(1); sclk=1; end;end send1302;wbyt1:procedure(,dat);/*字节写过程*/ declare (,dat) byte; call clear; rst=1; call send1302(); call send1302(dat); call clear;end wbyt1;wbyt8:procedure;/*时钟多字节突发模式写过程*/ declare j byte; call clear; a(7)=A(6);a(6)=a(0); rst=1; call send1302(command); do j=1 to 8; call send1302(a(j); end; call clear;end wbyt8;RBYT1:PROCEDURE; DECLARE I BYTE; CALL CLEAR; RST=1; call send1302(0c1h); IO=1; DO I=0 TO 7; SCLK=1; SCLK=0; CY=IO; N=SCR(N,1); END; A(8)=N; CALL CLEAR;END RBYT1;send595:procedure;declare k byte; do k=0 to 7;data=scr(data,1);da=cy;clk=1;clk=0; end;end send595;send595_1:procedure;declare k byte; do k=0 to 7;data=scr(data,1);da1=cy;clk1=1;clk1=0; end;end send595_1;rb1:procedure(abc,j); DECLARE (I,j,abc) BYTE; CALL CLEAR; RST=1; call send1302(abc); IO=1; DO I=0 TO 7; SCLK=1; SCLK=0; CY=IO; N=SCR(N,1); END; ab(j)=N; ab(j)=dec(ab(j); CALL CLEAR;end rb1;rbyt6:procedure; call rb1(0f1h,0); call rb1(0f3h,1); call rb1(0f5h,2); call rb1(0f7h,3); call rb1(0f9h,4); call rb1(0fbh,5); call rb1(0fdh,6);end rbyt6;wbyt6:procedure; call wbyt1(8eh,0); /* write enable */ call wbyt1(0f0h,ab(0); call wbyt1(0f2h,ab(1); call wbyt1(0f4h,ab(2); call wbyt1(0f6h,ab(3); call wbyt1(0f8h,ab(4); call wbyt1(0fah,ab(5); call wbyt1(0fch,ab(6); call wbyt1(8eh,80h); /* write disable */end wbyt6;rbyt8:procedure;/*时钟多字节突发模式读过程*/ declare (i,j) byte; call clear; rst=1; call send1302(command); io=1; do j=1 to 8;do i=0 to 7; sclk=1; call time(1); sclk=0;cy=io; n=scr(n,1); end; a(j)=n; end; call clear; a(0)=a(6);a(6)=A(7); a(0)=a(0) and 0fh; if a(0)6 then a(0)=0; CALL RBYT1; if (a(1)=0 and a(2)=0 and a(3)=0) then do; do num=0 to 35;call time(250); end; temp1=1; end; if temp1=1 then do;temp1=0;ab(4)=ab(4)+1; if ab(4)99h then do;ab(4)=0;ab(5)=ab(5)+1;if ab(5)99h then ab(5)=0; end; call wbyt6; end;end rbyt8;display:procedure; /*jieya,yima,fasong*/ declare (i,n,m) byte;n=a(0) and 0fh; /* send week */data=week(n);call send595; n=a(4); /* send date */ n=n and 0fh; data=aco(n); call send595; n=a(4); n=shr(n,4); data=aco(n); call send595; do i=1 to 3; /* send second,minute,hour */n=a(i);n=n and 0fh;data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595; end; do i=5 to 6; /* send month,year */n=a(i);n=n and 0fh;data=aco(n);call send595;n=a(i);n=shr(n,4);data=aco(n);call send595; end; n=a(8); /* send 19 or 20 */ n=n and 0fh; data=aco(n); call send595; n=a(8); n=shr(n,4); data=aco(n); call send595; do m=0 to 5;n=ab(m);n=n and 0fh;data=aco(n);call send595_1;n=ab(m);n=shr(n,4);data=aco(n);call send595_1; end; ale=0;ale=1;end display;beginset:procedure;a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h;a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00;a(8)=19h; /* set date/time (1997,7,1,8:00:00,week 3) */call wbyt1(8eh,0); /* write enable*/call wbyt1(80h,00h);/* start colock */call wbyt1(0beh,0abh);/*两个二极管与8K电阻串联充电*/command=0beh; /* write colock/date */call wbyt8;call wbyt1(0c0h,a(8);call wbyt1(8eh,80h); /* set write protect bit */end beginset;key:procedure;declare (i,time1,k1,tem) byte;call time(100);k1=7;time1=30;if mk=0 then do;do while time10;week: if k1=0 then do; do i=0 to 5; /* call hz(a(0); */end;do i=0 to 3; /* call hz0; */end; end; tem=a(k1); if k1=7 then tem=a(8); a(k1)=0aah;if k1=7 then a(8)=0aah;call display;call time(254);call time (254);a(k1)=tem;if k1=7 then a(8)=tem;call display;call time(254);call time(254);call time(254);time1=time1-1;if mk=0 then do;call time(100); /*MOD KEY PROCESS*/ TIME1=30; IF MK=0 THENDO; k1=k1-1; DO WHILE K1=0FFH; K1=7; END;END; end; IF SK=0 THEN DO;CALL TIME(100); /*SET KEY PROCESS*/ TIME1=30; IF SK=0 THEN DO;tem=tem+1;tem=dec(tem);DO CASE K1; DO WHILE tem=7;/*week*/ tem=0; END; DO WHILE tem=60H;/*scond*/ tem=0; END; DO WHILE tem=60H;/*minute*/ tem=0; END; DO WHILE tem=24H;/*hour*/ tem=0; END; DO WHILE tem=32H;/*date*/ tem=1; END; DO WHILE tem=13H;/*month*/ tem=1; END; DO while tem=100h; /* YEAR */ tem=00; END; DO WHILE TEM=21H; tem=19H; END; END; A(K1)=tem; if k1=7 then a(8)=tem;END; END; END; END;end key;main$program:mk=1;sk=1;temp1=0;num=0;p32=1;if sk=0 then call beginset;clk=0;da=0;ale=1;loop: do while mk=1 ; if a(0)6 then a(0)=0; command=0bfh; call rbyt8; call display; do while mk=0;call key;call wbyt1(8eh,0);command=0beh;call wbyt8;call wbyt1(0C0H,A(8);call wbyt1(8eh,80h); end; end;goto loop;end start;例3:saved from url=(0044)go18.163./_NTES/jlsplhd/cxyd5.htm 一个6位LED、4个按键的显示板 按键和显示是单片机系统的基本输入输出部件,下面介绍一个由74LS164驱动的6位数码管和4个按键组成的通用仪表面板。原理图如下图所示:其线路板图如下图所示:注:此板中多了三个LED发光管,这三个发光管是分别接在IC4,IC5,IC6 的13脚(Q7,数据串出脚)上的。14 / 14
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!