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

📄 znk030305.c

📁 avr C语言例程,用于温湿度采样控制,LCD控制
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <delay.h>
#include <stdlib.h>
#include <bcd.h>
#include <math.h>



//#include "allhead.h"


#define OUT      1
#define IN       0
#define HIGH_BIT 1
#define LOW_BIT  0
#define LCD_BACK PORTB.7        //低电平0点亮LCD
#define CS7      PORTD.7
#define run_led  PORTB.6
#define run_DDR  DDRB.6

#define UDRIE 5
#define uchar unsigned char
#define uint  unsigned int

#define CS000   PORTG.3		//0x1100
#define CS000_DDR DDRG.3
#define CS001   PORTG.4		//0x1102
#define CS001_DDR DDRG.4
#define CS002   PORTD.1		//0x1104
#define CS002_DDR DDRD.1  
#define di PORTB.5
#define rw PORTE.7
//#define e PORTF.3
#define csb PORTB.1
#define csa PORTB.0
#define lcd_data PORTA 
void s_connectionreset(void); 
char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode);
void calc_sth11(float *p_humidity ,float *p_temperature);
char datetime1[20],datetime2[20],str2[80]; 
float str1[2];
 union
{  int i;
  float f;
}humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度
char   cod1[]={
/*--  文字:  节  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   //0
0x04,0x04,0x44,0x44,0x44,0x5F,0xC4,0x44,0x44,0x44,0x5F,0x44,0xC4,0x04,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x08,0x10,0x0F,0x00,0x00,0x00,

/*--  文字:  能  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/  //1
0x10,0xB8,0x97,0x92,0x90,0x94,0xB8,0x10,0x00,0x7F,0x48,0x48,0x44,0x74,0x20,0x00,
0x00,0xFF,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x3F,0x44,0x44,0x42,0x72,0x20,0x00,

/*--  文字:  控  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   //2
0x08,0x08,0x08,0xFF,0x88,0x48,0x00,0x98,0x48,0x28,0x0A,0x2C,0x48,0xD8,0x08,0x00,
0x02,0x42,0x81,0x7F,0x00,0x00,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00,

/*--  文字:  制  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/   //3
0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,
0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,

/*--  文字:  系  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/  //4
0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00,

/*--  文字:  统  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/  //5
0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00,
0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00
};
/*----------------------------汉字字模--------------------------------------*/
char   cod2[]={
 /*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //0
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //1
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/  //2
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //3
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //4
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/  //5
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //6
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //7
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ //8
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/  //9
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

/*--  文字:  :  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/   //10
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,

/*--  文字:  .  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/    //11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00
}; 
char   cod3[]={ 
/*--  文字:  a  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/     //0
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,

/*--  文字:  b  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/     //1
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  c  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/      //2
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,

/*--  文字:  d  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/      //3
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,

/*--  文字:  e  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/       //4
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,

/*--  文字:  f  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/        //5
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  g  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/          //6
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,

/*--  文字:  h  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/         //7
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

/*--  文字:  i  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/         //8
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  j  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/         //9
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,

/*--  文字:  k  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/         //10
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,

/*--  文字:  l  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/         //11
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  m  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/          //12
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,

/*--  文字:  n  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/           //13
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

/*--  文字:  o  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/           //14
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

/*--  文字:  p  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/          //15
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00


};
char cod4[]=
{
/*--  文字:  q  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/           //0
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,

/*--  文字:  r  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/            //1
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,

/*--  文字:  s  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/            //2
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,

/*--  文字:  t  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/             //3
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,

/*--  文字:  u  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/              //4
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,

/*--  文字:  v  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/             //5
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,

/*--  文字:  w  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/              //6
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,

/*--  文字:  x  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/              //7
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,

/*--  文字:  y  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/              //8
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,

/*--  文字:  z  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/               //9
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00


};


//******************************************************************//
//***********************系统初始化********************************//
void port_init() //IO初始化
{
 
 DDRA=0xFF;
 PORTA=0x00;  
 DDRB=0xFF;
 //PORTB=0x00; 
 DDRC=0xFF; 
 PORTC=0x00;    
 DDRD=0xf3;
 PORTD=0xf3;  
 DDRE=0xff;
 PORTE=0xff; 
 DDRF=0xff;
 PORTF=0xff; 
 DDRG=0x18;
  PORTG=0x18;
}  
void InitExMem(void)  //系统设置
{
    MCUCR &= 0x7F;    //设置总线访问方式,平时PORTA作为普通IO口用,当操作SRAM时才恢复成总线方式
    MCUCR &= 0xbf;
    
    XMCRA = 0x02;         //设置扩展地址使用方式
    XMCRB = 0x00;//0x80;        
	
} 
 


//**************************************************************************//
//**************************************************************************// 

//**************************************************************************//
//**************************************************************************// 
//----------------------------------实时钟---------------------------------------------
//实时时钟ht1380
#define IO_DATA      PORTE.2    //数据传送总线
#define IO_DATA_DDR  DDRE.2
#define IO_DATA_PIN  PINE.2
#define CS2          PORTD.1
#define SCLK PORTD.0   //时钟控制总线
#define SCLK_DDR DDRD.0
 
//#define RST PORTD.4   //复位总线
//#define RST_DDR DDRD.4

char str[180]; char g_sysdatetime[16]; 
typedef struct{ 
	unsigned char second;   //enter the current time, date, month, and year
	unsigned char minute;
	unsigned char hour;                                     
	unsigned char date;       
	unsigned char month;
	unsigned int year;
}time;
time t; 
void RST(unsigned char x) //时钟的复位信号,用273的第6BIT控制,273的锁存信号是PORTD.1
{
	if (x == 0)
	{
		PORTA&=0xBF;//复位信号置0;
		
	}
	else PORTA|=  0x40; // 复位信号1
	
	CS2=0;      //锁存
	delay_us(10);
	CS2=1;
} 

void OscEnable(void);
void WriteEnable(void);   
//void SetDtmfMode(unsigned char lport);
void HT1380_SendByte(unsigned char bytecnt,unsigned char *data)
{
	int i,j,k;
	unsigned char ch;

	IO_DATA_DDR = OUT;

	RST(0);
	k++;
	delay_us(10);
	SCLK = 0;
	k++;        
	delay_us(10);
	RST(1);
	k++;          
	delay_us(10);

	for (i=0;i<bytecnt;i++) {
		for(j=0;j<8;j++) {
			ch = data[i]>>j;
			if ( (ch&0x01) == 0 ) IO_DATA = 0; //上升沿
			else                IO_DATA = 1;
			k++;                            
			delay_us(10);
			SCLK = 1;
			k++;
			k++;          
			delay_us(10);
			SCLK = 0;
		}
	}

RST(0);
}
void WriteEnable(void)
{
	unsigned char arr[10];

	arr[0] = 0x8e;
	arr[1] = 0x00;
    HT1380_SendByte(2,arr);
}   

void OscEnable(void)
{
	unsigned char arr[10];

	arr[0] = 0x80;
	arr[1] = 0x00;
    HT1380_SendByte(2,arr);
}
void InitHt1380(void)
{
	SCLK_DDR = OUT;
	SCLK = 0;
	
	RST(0);
  
	delay_ms(1000);
	WriteEnable();
	OscEnable();
}




bit mybit;
void HT1380_RecvByte(unsigned char command,unsigned char bytecnt,unsigned char *data)
{
	int i,j,k;
	unsigned char ch,tmp;

	IO_DATA_DDR = OUT;

	RST(0);
	k++;            
	delay_us(10);
	SCLK = 0;
	k++;          
	delay_us(10);
	RST(1);
	k++;          
	delay_us(10);

	for(j=0;j<8;j++) {
		ch = command>>j;
		if ( (ch&0x01) == 0 ) IO_DATA = 0;
		else                IO_DATA = 1;		
		k++;                            
		delay_us(10);
		SCLK = 1;   //上升沿
		k++;
		k++;          

⌨️ 快捷键说明

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