单片机

PIC16F883实现按键行列扫描,准确识别按键,数码管显示按键编号

倾然丶 夕夏残阳落幕 提交于 2020-12-23 19:25:01
控制芯片:PIC16F883 引脚图: 按键连接图: 四位数码管连接:四个共阴极分别连接PORTA<3:0>,8段数码管分别连接PORTC<7:0>,PORTB<4,2:0>分别连接按键的四个I/O引脚。 我在PORTC上连接了数码管,按键进行编号。按键时数码管会显示对应的编号。 简单说明: 我是改变PORTB引脚的设置(TRISB,PORTB),写了后立刻读取PORTB引脚的值,检查连接按键的引脚——值为0的引脚有按键按下。比如上图,PORTB<4,2,1,0>引脚全设置为输入时,读取PORTB寄存器的值。若我按下了S7,PORTB4就是0值(同理S8\S9\S10)。我们微机原理老师强调一定先检测S7\S8\S9\S10。我没试过先检测其他按键的情况,是按照老师的提示做的。下次更改设置:PORTB4设为输出低电位(0),其他三个引脚都设置为输入。读取PORTB<2,1,0>引脚的值,S5\S1\S2中某一按键被按下就可以在PORTB<2,1,0>对应的引脚检测到。就这样扫描所有按键,有按键按下就会调用按键处理程序。 实现代码如下: #include<p16f883.inc> udata_shr counter res 1 ;延时计数 counter0 res 1 ;延时计数 counter1 res 1 ;扫描按键变量 counter2 res 1 ;延时程序微调参数 key

温度传感器+I2C+串口+PC上位机(pyserial)例子

情到浓时终转凉″ 提交于 2020-04-14 04:23:09
【今日推荐】:为什么一到面试就懵逼!>>> 温度传感器+I2C+串口+PC上位机(pyserial)例子 例子写的有点乱,主要是学习: 温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示 SerialPort.py PC串口上位机程序,可以设定上限报警温度 需要安装Python3以上,pyserial库,例子在Python3.4下写的。 上位机传给单片机上限报警温度后,单片机存入E2PROM, 单片机断电重启后,从E2PROM读取报警值。 i2c.h I2C总线读写和设定 lcd1602.h lcd1602的读写和设定 temp_ds18b20.h DS18b20的读写和设定 #define AT24C02 0xa0 // AT24C02 写数据的设备地址 #define MAX_TEMP_E2PROM_FLAG 0xff // 上限报警温度的存储器数据标志,存在说明存储器有数据 sbit power_port = P2^3; // 报警端口 int max_temp = 340; // 报警上限温度,默认340 int max_temp_buf = 0; // 报警上限温度缓存,用于串口 int sp_read_count = 0; // 串口数据,读取的字节计数 bit sp_read_flag = 0; // 串口读取标志

#随便写写

浪尽此生 提交于 2020-04-08 07:32:23
  第二次写博客诶,哈哈。夸下自己没忘了这个事!  Ps:不过周末真是干什么都没劲儿!   最近公司在做CMMI认证,一直帮着处理一些相关的文档!偶尔会处理下以前软件的bug。想不出应该从哪开始说起.....   直奔主题:   前几天看了STM32上SPI和I2C的代码实现,一些很基础的东西,工作上也用过几次,包括以前学习51单片机的时候也都有接触过。说简单的话可能就是自己“坐井观天”了。但话说回来,工作上用到这些也就只需要会用就行,很多demo都有很好的封装,若非遇到特别棘手的bug之外,一般不需要我们过多深究,意义不大。   在这里梳理一些简单的概念(整理自正点原子STM32开发手册):   IIC:(Inter-Integrated Circuit,内部集成电路)     1.半双工通信方式,高速IIC速率可达400Kbps以上;     2.数据传输过程中3种信号:起始信号,停止信号,应答信号;    ps:起始信号必须有,另外两个不是必须       起始信号:SCL为高,SDA由高到底跳变       停止信号:SCL为高,SDA由低到高跳变        应答信号: (SCL每个高电平发送一位数据,所以要在SCL为高时保证所需传送数据的有效性) 每发送1B(字节(8位(bit)))之后,在SCL第9个高电平时发送器会释放数据线占用,由接收器反馈一个应答信号

