当前位置: 首页 > news >正文

营销网站建设制作设计wordpress添加文字alt

营销网站建设制作设计,wordpress添加文字alt,公司网站建设会议纪要,住房和城乡建设部文化中心网站通过上节课的实验#xff0c;大家会发现#xff0c;我们逐渐进入比较实质性的学习了#xff0c;需要记住的内容也更多了#xff0c;个别地方可能会感觉吃力。但是大家不要担心#xff0c;要有信心。这个跟小孩学走路一样#xff0c;刚开始走得不太稳#xff0c;没关系大家会发现我们逐渐进入比较实质性的学习了需要记住的内容也更多了个别地方可能会感觉吃力。但是大家不要担心要有信心。这个跟小孩学走路一样刚开始走得不太稳没关系多走几步多练练。看教材的时候要注意专心一遍看不懂思考一下再回头看第二遍和第三遍没准一下就明白了。如果三遍还看不明白那就把不懂的问题放一放继续往下学两课然后再回头看一次也可以到群里或者论坛里多咨询一下其他的同学讨论一下可能就会茅塞顿开了。 1.逻辑电路与逻辑运算 在数字电路我们经常会遇到逻辑电路而在 C 语言中我们则经常用到逻辑运算。二者在原理上是相互关联的我们在这里就先简单介绍一下随着学习的深入再慢慢加深理解。 首先在“逻辑”这个概念范畴内存在真和假这两个逻辑值而将其对应到数字电路或 C 语言中就变成了“非 0 值”和“0 值”这两个值即逻辑上的“假”就是数字电路或C 语言中的“0”这个值而逻辑“真”就是其它一切“非 0 值”。 然后我们来具体分析一下几个主要的逻辑运算符。我们假定有 2 个字节变量A 和 B二者进行某种逻辑运算后的结果为 F。 以下逻辑运算符都是按照变量整体值进行运算的通常就叫做逻辑运算符 逻辑与。F A B当 A、B 的值都为真即非 0 值下同时其运算结果 F为真具体数值为 1下同当 A、B 值任意一个为假即 0下同时结果 F 为假具体数值为 0下同。 || 逻辑或。F A || B当 A、B 值任意一个为真时其运算结果 F 为真当 A、B 值都为假时结果 F 为假。 ! 逻辑非F !A当 A 值为假时其运算结果 F 为真当 A 值为真时结果 F 为假。 以下逻辑运算符都是按照变量内的每一个位来进行运算的通常就叫做位运算符 按位与F A B将 A、B 两个字节中的每一位都进行与运算再将得到的每一位结果组合为总结果 F例如 A 0b11001100B 0b11110000则结果 F 就等于 0b11000000。 | 按位或F A | B将 A、B 两个字节中的每一位都进行或运算再将得到的每一位结果组合为总结果 F例如 A 0b11001100B 0b11110000则结果 F 就等于 0b11111100。 ~ 按位取反F ~A将 A 字节内的每一位进行非运算就是取反再将得到的每一位结果组合为总结果 F例如 A 0b11001100则结果 F 就等于 0b00110011这个运算符我们在前面的流水灯实验里已经用过了现在再回头看一眼是不是清楚多了。 ^ 按位异或异或的意思是如果运算双方的值不同即相异则结果为真双方值相同则结果为假。在 C 语言里没有按变量整体值进行的异或运算所以我们仅以按位异或为例F A ^ BA 0b11001100B 0b11110000则结果 F 就等于 0b00111100。 我们今后要看资料或芯片手册的时候会经常遇到一些电路符号图 5-1 所示就是数字电路中的常用符号知道这些符号有利于我们理解器件的逻辑结构尤其重点认识图 5-1 中的国外流行图形符号。在这里我们先简单看一下如果日后遇到了可以到这里来查阅。 2.定时器的学习 定时器是单片机系统的一个重点但并不是难点大家一定要完全理解并且熟练掌握定时器的应用。 2.1定时器的初步认识 时钟周期时钟周期 T 是时序中最小的时间单位具体计算的方法就是 1/时钟源频率我们 KST-51 单片机开发板上用的晶振是 11.0592M那么对于我们这个单片机系统来说时钟周期1/11059200 秒。 机器周期我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍而且语句占用的时间是可以计算出来的而 C 语言一条语句的时间是不确定的受到诸多因素的影响。51单片机系列在其标准架构下一个机器周期是 12 个时钟周期也就是 12/11059200 秒。现在有不少增强型的 51 单片机其速度都比较快有的 1 个机器周期等于 4 个时钟周期有的 1个机器周期就等于 1 个时钟周期也就是说大体上其速度可以达到标准 51 架构的 3 倍或 12倍。因为我们是讲标准的 51 单片机所以我们后边的课程如果遇到这个概念全部是指 12个时钟周期。 这两个概念了解即可下边就来我们的重头戏定时器和计数器。定时器和计数器是单片机内部的同一个模块通过配置 SFR特殊功能寄存器可以实现两种不同的功能我们大多数情况下是使用定时器功能因此我们的课程也是主要来讲定时器功能计数器功能大家自己了解下即可。 顾名思义定时器就是用来进行定时的。定时器内部有一个寄存器我们让它开始计数后这个寄存器的值每经过一个机器周期就会自动加 1因此我们可以把机器周期理解为定时器的计数周期。就像我们的钟表每经过一秒数字自动加 1而这个定时器就是每过一个机器周期的时间也就是 12/11059200 秒数字自动加 1。还有一个特别注意的地方就是钟表是加到 60 后秒就自动变成 0 了这种情况在单片机或计算机里我们称之为溢出。那定时器加到多少才会溢出呢后面会讲到定时器有多种工作模式分别使用不同的位宽指使用多少个二进制位假如是 16 位的定时器也就是 2 个字节最大值就是 65535那么加到 65535 后再加 1 就算溢出如果有其他位数的话道理是一样的对于 51 单片机来说溢出后这个值会直接变成 0。从某一个初始值开始经过确定的时间后溢出这个过程就是定时的含义。 2.2 定时器的寄存器 标准的 51 单片机内部有 T0 和 T1 这两个定时器T 就是 Timer 的缩写现在很多 51 系列单片机还会增加额外的定时器在这里我们先讲定时器 0 和 1。前边提到过对于单片机的每一个功能模块都是由它的 SFR也就是特殊功能寄存器来控制。与定时器有关的特殊功能寄存器有以下几个大家不需要去记忆这些寄存器的名字和作用你只要大概知道就行用的时候随时可以查手册找到每个寄存器的名字和每个寄存器所起到的作用。 表 5-1 的寄存器是存储定时器的计数值的。TH0/TL0 用于 T0TH1/TL1 用于 T1。 表 5-2 是定时器控制寄存器 TCON 的位分配表 5-3 是则是对每一位的具体含义的描述。 大家注意在表 5-3 中的描述中只要写到硬件置 1 或者清 0 的就是指一旦符合条件单片机将自动完成的动作只要写软件置 1 或者清 0 的是指我们必须用程序去完成这个动作后续遇到此类描述就不再另做说明了。 对于 TCON 这个 SFR其中有 TF1、TR1、TF0、TR0 这 4 位需要我们理解清楚它们分别对应于 T1 和 T0我们以定时器 1 为例讲解那么定时器 0 同理。先看 TR1当我们程序中写 TR1 1 以后定时器值就会每经过一个机器周期自动加 1当我们程序中写 TR1 0以后定时器就会停止加 1其值会保持不变化。TF1这个是一个标志位他的作用是告诉我们定时器溢出了。比如我们的定时器设置成 16 位的模式那么每经过一个机器周期TL1加 1 一次当 TL1 加到 255 后再加 1TL1 变成 0TH1 会加 1 一次如此一直加到 TH1和 TL1 都是 255即 TH1 和 TL1 组成的 16 位整型数为 65535以后再加 1 一次就会溢出了TH1 和 TL1 同时都变为 0只要一溢出TF1 马上自动变成 1告诉我们定时器溢出了仅仅是提供给我们一个信号让我们知道定时器溢出了它不会对定时器是否继续运行产生任何影响。 本节开头我们就提到了定时器有多种工作模式工作模式的选择就由 TMOD 来控制TMOD 的位分配和描述见表 5-4 到 5-6 所示TMOD 的位功能如表 5-5 所示。 可能你已经注意到了表 5-2 的 TCON 最后标注了“可位寻址”而表 5-4 的 TMOD 标注的是“不可位寻址”。意思就是说比如 TCON 有一个位叫 TR1我们可以在程序中直接进行 TR1 1 这样的操作。但对 TMOD 里的位比如(T1)M1 1 这样的操作就是错误的。我们要操作就必须一次操作这整个字节也就是必须一次性对 TMOD 所有位操作不能对其中某一位单独进行操作那么我们能不能只修改其中的一位而不影响其它位的值呢当然可以在后续课程中你就会学到方法的现在就先不关心它了。 表 5-6 列出的就是定时器的 4 种工作模式其中模式 0 是为了兼容老的 8048 系列单片机而设计的现在的 51 几乎不会用到这种模式而模式 3 根据我的应用经验它的功能用模式 2 完全可以取代所以基本上也是不用的那么我们就重点来学习模式 1 和模式 2。 模式 1是 THn 和 TLn 组成了一个 16 位的定时器计数范围是 065535溢出后只要不对 THn 和 TLn 重新赋值则从 0 开始计数。模式 2是 8 位自动重装载模式只有 TLn做加 1 计数计数范围 0255THn 的值并不发生变化而是保持原值TLn 溢出后TFn就直接置 1 了并且 THn 原先的值直接赋给 TLn然后 TLn 从新赋值的这个数字开始计数。这个功能可以用来产生串口的通信波特率我们讲串口的时候要用到本章节我们重点来学习模式 1。为了加深大家理解定时器的原理我们来看一下他的模式 1 的电路示意图 5-2。 我带领大家一起来分析一遍这个示意图日后如果再遇到类似的图大家就可以自己研究了。OSC 框表示时钟频率因为 1 个机器周期等于 12 个时钟周期所以那个 d 就等于 12。下边 GATE 右边的那个门是一个非门电路再右侧是一个或门再往右是一个与门电路大家可以对照一下 5-1 节的内容。 图上可以看出来下边部分电路是控制了上边部分那我们先来看下边是如何控制的我们以定时器 0 为例。 1、TR0 和下边或门电路的结果要进行与运算TR0 如果是 0 的话与运算完了肯定是 0所以如果要让定时器工作那么 TR0 就必须置 1。 2、这里的与门结果要想得到 1那么前面的或门出来的结果必须也得是 1 才行。在 GATE位为 1 的情况下经过一个非门变成 0或门电路结果要想是 1 的话那 INT0 即 P3.2 引脚必须是 1 的情况下这个时候定时器才会工作而 INT0 引脚是 0 的情况下定时器不工作这就是 GATE 位的作用。 3、当 GATE 位为 0 的时候经过一个非门会变成 1那么不管 INT0 引脚是什么电平经过或门电路后都肯定是 1定时器就会工作。 4、要想让定时器工作就是自动加 1从图上看有两种方式第一种方式是那个开关打到上边的箭头就是 C/T 0 的时候一个机器周期 TL 就会加 1 一次当开关打到下边的箭头即 C/T 1 的时候T0 引脚即 P3.4 引脚来一个脉冲TL 就加 1 一次这也就是计数器功能。 2.3 定时器的应用 了解了定时器相关的寄存器那么我们下面就来做一个定时器的程序巩固一下我们学到的内容。我们这节课的程序先使用定时器 0在使用定时器的时候需要以下几个步骤 第一步设置特殊功能寄存器 TMOD配置好工作模式。 第二步设置计数寄存器 TH0 和 TL0 的初值。 第三步设置 TCON通过 TR0 置 1 来让定时器开始计数。 第四步判断 TCON 寄存器的 TF0 位监测定时器溢出情况。 写程序之前我们要先来学会计算如何用定时器定时时间。我们的晶振是 11.0592M时钟周期就是 1/11059200机器周期是 12/11059200假如要定时 20ms就是 0.02 秒要经过x 个机器周期得到 0.02 秒我们来算一下 x*12/110592000.02得到 x 18432。16 位定时器的溢出值是 65536因 65535 再加 1 才是溢出于是我们就可以这样操作先给 TH0 和 TL0一个初始值让它们经过 18432 个机器周期后刚好达到 65536也就是溢出溢出后可以通过检测 TF0 的值得知就刚好是 0.02 秒。那么初值 y 65536 - 18432 47104转成 16 进制就是 0xB800也就是 TH0 0xB8TL0 0x00。 这样 0.02 秒的定时我们就做出来了细心的同学会发现如果初值直接给一个 0x0000一直到 65536 溢出定时器定时值最大也就是 71ms 左右那么我们想定时更长时间怎么办呢用你小学学过的逻辑倍数关系就可以解决此问题。 好了我们下面就用程序来实现这个功能。 #include reg52.h sbit LED P0^0; sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() {unsigned char cnt 0; //定义一个计数变量记录 T0 溢出次数ENLED 0; //使能 U3选择独立 LEDADDR3 1;ADDR2 1;ADDR1 1;ADDR0 0;TMOD 0x01; //设置 T0 为模式 1TH0 0xB8; //为 T0 赋初值 0xB800TL0 0x00;TR0 1; //启动 T0while (1){if (TF0 1) //判断 T0 是否溢出{TF0 0; //T0 溢出后清零中断标志TH0 0xB8; //并重新赋初值TL0 0x00;cnt; //计数值自加 1if (cnt 50) //判断 T0 溢出是否达到 50 次{cnt 0; //达到 50 次后计数值清零LED ~LED; //LED 取反0--1、1--0}}} } 本程序实现的结果是开发板上最右边的小灯点亮一秒熄灭一秒也就是以 0.5Hz 的频率进行闪烁。 3.数码管的学习 LED 小灯是一种简单的 LED只能通过亮和灭来表达简单的信息。而这节课我们要来学习一种能表达更复杂信息的器件——LED 数码管。 3.1 数码管的基本介绍 先给大家提供一张原理图看一下如图 5-3 所示。 这是比较常见的数码管的原理图我们板子上一共有 6 个数码管。前边有了 LED 小灯的学习数码管学习就会轻松的多了。从图 5-3 可以看出来数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段而实际上这 8 个段每一段都是一个 LED 小灯所以一个数码管就是由 8个 LED 小灯组成的。我们看一下数码管内部结构的示意图如图 5-4。 数码管分为共阳和共阴两种共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的阴极是公共端由阳极来控制单个小灯的亮灭。同理共阳数码管就是阳极接在一起大家可以认真研究下图 5-4。细心的同学会发现图 5-3 的数码管上边有 2 个 com这就是我们数码管的公共端。为什么有 2 个呢一方面是 2 个可以起到对称的效果刚好是 10 个引脚另外一个方面公共端通过的电流较大我们初中就学过并联电路电流之和等于总电流用2 个 com 可以把公共电流平均到 2 个引脚上去降低单条线路承受的电流。 从我们开发板的电路图上能看出来我们所用的数码管都是共阳数码管一共有 6 个如图 5-5 所示。 6 个数码管的 com 都是接到了正极上当然了和 LED 小灯电路一样也是由74HC138控制三极管的导通来控制整个数码管的使能。先来看最右边的 DS1 这个数码管原理图上可以看出控制 DS1 的三极管是 Q17控制 Q17 的引脚是 LEDS0对应到 74HC138 上边就是U3 的 Y0 输出如图 5-6 所示。 我们现在的目的是让 LEDS0 这个引脚输出低电平相信大家现在可以根据前边学过的知识独立把 ADDR0、ADDR1、ADDR2、ADDR3、ENLED 这 4 个所需输入的值写出来了现在大家不要偷懒根据 74HC138 的手册去写一下不需要你记住这些结论但是遇到就写一次锻炼过几次后遇到同类芯片自己就知道如何去解决问题了。 数码管通常是用来显示数字的我们板子上有 6 个数码管习惯上称之为 6 位那控制位选择的就是 74HC138 了。而数码管内部的 8 个 LED 小灯我们称之为数码管的段那么数码管的段选择即该段的亮灭是通过 P0 口控制经过 74HC245 驱动。 3.2 数码管的真值表 数码管的 8 个段我们直接当成 8 个 LED 小灯来控制那就是 a、b、c、d、e、f、g、dp 一共 8 个 LED 小灯。我们通过图 5-3 可以看出如果点亮 b 和 c 这两个 LED 小灯也就是数码管的 b 段和 c 段其他的所有的段都熄灭的话就可以让数码管显示出一个数字 1那么这个时候实际上 P0 的值就是 0b11111001十六进制就是 0xF9。那么我们写一个程序进去来看一看数码管显示的效果。 #include reg52.hsbit ADDR0 P1 ^ 0; sbit ADDR1 P1 ^ 1; sbit ADDR2 P1 ^ 2; sbit ADDR3 P1 ^ 3; sbit ENLED P1 ^ 4;void main() {ENLED 0;ADDR3 1;ADDR2 0;ADDR1 0;ADDR0 0;P0 0xF9;while(1); } 大家把这个程序编译一下并下载到单片机中就可以看到程序运行的结果是在最右侧的数码管上显示了一个数字 1。 用同样的方法我们可以把其他的数字字符都在数码管上显示出来而数码管显示的数字字符对应给 P0 的赋值我们叫做数码管的真值表。我们来列一下我们这个电路图的数码管真值表注意这个真值表里显示的数字都不带小数点的如表 5-7。 大家可以把上边那个用数码管显示数字 1 程序中的 P0 的赋值随便修改成表 5-7 真值表中的数值看看显示的数字的效果。 3.3 数码管的静态显示 在第三章我们学习了 74HC138了解到 74HC138 在同一时刻只能让一个输出口为低电平也就是说在一个时刻内我们只能使能一个数码管并根据我们给出的 P0 的值来改变这个数码管的显示字符我们可以将此理解为数码管的静态显示。 数码管静态显示是对应动态显示而言的静态显示对于一两个数码管还行多个数码管静态显示实现的意义就没有了。这节课我们先用一个数码管的静态显示来实现一个简单的秒表为下节课的动态显示打下基础。 先来介绍一个 51 单片机的关键字 code。我们前边课程定义变量的时候一般用到unsigned char 或者 unsigned int 这两个关键字这样定义的变量都是放在我们的单片机的 RAM中我们在程序中可以随意去改变这些变量的值。但是还有一种数据我们在程序中要使用但是却不会改变它的值定义这种数据时可以加一个 code 关键字修饰一下这个数据就会存储到我们的程序空间 Flash 中这样可以大大节省单片机的 RAM 的使用量毕竟我们的单片机 RAM 空间比较小而程序空间则大的多。那么现在要使用的数码管真值表我们只会使用它们的值而不需要改变它们就可以用 code 关键字把它放入 Flash 中了具体程序代码如下。 #include reg52.hsbit ADDR0 P1 ^ 0; sbit ADDR1 P1 ^ 1; sbit ADDR2 P1 ^ 2; sbit ADDR3 P1 ^ 3; sbit ENLED P1 ^ 4;//用数组来存储数码管的真值表数组将在下一章详细介绍 unsigned char code LedChar[] {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};void main() {unsigned char cnt 0; //记录T0中断次数unsigned char sec 0; //记录经过的秒数ENLED 0; //使能U3选择数码管DS1ADDR3 1;ADDR2 0;ADDR1 0;ADDR0 0;TMOD 0x01; //设置T0为模式1TH0 0xB8; //为T0赋初值0xB8TL0 0x00;TR0 1; //启动T0while(1){if(TF01) //判断T0是否溢出{TF0 0; //T0溢出后清零中断标志 TH0 0xB8; //并重新赋初值TL0 0x00;cnt; //计数值自加1if(cnt50) //判断T0溢出是否达到50次{cnt 0; //达到50次后计数值清零P0 LedChar[sec]; //当前秒数对应的真值表中的值送到P0口sec; //秒数记录自加1if(sec16) //当秒数超过0x0F(15)后重新从0开始{sec 0;}}}} }
http://www.tj-hxxt.cn/news/131058.html

