- 博客(30)
- 收藏
- 关注
原创 【51单片机】IO扩展技术与存储器映射扩展
在用存储器扩展时,除了开头要加上一个头文件,还要注意它的用法。当想要开关指示灯的时候,不用再用SelectHC573函数再对P0口赋值来操作了,直接用。总结就是存储器扩展就是直接用 XBYTE[地址映射关系],这样不用选择锁存器,直接对扩展资源进行操作。这句话相当于用IO扩展时的SelectHC573(4);第一次运行出了一点问题,写Delay函数的参数的时候必须写。用存储器扩展时,如果要操作数码管位选。平时都是用的IO扩展,比较简单。用存储器扩展,必须要加上开头的。
2023-11-09 15:50:14
326
原创 【51单片机】串口通信的基本原理
即数据传输只在一个方向上传输,方向是固定的,不能实现双向通信。半双工传输方向可以切换,允许数据在两个方向上传输。但是某个时刻,只允许数据在一个方向上传输,可以基本双向通信。允许数据同时在两个方向传输,发送和接收完全独立,在发送的同时可以接收信号,或者在接收的同时可以发送。它要求发送和接收设备都要有独立的发送和接收能力。:串口每秒钟传输的位数。比如波特率为9600,每秒传输9600位,传输的单位是以数据帧。
2023-11-07 20:07:27
440
原创 【51单片机】定时器实现表秒功能
要在主函数while循环前调用,第一次运行显示00-00-00就是因为没有初始化定时器,没有开始定时,导致t_50ms一直都是0。2.编程的思路,50ms、秒、分的逻辑关系和赋值都在中断服务函数。3.暂停启动按键:通过控制TR0控制中断的开关,来暂停启动秒表。清零按键:就是给3个时间变量赋0。里完成,不断地去更新它的值,
2023-11-06 15:29:26
634
原创 【51单片机】定时器的基本原理与应用
定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实现定时或者计数功能的外设。定时/计数器的最基本工作原理是进行计数。作为定时器时,计数信号的来源选择周期性的内部时钟脉冲;用作计数器时,计数信号的来源选择非周期性的外部输入信号。不管是定时器还是计数器,本质上都是计数器。外部事件信号是随机的,内部脉冲时钟信号是周期性的,所以要定时一般都选择内部脉冲计数。
2023-11-04 18:03:20
1714
原创 【51单片机】中断系统与外部中断应用
外部中断0方式由TCON的IT0来选择,IT0为1时是下降沿触发,为0是低电平信号触发。IE:中断控制寄存器,中断的开关,EA是中断总开关。T0:计数器输入端RX,TX串口输入和输出。
2023-11-04 15:32:21
181
原创 【51单片机】独立按键的基本操作与扩展应用
消抖就是Delay一小段时间后再次判断检测信号是否有效,如果有效,再执行相关的程序。注意开头sbit的用法。LED灯都是低电平点亮,灯在按键按下时一直时亮的,松手马上熄灭,只需要while(S?==0),表示按键按下时(S?此时是低电平)一直处在死循环中,松手后跳出循环,马上熄灭灯。
2023-11-02 17:04:14
136
原创 【51单片机】共阳数码管的静态显示
共阳数码管,低电平有效,例如要显示 “6” ,需要a,c,d,e,f,g段亮,所以给这些位以低电平,由上面的电路可以看到P00~P06对应a~g,注意a是低位,这样出来一个二进制数,1000 0010转化成十六进制数,0x82,所以给P0口写入0x82就可以输出“6“了。第二个问题是循环显示“6”的时候,显示出来的内容是8.,也就是全部都亮了,鉴于它是共阳极的数码管,很轻松就能知道是送值的时候没有送进去,值是0x00,导致它所有段都亮了。这里找到是对数组赋值的时候,应该用{},错用了(),导致值没赋进去。
2023-10-28 17:31:41
1245
1
原创 【51单片机】蜂鸣器与继电器的基本控制
P06——D7——Q7—— IN7——OUT7——N_BUZZ (蜂鸣器)低电平有效。注意 P04——D5——Q5——IN5——OUT5——N_RELAY (继电器)注意函数的封装,这里写了InitHC138和OutPutP0两个函数,简化了代码。继电器:二极管起保护作用,N_RELAY低电平时,开关K1工作闭合。
2023-10-28 15:50:40
248
1
原创 数据结构期末试卷笔记
Get Tail不能去掉括号,因为当广义表LS非空时,称第一个元素a1为LS的表头,称其余元素组成的表是LS的表尾。kruskal(克鲁斯卡尔算法就是纵观全图把权最小的边先连起来,不产生回路。可得任何一个非空列表其表头可能原子,也可能是列表,而其表尾必定为列表!深度和长度也要会算。其中prim(普利姆算法就是找一个点开始,一直走路径最短的那条边,不产生回路。一棵树度为4意思是它里面度最多的结点的度数是4。最小生成树的构造方法。
2023-05-22 15:40:52
75
原创 排序123
1.快速排序:需要注意index是坑的位置,选定了基准元素后,每个元素都是和基准元素比较判断是移动还是不移动,不是和index位置上的元素比较。2.堆排序:最大(小)堆是指在树中,存在一个结点而且该结点有儿子结点,该结点的data域值都不小于(大于)其儿子结点的data域值,并且它是一个。注意:二叉排序树、二叉搜索树、二叉查找树都是一个玩意,平衡二叉树是在二叉排序树、二叉搜索树、二叉查找树的基础上,对子树间的高度做了约束。
2023-05-20 13:24:31
64
原创 图1234
如果一个图有n个顶点和小于n-1条边,则是非连通图。(其实意思就是说极大连通子图你加任意一个顶点,这个图就不连通。极小连通子图就是有全部n个顶点n-1条边的生成树,你加任意一条边就会形成回环)3.一个连通图的生成树(只在无向图里讨论生成树)是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n-1条边。广度优先遍历要利用到队列,依次入队,出队前看它周围有没有没有访问过的,如果有就直接让他入队,注意出队的顺序。1.所谓连通分量,指的是无向图中的极大连通子图(再添加任何一个顶点,这个图就不连通了)。
2023-05-19 21:18:27
61
原创 图的存储与遍历「 数据结构选择练习题(有解析)」2023年5月14日
入度表示有多少条边指向该顶点。入度可以帮助我们了解有多少个其他顶点可以直接到达该顶点。出度表示有多少条边从该顶点出发。出度可以帮助我们了解该顶点可以直接到达多少个其他顶点。
2023-05-14 19:16:25
56
原创 线性表和队列 博客摘录「 数据结构选择练习题(有解析)」2023年5月13日
8、对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的,那么插入一个元素时平均要移动表中的( B )个元素。
2023-05-13 15:32:00
79
原创 博客摘录「 数据结构(C语言版) 第 五 章 树与二叉树 知识梳理 + 作业习题详解」2023年5月9日
以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’, 表示该二叉树是空树,否则该字符是相应结点的数据元素。读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉树并输出结点数据。性质3:对于任何一棵二叉树,若2度的结点数有K个,则叶子数必定为K+1个。性质1:在二叉树的第i层上,最多有2的i-1次方个节点。性质2:深度为i的二叉树至多有2的i次方减1个节点,最少有i个节点。这些都是递归的算法,有非递归的算法,但是比较复杂,懒得去看了。树的层次遍历,这个也很重要,答案为A,根的高度为1。
2023-05-12 19:42:52
102
原创 博客摘录「 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解」2023年5月8日
正常情况下,top和base都是从栈底开始,但是栈底一般都是地址低的那一边,这道题栈底是地址高的那一边,所以栈底地址从4开始,栈顶地址为0。队列:一般情况下,front和rear都在队列位置0的地方,因为队列时先入先出,所以入队是rear在改变,把这想象成排队买票,队头不动,队尾在改变。第三题是因为删除的可能是最后一个节点,此时头尾指针都要修改,而且根据队列实现方式的不同,在删除时可能要修改头指针或者尾指针中的一个。下面是入队和出队的算法,在入队和出队前,分别判断了队列是否满了和是否为空。
2023-05-09 14:50:46
227
原创 博客摘录「 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解」2023年5月7日
5 . 线性表 L = ( a 1 , a 2 , . . . , a n ) L=(a_1, a_2, ..., a_n)L=(a 1 ,a 2 ,...,a n ) 用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的 (n-1)/2。
2023-05-07 21:30:59
81
原创 博客摘录「 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解」2023年5月7日
3.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D)最节省时间。(2分)A单链表B单循环链表C带尾指针的单循环链表D带头结点的双循环链表。
2023-05-07 21:30:27
96
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人