是一个译码芯片,CBA二进制对应的十进制数值与Y0~Y7位置相符,Y输出端低电平有效
J13跳帽当1、2短接即存储器控制方式,2、3短接即IO口控制方式,习惯使用IO控制方式
当LE为高电平时候Q输出与D输入一致,当LE为低电平,Q输出不随D输入改变,能够起到锁存数据的功能,因为P0口分时复用,所以为了不影响驱动蜂鸣器、继电器等器件,开发板电路中采用触发器进行数据锁存
起到一个加大驱动电流且取反的作用,若N_BUZZ为低电平为蜂鸣器响。因此IN7为高电平,Q7位高电平,D7位高电平,P06为高电平且Y5C为高电平,Y5C要为高电平,则需要Y5为低电平(WR与GND短接,74HC02为或非门),也就是CBA对应101
如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围
enum 枚举类型{枚举成员列表}; //其中的枚举成员列表是以逗号“,”相分隔 默认情况下:该枚举列表中的常量值分别为:0,1,2,3,4宏定义有弱点:其定义的只是预处理阶段的名字,在编译器的预处理阶段会进行简单的名字替换,而且不会进行类型的安全检查,其作用域是全局的,因此若程序中有变量true、false,则会被替换。为了避免这样的情况,采用将全部的宏用大写来命名,以区别于正常的代码。
内部RC振荡器(自带晶振)
1、在stc-isp点击“Keil仿真设置”->“添加型号和头文件到Keil中”,将文件添加到目录中后,创建项目选择MCU型号为“STC15F2K60S2”(差不多)
2、在option里点击“Debug”设置仿真器选择呢“STC Monitor-51 Driver”,COM口选择相应的口,波特率选选最高或默认即可
3、创建仿真芯片选择“将IAP15F2K61S2设置为仿真芯片(5.0V版本)”
1、P3.0和P3.1作为仿真使用的串口,如果操作P3.0和P3.1会导致仿真失败
2、软件延时指令集选择STC-Y5系统
3、断点是停止在此语句执行之前的
3、定时器(数量更多功能更多)
4、串口(数量更多功能更多)
1、熟悉如何使用IAP15单片机进行仿真
2、尝试用STC-ISP软件生成IAP15单片机的软件延时
1、定时器0:1ms中断一次
2、状态机消抖矩阵键盘函数
1、熟悉蓝桥杯模板的程序结构和函数
2、尝试自己编写类似的模板程序
1、熟悉CT107板子上的功能模块
2、熟悉8051系统单片机(微机原理)
4、熟悉运放基本原理和计算方法
最近进的公司是一个做路由器的。。很多嵌入式工程师。有个项目( 智能空调控制)是跟嵌入式工程师对接,我做APP+PHP。。他做服务器。我们用MQTT(由于emqtt是用erlang写的,所以我也学了点erlang,后期有时间分享一下,这个语言很好,很强大。特别抽象)。这个项目激发了我对嵌入式的兴趣,于是乎。开始从51单片机搞起了。。所以就有了这篇文章。。。今天搞得东西挺多。我最近都是笔记形式,不想以前写的那么详细。。。因为学的东西太多,白天在公司搞项目,没时间写太具体。。。
>keil安装和使用,下载程序到开发板
>点亮第一个led灯,这个很简单。给单片机的p0口 的最低位,输入一个高电平,就可以点亮一个动态数码管【当然下载程序之后,要连线】
>在点亮led之后,再加点程序控制,让led闪烁。。。闪烁的思路也简单: 一下高电平。然后延时,再低电平。。再延时。。就OK了。。延时多少秒合适? 可以通过keil软件仿真算出。仿真的时候,记得把晶振调整跟开发板一样。我的开发板是12M
>点亮led之后,再来一个流水灯,思路就是循环设置一个数码管的某一段 为 高电平。其他段为低电平。。然后,延时循环。就可以达到流水灯的效果
>再然后,控制蜂鸣器。。我的开发板是无源蜂鸣器靠频率驱动。把频率换算成周期: F = 1 / T,周期通过延时函数实现。 然后改变高低电平的占空比,可以实现蜂鸣器的声音大小。频率改变的是蜂鸣器
>在然后,控制一个继电器。这个很简单。跟点亮led灯同样的思路
>再然后,在静态数码管上做了个循环显示0~F的程序,思路就是 1~F 怎么在静态数码管上表示? 因为我的开发板静态数码管是共阳数码管。要用低电平才能点亮对应的段。然后把每一位数字(0~F)对应的
二进制算出对应的十六进制,就是我程序中定义的那个数组表示的就是( 0 ~ F).
>在然后,在8个动态数码上显示1~8,用到38译码器模块的输入,输出,我的第一版(傻瓜版程序)
然后经过封装改造的程序: