单片机

单片机的 FIFO循环队列实现

转自:单片机的FIFO(先入先出)循环队列实现   ////////////////////////////////////////////////////////// // 文件:config.h ////////////////////////////////////////////////////////// #ifndef __CONFIG_H #define __CONFIG_H »

嵌入式软件架构设计-函数调用

1 前言 函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。 把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可 2 函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗??? 函数调 ... »

单片机C程序main函数之前做了什么?(原创)

在测试c语言单片机程序的时候,发现在main函数的执行之前,有很长的一段时间的延时,单片机在这段时间在做什么?进行了一下分析,得到结论如下:C程序 #include <reg51.h> sbit p1_7=P1^7; void interrupt0() interrupt 0 using 2 {  p1_7=!p1_7; } void main() {  EA=1;  IT0=1;   »

基于单片机的电子密码锁的实现

要求:用单片机实现一个电子密码锁的功能,一开始设置密码,设置从0-f,任意多少位密码(只要不超过十位),设置成功,蜂鸣器响一下;接着是验证密码,如果输入错误三次,则暂停一段时间,不允许使用,如果输入成功(F键确认),则密码解锁,步进电机转动,如果按下E键,则停止转动。 连线:P0键盘,P2倒着接数码管,P3.0接蜂鸣器,P1接步进电机 /**************************** »

单片机里的堆栈

                          单片机里的堆栈   做单片机的应该都听说过堆栈,跟指针一样,一看到这两个就会莫名的蛋疼。但是用汇编的同志肯定不会陌生,因为要经常出栈入栈,但是用C语言的同志有一些可能就比较陌生了,因为出入栈全部交给了编译器。最近我就在这里吃了亏,虽然听说过堆栈,也知道在哪里修改,但因为以前写的代码量很小,变量完全不会让堆栈溢出,所以从来没意识到它的重要性,直到最 »

我的单片机驱动ILI9320源码

ili9320.h 1 #ifndef __ILI9320_H__ 2 #define __ILI9320_H__ 3 #include "reg52.h" 4 5 #define u8 unsigned char 6 #define u16 unsigned int 7 #define uchar unsigned char 8 #define uint unsigned »

C8051F单片机定时器的定时

假设C8051F020单片机的晶振是sysclk=22114800HZ,即每秒计22114800个数经过Div=12分频后得到定时器的计数频率Tclk=sysclk/12,每秒计22114800÷12=1842900个数 sysclk/12        1(s) cout                t(s) 则t秒:计数个数cout=t*sysclk/12=65535-初值。         »

单片机TM4C123学习(二):中断与按键控制

1.按键初始化 按键K1——PD7 按键K2——PF4 按键K3——PA3 按键K4——PA2 // // key1 init // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);已经在LED init写过了,不然也是要写的 GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_P »

AVR单片机教程——闪烁LED

本文隶属于AVR单片机教程系列。   上次我们把LED点亮了。你可能已经试过把 LED_RED 换成其他灯,也可能已经用 led_on() 把所有LED一起点亮了。但是LED点亮以后,程序就退出了,之后LED一直没有暗,直到没有供电。这一次,我们用程序来控制LED的亮和暗。 新建一个C executable项目,选择ATmega324PA单片机,在项目属性中添加库libee1,将配置改为Relea »

单片机 MCU 固件打包脚本软件

​ 1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名来区分版本。 如果需要将版本写入固件中,就需要通过一定的方式去实现,实现的方式有很多。 2 介绍 下面介绍一个自动打包单 ... »

80C51单片机指令的取指、执行时序

80C51单片机指令的取指、执行时序 现按4类指令介绍CPU时序。因为CPU工作的过程就是取指令与执行指令的过程,所以CPU必须先取出指令,然后才能执行指令。 1.双字节单周期指令 由于双字节单周期指令必须在一个周期内取机器码二次,所以必须在一个机器周期内安排二次读操作码的操作,分别发生在S1P2与S4P2。在S1P2读入机器码74并送入指令寄存器IR,在S4P2读入数据03送入累加器A,即读2取 »

LVGL库入门教程 - 动画

动画可以说是 LVGL 中的特色之一,不过在使用动画前,请确保单片机具有足够的性能来维持足够的帧率。 transition:过渡动画 当一个控件的状态发生改变时,可以让样式也发生变化以提醒用户。通过过渡动画(transition)可以让样式的改变更自然。例如,按钮在点击时,以及开关在切换时,都具有一 ... »

嵌入式软件架构设计-模块化

1 前言 模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。 比如搭积木,可以用一个个积木模块组合成我们想要的任何样子,而且通过使用相同的积木模块组合成不同的样子 ... »

2017年蓝桥杯单片机比赛经验分享

我的蓝桥杯单片机获得江苏省二等奖,大约是江苏省130名(江苏省一等奖103个)。主要原因还是当时比较的单纯,只知道一味的死练。 这也 是我死的最莫名其妙的比赛,抱着省一的心情,结果是省二!到底死在哪,我现在也不清楚。 下面是作为一个失败者的总结: 1.如果是一个人单兵作战或者几乎等于单兵作战的,我建议购买资料复习(100元买一个省一值不值!) 2.单片机赛项程序部分过于简单,拼出省一还是省二的就 »

MSP430单片机输入与输出

  MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11的宽度是3位以外,其他的端口全是8为宽度,为了方便使用,分别命名为PA,PB,PC,……,分别对应P1,P2P3…… 值得注意的是MSP430F5438单片机的P1和P2端口还具有申请中断的功能 »

单片机第13课:串口通信---向计算机发送数据

JP3接P0口。 #include<reg51.h> #define uchar unsigned char uchar flag,num; // void initSer(); void main() { // initSer(); while(1) { //从计算机接收到的数据立即发送给计算机 if(flag==1) { //关闭中断,否则又要进入中 »