lcd1602算法公式_lcd1602的工作过程
//---------------------------------------------------
lcd1602算法公式_lcd1602的工作过程
lcd1602算法公式_lcd1602的工作过程
void W_LCD_X1_Dat(uint sec)
{W_LCD_Com(0xc0 + 6);
W_LCD_Dat(0x30 + sec / 10000);
W_LCD_Dat(0x30 + (sec % 10000) / 1000);
W_LCD_Dat(0x30 + (sec % 1000) / 100);
W_LCD_Dat(0x30 + (sec % 100) / 10);
W_LCD_Dat('.');
W_LCD_Dat(0x30 + sec % 10);
}//---------------------------------------------------
void main()
{float ;
uint bbb;
init();
= 12.5;
bbb = 10;
W_LCD_X1_Dat(bbb);
while(1);
}//=========================================
初始化等函数,可见:
显示画面如下:
C语言的语句可以这样写
#include
void main()
{float fxx;
unsigned char str[10];
fxx = 12.5;
sprintf(str,"%8.2fn",fxx); //将12.5转换成8.2(2位小数)格式以ASCII方式存储到str字符串中
..........
}由于1620液晶模块支持ASCII码,所以只要将str中的内容送到1602就行了。至于1602的作我就不写了(其实我也没用过,但知道怎么用,应该不难)
#include
#include
#include "lcd_drive.h"
#define uchar unsigned char
#define uint unsigned int
void main()
{uint key();
void deplay(uchar j_p);
void deplay_s(long a);
uchar i=1;
uchar jp=-1;
uchar flat;
uint a,b;
delay_ms(10);
lcd_init();
lcd_clr();
lcd_wcmd(0x80);
while(1)
{while(jp==-1)
jp=key();
deplay(jp);
switch (jp)
{case '=': switch(flat)
{case '+': a+=b; deplay_s(a); break;
case '-': a=b-a; deplay_s(a); break;
case '': a=b; deplay_s(a); break;
case '/': a=b/a; deplay_s(a); break;
default:break;
}break;
case '+':flat='+';b=a;i=0;break;
case '-':flat='-';b=a;i=0;break;
case '':flat='';b=a;i=0;break;
case '/':flat='/';b=a;i=0;break;
case 'c':a=0;b=0;lcd_clr();break;
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:a=a10i+jp;i=1;break;
}jp=-1;
}}
//-------矩阵键盘扫描-------
uint key()
{uchar h = 0,l = 0;//矩阵行h,列l
uchar j_p;
P3 = 0x0f;
if(P3 != 0x0f)
{delay_ms( 2 );
if(P3!=0x0f)
{l = P3 & 0x0f ;
P3 = 0xf0;
h = P3 & 0xf0;
}}
switch(l | h)
{case 0x7e:j_p=0;break; //按键0
case 0x7d:j_p=1;break; //按键1
case 0x7b:j_p=2;break; //按键2
case 0x77:j_p=3;break; //按键3
case 0xbe:j_p=4;break; //按键4
case 0xbd:j_p=5;break; //按键5
case 0xbb:j_p=6;break; //按键6
case 0xb7:j_p=7;break; //按键7
case 0xde:j_p=8;break; //按键8
case 0xdd:j_p=9;break; //按键9
case 0xdb:j_p='+';break; //按键a
case 0xd7:j_p='-';break; //按键b
case 0xee:j_p='=';break; //按键Enter
case 0xed:j_p='';break; //按键c
case 0xeb:j_p='/';break; //按键e
case 0xe7:j_p='c';break; //按键取消
default:return -1;break;
}P3=0x0f;
while(P3!=0x0f);
return j_p;
}void deplay(uchar j_p)
{if(j_p != -1)
{if(j_p >= 0 && j_p <= 9)
j_p+=48;
lcd_wdat(j_p);
}}
void deplay_s(long a)
{int n[10];
uint i=0;
while(a)
{n[i]=a%10;
a/=10;
i++;
}while(i)
deplay(n[--i]);
}
做数字时钟,我有现成的程序,和我的毕业设计,但是我的毕业设计是关于实验板的,AT89S52的程序,程序是成品可以单独运行。
达拉斯公司的单总线温度传感器加STC51单片机,连线简单,时序稍有点复杂。一个简单的应用。
正常算法,乘以 3,600,000,即换算成了 km/h。
在程序中,故意,多写了两个零,于是,速度,就放大了100倍。
但是,显示的时候,在的两位之前,写上了一个小数点,
这样一来,人,观察数值时,又缩小了100倍。
实际上,是在速度数值里面,包括了两位小数。
time是微秒,所以hour=3600秒=36001000000微秒,
速度=周长/转一圈的时间。
L=50 也不知道这个源程序定义这个50是个什么。你别管他怎么定义的吧。就算电机的转速,你就按照公式来就行了。单位时间内前进的距离,就是速度。
情况1:
要门测转一圈的速度,要么测转50圈所需要的时间,然后用50圈的周长除以时间。 这单位是m/s
情况2:
设源程序的L=50 意思是转50圈,那么没准源程序不是周长/转一圈的时间,而是转50圈的时间/50,是一圈的速度,单位不是m/s,而是R/m 圈 每秒。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。