51单片机C编程(三、4位数码管飞入效果)
4位数码管飞入效果,PROTEUS仿真电路图如下: #include reg51.h #define uchar unsigned char #define LED P0 uchar code tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管数字码 uchar disp1 ={{8,10,10,10},{0,8,10,10},{5,0,8,10},{1,5,0,8},{10,1,5,0},{10,10,1,5},{10,10,10,1},{10,10,10,10}}; //数码管的8个显示状态 uchar scan;
[单片机]
C8051F020与80C51单片机的异同点
1 引言 80C51系列单片机及其衍生产品在我国乃至全世界范围获得了非常广泛的应用。单片机领域的大部分工作人员都熟悉80C51单片机,各大专院校都采用80C51系列单片机作为教学模型。随着单片机的不断发展,市场上出现了很多高速、高性能的新型单片机,基于标准8051内核的单片机正面临着退出市场的境地。为此,一些半导体公司开始对传统8051内核进行大的构造,主要是提高速度和增加片内模拟和数字外设,以期大幅度提高单片机的整体性能。其中美国Cygnal公司推出的C8051F系列单片机把80C51系列单片机从MCU时代推向SoC时代,使得以8051为内核的单片机上了一个新的台阶。 C8051F系列单片机是完全集成的混合信号系统级芯片,具
[应用]
MCS-51单片机汇编语言程序设计
前言 MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言)。 高级语言编程快捷,但程序长,占用存储空间大,执行慢; 汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。 无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。 目前很多公司将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如KEIL 集成软件。 一、汇编的方法 1.手工汇编: 人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。 2.机器汇编: 用计算机中的汇编程序对用户源
[单片机]
51单片机易错点
51单片机上电之后,引脚默认是高电平; 51单片机I/O口输出高电平时,接近VCC,可以按VCC来计算 while(表达式)。表达式不为0,即为真,那么执行语句,否则跳出while语句。 keil软件调试时,设置断点后,断点所在行不执行,达到就停止。 IIC先传送最高位; 串行通信先传送最低位;
[单片机]
51单片机驱动步进电机__终极(完整版)
在这里介绍一下用51单片机驱动步进电机的方法。 这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。 ;****************************************************************************** ;**********
[单片机]
51单片机STC89C52控制LED跑马灯左移(使用C51自带库_crol_()实现)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 #include intrins.h //C51自带库头文件 /*-----------------------函数声明区域---------------------------*/ void delay(unsigned int xms);//延时函数声明 /*-----------------------主函数区域-----------------------------*/ void main() { unsigned char i;/
[单片机]
51单片机-微调定时精确时间
1.定时器&蜂鸣器 一般定时器中断函数里的内容最好是能够快速地去执行完,比如只执行几条简单的语句,这样与主函数配合才会使程序更加高效。前期教学里,我们只使用定时器中断负责某个IO引脚间隔跳变或者使一个变量间隔自加1的简单语句。 比如我们现在要实现间隔50ms左右的时间让流水灯左右循环移动的同时,还需要无源蜂鸣器一直响,这样的功能,思路该怎么去思考? 首先我们知道无源蜂鸣器要想鸣叫的比较尖锐,那P1.6需要一个合适的脉冲信号,这个信号笔者打算使P1.6高低电平保持的时间为300微秒不断循环。 所以我们用定时器中断实现P1.6的电平间隔跳变,主函数里负责完成流水灯的任务即可。 2.代码 #include reg52
[单片机]
51单片机-指向数组的指针
在串口章节和液晶屏章节的部分代码中总是看到“ *str!='' ”和“ *str++ ”却一时难以理解意思,本节我们将简要讲解这两部分代码的含义,但前提需要大家有对指针方面的知识基础,建议先了解《手把手教你学51单片机》文档12.1节知识内容先。 1.代码解析 我们先定义一个数组“u8 LEDSET ={0x7E,0xBD,0xDB,0xE7};” 假设这四个元素的内存排布如下,5,6,7,8代表的是指向元素的指针。 每个数组初始化之后都会在最后那个元素内存的下一个内存分配有一个结束符的数据,“‘’”的ASCII码值就是0。 接着我们先把下面代码下载进开发板中观察现象 #include reg52.h #
[单片机]