#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineLED_DATP0sbitLED_SEG0=P2^7;sbitLED_SEG1=P2^6;sbitLED_SEG2=P2^5;sbitLED_SEG3=P2^4;#defineTIME_CYLC100//12M晶振,定时器10ms中断一次我们1秒计算一次转速//1000ms/10ms=100#definePLUS_PER10//码盘的齿数,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈#defineK1.65//校准系数unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchardataDisbuf[4];//显示缓冲区uintTcounter=0;//时间计数器bitFlag_Fresh=0;//刷新标志bitFlag_clac=0;//计算转速标志bitFlag_Err=0;//超量程标志voidDisplayFresh();//在数码管上显示一个四位数voidClacSpeed();//计算转速,并把结果放入数码管缓冲区voidinit_timer();//初始化定时器T0\T1voidDelay(uintms);//延时函数voidit_timer0()interrupt1/*interruptaddressis0x000b*/{TF0=0;//定时器T0用于数码管的动态刷新TH0=0xC0;TL0=0x00;Flag_Fresh=1;Tcounter++;if(Tcounter>TIME_CYLC){Flag_clac=1;//周期到,该重新计算转速了}}voidit_timer1()interrupt3/*interruptaddressis0x001b*/{TF1=0;//定时器T1用于单位时间内收到的脉冲数//要速度不是很快,T1永远不会益处Flag_Err=1;//如果速度很高,我们应考虑另外一种测速方法:T测速法}voidmain(void){Disbuf[0]=0;//开机时,初始化为0000Disbuf[1]=0;Disbuf[2]=0;Disbuf[3]=0;init_timer();while(1){if(Flag_Fresh){Flag_Fresh=0;DisplayFresh();//定时刷新数码管显示}if(Flag_clac){Flag_clac=0;ClacSpeed();//计算转速,并把结果放入数码管缓冲区Tcounter=0;//周期定时清零TH1=TL1=0x00;//脉冲计数清零}if(Flag_Err)//超量程处理{Disbuf[0]=0x9e;//开机时,初始化为0000Disbuf[1]=0x9e;Disbuf[2]=0x9e;Disbuf[3]=0x9e;while(1){DisplayFresh();//不再测速等待复位i}}}}//在数码管上显示一个四位数voidDisplayFresh(){P2|=0xF0;LED_SEG0=0;LED_DAT=table[Disbuf[0]];Delay(1);P2|=0xF0;LED_SEG1=0;LED_DAT=table[Disbuf[1]];Delay(1);P2|=0xF0;LED_SEG2=0;LED_DAT=table[Disbuf[2]];Delay(1);P2|=0xF0;LED_SEG3=0;LED_DAT=table[Disbuf[3]];Delay(1);P2|=0xF0;}//计算转速,并
2024/3/2 19:19:54 400KB 光电传感器、测速、protus、pcb
1
实验七Java多线程一、实验目的:熟悉利用Thread类建立多线程方法。
熟悉利用Thread接口建立多线程方法。
二、实验内容:1.阅读下列程序,分析并上机检验其功能。
classDelayThreadexendsThread{privatestaticintcount=0;privateintno;privateintdelay;publicDelayThread(){count++;no=count;}publicvoidrun(){try{for(inti=0;i<10;i++){delay=(int)(Math.random()*5000);sleep(delay);System.out.println(“Thread”+no+”withadelay”+delay);}}catch(InterruptedExceptione){}}}publicclassMyThread{publicstaticvoidmain(Stringargs[]){DelayThreadthread1=newDelayThread();DelayThreadthread2=newDelayThread();thread1.start();thread2.start();try{Thread.sleep(1000);}catch(InterruptedExceptione){System.out.println(“Threadwrong”);}}}2.讲上列程序利用Runnable接口改写,并上机检验。
3.利用多线程编写一个模拟时钟(AWT程序、Runnable接口),有时/分/秒针编写一个应用程序,创建三个线程分别显示各自的时间。
三、实验要求:1.通过实验掌握Thread、Runnable使用方法;
2.程序必须能够实现多线程;
3.程序必须能够完成题目要求;
4.写出实验报告。
四、实验步骤:首先分析程序功能,再通过上机运行验证自己的分析,从而掌握通过Thread类建立多线程的方法。
通过将扩展Thread类建立多线程的方法改为利用Runnable接口的方法,掌握通过Runnable接口建立多线程的方法。
2024/2/26 3:55:02 2KB JAVA
1
uchara[]="温湿度传感器";ucharb[]="温度:";ucharc[]="湿度:";uchard[]="0123456789";typedefunsignedcharU8;typedefunsignedintU16;U8U8flag,k;U8U8temp;U8U8WD_H,U8WD_L,U8SD_H,U8SD_L,U8checkdata;U8U8WDH_temp,U8WDL_temp,U8SDH_temp,U8SDL_temp,U8checkdata_temp;U8U8comdata;voiddelay_1ms(uintn){uinti,j;for(i=0;i<=n;i++)for(j=0;j<110;j++);}voiddelay_10us(){U8i;i--;i--;i--;i--;i--;i--;}voidwrite_com(ucharcom){rs=0;rw=0;en=0;P2=com;delay_1ms(1);en=1;delay_1ms(1);en=0;}voidwrite_data(uchardate){rs=1;rw=0;en=0;P2=date;delay_1ms(1);en=1;delay_1ms(1);en=0;}voidpos(ucharx,uchary){ucharpos;if(x==0)x=0x80;elseif(x==1)x=0x90;elseif(x==2)x=0x88;elseif(x==3)x=0x98;pos=x+y;write_com(pos);}voiddisplay(U8WD_H,U8WD_L,U8SD_H,U8SD_L){U8yi,er,san,si;yi=U8WD_H/10;er=U8WD_H;san=U8SD_H/10;si=U8SD_H;pos(1,4);write_data(d[yi]);pos(1,5);write_data(d[er]);pos(2,4);write_data(d[san]);pos(2,5);write_data(d[si]);}voidcom(){U8i;for(i=0;i<8;i++){U8flag=2;while((!SJK)&&U8flag++);delay_10us();delay_10us();delay_10us();U8temp=0;if(SJK)U8temp=1;U8flag=2;while((SJK)&&U8flag++);if(U8flag==1)break;U8comdata<<=1;U8comdata|=U8temp;}}
2024/1/28 1:02:12 26KB DHT11
1
intmain(void){u16t;u16len;u16times=0;delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);//串口初始化为115200LED_Init();//LED端口初始化KEY_Init();//初始化与按键连接的硬件接口while(1){if(USART_RX_STA&0x8000;){len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度printf("\r\n您发送的消息为:\r\n\r\n");for(t=0;t<len;t++){USART_SendData(USART1,USART_RX_BUF[t]);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束}printf("\r\n\r\n");//插入换行USART_RX_STA=0;}else{times++;if(times0==0)printf("请输入数据,以回车键结束\n");if(times0==0)LED0=!LED0;//闪烁LED,提示系统正在运行.delay_ms(10);}}}
2023/12/16 20:02:36 1.99MB STM32 UART
1
spi主机程序STM32CubeMx生成Hal库DMA发送接收intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration--------------------------------------------------------*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();MX_SPI5_Init();/*USERCODEBEGIN2*/// HAL_UART_Receive_DMA(&huart1,rxBuffer,BUFFER_SIZE); /*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){ HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET); spi_tx[0]=6; spi_tx[1]=7; spi_tx[2]=8; spi_tx[3]=9; memset(spi_rx,0,BUFFER_SIZE); HAL_SPI_TransmitReceive_DMA(&hspi5,spi_tx,spi_rx,BUFFER_SIZE); HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET); HAL_Delay(1000);/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}/*USERCODEEND3*/}
2023/11/1 6:11:26 33.37MB spi DMA 主机 STM32CubeMX
1
intmain(void){delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);//串口初始化为115200LED_Init();//LED端口初始化KEY_Init();//初始化与按键连接的硬件接口InitRc522();//初始化射频卡模块while(1){RC522_Handel();}}
2023/9/29 4:57:09 2.62MB STM32 RC522
1
解决undefinedreferenceto`__gnu_mcount_nc'问题在linux内核编译时出现以下错误:init/built-in.o:Infunction`do_one_initcall':/linux-2.6.30.4/init/main.c:706:undefinedreferenceto`__gnu_mcount_nc'init/built-in.o:Infunction`init_post':/linux-2.6.30.4/init/main.c:804:undefinedreferenceto`__gnu_mcount_nc'init/built-in.o:Infunction`name_to_dev_t':/linux-2.6.30.4/init/do_mounts.c:78:undefinedreferenceto`__gnu_mcount_nc'init/built-in.o:Infunction`rest_init':/linux-2.6.30.4/init/main.c:453:undefinedreferenceto`__gnu_mcount_nc'init/built-in.o:Infunction`calibrate_delay':/linux-2.6.30.4/init/calibrate.c:123:undefinedreferenceto`__gnu_mcount_nc'下载资源补丁,把放到linux源码目录下#cp__gnu_mcount_nc_patch.gz../linux.2.6.30.4解压打补丁#gunzip-dc__gnu_mcount_nc_patch.patch.gz|patch-p1OK!
2023/9/23 22:12:48 1KB linux 补丁
1
stm32f103库函数版本delay.c
2023/9/22 8:24:42 8KB stm32f1
1
可以用手机APP操控小车的运动#include"delay.h"#include"sys.h"#include"usart.h"#include"stm32f10x_tim.h"#include"motor.h"#include"PWM.h"intmain(void){u16t;u16len;u16times=0;u8a[200];delay_init();//延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);//串口初始化为9600TIM4_PWM_Init(899,0);Motor_12_Config();//298电机驱动初始化IN1(Low);IN2(High);IN3(Low);IN4(High);//保持控制正反转电平恒定默认直行while(1){Motor_1_STOP();Motor_2_STOP();if(USART_RX_STA&0x8000;){
2023/8/1 23:08:58 3.3MB 智能小车
1
AD采样实时曲线绘制while(1){for(aa=0;aa>1;for(ff=1;ff0){ee=da[aa]-da[aa+1];gg=ee>>1;for(ff=1;ff>1;for(ff=1;ff0){ee=da[aa]-da[aa+1];gg=ee>>1;for(ff=1;ff50)break;//Delay(100);}}}全部工程
2023/6/30 5:18:36 1.98MB uCOS MINI STM32 示波器
1
共 30 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