单片机源码如下:
#include #include #include #include #include #include #include /*********************************************************************************************************/ #include "IO.h" #include "uart.h" #include "lcd.h" #include "key.h" #include "sht.h" /*********************************************************************************************************/ #pragma data:data unsigned char temp_flag=0; unsigned char wd_shang; unsigned char wd_xia; unsigned char sd_shang; unsigned char sd_xia; unsigned char pf_shang; unsigned char pf_xia; unsigned char Body_Flag; //人体靠近带电标志位 unsigned char rt_gy; // 人体感应非投入,1:投入,2:非投入 unsigned char db_du; unsigned char InIt_Para[]={0x0a,0x05,0x5D,0x55,0x37,0x32,0x01,0x01}; /*********************************************************************************************************/ unsigned char wd_bz; unsigned char sd_bz; unsigned char pf_bz; unsigned char wendu1_biaozhi; unsigned char wendu2_biaozhi; unsigned char mima; /*********************************************************************************************************/ unsigned int R_ms_Timer,mincount1; unsigned int timer_count; unsigned char timer_count1; unsigned char timer_count2; unsigned char timer_count3; unsigned char Cls_Lcd_Flag; unsigned char GPIOSamp_counter_Flag; unsigned char GPIOSamp_counter; /*********************************************************************************************************/ extern unsigned char bz; //位标志 extern unsigned char bz1; //位标志,判断是地址还是数据 extern unsigned char di_zhi; extern unsigned char Receiver_Flag; // 接受数据标志 extern unsigned char Back_Light_Flag; extern unsigned char rx0_buf[16]; // 接收数据缓存器 extern unsigned char rx0_index; // 接收数据计数器 extern unsigned char Tx0_buf[16]; // 发送数据缓存器 extern unsigned char R_KeyValue1; /*********************************************************************************************************/ //todao[0]:湿度测量 1; todao[1]: 温度测量 1; todao[2]:湿度测量 2; todao[3]:温度测量 2 extern float todao[4]; //{temp,rh}; 模拟量寄存器从1到2 extern unsigned char rx0_index; extern unsigned char Q,n,TT1,T,TT2; extern unsigned char ch,cl; extern unsigned char Up_Counter; extern unsigned char Page_Flag; extern unsigned char Page_Flag1; /********************************************************************************************************** ** 函数名称:init_para() ** 函数功能:开机时取得、设定各项参数 ** 入口参数: ** 出口参数:无 ** 说 明: *********************************************************************************************************/ void init_para(void) { EEPROMReadBytes(0x0010,&wd_shang,1); delay_nms(10); EEPROMReadBytes(0x0011,&wd_xia,1); delay_nms(10); EEPROMReadBytes(0x0012,&sd_shang,1); EEPROMReadBytes(0x0013,&sd_xia,1); delay_nms(10); EEPROMReadBytes(0x0014,&pf_shang,1); EEPROMReadBytes(0x0015,&pf_xia,1); EEPROMReadBytes(0x0016,&rt_gy,1); EEPROMReadBytes(0x0017,&di_zhi,1); } /********************************************************************************************************** * 函数名称:EEprom_init() * 函数功能:开机时取得、设定各项参数 * 入口参数: * 出口参数:无 * 说 明: ********************************************************************************************************/ void EEprom_init(void) { unsigned char EEP_Read=0,Eep_Write=0; EEPROMReadBytes(0x03,&EEP_Read,1); if( EEP_Read != 0x55) { Eep_Write = 0x55; EEPROMWriteBytes(0x0003,&Eep_Write,1); EEPROMWriteBytes(0x0010,InIt_Para,8); init_para(); } else { init_para(); } } /********************************************************************************************************** ** 函数名称:timer0_init() ** 函数功能:初始化定时器0,10ms定时器 ** 入口参数:无 ** 出口参数:无 ** 说明: 8位定时器,和8051相似,只是注意定时器时钟是晶振分频以后 *********************************************************************************************************/ void Timer0_init(void) { TCCR0 = 0x00; ASSR = 0x00; TCNT0 = 0xB1; // 定时初值 8Mhz //TCNT0 = 0x93; // 定时初值 11Mhz OCR0 = 0x00; TCCR0 = 0x07; // 时钟1024分频 ,启动定时器 TIMSK |= 0x01; // timer0中断使能 } /********************************************************************************************************** ** 函数名称:timer0_ovf_isr() ** 函数功能:定时器0溢出中断服务程序 ** 入口参数:无 ** 出口参数:无 ** 说明: *********************************************************************************************************/ #pragma interrupt_handler Timer0_ovf_isr:iv_TIMER0_OVF void Timer0_ovf_isr(void) { TCNT0 = 0xB1; R_ms_Timer++; timer_count1++; if(timer_count1>=4) { KeyValue_Pro(); timer_count1=0; } if(GPIOSamp_counter_Flag) GPIOSamp_counter++; if((Back_Light_Flag==1)&&((Body_Flag == 0)||(Body_Flag == 2))) // 液晶背光 { mincount1++; if(mincount1 >= Ldc_Timer ) // 30秒 { mincount1 = 0; DI_jdq5_ZHMIN_OUT1; LCD_LED_OUT1; } } if(Back_Light_Flag==0) { LCD_LED_OUT0; DI_jdq5_ZHMIN_OUT0; mincount1 = 0; } } /**********************************************************************************************************
上一篇:单片机全场定位系统程序
下一篇:AVR单片机汇编指令的小合集
推荐阅读最新更新时间:2024-11-18 17:18
设计资源 培训 开发板 精华推荐
- NCP348GEVB:正 OVP 控制器评估板
- 使用 LTC3612EFE 3A、4MHz 单片同步降压转换器的典型应用
- IRU3033 5V 至 3.3V 的典型应用,适用于具有 AGP 或 Pentium II 应用的奔腾应用,无需 ATX 电源开关模式操作
- EVAL-AD7328SDZ,AD7328 评估套件
- #第六届立创电赛#离线语音 美队空伴
- 电子幸运转盘-SMT
- LTC2945CMS-1 宽范围 -4V 至 -500V 负功率监视器的典型应用
- FEBFAN23SV04T_LVA,基于 FAN23SV04T 用于 DDR 端接的高效同步降压转换器的评估板
- EVAL-ADG799GEBZ,用于高清电视的 ADG799 三路 2:2 模拟多路复用器的评估板
- STEVAL-ISA125V1、5 V/10 W、60 kHz 隔离反激式,具有基于 VIPer28L 的额外电源管理演示板