成功在于每一次嘀嗒



很多人常常不知道自己该做些什么。幼时的梦想越走越远,风霜的磨砺和肩上的重担时时让人不知所措,不知道接下来该怎么办。

但是,一个朋友讲了一个3只钟的故事,让我得到了很深刻的启迪。

一只新组装好的小钟放在了两只旧钟当中。两只旧钟“滴答”、“滴答”一分一秒地走着。

其中一只旧钟对小钟说:“来吧,你也该工作了。可是我有点担心,你走完三千二百万3次以后,恐怕便吃不消了。”

“天哪!三千二百万次。”小钟吃惊不已。“要我做这么大的事?办不到,办不到。”

另一只旧钟说:“别听他胡说八道。不用害怕,你只要每秒滴答摆一下就行了。”

“天下哪有这样简单的事情。”小钟将信将疑。“如果这样,我就试试吧。”

小钟很轻松地每秒钟“滴答”摆一下,不知不觉中,一年过去了,它摆了三千二百万次。

我们呢,是不是梅和根每秒钟都在“嘀嗒”呢?

每个人都希望梦想成真,成功却似乎远在天边遥不可及,倦怠和不自信让我们怀疑自己的能力,放弃努力。其实,我们不必想以后的事,一年、甚至一月之后的事,只要想着今天我要作些什么,明天我该作些什么,然后努力去完成,就象那只钟一样,每秒“滴答”摆一下,成功的喜悦就会慢慢浸润我们的生命。

