?? znk030305.c
字號(hào):
#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點(diǎn)亮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; //定義兩個(gè)共同體,一個(gè)用于濕度,一個(gè)用于溫度
char cod1[]={
/*-- 文字: 節(jié) --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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,
/*-- 文字: 統(tǒng) --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //0
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //1
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //2
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-- 文字: 3 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //3
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 4 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //4
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //5
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 6 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //6
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 7 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //7
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //8
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*-- 文字: 9 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //9
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
/*-- 文字: : --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //10
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
/*-- 文字: . --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00
};
char cod3[]={
/*-- 文字: a --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //0
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,
/*-- 文字: b --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //1
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: c --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //2
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,
/*-- 文字: d --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //3
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,
/*-- 文字: e --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //4
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
/*-- 文字: f --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //5
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: g --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //6
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,
/*-- 文字: h --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //7
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
/*-- 文字: i --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //8
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: j --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //9
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,
/*-- 文字: k --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //10
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,
/*-- 文字: l --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //11
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: m --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //12
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
/*-- 文字: n --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //13
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
/*-- 文字: o --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //14
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
/*-- 文字: p --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //15
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00
};
char cod4[]=
{
/*-- 文字: q --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //0
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,
/*-- 文字: r --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //1
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
/*-- 文字: s --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //2
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
/*-- 文字: t --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //3
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
/*-- 文字: u --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //4
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
/*-- 文字: v --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //5
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,
/*-- 文字: w --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //6
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,
/*-- 文字: x --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //7
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,
/*-- 文字: y --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //8
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
/*-- 文字: z --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ //9
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00
};
//******************************************************************//
//***********************系統(tǒng)初始化********************************//
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) //系統(tǒng)設(shè)置
{
MCUCR &= 0x7F; //設(shè)置總線(xiàn)訪問(wèn)方式,平時(shí)PORTA作為普通IO口用,當(dāng)操作SRAM時(shí)才恢復(fù)成總線(xiàn)方式
MCUCR &= 0xbf;
XMCRA = 0x02; //設(shè)置擴(kuò)展地址使用方式
XMCRB = 0x00;//0x80;
}
//**************************************************************************//
//**************************************************************************//
//**************************************************************************//
//**************************************************************************//
//----------------------------------實(shí)時(shí)鐘---------------------------------------------
//實(shí)時(shí)時(shí)鐘ht1380
#define IO_DATA PORTE.2 //數(shù)據(jù)傳送總線(xiàn)
#define IO_DATA_DDR DDRE.2
#define IO_DATA_PIN PINE.2
#define CS2 PORTD.1
#define SCLK PORTD.0 //時(shí)鐘控制總線(xiàn)
#define SCLK_DDR DDRD.0
//#define RST PORTD.4 //復(fù)位總線(xiàn)
//#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) //時(shí)鐘的復(fù)位信號(hào),用273的第6BIT控制,273的鎖存信號(hào)是PORTD.1
{
if (x == 0)
{
PORTA&=0xBF;//復(fù)位信號(hào)置0;
}
else PORTA|= 0x40; // 復(fù)位信號(hào)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++;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -