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

2019-01-12 17:27

ds18s20_dq=1; }

//单总线字节写入

void ds18s20writebyte(char val) {

uchar i; uchar temp; for(i=0;i<8;i++) {

temp=val>>i; temp&=0x01;

ds18s20writebit(temp); }

ds18s20delay(5); }

//单总线位读取

uchar ds18s20readbit(void) {

uchar i;

ds18s20_dq=0; ds18s20_dq=1; for(i=0;i<3;i++) return ds18s20_dq; }

//单总线字节读取

uchar ds18s20readbyte(void) {

uchar i;

uchar value=0; for(i=0;i<8;i++) {

if(ds18s20readbit()) value|=0x01<

return(value); }

//实时时钟复位函数 void resetds1302() {

ds18s20delay(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;i<8;++i) { sclk=1; ds18s20delay(1); sclk=0; ds18s20delay(1); tempbyte=(uchar)i_o; tempbyte<<=7; rbyte>>=1; rbyte|=tempbyte; } return rbyte; }

//时钟字节写入函数

void writebyteds1302(uchar w_byte) {

uchar i;

ds18s20delay(1);

for(i=0;i<8;++i) {i_o=0; if(w_byte&0x01)i_o=1; sclk=0; ds18s20delay(1); sclk=1; ds18s20delay(1); w_byte>>=1; } }

//时钟初始化函数 void initds1302() {

resetds1302();

writebyteds1302(0x8e); writebyteds1302(0); resetds1302();

writebyteds1302(0x90); writebyteds1302(0xab); resetds1302();

writebyteds1302(0xbe); writebyteds1302(0); writebyteds1302(0); 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(); }

//状态检查 , 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; }

//写显示数据 //dat:显示数据

void WriteByte(unsigned char dat) {

CheckState(); DI=1; RW=0;

GDM12864ADataPort=dat; EN=1; EN=0; }

//设定行地址(页)--X 0-7

void SetLine(unsigned char line) {

line=line & 0x07; // 0<=line<=7 line=line|0xb8; //1011 1xxx SendCommandToLCD(line); }

//设定列地址--Y 0-63

void SetColumn(unsigned char column) {

column=column &0x3f; // 0=

//设定显示开始行--XX

void SetStartLine(unsigned char startline) //0--63 {

startline=startline & 0x07;

startline=startline|0xc0; //1100 0000 SendCommandToLCD(startline); }

//开关显示

void SetOnOff(unsigned char onoff) {

onoff=0x3e | onoff; //0011 111x SendCommandToLCD(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_(); _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;m

//清屏

//screen: 0-全屏,1-左屏,2-右 ?分屏干嘛,直接全屏不好吗 void ClearScreen(unsigned char screen) { unsigned char i,j; SelectScreen(screen); for(i=0;i<8;i++){ SetLine(i);

for(j=0;j<128;j++){ WriteByte(0x00); } } }

//初始化LCD void InitLCD()


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

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

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

马上注册会员

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