跪求单片机的大佬帮帮忙啊

手机签到经验翻倍!快来扫一扫!
DIY采用数字温度传感器和单片机控制的风扇温控、手控调速器
3832浏览 / 36回复
前几天做了一个采用模拟电路的温控风扇调速器,电路简单、功能也比较简单,感觉不大过瘾。昨晚用了一晚上时间构思了一个采用单片机控制的调速器。
电路采用89C51、DS18B20、24C02三片IC和一块1602LCD屏组成,采用数字传感加PWM调速方式。1 手动调整转速,最低至最高转速分10级调整。2 自动温控转速。3 自动温控方式时最高转速自由设定。3 手动、自动功能切换。4 参数断电记忆。5&&实时温度显示、累计工作时间显示(可以显示转速级别,但实时显示转速需要带测速功能的风扇才能支持,且51单片机的定时器都已占用,程序设计上有难度,所以暂时未加入转速显示功能)。电路采用+5V、+12V双电源供电,由一个D型电源接口取得。附图是硬件电路图和仿真结果,温度采集和显示已经没问题,PWM调速部分代码正在编写和调试。
采用单片机电路在实现同等功能的前提下,可以简化线路。硬件上的简单带来的是程序设计的比较复杂。程序设计了数字温度传感器的温度采集、51单片机模拟产生PWM、LCD显示、键盘扫描、存储器读写、定时器的使用等几个方面。开始时低估了程序设计的难度。这几天一直在不断调试程序,终于仿真通过了!/*******************************************************************&&智能温控器&&&&&&&&&&&&&&&&&&&&设计目标:切换键控制手动、温控模式切换,同时液晶屏显示工作模式。&&&&&&&&&&设置键设置手动转速或温控时最高转速的温度&&&&&&&&&&增减键设置手动转速或最高温度。作者:&& bg1trk&&&&&&&&&&程序框架完成&&设置了MOD SPD两个变量。MOD为模式变量,1为手控,2为温控。SPD为键盘输入的速度值。&&&&&&&&&&&&&&&&&&&&修改了显示1程序,根据MOD变量显示相应的工作模式&&温控模式时,速度值显示为00,意为不可调&&设置了温度比较后的速度值wspd,值在温度比较函数中确定。调试时临时设定了一个常数。&&设置了speed变量,用以显示速度和PWM参数。其值在键盘扫描函数中赋予,根据工作模式为SPD或wspd。&&增加T1的使用,用T1产生PWM.&&&&&&&&&&增加T1中断函数,根据a(占空比参数)的不同数值产生宽度不同的方波,占空比在50%-100%之间变化。&&&&&&&&&&增加PWM函数,根据speed的数值计算占空比参数a。&&&&&&/***********主函数*************/&&&&void main(void){ && ;&&&&PX1=0;&&&&PT1=1;&& P1=0&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //初始化p1口,全设为1 && x24c02_init();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//初始化24C08&& K=x24c02_read(2);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //读出保存的数据赋于Kspd=x24c02_read(6);mod=x24c02_read(8);&&&&&& delay_LCM(500); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//延时500ms启动initLCM( );&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //LCD初始化&& init_timer0( ); &&&&&&&&&&&&&&&&&&&&&&&&&& //时钟定时器0初始化() && Init_DS18B20( ) ;&&&&&&&&&&&&&&&&&&&&&&&&&& //DS18B20初始化DisplayListChar(0,0,str0); DisplayListChar(0,1,str1);&&&&&&wspd=4;&&//wspd为温度比较后的速度值,应为温度比较函数,此处临时用一常数代替&&&&&&&&&&&&&& && && &&&&while (1)&&&&{&& &&&&&& keyscan();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//按键扫描 &&&&ReadTemperature();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//温度采集&&&&switch(set)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //LCD根据工作模式显示{ case 3:displayfun4();delay_LCM(1000); &&//温度设定default:} keyscan( );&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //相当于延时if(ON_OFF==1)&&&&&& &&&& =1;} &&&&&&&&//}}else{outflag=0;OUT=1;}if(write==1)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//判断计时器是否计时一秒&&&&&& {&&&&&&write=0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//清零&&&&&&&& && &&&&&& } &&&& pwm(); }}
图为仿真时的截图
仿真时的设定和LCD显示为:
手控模式,转速1(最低),风扇全速温度设定为68°,CPU当前温度56°。
增加温控函数,并已调试完成。控制器采用脉宽调制技术控制风扇转速,PWM频率为50Hz。最低转速PWM占空比为50%,最高转速占空比为100%。
现可以实现以下全部功能:1 手控转速2 温控转速3 手控、温控转换4 实时温度、转速等级显示5 手动调整超温温度(超过这个温度将报警和强制风扇最高转速)6 设置超温报警和强制转速可手动开启、关闭7 超温报警8 超温时强制风扇到最高转速9 所有设置参数自动记忆
对&楼主&bg1trk&说:=========================不是直播啊。。。我一直也想弄这个,就是太懒了。。兄弟赶紧完工啊,我也好借鉴一下。。
顺便问一句,都成型了嘛??
看不懂....
对&第4楼&cowboypro&说:=========================
早先设计了一个采用模拟电路的调速器,功能简单,没兴趣弄下去。
这个电路的硬件电路早几天就设计完了,这几天在规划要实现的功能和编写C51代码。程序比预想的要复杂不少,费了不少力气。
刚刚全部调试完单片机程序,并以全部通过了仿真,没问题了。
这块板子硬件比较简单,难点全在程序设计方面。按以往的经验,只要仿真能通过,基本上开发工作就完成了90%以上。呵呵,剩下的工作就比较简单了,搭个实际电路试验一下,然后是设计PCB,出正规成品。
高科技啊!
对&第6楼&bg1trk&说:=========================上学时学过的单片机都就饭吃了。。。八月底才开始恶补,准备带学生实验用。一直就考虑温控,正好借鉴一下。。。都怪自己当初没好好学,很多高中生都比我强。。。
对&第7楼&我bu等i5了&说:=========================呵呵,比市售的那种廉价的调速器功能多一些,不过算不上高科技。
懂单片机开发的朋友都可以设计出这类东西,只不过费精力和时间而已。
对&第8楼&cowboypro&说:=========================呵呵,那您可别仅仅参照上面发的那些代码。小小的知识产权保护意识,帖子里的代码只是主函数的部分代码,绝大部分代码都没发上了。
对&第10楼&bg1trk&说:=========================放心吧,毕竟不是只用这一次,只不过整个方案明朗了,得感谢你啊
程序还是要自己来写的,图还是要自己画的,不是自己的,做出来也没意思。
对&第8楼&cowboypro&说:=========================你是老师???
出来就上市.知识就是饭菜.
外围电路看不懂
外接晶振 复位 p1按钮控制 p0液晶数据传输 p20-p22液晶读写控制 其他都看不懂
u3 u4不知道是啥(u4应该是iic器件 u3和q1组成两级放大电路?)
U3是光耦(光电耦合器),这里起到的是隔离和开关作用。单片机输出的PWM幅度只有5V,用作直接控制Q1开关感觉不舒服。12V支路里有风扇电机这个感抗元件,开关时会有较高的感应电压,隔离一下增加单片机电路的安全性。
U4是串行EEPROM,作用类似于计算机主板上的fislh芯片,用于存储工作模式、转速、设定温度等几个参数,且掉电后数据不会丢失。
上一个图是调试中的电路,这个图才是正常工作时使用的电路。
在实验板上搭了个电路实际试验了一下,没问题。不过需要根据实际使用情况微调一下不同温度对应的转速等级,只是调整程序,不用改动硬件电路。
图为刚设计好的PCB,因为准备用热转印法制作电路板,所以采用了单面板,走线都加粗到1mm以上。
模拟的3D顶视视图。将来出来的成品和这个差不多,只不过会有一块液晶显示模组盖在电路板上面。
灰色长条为LCD接口,通过插针1602接液晶显示器。
1602液晶屏比软驱位面板的尺寸宽,板子的尺寸设计成在光驱位面板位置安装。
使用者要自己改造一下光驱位的盖板,中间开一长方形开口,用来安装LCD屏。另开4个小圆洞透出控制按钮。
液晶屏通过插接件直接插在电路板上,电路板用铜柱连接安装于光驱位盖板后面,显示屏和控制按钮通过盖板的开口露出。
DIY板块,但大多数帖子都是用成品板拔拔插插,DIY元素少了点。这个是从基础开始完全自己设计、组装的小部件,算是丰富一下板块的DIY气氛吧。
转眼一年有余了!
支持键盘翻页 ( 左右 )&
用户名/注册邮箱/注册手机号
其他第三方号登录单片机吧-百度贴吧--单片机爱好者园地 [本吧禁止留邮箱]--单片机吧,不管你是新手还是老手,不管你是小盆友还是大盆友,这里都欢迎你们!单片机贴吧是一个云集了很多高手,技术宅的地方,大家互帮互助,
签到排名:今日本吧第个签到,
本吧因你更精彩,明天继续来努力!
本吧排名:
本吧签到人数:2875
可签7级以上的吧50个
本月漏签0次!
成为超级会员,赠送8张补签卡
连续签到:天&&累计签到:天
超级会员单次开通12个月以上,赠送连续签到卡3张
单片机爱好者园地 [本吧禁止留邮箱]
是一个基于单片机的智能玩偶 具体功能是:摸玩偶的某个部位玩偶会发出声音 摸头会发出一个声音 摸肚子
求做风力摆控制系统,要求用stm32f407zg为核心,具体要求是2015年电赛b题,有偿,很急,能做的联系
普中的开发版,8051芯片。谢谢!互相帮助
电子打铃器 设计要求: 要求按学校上下课铃响铃次序设计电子打铃器,周六周日不打铃
有偿找人代写程序
求帮忙修改论文
有没有大神做课程设计的,有偿,任务书
不知不觉已经收藏了不少的单片机学习资料,现在就想着分享给大家好了,需要的就留一下邮箱吧!
问一下,想做一个led灯做的循环亮的字灯。比如你我他这类字。最小模块有多大
51单片机相关帮忙或指导,欢迎私聊
本装置是利用51单片机采集温度(传感器18b20),然后使用8266进行无线传输数据,发送到一个主机上,最后
本人专业玩单片机,51,STM32,DSP, MSP430等,参加多次竞赛,并为队长带队获得多次国家级省级奖项,有问
这个是什么意思啊?
有大佬帮忙看一下这个课程设计嘛 用汇编语言怎么做
网上找到了实例程序,但不知道其中DA参数如何更改。做电赛题,调节放大器输出幅度,步距0.2v
求大神写一下汇编语言【图片】【图片】
想显示在串口上,显示的值对不上
有没有大神能帮我编一下程序,网上好多程序都不能用跪求
电子设计要做一个红外报警器,从板收不到红外信号就报警,收到信号就显示正常。现在从板用外部中断
贴吧里有大神会做这个吗,
大家如果有什么需要就在发到这里,需要什么样的程序,就把电路图,还有要求发到这来,尽管我的水平有限,但是想尽一点个人的小力,帮大家排忧解难!
求大神解答 这种板子点亮数码管需不需要外部条件的 除了接断选端和位选端外 不知道为什么亮不了
求助!!!MOVC A,@A+DPTR在DB 中到底怎么查表啊 ???
本人专业玩STM32 51单片机 MSP430 飞思卡尔单片机。 参加过飞思卡尔大赛,全国物联网大赛,机械创新大赛,
RT,想问问大佬有没有愿意帮忙做一下的,如果有偿多少左右的样子
目前处于初学阶段,写了一个程序,目的是用一个按键按一次就控制LED亮与灭,将程序烧写到单片机上发
a) 设计实现功能 STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,利用PS2摇杆控制器模块实现对摇
求程序,能在8051实验箱上操作的 制作一个LCD显示的智能电子钟: 1. 计时:秒、分、时、天、周、月、年
有会用Multisim画图的吗?课程设计多功能数字时钟
移植FC的模拟器到stm32上,运行超级玛丽略微有点卡,芯片是stm32f103rct6.
可以帮我看看这个程序吗 有没有错的地方 谢谢
曝光一骗子,网名也改了,之前叫创作工作室
一、课程设计任务 采用学校的实验板,设计数字电压表,要求具有如下功能: 1.能够利用实验板上的AD芯
各类单片机问题,上位机,app等
急 急 急 明天早上9-11点 单片机 C语言 急求助攻 价钱私聊 一般二本学校题不难 微信
单片机课设,程序,仿真有需要的可以联系我
大神们为什么我焊出来后,这个按键不好使呀
求stc80c52单片机驱动直流电机(4个按键控制开,关,加速,减速)的汇编语言或者c语言程序
可以搞搞,反正不要钱
听说hex文件的大小并不是下载进单片机的内存,而是code的大小,所以想问一下怎么看hex里的code值 或者为
你可能感兴趣的吧...
发贴红色标题
签到六倍经验
兑换本吧会员
赠送补签卡1张,获得
助攻总额: 43W
贴吧热议榜
发表后自动分享本贴
使用签名档&来源:百度知道
责任编辑:鲁晓倩字体:
为了帮助网友解决“简述MCS-51单片机串口通信的四种方式及其特点”相关的问题,学网通过互联网对“简述MCS-51单片机串口通信的四种方式及其特点”相关的解决方案进行了整理,用户详细问题包括:简述MCS-51单片机串口通信的四种方式及其特点,具体解决方案如下:用户提供的回答1:方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 方式 2 :采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1 增加了一个数据位,其余相同。第 9 个数据即 D8 位具有特别的用途,可以通过软件搂控制它,再加特殊功能寄存器 SCON 中的 SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或 1/32 ,可由 PCON 的最高位选择。 方式 3 :方式 3 与方式 2 完全类似,唯一的区别是方式 3 的波特率是可变的。而帧格式与方式 2- 样为 11 位一帧。所以方式 3 也适合于多机通信。
答:方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起...答:在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。 串行口的四种工作方式对应三种波特率。...答:串行口分四种工作方式,由SCON中的SMO、SM1二位选择决定。 1.方式0 (1)特点 1.用作串行口扩展,具有固定的波特率,为Fosf/12。 2.同步发送/接收,由TXD提供移位脉冲,RXD用作数据输入/输出通道。 3.发送/接收8位数据,低位在先。 (2)发送操...答:51单片机串行口不能直接和PC机的串口相连。 因为单片机的串行口是TTL电平,一般是0~5V,0~3.3V等范围; 而PC端的串行口是遵循串口EIA-RS-232C标准(协议)的,EIA-RS-232C对逻辑电平的规定是: 在TxD和RxD上:逻辑1(MARK)=-3V~-15V 在TxD和RxD...答:在通信中 按传送方式可分为三种:单工,半双工,全双工。 按通信方式可分为两种:异步通信,同步通信。 串行口的工作方式有四种: SM0,SM1为选择位。 当这两位分别为0 0时,工作方式为0,即8位移位寄存器方式 波特率 f/12 为0 1 时,工作方式为...答:使用串口的方式 2 和方式3 ,通过使用第九数据位和内置UART0 地址识别硬件支持一个主处理器与一个或多个从处理器之间的多机通信。当主机开始一次数据传输时先发送一个用于选择目标从机的地址字节。地址字节与数据字节的区别是:地址字节的第九位...答:小家电各种仪器仪表,如速度表计价器频率计打印机充电器等可以简化控制电路,便于功能修改和升级答:这个不全是,串口方式0是作为同步以为寄存器使用的,你用它可以模拟SPI 作为主机。 其他三个是串口,只是每次通讯的数据位数或波特率不同而已答:有四种工作方式: 方式0,13位定时/计数方式。 方式1,16位的定时/计数方式。 方式2,自动重装载8位工作方式 方式3,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。答:四种工作方式啊 1、方式0 串行接口的工作方式0为移位寄存器I/O方式。在串行口外接移位寄存器以扩展I/O接口,也可以外接串行同步I/O的设备。 (1)方式0输出 串行口以方式0发送时,数据以RXD端串行输出,TXD端输出同步信号。当一个数据写入串...位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或 1/32 ,可由 PCON 的最高位选择。
方式 3 :方式 3 与方式 2 完全...串行口分四种工作方式,由SCON中的SMO、SM1二位选择决定。
1... RB8不论什么状态RI都置1,串行口都接收数据。
当SM2=1时,为多机通信方式,接收到的...单片机树上都写得很清楚
哥们莫非在期末考试:
0C51串行通信共有4种工作方式,由串... SM1:串行口工作方式控制位。
SM0,SM1 工作方式
...MCS-51串行口mode 1就是异步通讯方式,没有时钟。要先设好波特率,没有信号时为'1'电平,数据是一个byte一个byte传,每个byte共十位。先收到的是起始位'0',然后是八个数据位...SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或 1/32 ,可由 PCON 的最高位选择。 方式 3 :方式 3 与方式 2...同步串行通信进行数据传输时,发送和接收双方要保持完全的同步,也就是双方的速率要相等,因此要使用同一时钟
异步通信中,在每一帧的数据前后放上了控制字符,双方的时钟...串行口分四种工作方式,由SM0、SM1二位决定,其定义如下: SM0、SM1 ... 工作方式
0 ...80C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0SM1决定.
方式0是同... ;
方式1,2,3的区别方要表现在帧格式及波特率两个方面.
方式1与方式2帧格式相同波特...可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或 1/32 ,可由 PCON 的最高位选择。 c:方式 3 :方式 3 与方式 2 完...相关文章:
最新添加资讯
24小时热门资讯
Copyright &
xue163.net All Rights Reserved. 学网 版权所有
京ICP备号-1
京公网安备02号扫一扫关注官方微信
后使用快捷导航没有帐号?
318今日发帖数
715昨日发帖数
1255390总帖数
992640会员总数
欢迎新会员
MCU ARM32位 Cortex-M3系列芯片
基于AM5728平台Linux系统固化方 ...
基于AM5728平台Linux系统固化方 ...
基于AM5728的DSP+ARM+FPGA架构的 ...
TI AM5728开发板QSPI FLASH测试
07-11 12:31
07-11 10:33
07-11 10:07
07-10 22:27
07-10 13:20
07-09 21:46
07-09 10:08
07-08 10:07
07-07 18:56
07-07 17:38
主题: 6, 帖数: 191
02-2505-1111-0307-0105-23
主题: 0, 帖数: 0
主题: 12, 帖数: 40
08-0206-2003-1303-1202-08
主题: 283, 帖数: 451
05-2302-1611-2211-1510-09
主题: 6526, 帖数: 1万
06-1806-1206-1005-2005-04
主题: 187, 帖数: 642
09-2509-1307-3107-2406-18
主题: 218, 帖数: 678
07-0607-0406-1206-0106-01
主题: 17, 帖数: 37
04-0909-0902-1402-1302-06
主题: 2万, 帖数: 2万
08-2908-1508-0308-0307-22
主题: 10, 帖数: 22
07-3112-2412-2408-1008-02
主题: 4079, 帖数: 4708
05-2501-0905-2211-2911-29
主题: 2463, 帖数: 2758
02-2702-2402-2202-2002-17
主题: 126, 帖数: 667
10-1203-2212-0710-1307-17
主题: 5万, 帖数: 5万
01-0207-2107-2105-2203-17
主题: 123, 帖数: 430
03-0801-1207-2806-0705-31
主题: 8991, 帖数: 1万
01-1107-0206-2106-1204-26
主题: 4889, 帖数: 6105
11-0605-1312-0111-1008-02
主题: 6, 帖数: 6
主题: 10, 帖数: 15
05-1706-1102-2811-2611-19
主题: 3, 帖数: 7
09-1007-22
主题: 7, 帖数: 11
主题: 6, 帖数: 10
主题: 10, 帖数: 10
主题: 28, 帖数: 58
06-1005-2305-1705-1705-15
主题: 22, 帖数: 30
07-2904-2005-2402-1602-14
主题: 10, 帖数: 13
10-0912-2507-2207-2207-22
主题: 46, 帖数: 66
07-2107-2107-0707-0707-07
主题: 19, 帖数: 30
07-0406-2706-2106-0105-27
主题: 41, 帖数: 67
04-1312-1209-3005-3105-13
主题: 7, 帖数: 81
02-1307-1805-3105-3112-23
主题: 76, 帖数: 113
08-1805-0811-0508-3008-18
主题: 133, 帖数: 216
06-2906-2606-2603-2212-27
主题: 46, 帖数: 109
09-1109-0609-0606-0205-22
主题: 9, 帖数: 27
05-0210-1508-0207-15
主题: 5, 帖数: 8
06-0701-0812-1611-0611-12
- 总计 1991 人在线
- 659 会员,1332 位游客- 最高记录是 32860 于 .
中国领先的单片机学习论坛|单片机视频教程|单片机论坛|MCU论坛|可编程逻辑器件|模电数电|单片机仿真51单片机,AVR单片机,ARM单片机,cortex单片机,DSP单片机,430单片机,CPLD,FPGA可编程器件 诚招友情链接,要求:电子类、单片机类网站,百度谷歌正常收录。有意着请联系网站客服.
本站送红包,支付宝扫码领取!
基本质料如图 。有兴趣 需要详细质料可以找我了解,产品提供测试。 目前加密性能最高
本次实验的开发板为广州创龙TL5728-IDK开发板
开发板简介:
本次实验的开发板为广州创龙TL5728-IDK开发板
开发板简介:
广州创龙基于TI Sitara AM5728(浮点双DSPC66x +双ARMCortex-A15)+Xilinx Artix-7FPG
本次针对创龙TL5728-EasyEVM的QSPI FLASH进行测试。
平台简单介绍:
AM5728是TI Sit
基本质料如图 。有兴趣 需要详细质料可以找我了解,产品提供测试。 目前加密性能最高
本次实验的开发板为广州创龙TL5728-IDK开发板
开发板简介:
本次实验的开发板为广州创龙TL5728-IDK开发板
开发板简介:
服务时间:周一至周日 8:30-22:00查看: 111|回复: 5
帮忙注释下程序,跪求大佬
#include &reg52.h&
//#include &intrins.h&
//#include &string.h&
//#include &math.h&
//#include &stdio.h&
//#include &stdarg.h&
//#include&stdlib.h&
#include&lcd.h&
#include&iic.h&
#define uchar unsigned char
#define uint unsigned int
sbit RED& & & & = P3^5;
sbit YELLOW = P3^6;
sbit GREEN& & & & = P3^7;
int AD;& & & && && &//AD
int CYCLE;& & & & //电压
float CYC; //电压
int ELE;//电量(百分比)
void delay(uint z)
& & & & uint x,y;
& & & & for(x=z;x&0;x--)
& & & & & & & & for(y=120;y&0;y--);
void main()
& & LcdInit();
& && & & & init_pcf);
& & & & RED = 0;YELLOW=0;GREEN=0;
& & & & while(1)
& & & & {& & & &
& & & & & & & & AD&&=&&adc_pcf8591();
& && &&&LcdWriteCom(0x80);
& & & & & & & & LcdWriteData('A');
& & & & & & & & LcdWriteData('D');
& & & & & & & & LcdWriteData(':');
& & & & & & & & LcdWriteData('0'+AD/100);
& & & & & & & & LcdWriteData('0'+AD/10%10);
& & & & & & & & LcdWriteData('0'+AD%10);
& & & & & & & & CYC = (AD*100)/51;
& & & & & & & & CYCLE = CYC;
& & & && &&&LcdWriteCom(0x80+0X40);
& && &&&LcdWriteData('V');
& & & & & & & & LcdWriteData('O');
& & & & & & & & LcdWriteData(':');
& & & & & & & & LcdWriteData('0'+CYCLE/100);
& & & && &&&LcdWriteData('.');
& & & & & & & & LcdWriteData('0'+CYCLE/10%10);
& & & & & & & & LcdWriteData('0'+CYCLE%10);
& & & & & & & & LcdWriteData('V');
& & & && & //3.20V-4.20V
& & & & & & & & ELE = CYCLE-320;
& & & & & & & & LcdWriteCom(0x8A+0X40);
& & & & & & & & LcdWriteData('E');
& & & & & & & & LcdWriteData(':');
&&& & & & & & & & LcdWriteData('0'+ELE/100);
& & & & & & & & LcdWriteData('0'+ELE/10%10);
& & & & & & & & LcdWriteData('0'+ELE%10);
& & & & & & & & LcdWriteData('%');
& & & & & & & & switch(ELE/10%10)
& & & & & & & & {
& & & & & & & & & & & &&&case 0: case 1: case 2: case 3: {RED = 1;YELLOW=0;GREEN=0;}//电量在0-30% 红灯亮
& & & & & & & & & & & &&&case 4: case 5: case 6: case 7: {RED = 0;YELLOW=1;GREEN=0;}
& & & & & & & & & & & &&&case 8: case 9:&&& & & & & & & & & & & & & & & &&&{RED = 0;YELLOW=0;GREEN=1;}
& & & & & & & & & & & &&&default : & & & & & & & & & & & & & & & & & & & & & & & &&&{RED = 0;YELLOW=0;GREEN=0;}
& & & & & & & & }
// & & & & & & & & delay(100);
男儿膝下有黄金,只跪苍天和娘亲;男儿满腔热血情,只报家国与人民。
读取并显示电压以及电量百分比&&并依据不同的百分比驱动不同的指示灯
#include &reg52.h&& && && && && && &&&//包含单片机的头文件
//#include &intrins.h&
//#include &string.h&
//#include &math.h&
//#include &stdio.h&
//#include &stdarg.h&
//#include&stdlib.h&
#include&lcd.h&& && && && && && && &&&//包含LCD的头文件
#include&iic.h&& && && && && && && &&&//包含IIC通信的头文件
#define uchar unsigned char& && && &&&//自定义的数据类型
#define uint unsigned int& && && && & //自定义的数据类型
sbit RED& && &&&= P3^5;& && && && && &//定义RED接在单片机的P3^5引脚上
sbit YELLOW = P3^6;& && && && && && & //定义YELLOW接在单片机的P3^6引脚上
sbit GREEN& && &&&= P3^7;& && && && & //定义GREEN接在单片机的P3^7引脚上
int AD;& && && && && && && && && && & //AD
int CYCLE;& && && && && && && && && & //电压
float CYC;& && && && && && && && && & //电压
int ELE;& && && && && && && && && && &//电量(百分比)
/******************************************//*
*函数名:void delay(uint z)
*参数:uint z
*返回值:void
*函数功能:延时函数
*//******************************************/
void delay(uint z)
& && &&&uint x,y;
& && &&&for(x=z;x&0;x--)
& && && && && & for(y=120;y&0;y--);
/******************************************//*
*函数名:int main()& && & 改为int main()
*参数:void
*返回值:int
*函数功能:主函数
*//******************************************/
void main()
& & LcdInit();& && && && && && && && && && &//调用LCD初始化函数,进行LCD的初始化
& & init_pcf);& && && && && && && &//应该也是个初始化函数
& && &&&RED = 0;YELLOW=0;GREEN=0;& && && &&&//让RED,YELLOW,GREEN引脚都为零
& && &&&while(1)
& && &&&{& && &&&
& && && && && & AD&&=&&adc_pcf8591();& && & //采集电压,让数值送入AD变量
& && &&&LcdWriteCom(0x80);& && && && && && &//对LCD显示屏进行写命令
& && && && && & LcdWriteData('A');& && && & //对LCD显示屏进行写数据(显示的东西)
& && && && && & LcdWriteData('D');
& && && && && & LcdWriteData(':');
& && && && && & LcdWriteData('0'+AD/100);& &//‘0’+AD/100这个加‘0’的意思是进行ASCII码的转换
& && && && && & LcdWriteData('0'+AD/10%10);
& && && && && & LcdWriteData('0'+AD%10);
& && && && && & CYC = (AD*100)/51;& && && & //CYC变量进行运算
& && && && && & CYCLE = CYC;
& && && && &LcdWriteCom(0x80+0X40);& && && &//对LCD显示屏进行写命令
& && &&&LcdWriteData('V');& && && && && && &//对LCD显示屏进行写数据(显示的东西)
& && && && && & LcdWriteData('O');
& && && && && & LcdWriteData(':');
& && && && && & LcdWriteData('0'+CYCLE/100);
& && && && &LcdWriteData('.');
& && && && && & LcdWriteData('0'+CYCLE/10%10);
& && && && && & LcdWriteData('0'+CYCLE%10);
& && && && && & LcdWriteData('V');
& && && &&&//3.20V-4.20V
& && && && && & ELE = CYCLE-320;
& && && && && & LcdWriteCom(0x8A+0X40);
& && && && && & LcdWriteData('E');
& && && && && & LcdWriteData(':');
& && && && && && &LcdWriteData('0'+ELE/100);
& && && && && & LcdWriteData('0'+ELE/10%10);
& && && && && & LcdWriteData('0'+ELE%10);
& && && && && & LcdWriteData('%');
& && && && &&&
& && && && && &
//以下内容就是对数据进行选择处理,读取并显示电压以及电量百分比&&并依据不同的百分比驱动不同的指示灯
& && && && && & switch(ELE/10%10)
& && && && && & {
& && && && && && && && & case 0:
& && && && && && && && & case 1:
& && && && && && && && & case 2:
& && && && && && && && & case 3:
& && && && && && && && & {
& && && && && && && && && &&&RED = 1;
& && && && && && && && && &&&YELLOW=0;
& && && && && && && && && &&&GREEN=0;
& && && && && && && && &&&}& && && && && && &&&//电量在0-30% 红灯亮
& && && && && && && && & case 4:
& && && && && && && && & case 5:
& && && && && && && && & case 6:
& && && && && && && && & case 7:
& && && && && && && && & {
& && && && && && && && && &&&RED = 0;
& && && && && && && && && &&&YELLOW=1;
& && && && && && && && && &&&GREEN=0;
& && && && && && && && &&&}
& && && && && && && && & case 8: case 9:& && && && && && && && && && && &&&{RED = 0;YELLOW=0;GREEN=1;}
& && && && && && && && & default :& && && && && && && && && && && && && && && && &&&{RED = 0;YELLOW=0;GREEN=0;}
& && && && && & }
//& && && && && &&&delay(100);
这个程序挺复杂的&&囧语C语言写的
就是红绿灯啊,通过延迟函数,判断哪个灯亮
Powered by}

我要回帖

更多关于 跪求大佬表情包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信