所以,看完这一篇后,就赶紧去工作吧,或者照一本好书看看,不要让自己的每一次“嘀嗒”空过。
/************************************************ //本程序只供学习使用,未经作者许可,不得用于其它任何用途 //TWKJ STM32开发板 //通旺科技@TWKJ //作者:tianqingyong //版本:V1.0 //修改日期:2019/10/22 //程序功能:封装和简化GPIO的读写操作 //V1.0 完成基本功能 ************************************************/ #include "my_lcd1602.h" /************************端口初始化*******************************/ void LCD_GPIO_init(void) { u8 i; #if !defined (USE_HAL_DRIVER) for(i=0;i<8;i++) { GPIO_Pin_Init(Pins_Data_1602[i],GPIO_Mode_Out_PP); }//**All notes can be deleted and modified**// GPIO_Pin_Init(PIN_RW,GPIO_Mode_Out_PP); GPIO_Pin_Init(PIN_RS,GPIO_Mode_Out_PP); #else for(i=0;i<8;i++) { GPIO_Pin_Init(Pins_Data_1602[i],GPIO_MODE_OUTPUT_PP,GPIO_PULLUP); } GPIO_Pin_Init(PIN_EN,GPIO_MODE_OUTPUT_PP,GPIO_PULLUP); GPIO_Pin_Init(PIN_RW,GPIO_MODE_OUTPUT_PP,GPIO_PULLUP); GPIO_Pin_Init(PIN_RS,GPIO_MODE_OUTPUT_PP,GPIO_PULLUP); #endif } void GPIO_data(u8 x) //端口置入数据 { u8 i; for(i=0;i<8;i++) { if(x&(0x01<<i)) { PinSet(Pins_Data_1602[i]);//DB0 } else{ PinReset(Pins_Data_1602[i]);//DB0 } } } /******************************************************/ void LCD_En_Toggle(void) //发使能脉冲 { SET_EN;//使能1 delay_us(5);//延时160us CLE_EN; } void LCD_Busy(void)//判断忙 { u8 i; u16 later0=0; for(i=0;i<8;i++) { #if !defined (USE_HAL_DRIVER) GPIO_Pin_Init(Pins_Data_1602[i],GPIO_Mode_IPU); #else GPIO_Pin_Init(Pins_Data_1602[i],GPIO_MODE_INPUT,GPIO_PULLUP); #endif } CLR_RS;//RS = 0 //delay_us(1);//延时10us SET_RW;//RW = 1 //delay_us(1);//延时10us SET_EN;//EN = 1 //delay_us(2);//延时20us while ((PinRead(Pins_Data_1602[7]))&&(later0<20000)) //循环等待忙检测端口 = 0 {//**All notes can be deleted and modified**// later0++; } CLE_EN;//EN = 0 //恢复端口为输出状态 for(i=0;i<8;i++) { #if !defined (USE_HAL_DRIVER) GPIO_Pin_Init(Pins_Data_1602[i],GPIO_Mode_Out_PP); #else GPIO_Pin_Init(Pins_Data_1602[i],GPIO_MODE_OUTPUT_PP,GPIO_PULLUP); #endif } } //向液晶里面写入指令 时序:RS=L,RW=L,Data0-Data7=指令码,E=高脉冲 void LCD1602_WriteCmd(u8 x,char cmd) { //**All notes can be deleted and modified**// //delay_us(4);//延时40us GPIO_data(x);//端口置入数据 //delay_us(4);//延时40us LCD_En_Toggle();//发使能脉冲 //delay_us(1);//延时100us LCD_Busy();//测忙 } //向液晶里面写入数据 时序:RS=H,RW=L,Data0-Data7=指令码,E=高脉冲 void LCD1602_WriteData(u8 x) //向液晶里面写入数据 { LCD_Busy();//测忙 //delay_us(1);//延时10us SET_RS;//RS = 1 //delay_us(1);//延时10us CLE_RW;//RW = 0 //delay_us(4);//延时40us GPIO_data(x); //delay_us(4);//延时40us LCD_En_Toggle();//发使能脉冲 //delay_us(1);//延时100us LCD_Busy();//测忙 } void LCD_SetXY(u8 x,u8 y) //字符初始位置设定,x表示列,y表示行 { u8 addr; if(y==0) addr=0x80+x; else if(y==1) addr=0xC0+x; LCD1602_WriteCmd(addr,1) ; } /******************************************************************/ void LCD1602_Init( void )//初始化 { LCD_GPIO_init(); delay_us(1500);//延时15ms LCD1602_WriteCmd( 0x38,0);//写指令38H 不检测忙信号 //**All notes can be deleted and modified**// //以后每次写指令、读/写数据操作之前需检测忙信号 LCD1602_WriteCmd( 0x38,1);//显示模式设置 LCD1602_WriteCmd( 0x08,1);//显示关闭 LCD1602_WriteCmd( 0x01,1);//显示清屏 LCD1602_WriteCmd( 0x06,1);//显示光标移动设置 LCD1602_WriteCmd( 0x0C,1);//显示开、光标不显示 } void LCD1602_SetCursor(u8 x,u8 y) { LCD_SetXY(x,y); LCD1602_WriteCmd(0x0f, 1); } void LCD1602_CloseCursor(void) { LCD1602_WriteCmd(0x0c, 1); } /*------------------------------------------------ 清屏函数 ------------------------------------------------*/ void LCD1602_Clear(void) { LCD1602_WriteCmd(0x01,1); delay_ms(5); } /******************************************************/ void LCD1602_Write_Char(u8 x,u8 y,const char Data0) { LCD_SetXY(x,y); LCD1602_WriteData(Data0); } void LCD1602_Write_String(u8 x,u8 y,const char *string) //向1602写一个字符串 { //unsigned char i=0; LCD_SetXY(x,y); while(*string) { LCD1602_WriteData(*string);//**All notes can be deleted and modified**// } } /** * @brief LCD1602自定义字符 * @param Position 位置,范围:1~8 * @param Table 要显示的字符的数组名 * @retval 无 */ void LCD_SetCustomChar(unsigned char Position,char *Table) { unsigned char i; switch (Position) { case 1: LCD1602_WriteCmd(0x40,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break; case 2: LCD1602_WriteCmd(0x48,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break; case 3: LCD1602_WriteCmd(0x50,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break; case 4: LCD1602_WriteCmd(0x58,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break; case 5: LCD1602_WriteCmd(0x60,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break; case 6: LCD1602_WriteCmd(0x68,0); for(i=0;i<8;i++) { LCD1602_WriteData(Table[i]); } break;//**All notes can be deleted and modified**// } } /** * @brief 在LCD1602指定位置上显示自定义字符 * @param Line 行位置,范围:1~2 * @param Column 列位置,范围:1~16 * @param Num 要显示的字符编号,范围:1~8 * @retval 无 */ void LCD_ShowCustomChar(unsigned char Line,unsigned char Column,unsigned char Num) { LCD_SetXY(Line,Column); LCD1602_WriteData(Num-1); } 帮我写出该代码的具体逻辑
05-23
一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值