⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 as____.c

📁 at1287 串口读写显示 at1287 串口读写显示
💻 C
字号:
#include <90USB1287.H>


//#include <intrins.h>
//#include <fm3130.h>
#include <macros.h>
#include <string.h>
#asm
    .equ __i2c_port=0xb ;//PORTD
    .equ __sda_bit=1
    .equ __scl_bit=0
#endasm
//unsigned char  TextLogo[]={"液晶显示模块(LCDM)"};
#define uint unsigned int

#define uchar unsigned char
uchar command_data;

#define  CS   PORTC.6//LCD片选(串行) 0:禁止 1:允许
#define SID  PORTC.5//LCD输入串行数据(串行)
#define  clk  PORTC.4//LCD输入串行脉冲(串行)
 #define  ak  PORTC.3/
 unsigned char buf[10]={0};
#include <i2c.h>
#include <delay.h>
#include <math.h>
#include <stdio.h>
//#include <lcdA.h>
uchar DTIME[30]={0};
 uchar pi[20]={0};
unsigned int sec_speed=0,speed=0x0, speed1=0x0, mai=0x0,mi=0x0,tt2=0,tt=0,tt1=0,temp_outspeed=0;
    int t0,t1;
  uchar ii=0,ss=16 ;
 uchar display_buffer[33];
unsigned int speek[6]={0},speek1[6]={0},speek2[6]={0};
void port_init(void)
{
  DDRB  = 0xff; //设置B口全为输入
  DDRC  = 0x3f;    //设置C口全为输入
  DDRD  = 0xFF; //设置D口全为输入
  PORTB = 0xff; //设置B口全部上拉
  PORTC = 0xff; //设置C口全部上拉
  PORTD = 0xff; //设置D口全部上拉
}

void delay(uint t)
{
	uint x,y;
	for(x=t;x>0;x--)
		for(y=110;y>0;y--);
}
void delay_1ms(uint x) 	  // 延时
{
uint j;
uchar i;
for(j=0;j<x;j++)
{
for(i=0;i<120;i++);
}
}
void send_command(uchar command_data)
{
uchar i;
uchar i_data,temp_data1,temp_data2;
i_data=0xf8;
delay_1ms(10);
CS=1;
clk=0;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1>>=4;
temp_data2<<=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
CS=0;
}

void send_data(uchar command_data)
{
uchar i;
uchar i_data,temp_data1,temp_data2;
i_data=0xfa;
delay_1ms(10);
CS=1;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1>>=4;
temp_data2<<=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(i_data&0x80);
clk=0;
clk=1;
i_data=i_data<<1;
}
CS=0;
}



void lcd_init()
{
delay_1ms(100);
command_data=0x30;
send_command(command_data); /*功能设置:一次送8位数据,基本指令集*/
command_data=0x04;
send_command(command_data); /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
command_data=0x0C;
send_command(command_data); /*显示设定:开显示,显示光标,当前显示位反白闪动*/
command_data=0x01;
send_command(command_data); /*清DDRAM*/
command_data=0x02;
send_command(command_data); /*DDRAM地址归位*/
command_data=0x80;
send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/
}

unsigned char FMCompanionRandomRead( int address)//unsigned char
 {
unsigned char data;

i2c_start();
i2c_write(0xd0);
i2c_write(address);
i2c_start();
i2c_write(0xd1);
data=i2c_read(0);
i2c_stop();
return data;
}
void FMCompanionRandomWrite(int address, unsigned char data)
{

//if (address>0x0018)return 0;
i2c_start();
i2c_write(0xa0);
i2c_write(address);
i2c_write(data);
i2c_stop();
/* 10 延时等待写操作完成 */
delay_ms(10);

}

#define RW_CTL 			0x0000
#define CAL_CTL 		0X0001
#define RTC_Second  		0X0002
#define RTC_Minute     		0X0003
#define RTC_Hours		0x0004
#define RTC_Day  		0X0005
#define RTC_Date		0X0006
#define RTC_Month		0X0007
#define RTC_Years		0X0008
#define RTC_A_Second   		0X0009
#define RTC_A_Minute   		0X000a
#define RTC_A_Hours		0x000b
#define RTC_A_Date		0X000c
#define RTC_A_Month		0X000d
#define Alarm_WP_Ctrl  		0X000e

