MCU-51:让LED闪烁起来

一、LED闪烁

昨天我们初识单片机,点亮了一个灯开启了我们51单片机的学习之旅。那么今天我们来一步步深入学习。

1.1 编写代码

会了点亮一个灯,那么闪烁应该就是一亮一灭循环,那代码应该如下

#include <REGX52.H>
void main()
{
	while(1)
	{
		P2=0xFE;
	  P2=0xFF;
	}
}

将以上代码进行编译并无问题。
但是将以上代码烧写到单片机,你会发现单片机LED灯一直长亮。
这是为什么?使我们的代码有问题吗?
其实不是,代码正确,只是单片机晶振频率是12MHz,是M哦,那么一秒会闪几万次,我们的肉眼根本看不到
所以要在程序中加入延时函数

1.2 延时函数

延时函数有两种方法:
第一种方法:通过STC内的工具实现
选择软件演技计算器进行代码生成
在这里插入图片描述
延时代码如下

void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

将以上代码加入到刚刚写的程序中

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	while(1)
	{
		P2=0xFE;
		Delay500ms();
	  P2=0xFF;
		Delay500ms();
	}
}

注意需要包含头文件

#include <INTRINS.H>

在while函数中进行调用

while(1)
	{
		P2=0xFE;
		Delay500ms();
	  P2=0xFF;
		Delay500ms();
	}

将以上代码编译烧进单片机,奇迹就出现了。

第二种方法:通过函数调用配合while语句实现

void delay(unsigned int i)
{
	while(i--);	
}

学过C语言的都知道什么意思,这里就不解释了
完整代码如下

#include <REGX52.H>
void delay(unsigned int i)			
{
	while(i--);	
}

void main()
{
	while(1)
	{
		P2=0xFE;
		delay(50000);
	  P2=0xFF;
		delay(50000);
	}
}

这是不是比第一种方法代码要简单的多,越简单,计算越快

1.3 由0和1控制实现

代码如下,每一行代码都有解释,这里不做解释

#include <reg52.h>			 //定义单片机的一些特殊功能寄存器
sbit led=P2^0;				//定义指定LED灯的管脚
 
void delay(unsigned int i)			//延时函数。unsigned int定义无符号整型,范围0-655535
{
	while(i--);	//i=1时,大约延时10us
}
 
void main()       //主函数,程序从这里开始执行
{
	while(1)
	{
		led=0;        //0表示低电平,共阳极二极管点亮
		delay(50000); //大约延时450ms
		led=1;        //1表示高电平,LED熄灭
		delay(50000); //大约延时450ms	
	}		
}

二、LED流水灯

2.1 流水灯基础版

8个LED灯的定义,以共阳极为例,让某一个灯点亮就是让这个LED灯为低电平。从左到右依次为01111111、10111111、11011111、11101111、11110111、11111011、11111101、11111110。其中1就是高电平、0位低电平,为低电平时LED点亮。
代码如下

#include <reg52.h>			 //定义单片机的一些特殊功能寄存器
 
sbit led1=P2^0;				//定义指定LED灯的管脚
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
 
void delay(unsigned int i)			//延时函数。unsigned int定义无符号整型,范围0-655535
{
	while(i--);	//i=1时,大约延时10us
}
 
void main()       //主函数,程序从这里开始执行
{
	while(1)
	{
		led1=0;        //0表示低电平,led1点亮
		delay(5000); 
		led1=1;        //1表示高电平,led1熄灭
		delay(5000); 	
		led2=0;        //0表示低电平,led2点亮
		delay(5000); 
		led2=1;        //1表示高电平,LED2熄灭
		delay(5000); 	
		led3=0;        //0表示低电平,LED3点亮
		delay(5000); 
		led3=1;        //1表示高电平,LED3熄灭
		delay(5000); 	
		led4=0;        //0表示低电平,LED4点亮
		delay(5000); 
		led4=1;        //1表示高电平,LED4熄灭
		delay(5000); 	
		led5=0;        //0表示低电平,LED5点亮
		delay(5000); 
		led5=1;        //1表示高电平,LED5熄灭
		delay(5000);	
		led6=0;        //0表示低电平,LED6点亮
		delay(5000); 
		led6=1;        //1表示高电平,LED6熄灭
		delay(5000); 
		led7=0;        //0表示低电平,LED7点亮
		delay(5000); 
		led7=1;        //1表示高电平,LED7熄灭
		delay(5000); 	
		led8=0;        //0表示低电平,LED8点亮
		delay(5000); 
		led8=1;        //1表示高电平,LED8熄灭
		delay(5000); 	
	}		
}