相关文章:

  • 怎么样做公司网站wordpress post 405
  • 网站设计的大公司做网站钱
  • .net 网站 语言宝安做网站哪家好
  • 上海 科技网站建设学校校园网站建设实践选题背景
  • 人才网网站方案江西宣传片制作公司
  • 微网站的价格网络规划设计师考试大纲百度网盘
  • 好的h5网站模板深圳网站定制开发
  • 福州专业网站建设价格湖南网站优化服务
  • wp可以做商城网站吗深圳网站系统找哪里
  • 合肥市网站建设 小程序网站优化该怎么做
  • 嘉兴高端网站定制网站开发 售后服务协议
  • 导航网站系统网站建设论文答辩ppt
  • 花网站开发背景高端网站建设设计公司
  • 成都html5网站建设iis网站301重定向
  • 网页设计的五大原则成都seo技术
  • 公司网站开发策略和基本步骤怎么设计个人网站
  • 自动生成图片的网站如何获得网站
  • 许昌住房和城乡建设部网站pythom 网站开发规范
  • 网站收银系统建设设计专业知名企业网站
  • openwrt 网站开发wordpress文章自定义字段开发
  • 网站建设的网络公网页设计软件哪个好
  • 企业网站管理系统下载网站开发新技术
  • 做网站项目前怎么收集需求淘宝网站建设百度百科
  • 网站建设收费明细绍兴seo外包
  • 做网站要审核吗苏州网站建设设计公司
  • 做网站投资要多少钱网站正在建设中 htmll
  • 手机品牌网站柳市做网站
  • 上海住房城乡建设厅网站烟台建设局网站
  • 太原企业网站建设抖音分享小程序怎么赚钱
  • 公司网站怎样备案广州白云区最新信息