单片机结构和原理

余生长醉 提交于 2020-04-08 06:31:49
89C51单片机结构框图 1、一个8位 的微处理器CPU。 2、片内数据存储器(RAM128B/256B):用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。 3、片内4kB程序存储器Flash ROM(4KB):用以存放程序、一些原始数据和表格。 4、四个8位并行I/O(输入/输出)接口 P0~P3:每个口可以用作输入,也可以用作输出。 5、两个或三个定时/计数器: 每个定时/计数器都可以设置成计数方式,用以 对 外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果 实现计算机控制 6、一个全双工UART的串行I/O口:可实现单片机与单片机或其它微机之间串行通信。 7、片内振荡器和时钟产生电路:但需外接晶振和电容。 8、五个中断源的中断控制系统。 9、具有节电工作方式:休闲方式及掉电方式。 在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。此时的电流可降到大约为正常工作方式的15%。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。这种方式下的电流可降到15 μA以下,最小可降到06 μA。 结构: 由中央处理单元(CPU)、存储器(ROM及RAM)和I/O接口组成。89C51单片机内部结构如图所示: 下面介绍的是mcs-51 MCS

对k210的初探——MixNo——图形化编程

柔情痞子 提交于 2020-04-06 23:22:19
MixNo 市面上关于k210的开发板已经很多了,这次我很荣幸能够测评MixNo MixNo就像arduino一样具有具有低门槛入门,可玩性多样,可加拓展盾板可,加SD卡(加载人工智能模型)等优点。其中特别要说的是:其具有图形化编程的能力,且可以转换成micro python程序语句,且能够实现人脸识别、二维码识别、连接智能云平台,语音识别、操作和读取传感器、控制电机和舵机等功能。 我在入手1h后,就完成了扫码播放音乐的功能。 这是我的代码: 这是效果视频: https://v.youku.com/v_show/id_XNDYyMTIxNDU4NA==.html 说一下使用后的感受,相比于我们常用的单片机而言,这款开发板的可玩性很高,能够满足AIOT各方面应用,把以前我们需要多个单片机配合使用的才能完成的困境打破了,使用这一款单片机就可以搞定人工智能+硬件。 顺便提一句:童芯创悟的MixNo技术顾问是真的友好。不论是关于MixNo的问题,还是元器件的问题,亦或是电路的问题,80后油腻大叔都会认真解答,不论多晚。我感觉买开发板最主要的就是看重售后。为他们的职业精神点赞!!! 有问题的可以加入QQ群:1056344043 来源: 51CTO 作者: qq5e8b2872eb5f4 链接: https://blog.51cto.com/14785656/2485182

单片机最小系统详解,你要知道的都在这里了

僤鯓⒐⒋嵵緔 提交于 2020-04-06 19:28:40
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 下面给出一个51单片机的最小系统电路图. 说明: 复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的. 复位电路 一、复位电路的用途 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机

三步教你从零开始成为单片机达人

本小妞迷上赌 提交于 2020-04-06 14:31:50
无论是作为一名业余的电子爱好者还是一名电子行业的相关从业人员,掌握单片机技术无疑可以使您如虎添翼,为您的电子小制作或者开发设计电子产品时打开方便的大门! 学习单片机技术有一定的难度,不花费一番努力是很难学会的,但是只要不断努力就一定能成功,套用一句广告歌词:努力总有回报! 学习单片机最好从51系列开始, 第一是书多、资料多 ,而且掌握51技术的人多,碰到问题能请教的老师也就多了,51系列的实验芯片AT89C51价格低廉而且很容易买到,AT89C51芯片而且可以反复擦写1000次以上,对于初学者来说真是太合适了,就算以后考虑工业运用,也可以先学透51后再学其他类型的单片机,毕竟技术是相通的。 学习单片机的 第一步是看书 ,单片机是一个知识密集的东东,不看书是绝对不行的,北京航空航天大学出版社出版了大量单片机方面的好书,你可以直接登录他们的网站进行邮购。 学习单片机的 第二步是购买工具 ,单片机芯片必须借助编程器才能写入程序,站长用的编程器是一种性能较好的Genius NSP 通用编程器,通用编程器的特点是专为开发单片机和烧写各类存储器而设计的通用机型,它的编程可靠性高,支持的器件品种很多。 Genius NSP 通用编程器: 4Opins万用锁紧插座。适应绝大多数器件编程之所需。使用适配器能够支持非DIP封装器件的编程。 RS232窜口通讯。通讯波特率:57600bit/s 9V

