keil+proteus
第二个51程序 : 跑马灯 流水灯
这是一个AT89c51单片机教程,我们每次都会提供博文教程以及附带资料下载。
单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能
今天要走入第二个程序,跑马灯,按步骤,先硬件,后软件的顺序,先绘制原理图
建立好之后开始编写代码
#include void delayms(unsigned int t) { unsigned int i,j; for(i=0; i } void main(void)//主函数 { int n; unsigned char a[8] = { //取表数组 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; while(1) { for(n=0; n<8; n++)//循环取表 流水灯 { P1 = a[n]; delayms(500); } } } 写入keil工程,编译生成hex文件 进入proteus仿真,烧录hex文件,点击运行… 仿真开始运行跑马灯。 keil工程代码以及proteus仿真原理图资料包:http://download.csdn.net/download/mbs520/12118172 *代码解读 1、 #include 包含头文件 2、 void delayms(unsigned int t)//延时函数 { int a,b; for(a=0; a } 延时函数就是让CPU反复执行一条空指令来消耗时间,这段时间CPU仍然在工作,各寄存器的值保持不变。 3、 void main(void) 这是主函数,程序从这里开始执行 另外,51单片机不用循环语句while,也会循环执行main函数中的内容 4、 int n; unsigned char a[8] = { //取表数组 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; int n; //这里定义一个n用来for循环的计数 unsigned char a[8] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; 这个数组是干嘛的?我把它转为二进制你就差不多明白了,它们分别是 0000 0001 0000 0010 0000 0100 0000 1000 0001 0000 0010 0000 0100 0000 1000 0000 你会发现有一个1在向左移动,我们把这个1想做是亮着的灯,0是灭的灯,按照这个规律流动,就成了流水灯 5、 while(1) { for(n=0; n<8; n++)//循环取表 流水灯 { P1 = a[n]; delayms(500); } } while(1)是一个死循环,会循环执行里面的内容 for(n=0; n<8; n++)//循环取表 流水灯 {undefined P1 = a[n]; delayms(500); } 这个才是跑马灯的真正代码,利用for循环n自增,就可以一次输出数组里面的内容。 P1:在头文件里定义,为单片机IO口寄存器,8bit,每一位由低到高分别存储P1_0-P1_7的高低电平0或1。 依次对P1口输出a[0] a[1] 、a[2]、 a[3]、 a[4]…实现跑马灯效果 百度网盘链接:https://pan.baidu.com/s/18cVVHyE6O1AzvUvZMsApZA 提取码:22pi (有问题欢迎留言,第一次发帖,不到之处希望各位大神指点) (也可以私信我问题,看到否可以为为大家耐心解答,很高兴跟大家交流技术问题。范围:电路设计 电路仿真 PCB设计 51单片机 msp430 arduino stm32 luinx)
上一篇:51单片机-asm与C混合编程
下一篇:51单片机教程:51单片机驱动四个8*8点阵
推荐阅读最新更新时间:2024-11-10 11:37
推荐帖子
- VB2003调用PhoneMakeCall打电话请教
- VB2003调用PhoneMakeCall打电话,第一次正确,第二次会在号码后自动加一个8,这样号码就错误了,怎样解决啊?ImportsSystemImportsSystem.IOImportsSystem.TextImportsSystem.CollectionsImportsSystem.Runtime.InteropServicesPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByVale
- ttsurvive 嵌入式系统
- 求推荐一本中英文对照的开关电源书籍
- 想提高开关电源水平的同时也提高英语水平,求推荐一本中英文对照的开关电源书籍,这样可以互补学习~谢谢!求推荐一本中英文对照的开关电源书籍开关电源维修-一线资料速查速用此书书只是部分章节有英汉对照表还是读英文版,一般没有英汉对照的技术书籍。
- hfutdsplab 电源技术
- 反激式、正激式、推挽式、半桥式、全桥式开关电源的优点和缺点!
- 01单端正激式单端:通过一只开关器件单向驱动脉冲变压器.正激:脉冲变压器的原/付边相位关系,确保在开关管导通,驱动脉冲变压器原边时,变压器付边同时对负载供电。该电路的最大问题是:开关管T交替工作于通/断两种状态,当开关管关断时,脉冲变压器处于空载状态,其中储存的磁能将被积累到下一个周期,直至电感器饱和,使开关器件烧毁。图中的D3与N3构成的磁通复位电路,提供了泄放多余磁能的渠道。02单端反激式反激式电路与正激式电路相反,脉冲变压器的原/
- qwqwqw2088 模拟与混合信号
- 手机蓝牙天线
- 手机蓝牙天线的增益要求多少?有谁做过手机蓝牙pcb单级子天线,增益能做多少?尺寸能多小啊?手机蓝牙天线增益是看你的要求来的没规定要多少但是蓝牙输出功率是有要求的有三个class,我们一般用的我是class2class是那个输出功率吧?那一般天线做到多少呢
- xiao0qiang RF/无线
- .out文件有未决的符号为什么也能运行?
- 一个简单程序:#includestdioLib.hintmain(){chara1;chara2=123456789;memcpy(a1,a2,10);printf(a1);return1;}编译生成.out文件后用objdumppentium命令查看符号,可以看到memcpy和“printf都是未决符号但是把.out下载到目标机,运行正常,是为什么呢?.out文件有未决的符号为什么也能运行?
- cgl123456 嵌入式系统
- 变频器母线电容的选型容量以及输出电流和输出电压的关系?
- 一般地380V电压等级的变频器按照输出额定电流选择母线支撑电容,每安培40-50uF电容,这是常规办法,实在额定输出电压额定输出电流条件下的电容容值大小;如果说变频器的输出电压限制在300V,仍然要输出额定电流,此时电容的容量选取应该是怎么样的,输出电压、输出电流、电容容量选择是一个什么样的数量关系?变频器母线电容的选型容量以及输出电流和输出电压的关系?不会计算,又不太懂的这种情况,可以参考变频器制造商提供的推荐值三相桥式整流纹波基波频率为300Hz,为保证稳定工作,滤波电容器
- 乱世煮酒论天下 电机驱动控制(Motor Control)
设计资源 培训 开发板 精华推荐
- NCS2001SN1T1G 0.9V单电源运放正电容乘法器典型应用电路
- TCR6DA1830U、200mA、3.0V 和 1.8V 输出电压双路输出 CMOS 低压降稳压器的典型应用
- LT3973EMS 1.21V 降压转换器的典型应用
- 【立创面板打印】拟辉光管
- LT1675 的典型应用 - 具有放大器的 250MHz、三路和单路 RGB 多路复用器
- THEVAL3503,基于具有 LVDS 接口的 THL3503 16 通道 LED 驱动器的评估板
- 六路249W桌面充电器
- LTC1798CS8-2.5 电压基准作为电源分配器的典型应用电路
- LTC2215IUP 演示板、CMOS 输出、65Msps、16 位 ADC 1MHz
- 【ART-Pi】5V不间断电源扩展
- ADI有奖下载活动之6 ADI基于IEC61850的智能电子设备(IED)系统解决方案
- 国产FPGA有奖直播:安路全新FPSoC产品SF1系列(FPGA+MCU),Demo板介绍和案例解析
- 有奖直播:借助Maxim的模拟技术优化设计
- 【EEWORLD第九届社区明星人物】11月明星人物
- 有奖直播|英飞凌系统解决方案让电动摩托设计更加可靠高效!
- 有奖直播:安森美电感式位置传感器接口 NCS32100
- 2022 Digi-Key KOL 视频系列:你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍
- Intel白皮书下载有奖
- EMI 有奖调查
- 【有奖直播】:Microchip ATmega4809系列单片机简介