基于单片机的自行车测速系统设计与实现论文 - 图文(6)

2019-08-30 19:27

桂林电子科技大学毕业设计(论文)报告用纸 第23 页

unsigned char i=0; unsigned char dat; for (i=0;i<8;i++) {

DQ =1; _nop_();

DQ = 0; _nop_(); DQ = 1;

for(time=0;time<2;time++) ; dat>>=1; if(DQ==1) dat|=0x80; else dat|=0x00;

for(time=0;time<8;time++) ; } return(dat); }

void WriteOneChar(unsigned char dat) 个字节数据 入口参数:dat

{

unsigned char i=0;

for (i=0; i<8; i++) { DQ =1; _nop_(); DQ=0; DQ=dat&0x01; for(time=0;time<10;time++) DQ=1; for(time=0;time<1;time++);

dat>>=1;

23

函数功能:向DS18B20写入一

// ; 桂林电子科技大学毕业设计(论文)报告用纸 第24 页

}

for(time=0;time<4;time++) ; 4.4.3 DS1302时钟芯片模块程序设计

本设计中采用DS1302作为系统的时钟芯片,DS1302芯片内置年、月、星期、日、时、分、秒寄存器,通过读取各个时间寄存器的数据并将其输入LCD。可显示当前的时间日期。DS1302时钟芯片模块程序设计流程图如4-4所示。

图4-4 时钟芯片模块程序流程图

DS1302时钟芯片模块程序核心代码如下:

void Init_DS1302(void) //函数功能: 1302进行初始化设置 {

unsigned char flag; flag= ReadSet1302(0x81);

if(flag&0x80) {

WriteSet1302(0x8E,0x00); WriteSet1302(0x80,((40/10)<<4|(40)));

WriteSet1302(0x82,((5/10)<<4|(5))); WriteSet1302(0x84,((0/10)<<4|(0)));

24

桂林电子科技大学毕业设计(论文)报告用纸 第25 页

}

WriteSet1302(0x86,((11/10)<<4|(11))); WriteSet1302(0x88,((3/10)<<4|(3))); WriteSet1302(0x8c,((14/10)<<4|(14))); WriteSet1302(0x90,0xa5); WriteSet1302(0x8E,0x80);

}

void DisplaySecond(unsigned char x) {

unsigned char i,j; }

void DisplayMinute(unsigned char x) {

unsigned char i,j; }

i=x/10; j=x;

Write_Address(1,2); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1); i=x/10; j=x;

Write_Address(1,4); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);

//函数功能:显示秒

//函数功能:显示分钟

void DisplayHour(unsigned char x) //函数功能:显示小时 {

unsigned char i,j;

25

桂林电子科技大学毕业设计(论文)报告用纸 第26 页

}

i=x/10; j=x;

Write_Address(1,0); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);

void DisplayDay(unsigned char x) //函数功能:显示日 {

unsigned char i,j; }

void DisplayMonth(unsigned char x) //函数功能:显示月 {

unsigned char i,j; }

void DisplayYear(unsigned char x) //函数功能:显示年 {

unsigned char i,j;

i=x/10; j=x; i=x/10; j=x;

Write_Address(0,2) ; Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1); i=x/10; j=x;

Write_Address(0,4); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);

26

桂林电子科技大学毕业设计(论文)报告用纸 第27 页

}

Write_Address(0,0); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);

4.4.4 LCD12864显示模块程序设计

本设计采用LCD12864显示各个功能模块所测得数据,先在LCD上设置显示年、月、日、时、分、秒、T:、V:、路程:字符,然后在显示页面的指定位置输入各个功能模块的数据。LCD12864显示模块设计流程图如4-5所示。

图4-5 LCD显示模块设计流程图

LCD12864显示模块程序核心代码如下: unsigned char Strinr0[]={\年 月 日%unsigned char Strinr1[]={\时 分 秒%unsigned char Strinr2[]={\℃ V: %unsigned char Strinr3[]={\路程 : %unsigned

Number[]={ '0','1','2','3','4','5','6','7','8','9','.'};

void WriteData_LCD12864 (unsigned char X,unsigned char Y,unsigned char Data) //函数功能:对LCD指定位置写入数据

{

27

char


基于单片机的自行车测速系统设计与实现论文 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:欧陆591C系列数字直流式调速器的扩容 - 图文

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

马上注册会员

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