unsigned char ReadFMYYMMDD(unsigned char *p)
{

    unsigned char temp,temp1;

  //  EIMSK=0x00;
    //PutC(0xe0); PutC(0x01);
 	//temp1=FMCompanionRandomRead(RW_CTL);
	//temp=(temp1&0xfe);
	//FMCompanionRandomWrite(RW_CTL,temp);//set bit R to 0
	//temp1=FMCompanionRandomRead(RW_CTL);
	//temp=temp1|0x01;
	//FMCompanionRandomWrite(RW_CTL,temp);//set bit R  from 0 to 1 cause the time capture
	p[0]=FMCompanionRandomRead(RTC_Years);

	DTIME[0]=2;
	DTIME[1]=0;

	DTIME[2]=p[0]>>4;
	DTIME[3]=p[0]&0xf;
	DTIME[4]=37;
	p[1]=FMCompanionRandomRead(RTC_Month);

	DTIME[5]=p[1]>>4;
	DTIME[6]=p[1]&0xf;
	DTIME[7]=37;

	p[2]=FMCompanionRandomRead(RTC_Date);
	DTIME[8]=p[2]>>4;
	DTIME[9]=p[2]&0xf;
	DTIME[10]=39;
	DTIME[11]=39;

	p[3]=FMCompanionRandomRead(RTC_Hours);

	DTIME[12]=p[3]>>4;
	DTIME[13]=p[3]&0xf;
	DTIME[14]=36;

	p[4]=FMCompanionRandomRead(RTC_Minute);
	DTIME[15]=p[4]>>4;
	DTIME[16]=p[4]&0xf;
	DTIME[17]=36;
        /*
          if(p[4]!=MINUTE)
          {
             MINUTE=p[4];
             if(MOVED)
             {
                if(MOVETIME>=245)MOVETIME=245;
                else MOVETIME++;
             }
             else if(STOPD)
             {
               if(RESTTIME>=245)RESTTIME=245;
               else RESTTIME++;
             }
          }
               */
	p[5]=FMCompanionRandomRead(RTC_Second);
	DTIME[18]=p[5]>>4;
	DTIME[19]=p[5]&0xf;

	temp1=FMCompanionRandomRead(RW_CTL);
	temp=(temp1&0xfe);
	FMCompanionRandomWrite(RW_CTL,temp);
    EIMSK=0x20;
	return(0);
}
void display(void)
{
command_data=0x01;
send_command(command_data);
 command_data=0x80;
send_command(command_data);



 for(ii=0;ii<16;ii++)

  {

command_data=DTIME[ii];
send_data(command_data);//读对应地址数据
 }
/*
tt=t0;       //      result_speed
 speek[5]=tt/100000;

 speek[4]=tt/10000-speek[5]*10;

 speek[3]=tt/1000-speek[5]*100-speek[4]*10;
 speek[2]=tt/100-speek[5]*1000-speek[4]*100-speek[3]*10;


 //speek[2]=tt/100-speek[3]*10;
 speek[1]=tt/10-speek[5]*10000-speek[4]*1000-speek[3]*100-speek[2]*10;
 speek[0]=tt-speek[5]*100000-speek[4]*10000-speek[3]*1000-speek[2]*100-speek[1]*10;
//command_data=(char)mai;
send_data(48+speek[5]);
send_data(48+speek[4]);
 send_data(48+speek[3]);
 send_data(48+speek[2]);
 send_data(48+speek[1]);
 send_data(48+speek[0]);*/
//delay_1ms(3000);

   }

void main(void)
 {


 //port_init();
   lcd_init();
 i2c_init();

    PORTC.3=1;
   while (1)
   {
        ReadFMYYMMDD(pi);

    // t0=eeprom_read(0X02);

 //sprintf(display_buffer,"t0=%-i.%-u%cC",t0/10,abs(t0%10),0xdf);
 display() ;
 delay_1ms(500);
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -