电机转速显示程序_第1页
电机转速显示程序_第2页
电机转速显示程序_第3页
电机转速显示程序_第4页
电机转速显示程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电机转速表设计#include<reg51.h>包含单片机寄存器的头文件#i nclude<intri ns.h> 包含_nop_()函数定义的头文件sbit rs=p2a0; 寄存器选择位,将rs位定义为p2.0引脚sbit rw=p2a1;读写选择位,将rw位定义为p2引脚sbit e=p2a2;使能信号位,将e位定义为p2.2引脚sbit bf=p0a7; 忙碌标志位,将bf位定义为p0.7引脚 unsigned char code digit = “0123456789”;/定义字符数组显示数字 unsigned int v;储存电机转速unsigned cha

2、r count; 储存定时器to中断次数bit flag; 计满1秒钟标志位/ 士 卜丄"卜卜士 士卜士 士士 *1* 士士 士 *4 士j哼、哼、哼、函数功能:延时1ms(3j+2)*i=(3x33+2)xl0=1010(微秒),可以认为是 1 亳秒void delay lms()unsigned char i,j; for(i=0;ivl0;i+) for(j=0;j<33;j+)函数功能:延时若十毫秒 入口参数:n/p ,p p /void delay(unsigned char n) unsigned char i;for(i=0;i<n;i+)delay lms

3、();/*1*匕匕匕匕匕1 tv函数功能:判断液晶模块的忙碌状态返回值:resulto result=l,忙碌;result二0,不忙unsigned char busytest(void)bit result;rs=0;根据规定,rs为低电平,rw为高电平时,对以读状态rw=1;e=l;/e=l,才允许读写_nop_();/空操作_nop_();_nop_();_nop_();空操作四个机器周期,给硬件反应时间result=bf; 将忙碌标志电平赋给resulte=0;将e恢复低电平return result;函数功能:将模式设置指令或显示地址写入液品模块 入口参数:dictatevoid

4、writeinstruction (unsigned char dictate) while(busytest()=l); /如果忙就等待rs=0;rw=0;e=0;根据规定,rs和r/w同吋为低电平时,可以写入指令e置低电平(根据表8-6,写指令时,e为高脉冲,/就是让e从0到1发生正跳变,所以应先置”0“_nop_(); _nop_(); po=dictate;_nop_();_nop_();_nop_(); _nop_();e=l;空操作两个机器周期,给便件反应时间将数据送入p0 口,即写入指令或地址空操作四个机器周期,给硬件反应时间 /e置高电平_nop_(); _nop_(); _n

5、op_(); _nop_(); e=0;空操作四个机器周期,给硬件反应时间当e山高电平跳变成低电平时,液晶模块开始执行命令函数功能:指定字符显示的实际地址 入口参数:xkl tzklkl tz tzkl kl tz tzkl kl tz tztz /<t* 卜卜 卜卜 7*t*卜 7*c*.卜卜卜卜卜 7*c*吓/void writeaddress(unsigned char x)writelnstruction(xl()x80); 显示位置的确定方法规定为"80h+地址码xh函数功能:将数据(字符的标准ascii码)写入液晶模块 入口参数:y(为字符常量)void write

6、data(unsigned char y)while(busytest()= 1);rs=1;rs为高电平,rw为低电平时,可以写入数据rw=0;e=0;e置低电平(根据表86 写指令吋,e为高脉冲,/就是让e从。到1发生正跳变,所以应先置”(tp0=y;将数据送入pod,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_();空操作四个机器周期,给硬件反应时间e=l;/e置高电平_nop_();_nop_();_nop_();_nop_();空操作四个机器周期,给硬件反应时间e=0;当e由高电平跳变成低电平时,液晶模块开始执行命令函数功能:对lcd的显示模式进行初

7、始化设置void lcdlnitiate(void)delay(;延时15ms,首次写指令时应给lcd 段较长的反应时间writelnstruction(0x38); 显示模式设置:16x2显示,5x7点阵,8位数据接口 delay(5);延时5ms ,给硬件一点反应时间writelnstruction(0x38);delay(5);writelnstruction(0x38); 连续三次,确保初始化成功delay(5);writelnstruction(oxoc); 显示模式设置:显示开,无光标,光标不闪烁delay(5);writelnstruction(0x06); 显示模式设置:光标右

8、移,字符不移delay(5);writeinstruction(oxo 1); 淸屏幕指令,将以前的显示内容消除delay(5);)/3frtw rtw rtw rtw rtw9函数功能:显示速度提示符卜士土 士 士 *1*哼、void display_sym(void)writeaddress(oxoo); 写显示地址,将在第1行第1列开始显示writedata(,vr);writedata(丄匕将字符常量v写入lcd将字符常量=写入lcdtvlxvlxvl#vlxvl#j rj% rj rj% rj. rjw rj* rj* ry* rj* 卜 rj% rj% rj rj% rj. rj*

9、 rj* rj* rj*rj% rj% rj%rj. rj% rjw rj%rj% rj% rprj rj% rjw rf*rj% rj% rjw rj. rj rj% rj*rj% rj% rjw rj. rjw rj* rj* *7*rj% rj rj% rj% rj rj. rj函数功能:就示速度数值£z £z£z £zvlvlvlvl£z£z/rjw rj% 卜 rj% rj% rj* rj. rj% rjw rj% r|w rj% rj%rj% rp rjw rj rj% rjw rj rw rj% rj%rj% rp rj

10、 rjw rj ejw rj* rj* rj% rj% rj rj%rjw rj* rj. rj* rj* rj*rj% rj% rj% rj rj. rj.rj% rjw *7* rfw rj% rjrj% rj rj* rj. *7* rj* rj rj rj% rj% rj rj. jvoid display_val(unsigned int x)unsigned char i,j,k,l; i=x/1000;j=(x% 1000)/100; k=(x%100)/10; l=x%10;j,k,l分别储存温度的百位、十位和个位取千位取百位取十位/取个位写显示地址,将在第1行第3列开始显示将

11、千位数字的字符常量写入lcd将白位数字的字符常量写入lcd将十位数字的字符常量写入lcdwrite address(0x02);writedata(digitfit); writedata(digitj); writedata(digitk); writedata(digitij);函数功能:显示速度单位分/miit/?« rtw rtw rtw rtwry» ry»*tw rtw rtw rtw rtwrt»rtw <t« rtw rtw rtw rtw9f rtw»tw 丫 rtw rtw rtw rtw »tw

12、<tw <t« »tw rtw rtw rtw rtw *y» g将个位数字的字符常量写入lcd函数功能:主函数void display_unit(void)writeaddress(0x06);写显示地址,将在第2行第7列开始显示writedata(,r,);writedatac/1);writedata('m');writedataci*);writedata('n');将字符常量1写入lcd将字符常量/写入lcd将字符常量m写入lcd 将字符常量i写入lcd 将字符常量n写入lcd*1* *1* *1*fvoid

13、main(void)lcdlnitiateo;调川lcd初始化函数tmod=0x51;/定时器t1工作于计数模式1,定时器to工作于计时模式1:th0=(65536-46083)/256; 定时器t0的高8位设置初值,每50ms产生一次屮断tl0=(65536-46083)%256; 定时器t0的低8位设置初值,每50ms产生一次中断ea=1;eto=1;tr0= 1;开总中断定时器to中断允许启动定时器t0count=0;将to中断次数初始化为0display_sym();显示速度提示符displ ay_v al(0000);显示器工作正常标志display_unit(); while(l)j显示速度单位无限循环ttr1 = 1;th 1=0;tl1=o;定时器t1启动/定时器t1高8位赋初值0定时器t1低8位赋初值0flag=o;while(flag=o)时1'可还未满1分钟时间未满等待v=(thl*256+tll)*60/16; ii计算速度,每周产生16个脉冲 displ ay_val(v);显示速度函数功能:定时器t0的中断服务函数voidt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论