




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、现代电子技术综合实验/*1)在数码管的第一、二个显示当前环境温度,第三、六个数码管熄 灭,第四、五个数码管显示设定温度,第七、八个数码管显示电机转速;设定温度初值25,利用“ +两个按键可以加减该温度数值,范围在16、30之间,按键按下蜂鸣器响0.2so2)根据设定温度和实际环境温度的温差驱动直流电机。设定温度等于 环境温度,直流电机停转;设定温度和环境温度温差的绝对值越大,直流电机转速越快(要求最 大转速控制在100以内)。3)增加一个按键,当其按下,数码管显示学号(后8位)再次按下, 恢复温度和转速的显示。*/#inelude <reg51. h>#inelude <ab
2、sacc h>#inelude <ctype h>#include<math h>ftinclude <i2c.h>/定义i/o接口sbit pwm = p2飞;/pwm方波输出(接至mo tor a,控制直流电机转速)sbit key1 = p2p;/按键1 (温度设定值加)sbit key2 = p2j;/按键2 (温度设定值减)sbit key3 = p2"2;/按键3显示选择sbit buzzer 二 p2,;/定义全局变量unsigned char dispbuf 8 :/定义数码管显示缓冲区(由t1定 时屮断自动扫描)int pw
3、mvalue, xiang;/预设的电机转速值,范围20250跟蜂响触发bi t swtr;/软件定时器运行标志bi t swtf;/软件定吋器溢出标志unsigned int swtv;/软件定时器定时值/定义pwm最大值#define pwmmax200/*函数:t1intsvc0功能:定吋器t1的中断服务函数(每100 us中断一次)顺带蜂鸣了 */void t1intsvco interrupt 3code unsigned char com二0x01,0x02,0x04, 0x08, 0x10, 0x20, 0x40, 0x80;static unsigned char n = 0;
4、static unsigned char t 二 0;/扫描数码管pl = oxff;/暂停显示xbyte0xe800二 'dispbuf n ;/更新扫描数据pl 二 comn;/重新显示n+;n &二0x07;/是与不是或,防止到0x08/产心pwm方波,驱动电机t+;if (t>pwmma.x) t二0;if ( t < pwmvalue )elsepwm 二 0;/模拟一个软件定吋器if ( swtr )if ( swtv 二二 0 ) swtf 二 1;if (xiang)buzzer二!buzzer;xiang-;if (xia.ng=0) xiang二
5、0;函数:dispchar()功能:在数码管上显示字符参数:x:显示位置(07)c:要显示的字符(仅限09、abcdef和-)*/void dispchar(unsigned char x, unsigned char c)/0123456789abcdef的数码管字型数据code unsigned char tab二0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f ;unsigned char t;x &二 0x07;x 二 7 - x;t 二 toint (c);if ( t < 10 )dispbufx =
6、tabt;/*函数:dispclear()功能:清除数码管的所有显示*/void dispclear()unsigned char i;for ( i=0; i<8; i+ )dispbufi = 0x00;函数:dispstr()功能:在数码管上显示字符串参数:x:起始显示位置(07)*s:要显示的字符串(其中的字符仅限09)*/void dispstr(unsigned char x, unsigned char *s)unsigned char c; for (;)c 二 *s+;if ( c 二二0' ) break;dispchar (x+, c);函数:delay()
7、功能:延吋0.1ms6. 5536s */void delay(unsigned int t)swtv二t;/软件定时器赋初值swtr二1;/启动软件定吋器while ( !swtf ) ;/等待溢出swtr二0;/停止软件定时器swtf二0;/清除溢出标志函数:keyscan()功能:键盘扫描返回:扫描到的键值*/unsigned char keyscan() unsigned char k 二'0' if (key 1=0) k 二; if(key2=0) k 二; if (key3=0) k 二 t'return k;函数:bytetostr()功能:字节型变量c
8、转换为十进制字符串*/void bytetostr(unsigned char idata *s, unsigned char c)code unsigned char tab二10;unsigned char i;unsigned char t;for ( i=0; i<l; i+ ) t = c / tabi; *s+ 二'o' + t;c -二 t * tabi;*s+ 二'o' + c;*s = ' 0 ;函数:measurespeed ()功能:测量电机转速返回:转速值(单位:转/秒) */unsigned char measurespe
9、ed()tho 二 tlo 二 0;tro 二 1;delay(2500);个槽)tro 二 0;tfo 二 0;return tlo;会超过100)/清除计数器to/启动计数器to/延时250ms (因为直流电机转盘上正好有4/停止计数/清除(可能的)溢出标志/返回结果(单位:转/秒;已知电机转速不函数:lm75a_gettemp功能:读出lm75a的温度值返回:lm75a温度寄存器的数值(乘以0.125可得到摄氏度值) */int lm75a_gettemp()unsigned char buf2;int t;i2c_gets (0x90, 0x00, 2, buf);t = buf0;t
10、 «= 8;t +二 bufl;t二5;/去掉无关位return t;函数:syslnit()功能:系统初始化*/void syslnit ()unsigned char i;for ( i=0; i<8; i卄)dispbuf i二0x00;/数码管初始化为全灭i2c_init();pwmvalue二30;/设置电机初始转速swtr 二 0;swtf = 0;swtv 二 0;tm0d &二 oxof;tmod |= 0x20;/设置t1为8位定吋器,自动重装th1 二 tl1 二 0xa4;/设置 t1 初值,对应 100 uset1二1;/使能t1中断tr1 二
11、1;/启动 t1ea二1;/使能总中断tmod &二oxfo; /设置定时器to的工作方式16位计数 tmod |二 0x05;void main()int t,to二25;unsigned char a,k, i二0;unsigned char spd;unsigned char s3;unsigned char temp3;unsigned char tempo3;unsigned char num8二07103006;syslni t ();for (;)if(a二二0)if(i二二to) pwmvalue=0;elseif (pwmvalue<100)&(pwmv
12、alue>29) pwmvalue=30+5*abs(it0);elsepwmvalue=30;bytetostr (temp, to);dispstr (3, temp) ;/显示设定温度t 二 lm75a_gettempo ;i二1/8;bytetostr(tempo, i);dispstr (0, tempo) ;/显示环境温度spd 二 measurespeed();bytetostr(s, spd);dispstr (6, s) ;/显示电机转速if (a=l)dispstr (0, num) ; /显示学号k 二 keyscan () ;/键盘扫描if ( k !二0')xiang=2000:break;/如果有键按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养殖合作协议合同范本
- 加工及测试合同范本
- 2025年锡林郭勒盟c1货运从业资格证模拟考试题
- 东莞物业服务合同范本
- 六座车买卖合同范本
- 买卖货款利息合同范本
- 劳动关系托管合同范本
- 劳务服务费合同范本
- 万瑞地产合同范本
- 办公商品采购合同范本
- 新媒体营销完整版教学课件最全ppt整套教程电子讲义(最新)
- 人教版小学数学二年级上册口算天天练
- 建筑施工安全检查标准-JGJ59-2011完整版
- 八年级下册道德与法治第一单元教案(4篇)
- 练字常用的稿纸-红色单线稿纸-书写纸张打印即可
- 动物生物化学(全套577PPT课件)
- 个人简历求职竞聘自我介绍PPT模板课件
- Q∕GDW 11612.1-2018 低压电力线高速载波通信互联互通技术规范 第1部分:总则
- 活性炭生产工艺流程图
- 重量分析法实验
- ASM铸造缺陷的国际分类7大类(学习版0228)
评论
0/150
提交评论