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

厦门seo公司网站自己电脑做网站服务器小工具

厦门seo公司网站,自己电脑做网站服务器小工具,seo综合查询怎么用,泰安市住房与城乡建设局网站目录 1.配置文件 2.点亮一个LED 2.1单个端口操作点亮单个LED 2.2整体操作点亮LED 3.LED闪烁 4.LED实现流水灯 4.1使用for循环和移位实现 4.1.1移位操作符 4.1.2使用移位操作和for循环实现 4.2使用移位函数实现LED流水灯 众所周知#xff0c;任何一个硬件工程师…         目录 1.配置文件 2.点亮一个LED 2.1单个端口操作点亮单个LED 2.2整体操作点亮LED 3.LED闪烁 4.LED实现流水灯 4.1使用for循环和移位实现 4.1.1移位操作符        4.1.2使用移位操作和for循环实现 4.2使用移位函数实现LED流水灯 众所周知任何一个硬件工程师都是从点亮一个LED开始的点亮一个LED相当于软件中的第一个Hello World都是一个最基础的东西今天就开始点亮一个LED探寻单片机的奥秘 1.配置文件 首先我们需要使用的开发板是普中的51单片机开发板其次我们使用的编写程序的软件是Keil5使用C语言编程。现在就来开始点亮一个LED吧 首先我们需要建立一个项目我们的项目建立之后会有很多的散乱的小文件所以我们就要建立一个大文件夹再在里面建立一个子文件夹把我们的项目放在里面。 首先打开Keil5 然后把我们的项目建立到刚刚的子文件夹里面就行了。 保存之后会出现下面的这样的窗口 我们使用的51单片机型号是STC89C52这里找不到但是我们可以找到型号匹配的就是AT89C52我们可以使用AT89C52来创建我们的新项目 我们可以像这样点击Atmel里面找到AT89C52也可以在上面的搜索框里面直接搜索AT89C52点击OK会弹出一个页面 点击否就行了。 我们左边的窗口就出现了我们的项目 鼠标右击Source Group1 点击Add New Item 选择C语言然后命名即可  成功创建之后我们的左边就会出现这样的东西 这说明我们的文件已经常见成功可以开始写代码了。  2.点亮一个LED GPIOgeneral purpose intput output是通用输入输出端口的简称可 以通过软件来控制其输入和输出。 这就是我们芯片的引脚图一共有40个引脚这些引脚可以用分为下面几个大类 电源引脚引脚图中的 VCC、 GND 都属于电源引脚。晶振引脚引脚图中的 XTAL1、XTAL2 都属于晶振引脚。复位引脚引脚图中的 RST/VPD 属于复位引脚不做其他功能使用。下载引脚51 单片机的串口功能引脚TXD、RXD可以作为下载引脚 使用。GPIO 引脚引脚图中带有 Px.x 等字样的均属于 GPIO 引脚。 我们需要使用的就是P2端口 在开发板上我们的LED就是这样排列的P20到P27我们可以统称为P2端口我们只需要给P2端口赋值就可以得到我们想要的LED效果。 我们都知道LED是一个二级管一样的东西就上面的图片而言我们的迪纳留只能从VCC流向P2端口所以我们如果想要LED发光我们就需要保证LED左右有电位差左边是正极右边是我们控制的P2端口我们就需要在软件中给它们一个数字0表示低电平这样我们的LED才会点亮。 现在我们只想要D1点亮我们就可以把其它的几个P2端口全部设置为高电平P20端口设置为低电平也可以只设置P20端口因为引脚默认都是上拉的也就是所有端口默认都是高电平。 这里我们可以有两种方式点亮这个D1,一个是单个操作一个是整体操作 2.1单个端口操作点亮单个LED 在所有操作之前我们要包含一个头文件我们可以右键单击点击直接插入头文件也可以自己写一个出来总之就要包含整个头文件因为这个头文件里面有我们所有的关于引脚的定义。头文件里的名字也可以写成reg52.h大小写不会造成影响 然后我们需要使用一个关键词sbit就可以定义单个引脚sbit LED1 P2^0;这样就完成了对一个引脚的重定义我们就可以直接对LED1赋值间接对P20端口赋值。当然只要你喜欢这里的LED1只是一个名字你可以换成任何非关键字的名字然后使用。 这里就得到代码 #include REGX52.H sbit LED1P2^0; void main() {LED1 0; } 我们想要把这个代码烧入到我们的单片机上我们就要安装驱动连接数据线下载软件这里就不演示了网上有很多的资料和视频买开发板的时候商家也会赠送这些东西。 这里使用的是普中官方的软件使用它就可以把我们电脑上的编译链接生成的文件烧入到开发板上在此之前我们还要先生成这个文件。 左上角有三个按钮第一个是只编译不生成文件第二个是只编译最新更改的文件第三个是编译所有文件一般来说我们使用第二个用到比较多因为当我们的代码数量众多的时候每次全部编译效率就会很慢所以最好使用中间的。 我们点击一次之后下面就会出现这样的提示 0 Error(s), 0 Warning(s) 就是让人兴奋的事情这说明我们的程序没有问题可以使用了然后我们需要使用烧入的软件找到生成的hex文件但是程序默认是不会生成hex文件的我们就要再配置一下 点击魔术棒然后再点击Output再点击生成hex文件然后我们再点击一次编译 我们发现多了这样的一条提示这样就说明我们的我呢见成功生成了我们就可以使用烧入软件开始烧入了 点击”打开文件“ 找到hex文件之后开始配置其他的东西比如选择插入了USB线的串口需要有CH340驱动的标注还有芯片类型和波特率 然后就是把板子上电并点击”程序下载“ 出现了这样的程序下载成功就说明我们成功把东西下载到了板子上你就成功点亮了一个LED 2.2整体操作点亮LED 整体操作就是直接对P2端口操作这样我们只要对P2端口就可以点亮一个LED或者是多个LED就不需要我们反复使用sbit定义端口了。 具体操作就是直接对P2赋值假设我们想要让第一个灯亮其他灯不亮我们就要确保其他的都是高电平而第一个灯是低电平表示出来就是 0111 1111  但是这里有一个问题就是我们的软件不会把它当作二进制处理而是默认当作十进制处理这样就和我们原本的意愿相悖了。一般我们使用的话就会把它转化成十六进制0111当作一位1111当作一位处理成为十六进制 不过这里还有个问题那就是我们的数据是按照类似数据结构中的栈处理的也就是它按照0111 1111的顺序进入的话它拿出来的时候是1111 1110然后会出现一个问题就是我们的开发板上亮的就不是我们想要的LED1而是LED8所以我们想要LED1亮的话我们就要使用反向推理也就是我们需要提前把这个我们想要的数据反抓一下我们单片机得到的就是正确的数据了比如我们就可以使用1111 1110输入转换成十六进制就是0xfe这里的大小写没有影响这样我们就得到了LED1亮的情况了。 所以我们就可以写出代码 #include REGX52.Hvoid main() {P2 0XFE; } 然后上电烧入程序就行了 3.LED闪烁 我们想要一个LED闪烁也就是可以简化成把一个LED在点亮和熄灭之间反复切换但是单片机操作的速度是很快的肉眼无法观察到它的闪烁所以我们就要使用一个暂停函数来让它们之间有一定的时间暂停不动之后再进行下一个操作这样我们就可以观察到它的闪烁了。 我们要实现这样的暂停函数可以借助另外一个工具 这个也是一个软件可以用来烧入而且功能丰富但是我更喜欢用另外一个因为操作简单点。 这个软件也是板子配套的软件我们可以使用它生成暂停函数 我们可以在上面找到”软件延时计时器“ 选择好相应的系统频率和定时长度然后点击生成C代码再点击复制代码然后我们在Keil里粘贴这个代码。 到这里还不能直接使用我们还要包含一个头文件#include INTRINS.H这样函数里的_nop_函数才能够使用。 之后我们就可以把代码放在主函数中使用了。像这样 void main() {P2 0XFE;//点亮LED1Delay500ms();P2 0XFF;//熄灭LED1Delay500ms(); } 然后就可以看到板子上LED1在不停闪烁了。 但是这个代码还不完善在单片机内部其实是在不断调用main函数的这并不太规范我们可以加上一个while1) 的死循环使它进入了main函数就不退出并且能一直执行我们的闪烁指令。从某种意义上提高了一点效率。 完整代码就是这样 #include REGX52.H #include INTRINS.H void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();_nop_();i 22;j 3;k 227;do{do{while (--k);} while (--j);} while (--i); }void main() {while(1){P2 0XFE;Delay500ms();P2 0XFF;Delay500ms();} } 但是我们突然想要把闪烁频率加快怎么办呢再重新生成代码吗 我们可以生成一个1ms的函数然后再通过形参调控我们想要的时间。 #include REGX52.H #include INTRINS.H void Delay1ms(unsigned int xms) //11.0592MHz {while(xms--){unsigned char i, j;_nop_();_nop_();_nop_();i 11;j 190;do{while (--j);} while (--i);} }void main() {while(1){P2 0XFE;Delay1ms(500);P2 0XFF;Delay1ms(500);P2 0XFE;Delay1ms(100);P2 0XFF;Delay1ms(100);} } 这样我们就可以十分灵活使用暂停函数控制闪烁时间和频率了。 4.LED实现流水灯 LED实现流水灯其实就是上面实现闪烁的改版我们只要计算出每个灯亮的时候它的对应的指令然后闪烁延时再下一个反复循环就得到了流水灯。 但是这样的写法很是费劲难道我们每次都要这样生成吗那样多麻烦 这个写法很好理解但是肯定不是最好的写法。 4.1使用for循环和移位实现 4.1.1移位操作符        我们C语言中有一个操作符(左移位和 右移位移位左边是一个数右边是需要移动的位数。 而移位又分为算数移位和逻辑移位移位是对一个二进制数的操作这里讲一下基础的知识。 首先二进制中比如1000 1111 这个数如果是有符号整型的话它的第一位1就是它的符号位1表示负0表示正。 这里的逻辑位移就不考虑符号位只是单纯的进行移位操作。比如1010 0101进行逻辑左移一位之后把首位1移除后在最后面补0得到0100 1010再左移2位得到0010 1000我们发现它并不会管我们的移除的数字是什么它只知道移除之后补上0就行了右移也是同样的道理。 算数位移很相似但是有一点不一样算数位移的首位符号位不变其他的遵循逻辑位移的规律比如1100 1111右移1位得到的就是1010 0111符号位不变其他位就按照逻辑位移的操作。 在C51使用的时候默认的是逻辑位移就是没有符号位的位移而且我们还要把它们转化成十六进制再使用移位操作符。 4.1.2使用移位操作和for循环实现 这里有一点不好实现的就是我们使用P2端口定义的时候比如我们想让它从LED1流水到LED8这样的话我们初始的就是1111 1110左移位一次会变成1111 1100这样就不是只有LED2亮了所以我们就要换个思路假如我们的数只有一个1其他位都是0是不是会更好处理 我们就可以把1111 1110取反得到0000 0001这样我们控制的时候就可以很精确的控制位了取反操作符是~加在我们需要取反的数的前面比如~0000 0001得到的就是1111 1110这样我们就可以使用取反和移位操作符实现流水灯了。 我们把初始设定成P2 ~0x010即P2~0000 0001下一个就是P2 ~(0x011)即P2 ~0000 0010,直到LED1到LED8都进行了一次闪烁回归原位就完成了流水灯循环。这里我们使用for循环实现。 #include REGX52.H #include INTRINS.H void Delay1ms(unsigned int xms) //11.0592MHz {while(xms--){unsigned char i, j;_nop_();_nop_();_nop_();i 11;j 190;do{while (--j);} while (--i);} }void main() {unsigned int i 0;while(1){for(i 0;i8;i){P2 ~(0x01i);Delay1ms(300);}} } 这样我们就完成了对流水灯的实现。 4.2使用移位函数实现LED流水灯 除了使用 for 循环语句实现移位KEIL C51 软件内还有对应的移位库函数 左移函数是_crol_()右移函数是_cror_()而且这里要注意它们需要包含头文件#include INTRINS.H才可以使用这两个函数和左移右移操作符的区别就是它们移位之后不会让多余的位补上0而是顺延移出位的数比如1001 1100左移一位得到的是0011 1001相当于我们把整体的数字往前推了一位把推出的数字放回到末尾这样的函数使得我们对流水灯的理解更加简便我们不再需要使用取反符号只要使用移位操作就好了。 我们原本的数字是1111 1110只要使用左移函数_crol_()就可以实现流水灯效果即使用P2接收P2左移一位的返回值直接改变P2循环反复即可 #include REGX52.H #include INTRINS.H void Delay1ms(unsigned int xms) //11.0592MHz {while(xms--){unsigned char i, j;_nop_();_nop_();_nop_();i 11;j 190;do{while (--j);} while (--i);} }void main() {P2 0xfe;Delay1ms(100);while(1){P2 _crol_(P2,1);Delay1ms(100);} } 这样就实现了流水灯还是比较简单的。
http://www.zqtcl.cn/news/600350/

