单总线多点测温系统,单总线它采用单根信号线既传输时钟又传输数据,而且数据传输是双向的它具有节省I/O 口线资源结构简单成本低廉便于总线扩展和 维护等诸多优点。本系统中所有的DS18B20都接在单片机的P1.1口上。用一个液晶屏显示,从单片机P3口接上8个开关,与右边的DS18B20 编号对应。当没有开关按下时屏幕显示"which NO you want press which key",要想看那一点处的温度就按下几号键(点击key右边的小红 点,按一下弹下,再按一下弹起)。只能有一个按键按下,当有多个按键下时,屏幕上显示“please press one key only !".
上传时间: 2017-04-07
上传用户:小码农lz
IC内核的设计源码!其中包含MP3内核,CPU内核,I2C内核等多达式种IC设计的源码!
上传时间: 2017-04-14
上传用户:璇珠官人
实现多个数字滚动,移位显示,当按下某个按键时,会将对应于端口的数值送入低位数码管显示
标签: 数字
上传时间: 2017-06-20
上传用户:yuanyuan123
几乎对所有开发板的按键都能用,给大家分享,大家多交流!
上传时间: 2013-12-25
上传用户:lanjisu111
一个IC总线的驱动包,包括发送和接收数据,应答位和非应答位的检测,还有发送多字节数据
上传时间: 2017-06-22
上传用户:yangbo69
本程序用到4x4按键中断扫描法,用lcd显示,开机时候显示一个数字钟(时间不可设,稍后加入该功能),钟正常走 如果按下开锁键,进入以请输入密码界面,输入密码,如果密码正确,显示欢迎使用,密码错误蜂鸣器报警 且LCD显示密码错误,请重新输入。 注:数字时钟用的是DS1302实现,由于本人也才学单片机一个多月,所以注释非常详细,初学者很容易看懂。
上传时间: 2014-01-20
上传用户:问题问题
按键的识别算法,消除按键的抖动,一键多功能等,
上传时间: 2017-08-22
上传用户:llandlu
通过单片机的模拟通道来处理按键的例程,读模拟通道的寄存器,用多次采样,求平均值的方法处理
上传时间: 2017-09-06
上传用户:qiao8960
本文设计实现的是一个多功能数字电子钟,其功能为:24小时制时、分、秒的时间显示,具有整点报时功能;年、月、日及星期的日历显示;具有秒表功能;可显示当前环境温度;可通过按键对各时间信息进行调整。系统采用单片机AT89C52作为主控芯片。系统中的显示模块采用LCD1602液晶显示器实现。LCD1602可以显示两行字符,每行16个字符,能够满足本系统的显示要求。系统中的温度采集模块采用DS18B20芯片实现。DS18B20体积小,其输出量是数字量,可直接与单片机通信,且为单总线传送,可简化电路,大大减小系统的体积。系统中的时钟产生模块采用DS1302时钟芯片实现。DS1302时钟芯片为单总线传送,只需一条线就可以完成与单片机之间数据的交换,且该芯片准确度很高,可大大减小电子钟的时间误差。总得来说本设计电路简单、容易实现且性能稳定。
上传时间: 2017-09-27
上传用户:lz4v4
在本课中,我们要用一个按键来实现跑马灯的 10 级调速。这又会涉及到键的去抖的问 题。 本课的试验结果是,每按一次按键,跑马速度就降低一级,共 10 级。 这里我们又增加了一个变量 speedlever,来保存当前的速度档次。 在按键里的处理中,多了当前档次的延时值的设置。 请看程序: ―――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个 52 标准内核的头文件 sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //长定时溢出标记,预置是 0 uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度 uchar speedlever=0; //保存当前的速度档次 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 //一个按键控制的 10 级变速跑马灯试验 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值 uchar ledi; //用来指示显示顺序 uint n; RCAP2H =0x10; //赋 T2 的预置值 0x1000,溢出 30 次就是 1 秒钟 RCAP2L =0x00; TR2=1; //启动定时器 ET2=1; //打开定时器 2 中断 EA=1; //打开总中断 while(1) //主程序循环 { if(ldelay) //发现有时间溢出标记,进入处理 { ldelay=0; //清除标记 P1=ledp[ledi]; //读出一个值送到 P1 口 ledi++; //指向下一个 if(ledi==4) { ledi=0; //到了最后一个灯就换到第一个 } } if(!K1) //如果读到 K1 为 0 { for(n=0;n<1000;n++); //等待按键稳定 while(!K1); //等待按键松开 for(n=0;n<1000;n++); //等待按键稳定松开 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出 不规则的法则 } } } //定时器 2 中断 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速 度为 1 秒 { t=0; ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理 } } ―――――――――――――――――――――― 请打开 lesson11 目录的工程,编译,运行,看结果: 按 K1,速度则降低一次,总共 10 个档次。
上传时间: 2017-11-06
上传用户:szcyclone