ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:64.95KB ,
资源ID:11697563      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11697563.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业设计自行车测速仪.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

毕业设计自行车测速仪.docx

1、毕业设计自行车测速仪#include #include #include #define GDM12864ADataPort P1 /LCD数据线#define uchar unsigned charsbit DI=P22; / 数据指令 选择sbit RW=P21; / 读写 选择sbit EN=P20; / 读写使能sbit cs1=P24; / 片选1sbit cs2=P23; / 片选2sbit sclk=P25;sbit i_o=P26;sbit rstb=P27;sbit ds18s20_dq=P36;sbit I2C_SCK=P33;sbit I2C_SDA=P35;uchar

2、qq=0,pp=0;/开始/暂停按键,计算机传输过来的数据为8则上传uchar code a=/16*16 0x10,0x22,0x64,0x0C,0x80,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00, 0x04,0x04,0xFE,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00, 0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x34,0x26,0x04,0x00, 0x4

3、0,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A,0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00, 0x00,0xFC,0x84,0x84,0x84,0xFE,0x14,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x00, 0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00, 0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,0x12,0x12,0xFA,0x12,

4、0x02,0xFF,0x02,0x00, 0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00, 0x40,0x42,0x44,0xCC,0x00,0xF4,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF6,0x04,0x00, 0x00,0x40,0x20,0x1F,0x20,0x51,0x48,0x44,0x42,0x7F,0x42,0x44,0x4C,0x61,0x20,0x00, 0x00,0x00,0xFE,0x12,0x12,0x12,0x12,0

5、xFE,0x12,0x12,0x12,0x12,0xFF,0x02,0x00,0x00, 0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x4D,0x68,0x40,0x00, 0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E,0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00, 0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00, 0x00,0x00,0x

6、FE,0x82,0x92,0x92,0x92,0xFE,0x92,0x9A,0xD2,0x82,0xFF,0x02,0x00,0x00, 0x40,0x20,0x1F,0x00,0x00,0x7E,0x22,0x22,0x22,0x3F,0x42,0x80,0x7F,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0xA0,0x90,0x88,0x84,0x86,0x80,0xC0,0x80,0x00, 0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x23,0x04,0x08,0x10,0x20,0x60,0x20

7、,0x00,0x00, 0x00,0x06,0x09,0x09,0xE6,0xF0,0x18,0x08,0x08,0x08,0x18,0x30,0x78,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00, 0x80,0x40,0x20,0xF8,0x47,0x48,0x48,0x48,0xC8,0x7F,0x48,0x48,0x4C,0x68,0x40,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0x02,0x0B,0x12,

8、0x62,0xD2,0x0A,0x06,0x02,0x00,0x00;uchar code b=/8*160x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x21,0x00,0x00,0x

9、08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x21,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x21,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x3F,0x21,0x21,0x21,0x

10、21,0x3F,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x3F,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x

11、01,0x01,0x3E,0x01,0x01,0x3E,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x13,0x24,0x24,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

12、00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x3F,0x06,0x09,0x10,0x20,0x00,0x00,/17,k0x

13、00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x02,0x02,0x02,0x3E,0x00,0x00/18,h;/延时程序,延时10usvoid Delay_10_uS(void)char i=10;while(i-);/n mS delayvoid Delay_N_mS( unsigned int n_milisecond) /* n mS delay */unsigned char i;while(n_milisecond-)i=37;while(i-);/启动传送bit I2C_Start(void)Delay_10_uS();I2C

14、_SDA =1;Delay_10_uS();I2C_SCK =1;Delay_10_uS();if ( I2C_SDA = 0) return 0;if ( I2C_SCK = 0) return 0;I2C_SDA = 0;Delay_10_uS();I2C_SCK = 0;Delay_10_uS();return 1;/停止信号void I2C_Stop(void)Delay_10_uS();I2C_SDA = 0;Delay_10_uS();I2C_SCK = 1;Delay_10_uS();I2C_SDA = 1;Delay_10_uS();/无应答的时序,有应答时需要在第9位输出0,

15、没有应答时,第9位为高void I2C_Nack(void)Delay_10_uS();I2C_SDA=1;Delay_10_uS();I2C_SCK=1;Delay_10_uS();I2C_SCK=0;Delay_10_uS();/如果发送完成并且在第9个脉冲处得到ack,那么返回0,表示成功bit I2C_Send_Byte( unsigned char d)unsigned char i = 8;bit bit_ack;while( i- )Delay_10_uS();if ( d &0x80 ) I2C_SDA =1;else I2C_SDA =0;Delay_10_uS();I2C_

16、SCK = 1;Delay_10_uS();I2C_SCK = 0;d = d 1;Delay_10_uS();I2C_SDA = 1;Delay_10_uS();I2C_SCK = 1;Delay_10_uS();bit_ack = I2C_SDA;I2C_SCK =0;Delay_10_uS();return bit_ack;/接收一个8位数据unsigned char I2C_Receive_Byte(void)unsigned char i = 8, d;Delay_10_uS();I2C_SDA = 1;while ( i-)d = d 1;Delay_10_uS();I2C_SCK

17、 =1;if ( I2C_SDA ) d+;Delay_10_uS();I2C_SCK =0;return d;/写EEPROM操作void AT24C64_W(void *mcu_address, unsigned int AT24C64_address, unsigned int count )while(count-)I2C_Start();I2C_Send_Byte( 0xa0 );I2C_Send_Byte( AT24C64_address/256 );I2C_Send_Byte( AT24C64_address %256 );I2C_Send_Byte( *(unsigned ch

18、ar*)mcu_address );I2C_Stop();Delay_N_mS(10);(unsigned char*)mcu_address)+;AT24C64_address+;/读EEPROM函数void AT24C64_R(void *mcu_address,unsigned int AT24C64_address,unsigned int count)while(count-)I2C_Start();I2C_Send_Byte( 0xa0 );I2C_Send_Byte( AT24C64_address/256 );I2C_Send_Byte( AT24C64_address % 2

19、56 );I2C_Start();I2C_Send_Byte( 0xa1 );*(unsigned char*)mcu_address = I2C_Receive_Byte();I2C_Nack();I2C_Stop();(unsigned char*)mcu_address)+;AT24C64_address+; /单总线延时void ds18s20delay(int useconds)int s;for(s=0;suseconds;s+);/单总线复位uchar ds18s20reset()uchar presencesignal;ds18s20_dq=0;ds18s20delay(30)

20、;ds18s20_dq=1;ds18s20delay(3);presencesignal=ds18s20_dq;ds18s20delay(30);return presencesignal;/单总线位写入void ds18s20writebit(char val)ds18s20_dq=0;if(val=1)ds18s20_dq=1;elseds18s20_dq=0;ds18s20delay(5);ds18s20_dq=1;/单总线字节写入void ds18s20writebyte(char val)uchar i;uchar temp;for(i=0;ii;temp&=0x01;ds18s20

21、writebit(temp);ds18s20delay(5);/单总线位读取uchar ds18s20readbit(void)uchar i;ds18s20_dq=0;ds18s20_dq=1;for(i=0;i3;i+)return ds18s20_dq;/单总线字节读取uchar ds18s20readbyte(void)uchar i;uchar value=0;for(i=0;i8;i+)if(ds18s20readbit()value|=0x01i;ds18s20delay(7);return(value); /实时时钟复位函数void resetds1302()ds18s20de

22、lay(1);sclk=0;ds18s20delay(1);rstb=0;ds18s20delay(1);rstb=1;ds18s20delay(1);/时钟字节读取函数uchar readbyteds1302()uchar i;uchar rbyte;uchar tempbyte; rbyte=0x00; i_o=1; ds18s20delay(1); for(i=0;i8;+i) sclk=1; ds18s20delay(1); sclk=0; ds18s20delay(1); tempbyte=(uchar)i_o; tempbyte=1; rbyte|=tempbyte; return

23、 rbyte; /时钟字节写入函数void writebyteds1302(uchar w_byte)uchar i;ds18s20delay(1); for(i=0;i=1; /时钟初始化函数void initds1302()resetds1302();writebyteds1302(0x8e);writebyteds1302(0);resetds1302();writebyteds1302(0x90);writebyteds1302(0xab);resetds1302();writebyteds1302(0xbe);writebyteds1302(0);writebyteds1302(0)

24、;writebyteds1302(0);writebyteds1302(0);writebyteds1302(0);writebyteds1302(0);writebyteds1302(0);writebyteds1302(0);writebyteds1302(0);resetds1302();/时钟字节写入函数void writeclkbyte(uchar adress,uchar date)adress=(adress*2)|0x80);resetds1302();writebyteds1302(adress);writebyteds1302(date);resetds1302(); /状

25、态检查 ,void CheckState() unsigned char dat; DI=0; RW=1; do GDM12864ADataPort=0x00; EN=1; dat=GDM12864ADataPort; EN=0; dat=0x80 & dat; /仅当第7位为0时才可操作(判别busy信号) while(!(dat=0x00); /向LCD发送命令/command :命令void SendCommandToLCD(unsigned char command) CheckState(); RW=0; GDM12864ADataPort=command; EN=1; EN=0;/

26、写显示数据/dat:显示数据void WriteByte(unsigned char dat) CheckState(); DI=1; RW=0; GDM12864ADataPort=dat; EN=1; EN=0; /设定行地址(页)-X 0-7void SetLine(unsigned char line) line=line & 0x07; / 0=line=7 line=line|0xb8; /1011 1xxx SendCommandToLCD(line);/设定列地址-Y 0-63void SetColumn(unsigned char column) column=column

27、&0x3f; / 0=column=63 感觉多余的,column已近小于64了。 column=column | 0x40; /01xx xxxx SendCommandToLCD(column);/设定显示开始行-XXvoid SetStartLine(unsigned char startline) /0-63 startline=startline & 0x07; startline=startline|0xc0; /1100 0000 SendCommandToLCD(startline); /开关显示void SetOnOff(unsigned char onoff)onoff=0

28、x3e | onoff; /0011 111xSendCommandToLCD(onoff);/选择屏幕/screen: 0-全屏,1-左屏,2-右屏void SelectScreen(unsigned char screen) /cs1: 1-左; cs2: 1-右switch(screen) case 0: cs1=0;/全屏_nop_(); _nop_(); _nop_(); cs2=0; _nop_(); _nop_(); _nop_(); break; case 1: cs1=0;/左屏_nop_(); _nop_(); _nop_(); cs2=1;_nop_(); _nop_()

29、; _nop_(); break;case 2: cs1=1;/右屏_nop_(); _nop_(); _nop_(); cs2=0; _nop_(); _nop_(); _nop_(); break;/延时delay(unsigned int t )unsigned int i=t,m,n;for(m=0;mi;m+)for(n=0;n100;n+);/清屏/screen: 0-全屏,1-左屏,2-右 ?分屏干嘛,直接全屏不好吗void ClearScreen(unsigned char screen) unsigned char i,j;SelectScreen(screen);for(i=0;i8;i+)SetLine(i);for(j=0;j128;j+)WriteByte

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1