51单片机数组的定义方法(code与data的作用)

坚强是说给别人听的谎言 提交于 2020-04-06 06:11:54
转自:http://blog.sina.com.cn/s/blog_94994f7b01010s1h.html 数组前不加“code”或“data”,则默认将数组存放在程序存储器中; code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中不能改变; xdata 指定数据是存储在外部数据存储器了; data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快; idata 指定数据存储在内部低256字节数据存储器里,但51只有128字节内部RAM,52才有256字节; pdata 指定数据存储在外部低256字节数据存储器里,这时候寻址用8位寄存器R0和R1,而不用16位的DPTR,寻址速度比xdata快。 单片机C语言unsigned char code table[] code 是什么作用? code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是), 因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM 的意思。 程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的

51单片机中data,idata,xdata,pdata的区别

六眼飞鱼酱① 提交于 2020-04-06 05:53:05
说来惭愧,一直以来,在学校也算是搞了不少东西,不过反而是51单片机这个基础的东西没有认真去做过,当初刚自学51没一个多星期呢,就转到飞思卡尔16位单片机上去了,以至于51还没透彻的弄个明白。 就不如我很清楚s12单片机什么片内ram啊,flash大小啊,反而是51的不敢肯定的回答哦。 比如今天再次看到的这个问题,以前就看到过,但因为一直不怎么搞汇编程序,所以对51单片机中的data、idata、xdata和pdata一直不清楚,不过今天不再脱了,决定一定弄清楚。 -------------------------------------------------------------------------------------------- 再附上51片内资源简介,再次记忆。 .8位CPU·4kbytes 程序存储器(ROM) (52为8K)   ·256bytes的数据存储器(RAM) (52有384bytes的RAM)   ·32条I/O口线·111条指令,大部分为单字节指令   ·21个专用寄存器   ·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)   ·一个全双工串行通信口   ·外部数据存储器寻址空间为64kB   ·外部程序存储器寻址空间为64kB   ·逻辑操作位寻址功能·双列直插40PinDIP封装   ·单一+5V电源供电   CPU

单片机究竟是如何构成的呢

谁都会走 提交于 2020-04-06 05:52:24
单片机是控制电子产品的大脑 现如今,我们生活中的许多电器都使用了单片机。例如:手机、电视机、冰箱、洗衣机、以及按下开关,LED就闪烁的儿童玩具。那么,单片机在这些电器中究竟做了些什么呢? 单片机是这些电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的外围功能电路动作。 那么,单片机是如何构成的呢?如图1所示。 单片机是由CPU、内存、外围功能等部分组成的。如果将单片机比作人,那么CPU是负责思考的,内存是负责记忆的,外围功能相当于视觉的感官系统及控制手脚动作的神经系统。 图1:单片机的构成要素 尽管我们说CPU相当于人的大脑,但是它却不能像人的大脑一样,能有意识的、自发的思考。CPU只能依次读取并执行事先存储在内存中的指令组合(程序)。当然CPU执行的指令并不是“走路”、“讲话”等高难度命令,而是一些非常简单的指令,象从内存的某个地方“读取数据”或把某个数据“写入”内存的某个地方,或做加法、乘法和逻辑运算等等。然而这些简单指令的组合,却能实现许多复杂的功能。 会思考的CPU 让我们从CPU的构成来了解它的作用吧,如图2所示。 图2:CPU的作用 ◇程序计数器CPU读取指令时需要知道要执行的指令保存在内存的什么位置,这个位置信息称为地址(相当于家庭住址)。程序计数器(PC)就是存储地址的寄存器。通常,PC是按1递增设计的,也就是说