本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、星期、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。//*******************主函数**************************//***************************************************void main(){uint i;lcd_init(); //调用液晶屏初始化子函数ds1302_init(); //调用DS1302时钟的初始化子函数for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //调用定时计数器的设置子函数while(1) //无限循环下面的语句:{ keyscan(); //调用键盘扫描子函数GPS_TIME();//获取gps时间 }}
上传时间: 2022-05-07
上传用户:
基于STC89C51单片机的智能电热水器的控制器的设计,要达到的控制要求有:(1)用LCD1602液晶显示水温、设置上下限和定时时间,(2)水温检测显示范围为00~99℃,精度为±1℃。(3)温度预设范围为0~99℃,当检测温度低于预设温度时,开始加热;检测温度高于预设温度时,停止加热。(4)设置4个程序按键。分别问设置按键、加键、减键、确定。(5)可以红外遥控,通过红外一体接收探头接收遥控器信号,执行与主板按键同等功能。(6)有水位检测功能,无水自动上水,无水不加热。//外部中断解码程序_外部中断0void intersvr1(void) interrupt 2 using 1{ TR0=1; Tc=TH0*256+TL0;//提取中断时间间隔时长 TH0=0; TL0=0; //定时中断重新置零 if((Tc>Imin)&&(Tc<Imax)) { m=0; f=1; return; } //找到启始码 if(f==1) { if(Tc>Inum1&&Tc<Inum3) { Im[m/8]=Im[m/8]>>1|0x80; m++; } if(Tc>Inum2&&Tc<Inum1) { Im[m/8]=Im[m/8]>>1; m++; //取码 } if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) { IrOK=1; TR0=0; } else IrOK=0; //取码完成后判断读码是否正确 } //准备读下一码 }}
上传时间: 2022-05-14
上传用户:
本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、星期、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。 设计要求:(1)用4个按键实现所有功能,计时准确。(2)可以设定闹钟功能。(3)有阴历功能,平年闰年准确无误。(4)液晶能显示年、月、日、星期、时、分、秒、温度。//*******************主函数**************************//***************************************************void main(){uint i;lcd_init(); //调用液晶屏初始化子函数ds1302_init(); //调用DS1302时钟的初始化子函数for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //调用定时计数器的设置子函数while(1) //无限循环下面的语句:{ keyscan(); //调用键盘扫描子函数GPS_TIME(); }}
上传时间: 2022-05-15
上传用户:
#include "NUC1xx.h"#include "Hal.h"#include "pwm.h"//wait current PWM cycle done, otherwise there maybe short pulse on FETvoid PWM_Stop(U8 ch){ switch(ch) { case PWM_CHANNEL_A: PWMA->u32CNR1 = 0; PWMA->u32CMR1 = 0; while(PWMA->u32PDR1 != 0); break; case PWM_CHANNEL_B: PWMA->u32CNR2 = 0; PWMA->u32CMR2 = 0; while(PWMA->u32PDR2 != 0); break; case PWM_CHANNEL_C: PWMA->u32CNR3 = 0; PWMA->u32CMR3 = 0; while(PWMA->u32PDR3 != 0); break; default: while(1); } PWMA->u32POE &= ~(1<<ch); PWMA->u32PCR &= ~(1<<(ch*8));}
上传时间: 2022-06-01
上传用户:kingwide
其它原创视频第72讲 视频教程说明及实战书籍推荐.avi - 99.51MB第71讲 怎样加密PCB文件.avi - 17.65MB第70讲 怎样生成坐标文件.avi - 36.32MB第69讲 怎样利用gerber层检查视图.avi - 16.50MB第68讲 出光绘文件:三.avi - 75.70MB第67讲 出光绘文件:二.avi - 72.89MB第66讲 出光绘文件:一.avi - 52.13MB第65讲 调整位号丝印.avi - 71.91MB第64讲 删除死铜.avi - 17.68MB第63讲 怎样合并铜皮.avi - 40.67MB第62讲 Shape void操作演示.avi - 38.01MB第61讲 修改铜皮轮廓及提高铜皮优先级.avi - 51.99MB第60讲 Shape的层间复制及其换层.avi - 54.76MB
上传时间: 2022-06-05
上传用户:
采用C代码编写的8位LED流水灯程序,附件是用PROTEUS设计的仿真电路工程,直接可以使用。请用Proteus 8以上版本。下面是验证好的源代码,供大家参考学习:------------------------------------------#include <reg51.h>void main(){LED;t0,t1,t2,t3,t4,t5,t6,t7;LED=P1;P1=0xFF;while(10){P1=0xFE;for(t0=10;t0<25000;t0++){;}P1=0xFD;for(t1=0;t1<25000;t1--) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xF7;for(t3=0;t3<25000;t3--) {;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xDF;for(t5=0;t5<25000;t5--){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0x7F;for(t7=0;t7<25000;t7++){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0xDF;for(t5=0;t5<25000;t5++){;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xF7;for(t3=0;t3<25000;t3++) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xFD;for(t1=0;t1<25000;t1++){;}P1=0xFE;}} ----------------------------------------------------
上传时间: 2022-06-09
上传用户:zhanglei193
delay.c 文件实现iic的精准延迟..如果有其他的精准延迟程序可以替代.miic.c 文件 实现模拟iic通信tcs34725.c 文件实现对颜色传感器的通信 通信常用程序如下TCS34725_Init() 为颜色传感器初始化程序 返回值 true或者false 例 if(TCS34725_Init()==true)TCS34725_GetRawData() 为采集颜色. 返回值 true或者false 例 if(TCS34725_GetRawData()==true) 颜色数据储存在已经定义的静态变量中.颜色读取 为 调用u16 GetRData(void);u16 GetGData(void);u16 GetBData(void);u16 GetCData(void); 这四个函数读取静态变量的数值并分别返回16位的R,G,B,C值.RGBLEDOFF RGBLEDON 分别是灯光开关.颜色传感器,采集时长设置在 tcs34725.c 文件中 的void TCS34725_Setup(void){ TCS34725_SetIntegrationTime(TCS34725_INTEGRATIONTIME_154MS); TCS34725_SetGain(TCS34725_GAIN_16X);}TCS34725_SetIntegrationTime 是设置单次采集时长TCS34725_SetGain 是设置多次采集的次数. 这两个函数需要的参数 选择在tcs34725.h 中. 自行组合在速度和准确间取舍.
上传时间: 2022-06-11
上传用户:XuVshu
/产初始化RTL8019AS,PAGE2寄存器只读,PAGE3寄存器不是NE2000兼容的,均不用设置材/使用0x40-0x4b为网卡的发送缓冲区,共12页,刚好存储2个最大的以太网数据包。使用0x4c-0x7f为网卡的接收缓冲区,共52页,因此PSTART=0x4c,PSTOP=0x80(0x80为停止页,接收缓冲区直到Ox7f,不包括0x80),刚开始时,网卡没有接收到任何数据包,因此BNRY设置为指向第一个接收缓冲区的页0x4c)*/void RTL8019lnitO REG00=0×21;/选择页0的寄存器,网卡停止运行,因为还没有初始化REGO1=Ox4c;/寄存器PSTART,设置接收缓冲区的起始页的地址REG02=0×80;/寄存器PSTOP,设置接收缓冲区的结束页的地址REG03=0x4c;//寄存器BNRY,设置为指向第一个接收缓冲区的页Ox4c(用作读指针)REG04=0x40;/寄存器TPSR.发送起始页地址初始化为指向第一个发送缓冲区的页REGOx=0xce;/*接收配置寄存器RCR,设置为仅接收自己地址的数据包以及广播地址和多点播送地址数据包,小于64字节的包丢弃,校验错的数据包不接收材REG0d=0xe0;/发送配置寄存器TCR,设置为启用crc自动生成和校验,正常模式工作REG0e=0xc8;/*数据配置寄存器DCR,设置为使用FIFO缓存,普通模式,8位数据传输,字节顺序为高位字节在前,低位字节在后*制REGOf=0x00;/中断屏蔽资存器IMR,设置为屏蔽所有中断SelectPage(l);/选择页l的寄存器REG07-0x4d;/寄存器CURR.设置为指向当前正在写的页的下一页(用作写指针)
上传时间: 2022-06-24
上传用户:
基于单片机的密码锁设计,内含工程文件和源码文件以及电路图#include "config.h" void main(){ LCD_Initial(); //lcd初始化 init_sys(); //硬件系统初始化 setpsw(); //密码设置 while(1) { time=3; //限定尝试3次 while(1) { inputpsw(); //输入密码 checkpsw(); //密码验证 checksuper(); //验证是否是超级密码 if(error_flag==0) {right();break;} else if(time>1) error(); //允许2次尝试错误 else {lock();break;} //3次错误,系统锁定 } }}
上传时间: 2022-07-17
上传用户:默默
本源代码是基于STM32F4xx硬件平台设计的贪吃蛇小游戏,主要难点在:随机点产生、贪吃蛇转向、贪吃蛇贪吃点;本部分主要接收产生随机点,产生随机点需要注意两个方面:1、随机点在有效的范围内;2、贪吃点与贪吃蛇不重合。产生随机点主要有两个函数,分别如下://随机数产生任务void rng_chansheng(void *p_arg){OS_ERR err;while(1){OSSemPend(&RNG_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);zou.x = RNG_Get_RandomRange(0,50)*8 + 40;zou.y = RNG_Get_RandomRange(0,50)*8 + 260;lcd_fangkuan(zou.x,zou.y,zou.x+SHE_FAANGKUAN_SIZE,zou.y+SHE_FAANGKUAN_SIZE);OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms}}//往下方向画一个实心的正方形,代表贪食蛇的一段void lcd_fangkuan(u16 x1,u16 y1,u16 x2 ,u16 y2){u16 i,j;u16 xx,yy;if(((x2 - x1) != SHE_FAANGKUAN_SIZE)||((y2 - y1) != SHE_FAANGKUAN_SIZE))return ;if(x1 > x2) {xx = x1;x1 = x2;x2 = xx;}if(y1 > y2){yy = y1;y1 = y2;y2 = yy;}if((y1 < 260)|| (y2 > 660)||(x1 < 40)||(x2 > 448)){game_yun_error = 1;LCD_ShowString(150,300,500,24,24,"GAME OVER!!");return ;}for(i=x1; i<x2; i++){for(j=y1; j<y2; j++){LCD_DrawPoint(i,j);}}}
上传时间: 2022-08-10
上传用户: