基于单片机的转速测量仪设计
学习中心(或办学单位):电子科技大学中山学习中心
电子科技大学 继续教育学院 制 网络教育学院
摘要
测速是在工业和农业生产中常见的问题,研究使用单片设备的设计测速表非常重要。 为了测量速度,有必要解决采样抽样的问题。在使用模拟设备的制造时使用模拟设备的制造,使用旋转发生器的方法,即控制收集速度的机器,测量液晶屏上速度的速度和演示。但是,旋转轴每周产生一个或多个脉冲并将它们传输到微控制器进行计数,则可以获得有关速度的信息。该系统由八个组件组成:光伏切换链,塑料电路,门链,晶体发生器电路,相位敏感频分电路,加倍控制电路和账户,解码,驱动和显示。模式显示方波成形电路,扩展由于双链引起的方形信号波的方频,然后从频率分离链的0.5Hz信号以0.5Hz信号启动帐户,解码,显示,维护和清洁的功能。
关键词 STM32、单片机、OLED液晶屏,光电转换、计数
Abstract
Speed measurement is a common problem in industrial and agricultural production, and it is important to study the design of speed meters using monolithic devices. In order to measure the speed, it is necessary to solve the problem of sampling sampling. In the manufacture of analog devices using the manufacture of analog devices using the method of rotary generators, i.e., machines that control the collection of speed, the speed of the measurement of speed on the LCD screen and the demonstration. However, the rotary axis generates one or more pulses per week and transmits them to the microcontroller for counting, then information about the speed can be obtained. The system consists of eight components: a photovoltaic switching chain, a plastic circuit, a gate chain, a crystal generator circuit, a phase-sensitive frequency division circuit, a doubling control circuit and an account, a decoder, a driver and a display. The mode display square waveform circuit extends the square frequency of the square signal wave due to the doubling chain, and then the 0.5 Hz signal from the frequency separation chain starts the account, decoding, display, maintenance and cleaning functions with a 0.5 Hz signal.
KEY WORD STM32, microcontroller, OLED LCD, photoelectric conversion, counting
目录
1 引言 1 1.1 课题背景 1
- 2 课题研究的主要内容 1
-
- 1 设计要求 1
- 2.2 难点 1
- 3 方案论证 2
2总体方案设计 2 2.1 原理 2 2.2 框图 3 2.3 元器件的选择 3 2.3.1主控芯片 3 2.3.2 语音芯片 4 2.3.3显示屏 5 2.4霍尔传感器 6 2.5光电传感器 7 2.6 光电编码器 7 3 硬件设计 8 3.1 单片机最小系统设计 9 3.2 语音播报模块电路 10 3.3 OLED显示屏模块电路 11 3.4 按键电路模块 12 3.5 电路总图 13 4 系统软件设计 14 4.1 主程序 14 4.2 OLED屏驱动程序 14 4.3 语音驱动程序 16 5 PCB及仿真 19 5.1 软件仿真 19 5.2 用protel DXP画出原理图如下: 19 5.3 根据原理图得到的PCB: 20 5.4 硬件调试结果: 20 结束语 1 谢辞 2 参考文献 3
1 引言 1.1 课题背景 分析了各种测量旋转速度的方法,对于各种应用条件,开发了STM系列的全数字测量装置,以及提高未来实际应用的测量精度的可能原因。详细的设计基于单片机,设计了一个合适的数字速度计,具有高工业和内部成本。谈话,学习动力计是一个非常有趣的问题。 本设计是为了测量所述DC电机的旋转速度。RPM对于制造商和发动机的发动机来说都很有趣。该发动机旋转速度通常是指每分钟的发动机转子的速度,作为一项规则,指示R /分钟,其在所有类型的发动机的旋转的一个重要的数字,这当然是使用的光电速度测量方法设计,包括光电开关,形成电路,门链,晶体管振荡电路,分离频率,双频率,控制电路,和分数,解码,驱动程序,演示电路,范围电机测量600R /分钟?30,000R / MIN,相对测量误差是对应的发动机速度上的5位数字管LED被示出的。
- 2 课题研究的主要内容
该系统使用单片SCT89C52作为控制内核,霍尔传感器作为速度测量元件,在整体机上处理数据后,RT12864M在晶格液晶模块中的实际速度和行程的显示。 -
- 1 设计要求
- 可以以低速测量身体运动的速度和时间。
2)当主体超过特定速度限制时,蜂鸣器发送警报。
-
2.2 难点 霍尔传感器是磁性敏感元件,由于该工具可以在国内使用的情况下,在增加电磁干扰的条件下,有必要采取措施打破干扰,否则系统不能稳定地牢固地运行。 -
3 方案论证 为了测量速度,必须首先使用选择的选择解决问题。使用模拟技术创建转速表时,通常使用发电机转速表方法,其中转速表轴连接到等候轴,电压电平转速表反映了速度。为了使用微控制器测量速度,您可以使用简单的脉冲计数方法。仅当轴的每个转弯产生一个或多个脉冲并且脉冲传输脉冲时,才能获得速度的速度微控制器计数。 在该解决方案中,霍尔传感器测量的旋转速度被连接到对象的轴将被测量,并生成用于所述机器,其由霍尔器件链显示的轴每旋转一定的数量的脉冲之后的photosynthesizer,脉冲积累在旋转米。光通信后的传感器电路的脉冲的同时振幅减小到5微米,其提供逻辑电平序列C52.And计算时间来计算相应于所述速度的计数器机轴.Mathrm的数据并显示它们的方法给LED现实屏幕。但是,只有速度将超过,距离Matrah将通过偷窥发送信号报警。
2总体方案设计 2.1 原理 该STM32F10RCT6微控制器被用作系统中的主控制器,该系统被用作STM32F10RCT6单片器件作为主控制器,声音信号被合成,然后通过该语音传输信道传输,在同一时间,单片计算机读取通过程序和LCD类型的文本信息叫做站。当总线进入当总线进入站,通过键盘控制系统中的驱动器的站,该系统可以以相反的顺序来指定当机器到达终端,按下按钮再次以相反的顺序重新上报站。当总线到达终端,按下按钮和在相反方向上声明站。当系统先前写入,音频信号通过发送语音记录信道给语音芯片,所述产生的信息将被存储在语音芯片,将被存储在几个消息来创建的数据库。 2.2 框图
图2-1 系统组成结构 2.3 元器件的选择 2.3.1主控芯片 该单片机[5]是微型计算机的一个重要分支,它集成了所有的微计算机的功能部件,即:CPU,板载存储装置(RAM),简单地存储装置(ROM),定时器/米和接口电路在一个晶体(I / O),形成一个完整的微电路。该微控制器已成为计算机设备,这使得计算机从大规模的数值计算移动到智能控制目标和从历史的重要里程碑这些微小的技术,在两个重要领域取得了非常重要的进展,它是在计算机和嵌入式计算机领域。 STM32F10RCT6是微控制器(IC),的一个集成的集成电路基于ARM Cortex开发 - M3哈佛体系结构,其中数据和指令分别存储具有32位的核的大小,具有72MHz的的速度,具有256KB可编程能力,用的类型Flash和48K为RAM.V ST软件记忆加入许多外设功能:48KB SRAM,闪存256KB,八种定时器的,包括两个主要的定时器(定时器6和计时器7),两个高级计时器(TIM 1,TIM8),四公共定时器(TIM 2 - TIM5),两个DMA控制器(仅12个信道)和一个DMA控制器DMA控制器(仅12个信道),三个连续的外围接口,两个总线集成电路,五个串行端口,通用顺序轮胎,一个LAN。控制器,三个12 -位模块,12 -排出器,单个接口SDIO和51的通用接口IO)51 + 5×2 + 3 = 64个端口。5对VBAT BOOT0 NRST电源,有64、128、256三种芯片引脚。 考虑到成本和必要的功能,在这种设计中,STM32F10RCT6用作主控制晶体,需要使用SPI,IIC,内部定时器,12 ADC在40?85°C的温度下在工作介质中使用。
图 2-2 STM32F103RCT6单片机实物图 2.3.2 语音芯片 在从3V到5V的范围内的ISD4004系列电压时,一个芯片可以被存储为8至16分钟的记录,这使得它能够在移动通信设备和其它便携式电子设备一起使用。所述样品可以是4.0,5.3,6.4 ,8.4千赫兹,和下采样的频率,时间越长其写入并失去,较小的声音质量,分别减少,存储在闪烁芯片,并且可以被存储100年无电(正常值);重复10万次。这种芯片是基于CMOS技术,这包括发电机,抗混滤波器,平滑滤波器,声音放大器,自动降噪和声音抑制,以及高密度的晶体中一个多级闪蒸。Diseard该晶体是基于以下要求:所有操作都是由MCU控制的,命令可以通过串行通信接口发送,芯片用于直接建模MN被抛弃的存储技术,每个捕获的值存储在闪存驱动器的声音,音乐,音乐和特效的声音完全可以再次重现,非常类似于原来的声音,从而防止常规定量评估和压缩固体的记录,从而避免失真和量化的金属声音和正常的固态记录压缩的结果。在该膜上,而不调整时钟,可选的外部时钟。
图 2-3 ISD4004语音芯片实物图
2.3.3显示屏 所选择的OLED显示器被设计为SSD1306,一个内置的大小为0.96英寸增强显示,并且因此就没有必要为特别的加强。迷彩林间空地被chemmed并且可以用来比较高对比度,薄的厚度,宽角落,快速的响应时间,柔性面板,宽工作温度,简单的结构和生产工艺,如许多特点,这是下一代片剂表现出新的技术。LCD需要背光源,但OLED不需要背光,因为它本身发光,这使得显示效果更加出色是什么的情况下,现代技术可以在不增加OLED的尺寸,但即使是非常小的尺寸,其分辨率可高。SCRAN使用IIC接收消息。屏幕便宜,但高品质,适合显示手机屏幕和计算器,MP3播放器。
图 2-4 SSD1306 OLED显示屏 2.4霍尔传感器 霍尔传感器是磁敏传感器,通常用于收集CS3020开关的信号,CS3040等,这是一个三极设备,其外观类似于三极管,只要动力和地面可以工作,即输出通常是打开歧管(OC)的输出和工作电压范围的宽度,使用非常方便。如图2-5所示,CS3020的外部大小具有文本侧,从左到右 - 三足跟,接地和输出。
图2-5 CS3020外形图
与霍尔传感器的帮助下,获得的脉冲信号,它们的机械结构也可以是,如果磁铁的转子的圆是胶磁铁相对简单,使得霍尔开关接近磁铁,将有一个信号输出,当旋转轴将连续产生的脉冲信号。若干磁体可以是一周旋转和接收若干脉冲输出。当磁体离合器应注意大厅的传感器灵敏度的磁场的方向。完美胶水。可以手动得到更接近传感器,如果没有信号,你可以改变方向,然后再试一次。这种传感器不怕灰尘,油污和灰尘,广泛应用在工业设施中使用。 2.5光电传感器 光电传感器是具有各种形式,例如发送,反射等传输,例如很宽的装置,如图2-6所示,当不透明对象块中的发射器和接收器之间的间隙,断开开关或打开它们。这一点,因为如图2-7所示,可制成并安装在旋转轴的风扇叶片的通道期间获得的脉冲。如果叶片的数量是较大的,每周的旋转可以得到一个以上的脉冲信号。
图2-6光电传感器的原理图
图2-7遮光叶片 2.6 光电编码器 照片模型的工作原理与光电传感器相同,但它由光电传感器,电子电路,代码盘等组成,通过光传感器轴的粘附到旋转轴,可以获得各种各样的输出信号。ProSiCo用于数字控制机,旋转平台,伺服,机器人,雷达,确定军用目的等。如图2-8所示,光涂角的形式。此主题相关图片如下。
图2-8成品光电编码器 我为本课程选择了一台照片传感器,它使用了通过测量发动机旋转速度的通过方法。光传感器如上所述。 当不透明物体阻挡了开始和接收之间的间隙时,开关管关闭,否则会打开。为此可以制造并安装在旋转轴上,以在风扇时获得脉冲刀片通过。如果刀片的数量更多,则每周旋转可以获得多于一个脉冲信号。只有在这里,我们只使用10个孔来旋转!如果10,000个脉冲产生一分钟,则发动机速度将是1000r / min。 3 硬件设计 速度测量方法确定与转速计信号的硬件连接,实际测量频率,因此一些频率测量原理也适用于速度测量。 通常,使用计算方法进行测试,测量脉冲宽度和精度。所谓的分数方法使时间达到一个门,并计算门之间输入的脉冲数;图形的差异化的空中照片脉冲持续时间测量的拍摄是使用的持续时间由该信号控制的高精度的高频信号的计数器测量的脉搏。通信的阀以及测量信号不能被同步,误差问题±1在两种情况下发生。第一种方法是在一个较高的信号频率的情况下使用,并且在一个较低的信号频率的情况下相等的精度的方法适用于高频和低频信号在此,为了简化讨论,只使用测试方法。
图3-1硬件设计 如上所示:由于光传感器的类似模拟效果在这里,我们使用555芯片来形成施密特触发,这通过2-5针从照片传感器接收脉冲,这在整体单元中显示3针头T1(P3.5)。89C51之后通过端口P1的输出速度由数字管显示。 3.1 单片机最小系统设计 最小微控制器系统要求重新启动链条和电时钟。该方案设计为电源USB,包括8MHz晶体和两个30PF电容器,最小系统由排放链,水晶和电源链3.3 V.Sham组成复位有两种模式:从上方和复位键复位时的电流是电流的时刻,快速充电的C19电容器和瞬时短路,这导致较低水平和形式的复位动作。按下SW1和创建低级别创建一个放电操作的关键手段的关键。在微控制器有两个外部石英发生器与8MHz的频率和外低频晶体发生器32768兆赫的频率,这次使用外部高频晶体。
图 3-2 STM32最小系统图
3.2 语音播报模块电路 使用SPI3微控制器和SS语音模块是连接到PA15微控制器,SCLK的选择信号 - 连接到PB3微控制器的时钟线,以及连接到PB5微控制器的MOSI串行输入连接到PB4微控制器端子,VK和GND与营养积极和接地的电力连接。连接到ISD4004 SCLK,MISO和MOSI,PA15语音模块的PB3,PB4和PB5连接到ISD4004 SS,微控制器从PB5语音模块接收数据,PB4发送数据。
图 3-3 ISD4004电路原理图
3.3 OLED显示屏模块电路 在SSD1306显示器,OLED具有四个高跟鞋,GND连接到电源时,VCC被连接到3.3 V电源,SCL - 到D0 OLED,IIC键 - 在消息,SDA - 到D1 OLED键和IIC 。该消息CL的OLED D0图标,这是在IIC通信的同步按钮,SDA是D1 OLED图标,这是在IIC通信的数据的输出,SCL被连接到PC12的微控制器和SDA连接到PC11的微控制器。Cax的数据和时钟信号必须被连接到PC11和PC12的高跟鞋,其与SDA和SCL OLED相关联,微控制器经由PC11接收数据,微控制器经由IIC接收数据。该crycrocontroller经由PC11接收数据,并且该微控制器是通过IIC。
图 3-4 SSD1306电路原理图 3.4 按键电路模块 该项目需要使用四个键无需按下它们,是??一个高电平,按K1形成低水平的反应,以执行程序,按照AD K1?AD?ADM U K3低,通过将模拟信号转换为数字信号ADC通过程序确定各种命令的执行,IO连接到PA0微控制器,具有PC1微控制器的化合物。
图 3-5 按键电路原理图
3.5 电路总图 图 3-6 电路总图
4 系统软件设计 4.1 主程序 基本程序包括:确定输入变量,初始化结论初始化密钥,初始化时钟,初始化显示和moduley.posle初始化模块初始化程序前进到声死循环,不断地检查标记并实时更新它们的状态,执行对应的程序使用对应znakov.Kak下面的图中所示,在将网络连接首先进行内周初始化和初始化输入周期被定义段标记如果执行0据说所得的键盘信号的用于执行KEYFlag + +,1个执行逆顺序接收按键信号用于执行KEYFlag序列报告。
图 4-1 主程序流程图
4.2 OLED屏驱动程序
监视器和微控制器,使用GPIO软件模仿IIC通信,EIC初始化开始于打开GPIOC上安装的APB2时钟线,并使用PC11和PC12按钮选择GPIOC模式下的泄漏,频率为50MHz,SCL的高度。当所有的SDA数据是有效的,当SCL减小时,答案是没有收到开始-一个信号,即SDA从高处向底部产生,并且当SDA上升向上下游的停止信号。当SDA上升到的高度。 SCL,它从下面向上升起,以及SDA减少了在SCL的高度,以得到答复,产生停止信号,所述高级别SDA是unnswering信号,还设有一个线路的时间,这是驱动由主计算机中,当接收器发送响应信号等待没有答案。 -这是一个线由主计算机控制的,等待时间,当所述接收器发送的响应信号的发送已经稳定在较高的SCL水平,改变在T. SCL.IIC的底部是由固体物料存储和GPIO软件建模创建的,选择软件建模。
图 4-2 OLED屏汉字显示程序 4.3 语音驱动程序 经由SPI3.Trotokol SPI与ISD4004 MCU支持通信是同步时序数据传输协议,根据该下降当SPI MCU寄存器播放SCLK通道的作用,并且因此,记录了MOSI链路数据作为时钟具有增加和发送它们在MISO的下拉线向用户发送所述操作命令给用户发送连接命令后必须等待TPULD对于发音的从00开始,必须遵循以下顺序。:在00对公司“SETPLE”的方向顺序; 1.发送连接命令;等待TPUTD(来自电源的时间延迟)。转移回放命令定义将来自00的地址开始重放,并且当EOM会发生,该设备将立即停止播放。 ISD4004提供了多种控制命令.以下为指令表。 指令 8位控制码<16 位地址> 操作摘要 POWERUP 00100XXX 上电: 等待 TPUD 后器件可以工作 SET PLAY 11100XXX< A15-A0> 从指定地址开始放音。后跟PLAY 指令可使放音继续进行下去 PLAY 11110XXX< XXXXXXXXXXXXXXXX > 从当前地址开始放音(直至 EOM 或 OVF) SET REC 10100XXX<A15 -A0> 从指定地址开始录音。后跟 REC 指令可使录音继续进行下去 REC 10110XXX< XXXXXXXXXXXXXXXX > 从当前地址开始录音(直至 OVF 或停止) SET MC 11101XXX<A15 -A0> 从指定地址开始快进。后跟 MC 指令可使快进继续进行下去 MC 11111XXX< XXXXXXXXXXXXXXXX > 执行快进, 直到 EOM. 若再无信息, 则进入 OVF 状态 STOP 0X110XXX< XXXXXXXXXXXXXXXX > 停止当前操作 STOP WRDN 0X01XXXX< XXXXXXXXXXXXXXXX > 停止当前操作并掉电 RINT 0X110XXX< XXXXXXXXXXXXXXXX > 读状态: OVF 和 EOM void fangyin_treat(u16 data)//放音机处理程序//从指定地址开始放本段语音就是这段程序 { isd_powerup();发送上电指令 SysTicks_delayNms(50);//延时50毫秒 isd_powerup(); SysTicks_delayNms(100);//等待2倍的tpud时间 isd_setplay(data&0x00ff,data>>8);//发送setplay指令,指定放音地址 isd_play();//发送play指令 } 4.4 按键程序 K1每按下的声音时间管理,按下按钮将被拘留至30毫秒后,以消除振荡按钮动作,并且当在车站回放结束实现反向站重放时始发站或终端返回到,使用标识标志,以确定出发项目或目标项目能否实现进入此路由的消息的代码,KeyFlag使用要添加的代码执行或每次扣除站将服务于报纸,用途位标记,以确定李站开始或终点,并且每次增加或扣除站时间KeyFlag做的。
图 4-3 K1流程图 5 PCB及仿真 5.1 软件仿真
P2.4-P2.7选择数字管道的端口,P1 - 用于数据的端口。 5.2 用protel DXP画出原理图如下:
5.3 根据原理图得到的PCB:
5.4 硬件调试结果: 本课程设计,主要是测量发动机速度,在发动机编码板10上翻转10孔,每次10ms发动机速度测量!由于缺乏仪器,我们在设备的制造中遇到了许多困难!一般来说,它可以执行其基本功能! - 对于分频器链的测试持续时间的持续时间,我们在此用于测试74LS93块,电路连接下图所示:
图5-1 分频电路图测试图 测试结果如图5-2和5-3所示。
图5-2分频电路图测试输入波形 图5-3 分频电路图测试输出波形
结束语
实验结果主要符合本文设计要求,系统工作稳定。经过测试各种组件后,将集中连锁,以满足此任务的要求。 实验方案采用市面上最基本的电子元素,廉价。尽管实验结果根据方案和理论计算的价值具有一定的偏差,但在此实验期间开发的发动机速度测量系统仍然存在具有更大的实用性。
谢辞
从论文选题到搜集资料,从写稿到反复修改,期间经历了喜悦、聒噪、痛苦和彷徨,在写作论文的过程中心情是如此复杂。如今,伴随着这篇毕业论文的最终成稿,复杂的心情烟消云散,自己甚至还有一点成就感。那种感觉 就宛如在一场盛大的颁奖晚会上,我在晚会现场看着其他人一个接着一个上台领奖,自己却始终未能被念到名字, 经过了很长很长的时间后,终于有位嘉宾高喊我的大名,这时我忘记了先前漫长的无聊的等待时间,欣喜万分地走向舞台,然后迫不及待地开始抒发自己的心情,发表自己的感想。这篇毕业论文的就是我的舞台,以下的言语便是 有点成就感后在舞台上发表的发自肺腑的诚挚谢意与感想: 我要感谢,非常感谢我的导师。为人随和热情,治学严谨细心。在闲聊中她总是能像知心朋友一样鼓励你,在论文的写作和措辞等方面她也总会以“专业标准”严格要求你,从选题、定题开始,一直到最后论文的 反复修改、润色,老师始终认真负责地给予我深刻而细致地指导,帮助我开拓研究思路,精心点拨、热忱鼓励。正是老师的无私帮助与热忱鼓励,我的毕业论文才能够得以顺利完成,谢谢老师。
参考文献
1荆西京主编.模拟电子电路实验技术.[M]西安:第四军医大学出版社,2004年 2赵淑范.王宪伟主编.电子技术实验与课程设计.[M]北京:清华大学出版社,2006年 3路勇主编.电子电路实验及仿真.[M]北京:清华大学出版社、北方交通大学出版社,2006年1月 4陆坤等编.电子设计技术.[M]成都:电子科技大学出本社,1997年7月 [5]王建校等编.电子系统设计与实践.[M]北京:高等教育出版社,2008年5月
附录I:总电路图
附录II:元器件清单
序号 编号 名称 型号 数量 1 R1~R35 电阻 400Ω 35 2 R36 电阻 12 kΩ 1 3 R37 电阻 4 kΩ 1 4 R41 电阻 180Ω 1 5 R42 电阻 180Ω 1 6 R40﹑R38﹑R39 电阻 1 kΩ 3 7 C1 电容 0.01μF 1 8 C2 电容 48nF 1 9 C3 电容 100 nF 1 10 C4 电容 28 nF 1 11 C5 电容 10pF 1 12 U5﹑U8﹑U11﹑U15﹑U22﹑U23﹑U30 反相器 74LS04 7 13 U20A~U20D 异或门 74LS86D 4 14 U21 555定时器 555_VIRTUAL 1 15 U29 或门 74LS32D 1 16 U28 与门 74LS08D 1 17 U1﹑U2﹑U6﹑U9﹑U12 计数器 74LS160D 5 18 U3﹑U4﹑U7﹑U10﹑U13 译码器 74LS48D 5 19 U24~U27 分频器 74LS93D 4 20 U14﹑U16﹑U17﹑U18﹑U19 数码管 SEVEN_SEG_COM_K 5 21 U31 光电耦合器 TLP521_4 1 22 X1 晶体振荡器 R26-32.768KHZ 1 23 VCC 电源 5V 6
附录:程序 测量转速,使用光电传感器,被测电机带动纸片旋转,我们在纸片上开了10小孔,电机每旋转一周就会产生10个脉冲,产生12个脉冲,要求将转速值(转/分)显示在数码管上。 实验程序如下: #include <REG52.H> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define LED_DAT P1 sbit LED_SEG0 = P0^3; sbit LED_SEG1 = P0^2; sbit LED_SEG2 = P0^1; sbit LED_SEG3 = P0^0; //sbit pin_SpeedSenser = P3^5; //光电传感器信号接在T1上 #define TIME_CYLC 100 //12M晶振,定时器10ms 中断一次 我们1秒计算一次转速 // 1000ms/10ms = 100 #define PLUS_PER 10 //码盘的齿数 ,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈 #define K 100.0 //校准系数
unsigned char code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar data Disbuf4;// 显示缓冲区 uint Tcounter = 0; //时间计数器 bit Flag_Fresh = 0; // 刷新标志 bit Flag_clac = 0; //计算转速标志 bit Flag_Err = 0; //超量程标志 //在数码管上显示一个四位数 void DisplayFresh(); //计算转速,并把结果放入数码管缓冲区 void ClacSpeed(); //初始化定时器T0 void init_timer0(); //初始化定时器T1 void init_timer1(); //延时函数 void Delay(uint ms); void it_timer0() interrupt 1 /* interrupt address is 0x000b / { TF0 = 0; //d定时器 T0用于数码管的动态刷新 // TH0 = 0xC0; / init values / TL0 = 0x00; Flag_Fresh = 1; Tcounter++; if(Tcounter>TIME_CYLC) { Flag_clac = 1;//周期到,该重新计算转速了 } } void it_timer1() interrupt 3 / interrupt address is 0x001b */ { TF1 = 0; //定时器T1用于单位时间内收到的脉冲数 //要速度不是很快,T1永远不会益处 Flag_Err = 1; //如果速度很高,我们应考虑另外一种测速方法,:脉冲宽度算转速
} void main(void) { Disbuf[0] = 0; //开机时,初始化为0000 Disbuf1 = 0; Disbuf2 = 0; Disbuf3 = 0; init_timer0(); init_timer1(); while(1) { if(Flag_Fresh) { Flag_Fresh = 0; DisplayFresh(); // 定时刷新数码管显示 } if(Flag_clac) { Flag_clac = 0; ClacSpeed(); //计算转速,并把结果放入数码管缓冲区 Tcounter = 0;//周期定时 清零 TH1=TL1 = 0x00;//脉冲计数清零
} if(Flag_Err) //超量程处理 { //数码管显示字母’EEEE’ Disbuf[0] = 0x9e; //开机时,初始化为0000 Disbuf1 = 0x9e; Disbuf2 = 0x9e; Disbuf3 = 0x9e; while(1) { DisplayFresh();//不再测速 等待复位i } }
} }
//在数码管上显示一个四位数 void DisplayFresh() { P2 |= 0xF0; LED_SEG0 = 0; LED_DAT = table[Disbuf[0]]; Delay(1); P2 |= 0xF0; LED_SEG1 = 0; LED_DAT = table[Disbuf1]; Delay(1); P2 |= 0xF0; LED_SEG2 = 0; LED_DAT = table[Disbuf2]; Delay(1); P2 |= 0xF0; LED_SEG3 = 0; LED_DAT = table[Disbuf3]; Delay(1); P2 |= 0xF0;
} //计算转速,并把结果放入数码管缓冲区 void ClacSpeed() { uint speed ; uint PlusCounter;
PlusCounter = TH1256 + TL1; speed = K(PlusCounter/PLUS_PER)/60;//K是校准系数,如速度不准,调节K的大小 Disbuf[0] = (speed/1000)%10; Disbuf1 = (speed/100)%10; Disbuf2 = (speed/10)%10; Disbuf3 = speed%10; } //初始化定时器T0 void init_timer0() { TMOD &= 0xf0; //定时10毫秒 /* Timer 0 mode 1 with software gate / TMOD |= 0x01; / GATE0=0; C/T0#=0; M10=0; M00=1; */
TH0 = 0xC0; /* init values / TL0 = 0x00; ET0=1; / enable timer0 interrupt / EA=1; / enable interrupts / TR0=1; / timer0 run / } //延时函数 void Delay(uint ms) { uchar i; while(ms–) for(i=0;i<100;i++); } //初始化定时器T1 void init_timer1() { TMOD &= 0x0F; / Counter 1 mode 1 with software gate / TMOD |= 0x50; / GATE0=0; C/T0#=1; M10=0; M00=1; */
TH1 = 0x00; /* init values / TL1 = 0x00; ET1=1; / enable timer1 interrupt / EA=1; / enable interrupts / TR1=1; / timer1 run */ }
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片 .
var foo = 'bar';
生成一个适合你的列表
- 项目1
- 项目2
- 项目3
创建一个表格
一个简单的表格是这么创建的:
设定内容居中、居左、居右
使用:---------: 居中 使用:---------- 居左 使用----------: 居右
第一列 | 第二列 | 第三列 |
---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ | Quotes | "Isn't this fun?" | “Isn’t this fun?” | Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
Markdown
-
Text-to-
HTML conversion tool
Authors
-
John
-
Luke
如何创建一个注脚
一个具有注脚的文本。
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示
Γ
(
n
)
=
(
n
?
1
)
!
?
n
∈
N
\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N
Γ(n)=(n?1)!?n∈N 是通过欧拉积分
Γ
(
z
)
=
∫
0
∞
t
z
?
1
e
?
t
d
t
?
.
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
Γ(z)=∫0∞?tz?1e?tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
Mon 06
Mon 13
Mon 20
已完成
进行中
计划一
计划二
现有任务
Adding GANTT diagram functionality to mermaid
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
张三
李四
王五
你好!李四, 最近怎么样?
你最近怎么样,王五?
我很好,谢谢!
我很好,谢谢!
李四想了很长时间, 文字太长了
不适合放在一行.
打量着王五...
很好... 王五, 你怎么样?
张三
李四
王五
这将产生一个流程图。:
FLowchart流程图
我们依旧会支持flowchart的流程图:
Created with Rapha?l 2.3.0
开始
我的操作
确认?
结束
yes
no
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入, 继续你的创作。
|