单片机

如何用单片机做一个简单的流水灯

送分小仙女□ 提交于 2019-12-04 17:51:11
学习单片机最基础的一个实验就是流水灯了。 在实验之前必须的准备工作有: 1.windows系统电脑一台。 2.编译软件keil 3.烧写软件stc-isp 4.单片机(我用的是stc89c52) 5.usb转窜口线 这样就可以开始了 一. 首先使用keil软件创建C语言文件 流水灯代码为: #include <reg52.h>//52系列的头文件 #include <intrins.h>//带有_crol_函数的头文件 #define uint unsigned int #define uchar unsigned char void delayms(uint); uchar led; void main() { led=0xfe; P1=led; while(1) { delayms(500);//500ms的延迟 led=_crol_(led,1);//将led变量向左移一位 P1=led; } } void delayms(uint a)//延时函数 { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);//经过调试得出大概 } 注意点: 1.编译完后记得生成hex文件(烧写是用到) 2.调整频率为11.0592(正好为一个机器周期) 二.烧写 在使用stc-isp时,将刚刚生成的hex文件写入。 选择你说用的单片机型号

单片机学习————单片机基础与流水灯及蜂鸣器

☆樱花仙子☆ 提交于 2019-12-04 17:50:40
认识单片机 在一片集成电路芯片上集成微处理器CPU、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 电平特性 数字电路中只有两种电平:高电平和低电平 高电平:5V或者3.3V,取决单片机电源。 低电平:0V RS232电平:计算机串口的电平 高电平:-12V 低电平:+12V 注:单片机IO口默认输出高电平 单片机工作时序 (1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ。 (2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 (3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟(振荡)周期。 在一个机器周期内, CPU可以完成一个独立的操作。 (4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令 点亮LED 原理 LED的工作是有方向性的,只有当正级接到LED阳极,负极接到LED的阴极的时候才能工作,如果反接LED是不能正常工作的。 单片机LED原理如下图,LED的阳极串联一个电阻,然后连接到电源VCC,而LED的阴极连接到单片机的P20口,要点亮一盏LED就对把单片机相对应的IO赋为低电平,则对于IO口为阴极,LED就可点亮

51单片机 知识总结

喜你入骨 提交于 2019-12-04 09:32:57
  目前单片机种类繁多,而51 单片机作为最基础的一款8位单片机,其资源最少,同时也是最容易学习的一款单片机。学习51单片机的工作原理及其存储结构是十分有必要的。   单片机执行程序的过程,其实就是在执行我们编写的程序的过程( 逐条执行指令 ),该执行过程可以看成是: 取指令--------分析指令-------执行指令。    取指令:根据 PC(程序计数器)的值从程序存储器中取出指令(编写的程序即为指令),送到指令寄存器。( 送到哪里去??? )   分析指令:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质,分析完成便找出操作数的地址。   执行指令:即对分析完成后得到操作数的地址,对该地址的数据进行更新。   计算机执行程序的过程实际上是逐条指令重复以上三个过程,直到遇到停机或循环等待指令。 举例:   开机后,PC 计数器 初始值为 0000H,接着单片机在时序电路下自动进入执行程序过程,循环对程序区进行取指令,执行指令操作。   对于汇编语句: MOV A , #0E0H 该语句的功能表示将操作数 E0H 送到 累加器 A 上。(74H 表示 的指令是将一个数送到 A 累加器去)此时 程序计数器 0000H 位置上存放了 74H , 0001H 上存放了 E0H 。 执行该语句的次序为: 1、取指阶段:PC 上 地址 0000H 上的内容送到地址寄存器去

[转]嵌入式系统

自作多情 提交于 2019-12-04 08:45:55
来源自 《嵌入式系统组成结构简介》 ,稍作整理和摘取。 嵌入式系统的组成结构 嵌入式系统由:嵌入式微处理器、外围硬件设备、嵌入式操作系统(可选)以及应用软件系统等四个部分组成。 软件是计算机系统中与硬件相互依存的另一部分,包括 程序 、相关 数据 及其 说明文档 。 程序是按照事先设计的功能和性能要求执行的指令序列,数据是程序能正常操纵信息的数据结构,文档是与程序开发维护和使用有关的各种图文资料。 嵌入式系统的硬件组成 最小硬件系统 MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。 在最普通的情况下,嵌入式微处理器包括: 片内存储器:部分嵌入式微处理器 外部存储器的控制器,外设结构(串口、并口) LCD控制器:面向终端类应用的嵌入式微处理器 中断控制器,DMA控制器,协处理器 定时器,A/D、D/A转换器 多媒体加速器:当高级图形功能需要时 总线 其他标准接口或外设 嵌入式处理器可分为: 嵌入式微控制器(MCU) 嵌入式DSP处理器(DSP) 嵌入式微处理器(MPU) 嵌入式片上系统(SoC) 从计算机角度看,单片机功能太简单,性能太差;DSP太专用,可以看成一个外设; 通用处理器 和 SoC

8*8LED点阵

折月煮酒 提交于 2019-12-04 07:36:32
基础认识 1.5英寸 LED点阵管数码管 8*8红色 16pin 有如下两种型号: 共阳1588BS 共阴1588AS 共阴 1588AS 共阳 1588BS 编程导向 共阴和共阳其编程思路基本类似,只是对应IO引脚电平相反而已 测试的单片机是:STM32F103C8T6 模块为:共阳1588BS 接线: STM32 接线: 点阵屏1-8:A0、A1、A2、A3、A4、A5、A6、A7 点阵屏9-16:B0、B1、B10、B11、B12、B13、B14、B15 点阵屏点亮电平分析 正极:9、14、8、12、1、7、2、5 负极:13、3、4、10、6、11、15、16 点亮电平引脚 高电平:B0 B13 A7 B11 A0 A6 A1 A4 低电平:B12 A2 A3 B1 A5 B10 B14 B15 端口初始化: 将使用到的IO口均设置为输出即可 行列控制 因为面板是正方形,所以这里所谓的行/列都是自己定义的, 设置高电平脚为行,低电平脚为列 1 //行控制 2 void R88_row_control(u8 i,BitAction c){ 3 if(i==0) GPIO_WriteBit(GPIOB,GPIO_Pin_0,c); //1 4 if(i==1) GPIO_WriteBit(GPIOB,GPIO_Pin_13,c); //1 5 if(i==2) GPIO

浅谈单片机应用程序架构

落爺英雄遲暮 提交于 2019-12-04 01:29:52
对于单片机程序来说,大家都不陌生,但是真正使用架构,考虑架构的恐怕并不多,随着程序开发的不断增多,本人觉得架构是非常必要的。前不就发帖与大家一起讨论了一下《 谈谈怎样架构你的单片机程序 》,发现真正使用架构的并不都,而且这类书籍基本没有。 本人经过摸索实验,并总结,大致应用程序的架构有三种: 1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。 2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。 3. 操作系统,此法应该是应用程序编写的最高境界。 1. 顺序执行法: 这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,程序设计简单,思路比较清晰。但是当应用程序比较复杂的时候,如果没有一个完整的流程图,恐怕别人很难看懂程序的运行状态,而且随着程序功能的增加,编写应用程序的工程师的大脑也开始混乱。即不利于升级维护,也不利于代码优化。本人写个几个比较复杂一点的应用程序,刚开始就是使用此法,最终虽然能够实现功能,但是自己的思维一直处于混乱状态。导致程序一直不能让自己满意。 这种方法大多数人都会采用,而且我们接受的教育也基本都是使用此法。对于我们这些基本没有学习过数据结构,程序架构的单片机工程师来说,无疑很难在应用程序的设计上有一个很大的提高

单片机软件keil uvision4安装

允我心安 提交于 2019-12-03 22:30:36
keil软件安装过程 Keil 5安装激活教程 keil uvision4以管理员身份运行的 *** ERROR R206: NO REGISTRY ACCESS, ADMINISTRATION RIGHTS REQUIRED 解决办法: 在桌面KEIL的快捷方式图标上点击右键–以管理员权限运行; 重新填入注册码即可 调试成功,但是没有运行结果出现 来源: CSDN 作者: www_April 链接: https://blog.csdn.net/weixin_38277423/article/details/87937223

keil4软件安装教程&&CH340驱动安装&&烧写程序的操作

老子叫甜甜 提交于 2019-12-03 22:27:48
keil4软件安装步骤 keil4软件获取地址: 链接: https://pan.baidu.com/s/12vUPEieeQiwRDx56W8JXSA 提取码:k4cy 1.找到压缩包的安装路径: 单片机软件\相关工具软件\Keil_C51_9.02a 2.找到keil4软件图标 3.双击图标进入安装界面 4.点击next 5.在红色框伤打√,然后点击Next 6.路径可改可不改,如果C盘内存不足可以点击Browse按钮进行修改(路径尽量要英文)(如果路径含中文的话会出现一些未知的错误) 修改完成后接下来点击Next按钮 First Name、Last Name、Company Name、E-mail统一写keil4 然后点击Next! 8.静待安装完成 9.安装完成后,点击Finish按钮即可 keil4软件破解 1.右击桌面图标Keil uVision4 2.选择以管理员身份运行 3.打开后界面如下 4.点击File→License Management 6. 找到压缩包的路径: 单片机软件\相关工具软件\Keil_C51_9.02a\Keil_C51破解工具及破解说明 右击这个图标,然后以管理员身份运行 7.将keil4中CID中的值复制到右边的CID上,然后点击Generate(复制快捷键为Ctrl + C) 8.将右边的值复制到左边的LIC中,然后点击Add LIC 9

别人的面试题

旧时模样 提交于 2019-12-03 15:30:35
1、单片机的最小系统?内部主要结构? 电源、晶振、复位 2、单片机的IO口有什么作用?驱动能力?上下拉电阻的作用? 用来定义相应I/O口位的输入输出状态和方式 1)提高驱动能力: 例如,用单片机输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电路工作。所以要接上拉电阻。下拉电阻情况相反,让单片机引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND,所以接个下拉电阻。 2)在单片机引脚电平不定的时候,让后面有一个稳定的电平: 例如上面接下拉电阻的情况下,在单片机刚上电的时候,电平是不定的,还有就是如果你连接的单片机在上电以后,单片机引脚是输入引脚而不是输出引脚,那这时候的单片机电平也是不定的,R18的作用就是如果前面的单片机引脚电平不定的话,强制让电平保持在低电平。 3、下列定义变量方法错误的是 int ab_2 int _2a3 int 2_ab int ab_2 变量名不能以数字开头 4、写出下列代码输出内容 #include <.h> int main(int argc, char const *argv[]) { int a,b,c,d; a = 10; b = a ++; c = ++ a; d = 10 * a ++; printf("b:%d,c:%d,d:%d\n",b,c,d); return 0; } b:10,c:12,d

2019年11月5日

南笙酒味 提交于 2019-12-03 14:50:14
什么是寄存器 在点亮 LED 的时候,我们都是用操作寄存器的方法来实现的,那大家是否想过,这个 寄存器到底是什么?为什么我们可以直接操作 P0 口? 解答上面的问题之前,我们先简单介绍下 51 单片机的主要组成部分,这对我们学习其 他单片机也有好处。 我们以国内的 STC89C51 为例,该单片机主要由 51 内核、外设 IP、和总线这三大部分 组成。内核是由 Intel 公司生产的,外设 IP 就是 STC 公司在内核的基础上添加的诸如定时 器、串口、IO 口等这些东西,总线就是用来连接内核和外设的接口单元。Intel 在这里属于 IP 核设计公司,STC 属于 IC 设计公司。世界上能设计 IP 核的公司屈指可数。我们非常熟 悉的 ARM 公司就属于 IP 核设计公司,ARM 给其他公司授权,其他 IC 公司就在 ARM 内 核上设计出各具特色的 MCU,我们后面要学习的 STM32 就是属于一中基于 ARM 内核的 MCU。 寄存器则是内置于各个 IP 外设中,是一种用于配置外设功能的存储器,就是一种内 存,并且有想对应的地址。学过 C 语言我们就知道,要操作这些内存就可以使用 C 语言中 的指针,通过寻址的方式来操作这些具有特殊功能的内存—寄存器。比如 P0 口对应的地址 是 0X80,那么我们要修改 0X80 这个地址对应的内存的内容的话,按照常理可以这样操 作: 1 *