网站大量收购闲置独家精品文档,联系QQ:2885784924

《1602数字显示及采样.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《1602数字显示及采样

?1//1602液晶显示程序,?TX-1B实验板上的1602LCD的R/W读写端接地,?即始终只写,?不读数据 ??2//使用1602LCD显示DS18B20转换的温度值 ??3#include?reg52.H ??4#include?intrins.H ??5#include?math.H ??6 ??7#define?uchar?unsigned?char ??8#define?uint?unsigned?int ??9sbit?dula?=?P2^6; ?10sbit?wela?=?P2^7; ?11sbit?RS?=?P3^5;????//数据/命令选择端(H/L) ?13sbit?LCDEN?=?P3^4;?//使能端 ?14void?delayUs() ?16{ ?17????_nop_(); ?18} ?19 ?20void?delayMs(uint?a) ?21{ ?22????uint?i,?j; ?23????for(i?=?a;?i??0;?i--) ?24????????for(j?=?100;?j??0;?j--); ?25} ?26 ?27//第一行开始地址为0x80,?第二行开始地址为0xc0; ?28//写命令:RS=0,?RW=0; ?29void?writeComm(uchar?comm) ?30{ ?31????RS?=?0;???? ?32????P0?=?comm; ?33????LCDEN?=?1; ?34????delayUs(); ?35????LCDEN?=?0; ?36????delayMs(1); ?37} ?38 ?39//写数据:RS=1,?RW=0; ?40void?writeData(uchar?dat) ?41{ ?42????RS?=?1; ?43????P0?=?dat; ?44????LCDEN?=?1; ?45????delayUs(); ?46????LCDEN?=?0; ?47????delayMs(1); ?48} ?49 ?50//初始化 ?51//显示模式,?固定指令0x38,?16*2显示,?5*7点阵,8位数据接口 ?52//显示开/关及光标设置 ?53//指令1:?00001DCB?:?D:开显示/关显示(H/L);?C:显示光标/不显示(H/L),?B:光标闪烁/不闪烁(H/L) ?54//指令2:?000001NS?: ?55//N=1,?当读/写一个字符后地址指针加1,?且光标也加1;?N=0则相反 ?56//S=1,?当写一个字符,?整屏显示左移(N=1)或右移(N=0),?但光标不移动;?S=0,?整屏不移动 ?57void?init() ?58{ ?59????//先关闭数码管,?使两个锁存器锁存,?因开了数码管,?USB电压驱动不够,?将无法使LCD正常工作 ?60????dula?=?wela?=?0; ?61????writeComm(0x38);?//显示模式 ?62????writeComm(0x0c);?//开显示,?关光标 ?63????writeComm(0x06);?//写字符后地址加1,?光标加1 ?64????writeComm(0x01);?//清屏 ?65} ?66 ?67void?writeString(uchar?*?str,?uchar?length) ?68{ ?69????uchar?i; ?70????for(i?=?0;?i??length;?i++) ?71????{ ?72????????writeData(str[i]); ?73????} ?74} ?75 ?76/**//*****************************DS18B20*******************************/ ?77sbit?ds?=?P2^2; ?78//初始化DS18B20 ?79//让DS18B20一段相对长时间低电平,?然后一段相对非常短时间高电平,?即可启动 ?80void?dsInit() ?81{ ?82????//对于11.0592MHz时钟,?unsigned?int型的i,?作一个i++操作的时间大于为8us ?83????unsigned?int?i;?? ?84????ds?=?0; ?85????i?=?100;???//拉低约800us,?符合协议要求的480us以上 ?86????while(i0)?i--; ?87????ds?=?1;????//产生一个上升沿,?进入等待应答状态 ?88????i?=?4; ?89????while(i0)?i--; ?90} ?91 ?92void?dsWait() ?93{ ?94?????u

文档评论(0)

wangz118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档