最基础最原始的流水灯方式,就是单纯让LED按照顺序依次点亮,从而达到流水灯的效果,看似笨拙、程序繁多,却突出流水灯的思想和原理,为后面库函数、左移右移、数组索引法奠定基础。

2.2 移位法实现LED流水灯

从左开始循环

#include <reg51.h>
 
void delay(unsigned int i)   //延时函数
{
    while(i--);
}
 
void main(void)   //主函数,程序从这里开始执行
 {
     int j;   //引入变量,定义字符
     while(1)
    {
        P2=0xfe;   //即11111110,将8个LED的状态赋值给P2
        delay(50000);
	for(j=0;j<8;j++)  //循环8次,因为有8个LED灯
         {
            P2=P2<<1 | 0x01; //实现程序左移1位,或运算,有1为1,全0为0
            delay(50000);
         }
     }
 }

那么右循环就是与上面相反

#include <reg51.h>
 
void delay(unsigned int i)   //延时函数
{
    while(i--);
}
 
void main(void)   //主函数,程序从这里开始执行
 {
     int j;   //定义字符
     while(1)
    {
        P2=0x7f;   //即01111111,将8个LED的状态赋值给P2
        delay(50000);
	for(j=0;j<8;j++)  //循环8次,因为有8个LED灯
         {    
            P2=P2>>1 | 0x80; //实现程序右移1位,或运算,有1为1,全0为0
            delay(50000);
         }
     }
 }