相关文章:

  • 合肥义城建设集团有限公司网站专业建站公司电话咨询
  • 国外平面设计网站有哪些建商城网站公司
  • 深圳做响应式网站网站建设公司行业现状
  • 网站部署城阳网站开发公司
  • 旅游网站的网页设计素材如何网络推广运营
  • 惠州网站建设多少钱注册邮箱
  • 视频制作网站都有哪些网站优化的公司
  • 网站开发运营推广叫什么苏州seo关键词优化推广
  • 龙泉驿区建设局网站引流推广平台软件
  • 做盗版网站韩国服装网站建设
  • 网站策划书籍推荐高端网站设计制作的
  • 优秀电商设计网站有哪些微博网站可以做兼职吗
  • 网站建设 验证码电子商务网站建设流程图
  • 做内贸什么网站资源比较多岳阳网上房地产
  • 去国外网站开发客户中的contact us 没有邮箱失败营销案例100例
  • 网站怎么做图片动态图片大全靖江 建设局网站
  • 汉子由来 外国人做的网站wordpress微信小程序部署
  • 兰州网站建设最新招聘信息江苏网站建设简介模板
  • 最具口碑的企业网站建设企业做网站的流程
  • wordpress多语言企业网站网页制作工具按其制作方式有几种类型
  • 2019年做网站还有机会吗wordpress 虚拟订阅插件
  • 网站都有后台吗怀柔网站建设
  • phpcms 图片网站免费商城网站建设
  • 网站虚拟主机租用中铁建设门户网登录初始密码
  • 网站哪个公司做的好网站建设与管理指什么软件
  • 提升学历要多少钱seo关键字优化技巧
  • 代理会计公司网站模版哪家培训机构学校好
  • 开江建设局网站怎么做让自己的网站
  • 个人建设网站要钱吗专门用来制作网页的软件是什么
  • 关键词挖掘站网seo点击软件手机