毕业设计自行车测速仪(3)

2019-01-12 17:27

{ unsigned char i=250; //延时 while(i--);

SelectScreen(0);

SetOnOff(0); //关显示 //ClearScreen(0);//清屏 SelectScreen(0);

SetOnOff(1); //开显示 SelectScreen(0);

SetStartLine(0); //开始行:0 }

//8*8汉字显示函数

void z88(unsigned char lin,unsigned char column,unsigned char *w, unsigned int address) { unsigned char i;

if(column>16) {return;}

if(column<8) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7)则写在第一屏上 ,每列一个字节 else {

SelectScreen(2); //否则 (8,9,10,11,12,13,14,15)写在第二屏上 column=column & 0x07; //防止越界 }

SetLine(lin);

SetColumn(column<<3);//colum×8 0-64 for(i=0;i<8;i++) WriteByte(w[address+i]); }

//8*16汉字显示函数

void z816(unsigned char lin,unsigned char column,unsigned char *p,unsigned int m) {

lin=lin<<1;

z88(lin,column,p,m*16);

z88(lin+1,column,p,m*16+8); }

//16×16汉字显示函数

void z1616(unsigned char lin,unsigned char column,unsigned char *p,unsigned int m) //lin(页)=16,8格=column(列,不是y),m为第几个汉字,所有汉字的字模都写在一个数组中。 {

lin=lin<<1; //lin*2,一个汉字占两页 z88(lin,column,p,m*32);

z88(lin,column+1,p,m*32+8); z88(lin+1,column,p,m*32+16); z88(lin+1,column+1,p,m*32+24); }

//单总线温度读取

void ds18s20readtemperature(void)

{

char temp_lsb,temp_msb; char ctemperature; z1616(1,0,a,0); z1616(1,2,a,1); z1616(1,8,a,9); z816(1,4,b,13); ds18s20reset();

ds18s20writebyte(0xcc); ds18s20writebyte(0x44); ds18s20delay(5); ds18s20reset();

ds18s20writebyte(0xcc); ds18s20writebyte(0xbe); ds18s20delay(5);

temp_lsb=ds18s20readbyte(); temp_msb=ds18s20readbyte(); if(temp_msb==0) {

temp_lsb>>=1; z816(1,5,b,16); } else {

z816(1,5,b,15);

ctemperature=temp_lsb=((-1)*temp_lsb); temp_lsb>>=1; }

ctemperature=temp_lsb; ctemperature/=10;

z816(1,6,b,ctemperature); temp_lsb%=10;

z816(1,7,b,temp_lsb); }

//时钟读秒寄存器 uchar dumiaojicunqqi() {

uchar d;

writebyteds1302(0xbf); d=readbyteds1302(); resetds1302(); return(d); }

//时钟寄存器内容显示函数 void ds1302display() {

uchar sec,min,hrs,c; z1616(0,0,a,2); z1616(0,2,a,3); z816(0,4,b,13); z816(0,7,b,13); z816(0,10,b,13); resetds1302();

writebyteds1302(0xbf); sec=readbyteds1302(); c=sec&0x0f; z816(0,12,b,c); c=(sec&0x70); c>>=4;

z816(0,11,b,c);

min=readbyteds1302(); c=min&0x0f; z816(0,9,b,c); c=(min&0x70); c>>=4;

z816(0,8,b,c);

hrs=readbyteds1302(); c=hrs&0x0f; z816(0,6,b,c); c=(hrs&0x30); c>>=4;

z816(0,5,b,c); resetds1302(); }

//读秒的低4位

uchar shizhongdumiao() {

uchar sec; resetds1302();

writebyteds1302(0xbf); sec=readbyteds1302(); resetds1302(); sec&=0x0f; return(sec); }

//速度

float sudu()

{

float a; TR0=0; a=TL0; TL0=0; TR0=1;

a*=1.1304;//0.314*3.6km/h return(a); }

//显示速度

void xianshisudu(float e) {

unsigned int c,d,f; z1616(2,0,a,4); z1616(2,2,a,1); z816(2,4,b,13); z816(2,7,b,14); z816(2,9,b,17); z816(2,10,b,10); z816(2,11,b,12); z816(2,12,b,18); e*=10; f=d=c=e; c/=100;//十位 z816(2,5,b,c); d%=100; d/=10;

z816(2,6,b,d); f%=10;

z816(2,8,b,f); }

//显示里程

void xianshilicheng(float i) {

unsigned long int c,d,e,f,g,h; z1616(3,0,a,5); z1616(3,2,a,6); z816(3,4,b,13); z816(3,11,b,10); c=d=e=f=g=h=i; h/=100000; c%=10000; c/=10000; d%=10000;

d/=1000; e%=1000; e/=100; f%=100; f/=10; g%=10;

z816(3,5,b,h); z816(3,6,b,c); z816(3,7,b,d); z816(3,8,b,e); z816(3,9,b,f); z816(3,10,b,g); }

//外部中断函数,按键就中断

void anjianzhuanhuan() interrupt 0 {

qq=(!qq); }

//串口中断 ,接收计算机传过来的数据 void chuanko() interrupt 4 {

while(RI==0); pp=SBUF; RI=0;

if(pp==8)//如果传过来的为8,则关串口中断 ES=0; }

//主函数 void main() {

uchar i=0,m,q,*p,o=0; unsigned int n=0x0000; float j,k,l; union {

uchar chbuf[4];

float fbuf;

}floa_data;

P3=0xff; IT0=1; EX0=1; EA=1;


毕业设计自行车测速仪(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分析化学教案首页(A4)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: