当前位置:首页 > 毕业设计题目,指脉波采级与12864液晶转换
#include
#define uchar unsigned char #define uint unsigned int #include
#define AddWr 0x90 //写数据地址 #define AddRd 0x91 //读数据地址
sbit Sda=P1^2; //定义总线连接端口 sbit Scl=P1^1;
bit ADFlag; uchar table[31]; sbit rs = P2^4; sbit rw = P2^5; sbit e = P2^6; sbit key1=P3^0; sbit key2=P3^1;
void delay(uint x) {
uchar i,j; for(i=0;i /*------------------------------------------------ 初始化定时器1 ------------------------------------------------*/ void Init_Timer1(void) { TMOD |= 0x10; TH1=0xff; /* Init value */ TL1=0x00; //PT1=1; /* 优先级 */ EA=1; /* interupt enable */ ET1=1; /* enable timer1 interrupt */ TR1=1; } /*------------------------------------------------ 启动IIC总线 ------------------------------------------------*/ void Start(void) { Sda=1; _nop_(); Scl=1; _nop_(); Sda=0; _nop_(); Scl=0; } /*------------------------------------------------ 停止IIC总线 ------------------------------------------------*/ void Stop(void) { Sda=0; _nop_(); Scl=1; _nop_(); Sda=1; _nop_(); Scl=0; } /*------------------------------------------------ 应答IIC总线 ------------------------------------------------*/ void Ack(void) { Sda=0; _nop_(); Scl=1; _nop_(); Scl=0; _nop_(); } /*------------------------------------------------ 非应答IIC总线 ------------------------------------------------*/ void NoAck(void) { Sda=1; _nop_(); Scl=1; _nop_(); Scl=0; _nop_(); } /*------------------------------------------------ 发送一个字节 ------------------------------------------------*/ void Send(unsigned char Data) { unsigned char BitCounter=8; unsigned char temp; do { temp=Data; Scl=0; _nop_(); if((temp&0x80)==0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter--; } while(BitCounter); Scl=0; } /*------------------------------------------------ 读入一个字节并返回 ------------------------------------------------*/ unsigned char Read(void) { unsigned char temp=0; unsigned char temp1=0; unsigned char BitCounter=8; Sda=1; do { Scl=0; _nop_(); Scl=1; _nop_(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } while(BitCounter); return(temp); } /*------------------------------------------------ 读取AD模数转换的值,有返回值 ------------------------------------------------*/ unsigned char ReadADC(unsigned char Chl) { unsigned char Data; Start(); //写入芯片地址 Send(AddWr); Ack(); Send(0x40|Chl);//写入选择的通道,本程序只用单端输入,差分部分需要自行添加 //Chl的值分别为0、1、2、3,分别代表1-4通道 Ack(); Start(); Send(AddRd); //读入地址 Ack(); Data=Read(); //读数据
共分享92篇相关文档