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

📄 mylib.h

📁 C51单片机一个小项目源程序:包含液晶12232驱动,AD7705驱动,按键扫描及单片机内部EEPROM的驱动,是一个比较值得参考的源程序
💻 H
字号:
#ifndef mylib_h
#define mylib_h
#include "STC89C5XRD.h"   
#include "intrins.h"
#include "stdio.h"
#include "math.h"
#include "string.h"

#define uchar unsigned char
#define uint  unsigned int
typedef     unsigned char	INT8U;		/* 8 bit 无符号整型  */
typedef     unsigned int    INT16U;     /* 16 bit 无符号整型 */

sbit SetSerio=P2^7;

sbit Led = P4^1;
sbit Bell= P4^2;

sbit A0 = P1^1;
sbit _WR = P2^6;
sbit E1 = P1^2;
sbit E2 = P1^3;
#define lcd_data P0

#define set_E1() (E1=1)                   //1片选M
#define set_E2() (E2=1)                   //1片选S
#define set_A0() (A0=1)                   //1数据    
#define set_WR() (_WR=1)                  //1读

#define clr_E1() (E1=0)                   //0
#define clr_E2() (E2=0)                   //0
#define clr_A0() (A0=0)                   //0命令
#define clr_WR() (_WR=0)                  //0写

//液晶显示控制命令表
#define disp_off			0xAE		//显示关闭
#define disp_on 			0xAF		//显示打开
#define disp_start_line  	0xC0		//显示起始地址(后5位-表示0-31行)
#define page_addr_set		0xB8		//页地址设置(0~3)
#define col_addr_set		0x00		//列地址设置(0~61)
#define status_busy			0x80		//0=ready
#define mode_write          0xEE        //写模式
#define dynamic_driver      0xA4        //动态驱动 
#define adc_select			0xA0		//clockwise
#define clk32 	            0xA9		//刷新时钟设置1/32
#define clk16 	            0xA8		//刷新时钟设置1/16
#define reset    			0xE2		//软件复位



#define NOP() _nop_();

void display_1();
void display_2();
void display_4();
void  display_num(uchar mode,uchar beginaddre,uchar cole,uchar k1a,uchar k2a,uint k);

void lcd_init(void);					//LCD初始化
void lcd_clr(void);                     //LCD清屏
void lcd_clr1(uchar page,uchar i,uchar withe,uchar mode);
void lcd_clr2();
void wait_ready(void);					//等待ready
void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp);	
                                        //点阵码显示输出
void disp_one_ascii(uchar col,uchar layer,uchar ascii_code,uchar mode);
                                     //单个ascci码输出(ascii_code为ascii编码)
void disp_ram_data(uchar col,uchar layer,uchar n,uchar mode);   
                                        //ram数据(数字)显示输出
void dprintf(uchar col,uchar layer,uchar *buf,uchar mode);     
                                        //通用混合字串显示
void display_3();
void draw_bmp1(uchar col,uchar width,uchar *bmp);

typedef struct data_gb16				//汉字字模数据结构
{
	uchar index[2];
	uchar zimo[32]; 
};

uchar code Num0[];
uchar code Num1[];
uchar code Num2[];
uchar code Num3[];
uchar code Num4[];
uchar code Num5[];
uchar code Num6[];
uchar code Num7[];
uchar code Num8[];
uchar code Num9[];
uchar code Degree[];
uchar code Num00[];
uchar code Num01[];
uchar code Num02[];
uchar code Num03[];
uchar code Num04[];
uchar code Num05[];
uchar code Num06[];
uchar code Num07[];
uchar code Num08[];
uchar code Num09[];
uchar code Power[];
uchar code ascii[] ;
uchar code Keep_bit[];
uchar code SendShow[];
uchar code SendShow2[];
uchar code SendShow3[];
uchar code SendShow4[];
uchar code SendShow5[];
uchar code Left[];
uchar code Right[];
uchar code Biao[];
uchar code Ding[];
uchar code Zeng[];
uchar code Chang[];
uchar code Zhuan[];
uchar code Jue[];
uchar code Ju[];

/*flash_eeprom*/
/* 定义命令 */
#define READ_AP_and_Data_Memory_Command				0x01        /*  字节读数据存储区   */
#define PROGRAM_AP_and_Data_Memory_Command          0x02        /*  字节编程数据存储区 */
#define SECTOR_ERASE_AP_and_Data_Memory_Command     0x03        /*  扇区擦除数据存储区 */
/* 定义常量 */
#define ERROR   0
#define OK      1

/* 定义Flash 操作等待时间 */
#define        MCU_CLOCK_40MHz
//#define         MCU_CLOCK_20MHz
//#define        MCU_CLOCK_10MHz
//#define        MCU_CLOCK_5MHz
#ifdef MCU_CLOCK_40MHz
        #define WAIT_TIME        0x00
#endif
#ifdef MCU_CLOCK_20MHz
        #define WAIT_TIME        0x01
#endif
#ifdef MCU_CLOCK_10MHz
        #define WAIT_TIME        0x02
#endif
#ifdef MCU_CLOCK_5MHz
        #define WAIT_TIME        0x03
#endif




/* 调试控制项 */
#define         DEBUG_STC89C_LE58RD+

//#define         DEBUG_STC89C_LE52RC

//#define USED_BYTE_QTY_IN_ONE_SECTOR                1
//#define USED_BYTE_QTY_IN_ONE_SECTOR                2
//#define USED_BYTE_QTY_IN_ONE_SECTOR                4
//#define USED_BYTE_QTY_IN_ONE_SECTOR                8
//#define USED_BYTE_QTY_IN_ONE_SECTOR                16
//#define USED_BYTE_QTY_IN_ONE_SECTOR                32
//#define USED_BYTE_QTY_IN_ONE_SECTOR                64
#define USED_BYTE_QTY_IN_ONE_SECTOR                128
//#define USED_BYTE_QTY_IN_ONE_SECTOR                256
//#define USED_BYTE_QTY_IN_ONE_SECTOR                512
#define		DELAY_CONST         60000

//#ifdef DEBUG_STC89C_LE58RD+                        //STC89C58RD+,  89LE58RD+
        #define DEBUG_AP_Memory_Begin_Sector_addr		0x0000
        #define DEBUG_AP_Memory_End_Sector_addr         0x7e00
        #define DEBUG_AP_Memory_End_Byte_addr           0x7fff

        #define DEBUG_Data_Memory_Begin_Sector_addr     0x8000
//#endif
/*#ifdef DEBUG_STC89C_LE52RC                        //STC89C52RC,        89LE52RC
        #define DEBUG_AP_Memory_Begin_Sector_addr		0x0000
        #define DEBUG_AP_Memory_End_Sector_addr			0x1e00
        #define DEBUG_AP_Memory_End_Byte_addr			0x1fff

        #define DEBUG_Data_Memory_Begin_Sector_addr		0x2000
#endif*/

INT8U byte_read(INT16U byte_addr); /* 字节读 */
INT8U sector_erase(INT16U sector_addr);/* 扇区擦除 */
INT8U byte_program(INT16U byte_addr, INT8U original_data);/* 字节编程 */
INT8U byte_program_and_verify(INT16U byte_addr, INT8U original_data);/* 字节编程并校验 */
/* 写数据进 数据Flash存储器, 只在同一个扇区内写,不保留原有数据	*/
/* begin_addr,被写数据Flash开始地址;counter,连续写多少个字节; array[],数据来源	*/
INT8U sequential_write_flash_in_one_sector(INT16U begin_addr, INT16U counter, INT8U array[]);

/* 写数据进数据Flash存储器(EEPROM), 只在同一个扇区内写,保留同一扇区中不需修改的数据	*/
/* begin_addr,被写数据Flash开始地址;counter,连续写多少个字节; array[],数据来源		*/
INT8U write_flash_with_protect_in_one_sector(INT16U begin_addr, INT16U counter, INT8U array[]);
//extern INT8U code Test_array_total[512] ;


/*serio8*/
void init_serial(void);
void send_string_com(unsigned char *str,unsigned int strlen);
void send_char(unsigned char ch);

/*ad7705*/
sbit AD_CLK=P1^4;
sbit AD_CS=P1^0;
sbit AD_IN=P1^5;
sbit AD_OUT=P1^6;
sbit AD_REDY=P2^5;
sbit AD_RST=P1^7;
void delay();
unsigned int ReadDataCh1_Ch2(bit mode);
void writeword(unsigned int byteword);
//unsigned int readdata();
void INI7705(void);
void ad7705_init(void);
//uint getch(uchar ch);
void CH1_init(void);
void CH2_init(void);
void AD7705_reset(void);
void Wait7705(unsigned int t) ;
void CLK_Reset();
//void CountChange(void);


//void CountResult(bit mode);
uint filter(bit mode);

void RTDkey();
void key();
void keyprocess(uchar KEY_NO);
void Main_menu();
void disp_num_order();
void test_menu();
//void wentai_menu();
//void speed_menu();
//void print_datas();
//void choice();
void turn_up(bit mode);
//void turn_down();
void Biao_ding();
void Turnaround_Power();
void Turnaround_Corner();
void Turnaround_Power_20();
void Turnaround_Corner_20();
void Turnaround_Power_ling_data();
void Turnaround_Power_20_data();
void Turnaround_Corner_ling_data();
void Turnaround_Corner_20_data();
void disp_numorder_settings();
//void ShowMENU_NO_1();
void Turnaround_Corner_test();
uint filter_biaoding(bit CHX);
void Turnaround_CornerORPower_SendValue();
void Turnaround_Corner_test2();
void Turnaround_CornerORPower_SendORnot();
void Turnaround_Corner_test3();
void display_num1(uchar beginaddre,uchar cole,uint k,bit mode);
//void send();
//void receive();
void test2();
void TestANdSend();
void send_string_com1(unsigned char *str,unsigned int strlen);
void Test_Case_9();
void Test_Case_10();

#define	IDMENU_TEST		        0x01			      
#define	Bd_jm                   0x02			      
#define	Turnaround_Power_ling	0x03
#define	Turnaround_Corner_ling	0x04
#define Turnaround_Power_20NM   0x05
#define Turnaround_Corner_20NM  0x06
#define Turnaround_Corner_Tstg  0x07
#define Turnaround_Corner_Tstg2 0x08
#define Turnaround_Corner_Tstg3 0x0a
#endif

⌨️ 快捷键说明

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