历史上的今天
今天是:2024年11月06日(星期三)
2019年11月06日 | 单片机控制电力柜用操控状态仪表程序
2019-11-06 来源:51hei
单片机源码如下:
#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单片机汇编指令的小合集
史海拾趣
|
eMbedded Visual C++ 4.0 和Platform Builder 5.0平台 自己定制的模拟器SDK,在evc中运行后,模拟器开打,,但emulator下面的folder sharing 是灰色的,与pc共享文件夹不能用,这是怎么回事呢?… 查看全部问答> |
|
为什么cmake改变CMAKE_CXX_COMPILER选项为armcc路径 config后显示: armcc.exe is not able to compile a simple test program… 查看全部问答> |
|
一个驱动程序中是不是可以建立多个设备对象,而这些设备对象是不是共用相同的派遣例程? 问题:一个驱动程序中是不是可以建立多个设备对象,而当针对不同的这些设备对象发送的IRP是不是共用相同的派遣例程? 问题产生的背景: 我要写一个监视串口的过滤驱动.从思路是这样的,在驱动中建立一个过滤串口设备对象将其挂在串口驱 ...… 查看全部问答> |
|
今天在网上找了一下74系列资料看见一些芯片只有结尾的D或者A什么的,他们有什么区别啊??像74HC574和74HC574D、74HC138和74HC138D、74HC244 74HC244D 74HC244A三种,他们的封装大小好像也不一样,又有什么区别啊,我看了他们的资料内部结构都是一 ...… 查看全部问答> |
|
看着教程下了IAR for MSP 430lauchpadv5.1,并且尝试安装了位于drivers里的win7 64 类似驱动的文件,插了板子到电脑以后,用IAR编写的程序似乎可以作用到板子,即一个简单亮灯程序,但是我的电脑里读不出板子,还有,在iarcompile,make后,downlo ...… 查看全部问答> |
|
失联客机,机上的一名意大利人和一名奥地利人是被他人冒充登机,可能遭到恐怖劫持或恐怖袭击,天上这么多的卫星、多国投入的搜索,这么长时间没消息(只有越南不靠谱的2千米油迹,不可能是飞机解体)要么是恐怖劫持到某个基地,要么进入时光隧道。。 ...… 查看全部问答> |