还有其他方法可以实现流水灯,小伙伴们自己探索吧

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
概述车载环境参数采集终端基于STM32H750 系列芯片(RT-ART-PI开发板)开发,支持采集多种环境参数,包括车内温度,湿度,气压,噪音,有毒有害气体,车辆震动冲击加速度等。本地通过串口与 PC 端通讯,上位机实时显示并存储数据。该系统适用于记录车辆的行驶车况及车内的环境参数等。 开发环境硬件:STM32H750-RT-ART-Pi开发板 扩展板:博士BME280温湿度气压三合一传感器扩展板、ADI ADXL375扩展板、精讯畅通CO、NH3有害气体模组、噪声板卡等。 RT-Thread版本:RT-Thread V 4.0.2 开发工具及版本:RT-Thread-Studio RT-Thread使用情况概述内核部分:调度器,信号量,线程,中断,设备。 调度器:创建多个线程来实现不同的工作。 信号量:用来同步线程和资源分配。 SPI框架:使用 SPI 框架来驱动ADXL375。 I2C框架:使用 I2C 框架来驱动BME280。 串口驱动框架:使用串口框架来采集CO浓度,NH3浓度和噪音分贝。 设备:使用了SPI总线,SPI设备,uart,I2C总线等。 硬件框架软件框架 MCU 上电之后初始化外设接口和传感器工作参数配置,之后会持续获取传感器采样值并通过串口以50Hz的速率发送数据到上位机。 软件模块说明设备: UART: uart1、uart4 SPI:SPI2总线,SPI20设备(ADXL375) I2C: I2C4 PIN:GPIOI8、GPIOC15、GPIOD13、GPIOH4 线程: 1、LED_Blink:LED闪烁线程,用来指示当前系统的运行状态,输出数据时蓝闪烁,否则红闪烁。 2、Print_Task: 通过串口4将采集到的数据以50Hz频率、字符形式上传至PC端。 3、Noise_Task: 通过串口1以5Hz的速率读取噪音分贝。 4、NH3_Task: 通过串口1以2Hz的速率读取NH3气体浓度。 5、CO_Task: 通过串口1以2Hz的速率读取CO气体浓度。 6、BMP280_Task: 通过I2C4读取读取温度、湿度、气压等原始数据并转换为实际数值。 7、ADXL375_Task: 通过SPI2总线读取加速度数值,加速度采样频率为3200Hz,并记录20ms内绝对最大值。 8、button_Task: 读取GPIOH4电平,低电平输出数据,高电平停止输出。 信号量: 1、water_mark_sem: ADXL375水印中断,通过GPIOD13中断输入,用来同步ADXL375_Task线程及时从器件FIFO中读取样本。 2、serial1_sem:用来指示串口1可用状况,线程CO_Task、NH3_Task、Noise_Task会先获取此信号量,只有获取到之后才能使用串口1,并在使用完之后释放此信号量。此信号量用来避免串口访问冲突。 3、serial1_tx_sem: 串口1通过中断模式发送数据,此信号指示数据发送完成。 4、serial1_rx_sem:串口1通过中断模式接收数据,此信号指示数据接收完成。 演示效果比赛感悟非常感谢主办方提供的这次契机,让我有幸一窥当下MCU发展的主流趋势。通过学习RT-Thread,我学到了很多很多以前从未接触到的概念,编程思想等等,让我对MCU编程有了全新的认识。尤其是其对象的概念,让我对嵌入式编程有了全新的理解。在此之前我还在裸机,寄存器,外设,驱动包等等之间徘徊,深陷其中不能自拔。偶然有幸接触到RT-Thread,让我醍醐灌顶。原来还有这样骚操作。 遥想大学还在玩51,毕业之后种种原因并未从事单片机嵌入式方向的工作。转眼间五六年过去,去年重拾MCU,又误入AVR mage64系列(手动狗头)。当真正开始学习STM32系列单片机系列之后,和寄存器大眼瞪小眼,外设五花八门,标准库,HAL库等等资料多到眼花缭乱,各种参考资料久久不得啃下,自学之路崎岖又坎坷。此次大赛有幸初次相识RT-thread,一见方恨晚。 时代的发展,MCU的性能也越来越强,万物互联的需求也愈加强烈,使用RTOS来实现物与网的链接,是时代发展的潮流。接下来的嵌入式开发里紧绕RT-Thread这颗大树,汲取难得的养料。 最后感谢主办方提供了这么好的一个平台,不仅能展示自我,也能学到很多知识,还要感谢论坛上那些解决我问题以及制作软件包的大佬,希望有朝一日我也能给开源社区贡献一份自己力量。
300个C51单片机设计proteus仿真源码软件源码: 100000秒以内的计时程序 10秒的秒表 12864LCD图形滚动演示 128X64LED 160128LCD图文演示 1602字符液晶滚动演示程序 1602液晶显示的DS1302实时时钟 16×16点阵(滚动显示) 16×16点阵2(滚动显示) 2io5键盘模拟音量数码管显示 2×20串行字符液晶演示 32x16汉字 44行列键盘 485全双工通信 4×4键盘矩阵控制条形LED显示 4个独立式按键控制LED开关 4个独立式按键控制LED移位 4只数码管滚动显示0~3 555可调PWM发生器 555的应用 6264扩展内存 6个16×16点阵 74HC154译码器应用 74HC595 74HC595串入并出芯片应用 74LS138译码器应用 74LS148扩展中断 8051双机通信简例 8255并行口扩展实例 89C51PWM 8x8LED汉字显示 8x8点阵做的贪吃蛇游戏 8×8LED点阵屏显示数字 8只数码管同时显示不同字符 8只数码管显示多个不同字符 8只数码管滚动显示8~F 8只数码管滚动显示单个数字 8只数码管滚动显示数字串 8只数码管闪烁显示 8通道自动温度检测系统仿真(含原程序) ADC0808 PWM实验 ADC0809模数转换与显示 ADC0832模数转换与显示 AT89C51对直流电动机的驱动 AVR_Uart BCD译码数码管显示数字 c51 可预设电压的数控电源(功能强大) clock Conter CPU控制的独立式键盘扫描实验 da、ad。液晶,传递函数模型综合应用的实例 DIY51式数控电源 DS1621温度传感器实验 ds18b20 DS18B20温度传感器实验 DS18B20温度检测及其液晶显示 HorseLight I2C IIC-24C04与数码管 IIC-24C04与蜂鸣器 INT0与INT1中断计数 INT0中断3位计数 INT0及INT1中断计数 INT0和INT1控制条形LED INT1中断5位计数 IO并行口直接驱动单个数码管 K1-K4 分组控制LED K1-K4 控制LED移位 K1-K4 控制数码管加减演示 K1-K4 控制数码管移位显示 K1-K4 键状态显示 key_lcd ks0108 液晶12864 LCD频率计仿真 LED代码查询V1[1].1 LED模拟交通 LED闪烁 M16_AN_Compare M16_EEPROM M16_Horse MAX7221控制数码管动态显示 my16key_c NT0中断控制LED NT0中断计数 NumberDisplay P3口流水 PCF8574 PCF8583+LCD1602 PCF8591模数与数模转换实验 proteus ADDC的练习程序 PWM PWMLED PWM控制LED的亮度仿真程序 PWM控制马达的方法 PWM波输出(可调) PWM电机正反转 pwm程序实例 PWM调温 RAM扩展练习 sscom32串口调试 TIMER0与TIMER1控制条形LED TIMER0控制LED二进制计数 TIMER0控制单只LED闪烁 TIMER0控制四只LED滚动闪烁 TIMER0控制流水 ULN2803 usart_t 《lcd1602仿真实例》 一个数控直流稳压电源 一个步进电机的仿真 一步一步教你51_PC串口通信 万能逻辑电路实验 三机通讯 串口仿真mcu_pc 串口方式1 串行数据转换为并行数据 交通 从左到右的流水 光藕隔离驱动电机 内部函数intrins.h应用举例 净水控制器仿真电路 刚做好的十个字的led屏模拟有程序 包含单片机寄存器的头文件 单只按键控制单只数码管滚动显示 单只数码管循环显示0-9 单只数码管循环显示0~F 单片机与PC机串口通讯仿真 单片机之间双向通信 单片机向PC发送数据 单片机向主机发送字符串 单片机接收PC发出的数据 单片机控制的电动自行车驱动系统 单片机数据发送程序 发一个用定时器做的PWM 基于1602+ds12b80+ds1302+音乐+电子书+流水的多功能电子表 基于ADC0832的数字电压表 基于AT24C02的多机通信 基于AT89C51+MAX7219的频率计 附带proteus仿真电路图 实际硬件电路测试通过 基于DS1302的日历时钟 基于yjwpm测试过的DS18B20仿真实例 多功能电子钟 多点温度测量 多路开关状态指示 大屏幕仿真 子电路做的一个H型电机驱动电路 字符串函数string.h应用举例 字符函数ctype.h应用举例 宏定义应用举例 定时器中断控制的独立式键盘扫描实验 定时器控制交通指示 定时器控制数码动态显示 定时器控制数码管动管显示 对I2C总线上挂接多个AT24C0
湖南人文科技学院 课程设计报告 课程设计: 单片机课程设计 设计题目: 自动打铃系统 系 别: 通信与操纵工程系 专 业: 电子信息工程 班 级: 学生姓名: 学 号: 起止日期: 指导教师: 教研室主任: 基于51单片机的自动打铃系统课程设计全文共13页,当前为第1页。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第1页。 指导教师评语: 指导教师签名: 年 月 日 成绩评定 项 目 权重 成绩 1、设计过程中出勤、学习态度等方面 2、课程设计质量与答辩 3、设计报告书写及图纸规范程度 总 成 绩 教研室审核意见: 教研室主任签字: 年 月 日 教学系审核意见: 主任签字: 年 月 日 基于51单片机的自动打铃系统课程设计全文共13页,当前为第2页。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第2页。 摘 要 单片机确实是微操纵器,是面向应用对象设计、突出操纵功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就能够够组成单片机应用系统。将它嵌入到形形色色的应用系统中,就组成了众多产品、设备的智能化核心。本设计确实是应用单片机壮大的操纵功能制作而成的闪烁LED,该设计包括以下几点功能:实现24小时制电子钟,6为数码管显示,显示时分,显示格式为A/P 12—00,打铃时刻为早:7:30 ,晚:10:30;系统利用2只按键,一个用于调整分钟,一个为小时调整。 本设计采纳的是STC89C52单片机,该单片机采纳的MCU51内核,因此具有专门好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序加倍方便。显示器件采纳通用型七段共阴极数码管;键盘调整部份采纳的是独立键盘。通过这次设计能够加倍牢固的把握单片机的应用技术,增强动手能力、硬件设计能力和软件设计能力。 关键字:单片机;电子钟;打铃;晶振;数码管;按键 基于51单片机的自动打铃系统课程设计全文共13页,当前为第3页。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第3页。 目 录 第一章 方案论证设计 1 1.1 设计的应用意义 1 1.2 设计方案选择 1 1.3 整体设计框图 2 第2章 硬件电路设计 2 2.1单元电路设计与原理分析 2 元件的参数及操纵器 3 2.3显示电路设计 3 第三章 程序设计 4 程序流程图 4 源程序清单 6 附录1:整体电路原理图 13 附录2:元件清单 15 基于51单片机的自动打铃系统课程设计全文共13页,当前为第4页。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第4页。 基于STC89C52单片机操纵的自动打铃系统 第一章 方案论证设计 1.1 设计的应用意义 "单片机与接口技术"课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的小型单片机系统,并在实践的大体技术方面进行一次系统的训练。 能够较全面地巩固和应用"单片机"课程中所学的大体理论和大体方式,并初步把握小型单片机系统设计的大体方式。 培育独立试探、独立搜集资料、独立设计规定功能的单片机系统的能力;培育分析、总结及撰写技术报告的能力。 1.2 设计方案选择 设计课题简要概述 自动打铃装置用于工厂,学校等地的时刻操纵,本设计是依照学校作息时刻设定的,模拟了电子钟显示时,分。还依照学校的作息时刻按时打铃,本系统有两个按钮,别离用来调时,周分,以保证时钟与标准时刻相吻合。 第一设计出本系统的硬件大体框图,依照框图设计电气原理图,简要概述大体原理,依照设计技术参数设计出各部份程序。 系统软硬件划分 由于要依据最小系统设计,因此,极大地节约系统的硬件本钱,所有能用软件实现的功能都用软件完成,如按键的去抖,采纳延时,显示部份用动态显示等,如此硬件部份的设计能够采纳单片机最小系统,所谓最小系统是仅有程序存储器和时钟及复位电路的为时过早片机系统。 单片机选型 依照课题的具体内容,任务要求,计时,校时,按时,键盘显示等功能,经多方考虑,因此本系统选项用与MCS——51系统单片机完全兼容的STC89C52低功耗单片机。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第5页。 基于51单片机的自动打铃系统课程设计全文共13页,当前为第5页。 1.3 整体设计框图 电源显示电路STC89C52CPU键盘电路驱动电路电铃 电源 显示电路 STC89C52 CPU 键盘电路 驱动电路 电铃 第2章 硬件电路设计 2.1单元电路设计与原理分析 ㈠大体原理概述 本系统要紧由主控模块,时钟模块,显示模块,键盘接口模块等4部份组成。通过内部按时产生中断,从而驱动电铃打铃。设定51单片机工作在按时器工作方式1,每2
51单片机基础应用设计C语言实例源码仿真300个合集: 100000秒以内的计时程序 10秒的秒表 12864LCD图形滚动演示 128X64LED 160128LCD图文演示 1602字符液晶滚动演示程序 1602液晶显示的DS1302实时时钟 16×16点阵(滚动显示) 16×16点阵2(滚动显示) 2io5键盘模拟音量数码管显示 2×20串行字符液晶演示 32x16汉字 44行列键盘 485全双工通信 4×4键盘矩阵控制条形LED显示 4个独立式按键控制LED开关 4个独立式按键控制LED移位 4只数码管滚动显示0~3 555可调PWM发生器 555的应用 6264扩展内存 6个16×16点阵 74HC154译码器应用 74HC595 74HC595串入并出芯片应用 74LS138译码器应用 74LS148扩展中断 8051双机通信简例 8255并行口扩展实例 89C51PWM 8x8LED汉字显示 8x8点阵做的贪吃蛇游戏 8×8LED点阵屏显示数字 8只数码管同时显示不同字符 8只数码管显示多个不同字符 8只数码管滚动显示8~F 8只数码管滚动显示单个数字 8只数码管滚动显示数字串 8只数码管闪烁显示 8通道自动温度检测系统仿真(含原程序) ADC0808 PWM实验 ADC0809模数转换与显示 ADC0832模数转换与显示 AT89C51对直流电动机的驱动 AVR_Uart BCD译码数码管显示数字 c51 可预设电压的数控电源(功能强大) clock Conter CPU控制的独立式键盘扫描实验 da、ad。液晶,传递函数模型综合应用的实例 DIY51式数控电源 DS1621温度传感器实验 ds18b20 DS18B20温度传感器实验 DS18B20温度检测及其液晶显示 HorseLight I2C IIC-24C04与数码管 IIC-24C04与蜂鸣器 INT0与INT1中断计数 INT0中断3位计数 INT0及INT1中断计数 INT0和INT1控制条形LED INT1中断5位计数 IO并行口直接驱动单个数码管 K1-K4 分组控制LED K1-K4 控制LED移位 K1-K4 控制数码管加减演示 K1-K4 控制数码管移位显示 K1-K4 键状态显示 key_lcd ks0108 液晶12864 LCD频率计仿真 LED代码查询V1[1].1 LED模拟交通 LED闪烁 M16_AN_Compare M16_EEPROM M16_Horse MAX7221控制数码管动态显示 my16key_c NT0中断控制LED NT0中断计数 NumberDisplay P3口流水 PCF8574 PCF8583+LCD1602 PCF8591模数与数模转换实验 proteus ADDC的练习程序 PWM PWMLED PWM控制LED的亮度仿真程序 PWM控制马达的方法 PWM波输出(可调) PWM电机正反转 pwm程序实例 PWM调温 RAM扩展练习 sscom32串口调试 TIMER0与TIMER1控制条形LED TIMER0控制LED二进制计数 TIMER0控制单只LED闪烁 TIMER0控制四只LED滚动闪烁 TIMER0控制流水 ULN2803 usart_t 《lcd1602仿真实例》 一个数控直流稳压电源 一个步进电机的仿真 一步一步教你51_PC串口通信 万能逻辑电路实验 三机通讯 串口仿真mcu_pc 串口方式1 串行数据转换为并行数据 交通 从左到右的流水 光藕隔离驱动电机 内部函数intrins.h应用举例 净水控制器仿真电路 刚做好的十个字的led屏模拟有程序 包含单片机寄存器的头文件 单只按键控制单只数码管滚动显示 单只数码管循环显示0-9 单只数码管循环显示0~F 单片机与PC机串口通讯仿真 单片机之间双向通信 单片机向PC发送数据 单片机向主机发送字符串 单片机接收PC发出的数据 单片机控制的电动自行车驱动系统 单片机数据发送程序 发一个用定时器做的PWM 基于1602+ds12b80+ds1302+音乐+电子书+流水的多功能电子表 基于ADC0832的数字电压表 基于AT24C02的多机通信 基于AT89C51+MAX7219的频率计 附带proteus仿真电路图 实际硬件电路测试通过 基于DS1302的日历时钟 基于yjwpm测试过的DS18B20仿真实例 多功能电子钟 多点温度测量 多路开关状态指示 大屏幕仿真 子电路做的一个H型电机驱动电路 字符串函数string.h应用举例 字符函数ctype.h应用举例 宏定义应用举例 定时器中断控制的独立式键盘扫描实验 定时器控制交通指示 定时器控制数码动态显示 定时器控制数码管动管显示 对I2C总线上挂接多个AT24C02
专业课课程设计 题 目: 基于单片机的跑马控制器设计 院系名称: 电气工程学院 专业班级:电气F1105 学生姓名: 学 号:20112391 指导教师: 邵 教师职称: 目 录 1 课题简介 3 1.1课题研究背景 3 1.2 国内外研究现状 4 1.3 本课题研究内容 4 2 系统总体设计方案 5 2.1 设计方案论证 5 2.2 系统结构及主要参数确定 5 3 软硬件电路设计与调试 8 3.1 硬件电路设计 8 3.1.1 基本原理 9 3.2 软件电路设计 10 3.3 软硬件电路调试 13 3.4 调试结果分析 13 结论 13 参 考 文 献 14 附录 15 绪论 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。单片机是嵌入式系 统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解 决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工 具的发展,基于SoC的单片机应用系统设计有较大的发展。因此,对单片机的理解可以从 单片微型计算机、单片微控制器延伸到单片应用系统。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。 导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化 过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统 ,录象机、摄象机,以及程控玩具等等,这些都离不开单片机单片机最小系统是在以MCS- 52单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态 简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产 品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点 ,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器 件,尤其是在日常生活中发挥的作用也越来越大。本毕业设计主要在STC89C52RC单片机 上扩展I/O口,复位电路,晶振电路,LED显示电路,数码管显示电路,蜂鸣器电路。适 合于我们学生用于单片机的学习掌握和一些各种科研立项等的需求。因此,研究单片机 最小系统有很大的实用意义。 1 课题简介 1.1课题研究背景 由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家 相继推出了各种类型的单片机,在单片机家族的众多成员中MCS- 52系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工 业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。目前,可用 于MCS- 52系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善, 因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。 1.2 国内外研究现状 单片机的技术进步反映在内部结构、功率消耗、外部电压等级以及制造工艺上。在这几 方面,较为典型地说明了数字单片机的水平。在目前,用户对单片机的需要越来越多, 但是,要求也越来越高。在单片机应用中,可靠性是首要因素为了扩大单片机的应用范 围和领域,提高单片机自身的可靠性是一种有效方法。近年来,单片机的生产厂家在单 片机设计上采用了各种提高可靠性的新技术:EFT(Ellectrical Fast Transient)技术 ,低噪声布线技术及驱动技术,采用低频时钟。同时单片机在目前的发展形势下还表现 出可靠性及应用越来越水平高和互联网连接,所集成的部件越来越多,功耗越来越低和 模拟电路结合越来越多等发展趋势。 1.3 本课题研究内容 本设计选择采用AT89C51单片机为核心。AT89C51是一个低电压、高性能CMOS8位单片 机带有K字节的可反复擦写的程序存储器。和128字节的存取数据存储器RAM,这种器件采 用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS- 51系列的单片机兼容。片内含有8位 中央处理器和闪烁存储单位,有较强的功能的AT89C51单片机能够被应用到控制领域中 AT89C51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,3 2个I/O口,2个16位定时/计数器,1个 5向量两级中断结构,1个串行通信口,片内振荡器和时钟电路。另外,AT89C51还可以进 行OHZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作, 能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方 式保存随机存取数据存储器中的内容,但振荡器停止工作并禁止其它所有部件的工作直 到下一个复位。 选择采用AT89C51单片机为核心,使用简单的程序实现跑马显示效果设计。 2 系统总体设计方案 2.1 设计方案论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello xiǎo lěi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值