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

📄 source.h

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 H
字号:
#include "postion.h"
#include "fsm.h"
#define FOSC18432
#define SCREEN_WIDTH   	81
#define SCREEN_HIGHT   	480
#define VRAM_BASE		0X0000
#define VRAM_LEN       	0X9600
#define FLASH_BASE      0XC000
#define FLASHADD        P1/*访问flash的高8位地址*/ 
#define REG_DATA	      XBYTE[0X9F00] //MSM6255的数据寄存器,因为A0为0
#define REG_INSTR  	    XBYTE[0X9F01] //MSM6255的指令寄存器,因为A0为1
#define FLASHRYNBY      XBYTE[0X9F02]/*可以从此端口中读出AM29LV320DB的RY/BY管脚的状态*/
#define MSMBUSY         XBYTE[0X9F03]/*为MSM6255的BUSY信号*/
#define LED1_ON         XBYTE[0X9F04]=0 /*为LED等亮*/
#define LED1_OFF        XBYTE[0X9F04]=1 /*为LED等灭*/
#define TMDAT   	    P3_3
#define SCL             P3_4
#define SDA             P3_5

#define HZK24X24_QH_START           15  //汉字的区位码从15开始 16区为汉字的开始区位。在次处如果小于16则认为是字母。
#define FLASH_SPACE_START		    0XC000  //flash映射到CPU的地址空间为16K 0xC000-0xFFFF
#define FLASH_SPACE_END         0XFFFF  //flash的结束地址
#define FLASH_ADD_MASK          0X3FFF

/*****interrupt******/
#define SERIAL_INT 4
#define UPD_YEAR          0X80
#define UPD_MONTH         0X40
#define UPD_DAYOM         0X20
#define UPD_DAYOW				  0X10
#define UPD_HOUR          0X08
#define UPD_MINUTE				0X04
#define UPD_SECOND        0X02

#define TIMER2H           0xc4 //10ms
#define TIMER2L           0x00
#define TIMER_NUM              5
#define MOVE_TIMER             0
#define NOTICE_TIMER           1
#define TMPERA_TIMER           2
#define RTC_TIMER              3
#define TEST_TIMER             4

#define MOVE_TIME_LENGTH       12
#define NOTICE_TIME_LENGTH     400
#define TMPERA_TIME_LENGTH	   200 //2 second convert temperature once.
#define RTC_TIME_LENGTH	       100 //1 second read rtc time.
#define TEST_TIME_LENGTH       100

#define SCREEN_SAVERS_MAXSEC   2700 //45 minutes hour 2700 second.

#define TIMOUT_MOVE_ARROW       0X80
#define TIMOUT_ADV_CHANGE       0X40
#define TIMOUT_TEMPERATURE      0X08
#define TIMOUT_RTC				0X04
#define TIMOUT_TEST_TIMER       0X01

#define FDWN_LEN               135
#define FDWN_FHD               0X7E

#define MAX_ELV_NUM           37

#define TOTAL_INFO            	40

#define REMOTE_HEAD            0XE7 
#define REMOTE_LEN             108
#define MY_ADDRES              0X01

#define EEPROM_MACHINE_ADD     0X0000
#define EEPROM_LOAD_ADD        0X0010
#define EEPROM_LOAD_LEN        4

#define EEPROM_PERSON_ADD      0X0014
#define EEPROM_PERSON_LEN      2

#define EEPROM_OTIS_ADD      0X0016
#define EEPROM_OTIS_LEN      1


#define SHOW_PIC_ADV    0X00
#define SHOW_PIC_WIZARD 0X01
#define SHOW_PIC_OTIS   0X02

#define EERPOM_NOTICE_START     0X0080
#define NOTICE_EEPCONTENT_LEN   64
#define NOTICE_SHOWHZ_LEN       (NOTICE_EEPCONTENT_LEN-2)

#define FLASH_ADD_STORY_START		  0X04000 
#define FLASH_ADD_SPIC_START	    0X30000
#define FLASH_ADD_OTHER_START     0X60000
#define FLASH_ADD_ASC48X48_START	0X78000
#define FLASH_ADD_ASC16X24_START	0X7C000
#define FLASH_ADD_HZK24X24_START	0X80000

struct  yushi{
	unsigned char h;
	unsigned char l;
};
struct NOTICE
{
	unsigned char len; //the length of every storey.
	unsigned char font;//the font of notice word.
	unsigned char buf[NOTICE_SHOWHZ_LEN];
};
struct SHOW_NOTICE{
	struct NOTICE ognd[TOTAL_INFO];
};
struct ELV_STATUS{
	unsigned char storey[2];
	unsigned char prestry[2];
	unsigned int  arrow_cur_top;
};
struct RTC_TIME{
	unsigned char presecond;
	unsigned char preminute;
	unsigned char prehour;
	unsigned char predayom;
	unsigned char premonth;
	unsigned char preyear;
	unsigned char hnumy;
	unsigned char lnumy;
	unsigned char hnummon;
	unsigned char lnummon;
	unsigned char hnumdom;
	unsigned char lnumdom;
	unsigned char hnumdow;
	unsigned char lnumdow;
	unsigned char hnumh;
	unsigned char lnumh;
	unsigned char hnummin;
	unsigned char lnummin;
	unsigned char hnums;
	unsigned char lnums;

	unsigned char second;
	unsigned char minute;
	unsigned char hour;
	unsigned char week;
	unsigned char dayom;
	unsigned char month;
	unsigned char year;
};
struct my_timer{
	unsigned char enable;
	unsigned int  count;
	unsigned int length;
};
struct OTHER{
	unsigned char temperature;
	unsigned char tem_fsm;
};
struct SCREEN{
	unsigned char hbs_fsm;
	unsigned char status_fsm;
};
union SFADD{
	unsigned long l;
	unsigned char c[4];
	unsigned int  i[2];
};
/*****函数定义声明*******/
extern unsigned char mult_crccheck(unsigned char *input,unsigned char chreclength,struct yushi *y);
extern void init_crccheck(struct yushi *y);
extern void crccheck(unsigned char input,struct  yushi *y);
extern void write_remote(unsigned char *a,unsigned char len);
extern bit  read_remote(void);
extern void clear_all(void);
extern void black_all(void);
extern void erase_flash(unsigned char flag,unsigned char sa);
extern bit  erase_sector(unsigned char sa);
extern void write_flash(union SFADD  *p_add,unsigned char dat);
extern void read_flash(unsigned char hadd,unsigned int ladd,unsigned char len,unsigned char *buf);
extern void flash_download(void);
extern void init_serial(void);
extern void draw_wordw8(unsigned char orgx,unsigned int orgy,unsigned char depth,unsigned char *buf);
extern void draw_wordw16(unsigned char orgx,unsigned int orgy,unsigned char depth,unsigned char *buf);
extern void draw_wordw24(unsigned char orgx,unsigned int orgy,unsigned char depth,unsigned char *buf);
extern void draw_wordw24x24(unsigned char orgx,unsigned int orgy,unsigned char *buf);
extern void draw_wordw32(unsigned char orgx,unsigned int orgy,unsigned char depth,unsigned char *buf);
extern void draw_storey(unsigned char orgx,unsigned int orgy,unsigned char num);
extern void draw_uparrow(unsigned char orgx,unsigned int orgy);
extern void draw_downarrow(unsigned char orgx,unsigned int orgy);
extern void draw_asc24x48(unsigned char orgx,unsigned int orgy,unsigned char wh);
extern void draw_asc16x24(unsigned char orgx,unsigned int orgy,unsigned char wh);
extern void clr_wordw8(unsigned char orgx,unsigned int orgy,unsigned char depth);
extern void clr_wordw16(unsigned char orgx,unsigned int orgy,unsigned char depth);
extern void clr_wordw24(unsigned char orgx,unsigned int orgy,unsigned char depth);
extern void clr_wordw32(unsigned char orgx,unsigned int orgy,unsigned char depth);
extern void clr_area(unsigned char org_x,unsigned int org_y,unsigned char width,unsigned char height);
extern void clr_arrow(unsigned char orgx,unsigned int orgy);
extern void clr_notice(void);
extern void init_system();
extern void start_t2imer(void);
extern void set_timer(unsigned char i,unsigned int count);
extern void tmstart(void);
extern unsigned char tmrtemp_all(void);
extern void show_time(void);
extern void show_wd(unsigned char tempe);
extern void rtc_update(void);
extern bit num_update(void);
extern void refresh_hb(void);
extern void SD2000_set_status(unsigned char ch);
extern unsigned char  SD2000_read_time(struct RTC_TIME *p);
extern unsigned char  SD2000_set_time(struct RTC_TIME *p);
extern unsigned char chtobcd(unsigned char ch);
extern void delay_10us(unsigned char tus);//fosc=18.432
extern bit detect_timeout(void);
extern void AT24C64_wbytes(unsigned char *add,unsigned char len,unsigned char *buf);//max 32 bytes
extern void AT24C64_rbytes(unsigned char *add,unsigned char len,unsigned char *buf);
extern void init_eeprom(void);
extern void show_elvinfo(struct NOTICE *info);
extern void Msm_init(void);
/*********data *****************/
extern unsigned char idata timerout;
extern struct RTC_TIME rtc;
extern struct OTHER others;
extern struct SHOW_NOTICE show_notice;
extern struct SCREEN screen;
extern unsigned char code double_byte[256][2];
extern unsigned char code number16x33[10][66];
extern unsigned char code number24x48[10][144];
extern unsigned char code centigrade32x48[192];
extern unsigned char code timeseperate[33];
extern unsigned char code nian[132];
extern unsigned char code yue[132];
extern unsigned char code ri[132];
extern unsigned char code du[32];
extern unsigned char code downarrow[ARROW_WIDTH*ARROW_HEIGHT];
extern unsigned char       updtime;
extern struct ELV_STATUS scentry;
extern struct my_timer TT[TIMER_NUM];
extern unsigned int test_timer_len;

#define DST_LEN 240
#define DSR_LEN 240
extern unsigned char dst_buf[DST_LEN];//debug serial transmit buffer.
extern unsigned char dst_head;
extern unsigned char dst_tail;
extern unsigned char dsr_buf[DSR_LEN];//debug serial transmit buffer.
extern unsigned char dsr_head;
extern unsigned char dsr_tail;

extern bit TDBdata_over;

⌨️ 快捷键说明

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