您当前的位置: 首页 >  单片机

C51单片机兴趣班课件之课前基本知识补充

发布时间:2019-09-01 20:12:09 ,浏览量:6

  • p.1 开发环境搭建

https://pan.baidu.com/s/1bBUV3k3kw2WTg7sNGkLdXw

提取码是:idi8

https://pan.baidu.com/s/1gzIDCsBubfAMue-sH18LAQ

提取码是:io17

•双击proteus8.8.SP1.exe安装,选择Use a

 locally installed license key, 点击browse去选

择Licence.lxk安装,最后运行Patch.exe完成破解

•双击c51v959.exe安装keil,完成安装后打开keil,

选择file菜单,点License Mangement,将CID中对

应的号码复制下来,然后双击注册机.exe,粘贴CID到注册机,Target选C51,点Generate产生破

解码,最后将破解码复制到keil的LIC后面,点LIC完成破解

双击SETUP.EXE安装USB驱动

  • p.2电子元器件功能简介

  • p.3常用电平标准
  1. TTL全名:Transistor-Transistor Logic三极管结构。Vcc:5V;VOH>=2.4V;VOL<=0.5V;VIH>=2V;VIL<=0.8V。
  2. 3.3V LVTTL: Vcc:3.3V;VOH>=2.4V;VOL<=0.4V;VIH>=2V;VIL<=0.8V。
  3. 2.5V LVTTL: Vcc:2.5V;VOH>=2.0V;VOL<=0.2V;VIH>=1.7V;VIL<=0.7V。
  4. CMOS全名:Complementary Metal Oxide Semiconductor(PMOS+NMOS)Vcc:5V;VOH>=4.45V;VOL<=0.5V;VIH>=3.5V;VIL<=1.5V
  5. 3.3V LVCMOS:Vcc:3.3V;VOH>=3.2V;VOL<=0.1V;VIH>=2.0V;VIL<=0.7V。
  6. 2.5V LVCMOS:Vcc:2.5V;VOH>=2V;VOL<=0.1V;VIH>=1.7V;VIL<=0.7V。
  7. RS232电平:计算机的串口(负逻辑体系)

     高 -12V     低+12V

  • p.4 C51框架介绍

  • p.5 开发板套件介绍

  • p.6 点亮一个LED灯

#include   //引用单片机头文件

void main(void)    //主函数,程序的入口
{	
	P0 = 1;   // 0000 0001,将P0.0引脚输出高电平
	while(1)   //无限循环
	{
			
	}
}

•P0口是可以位寻址的,即可以单独操作某个位

•C-51的数据类型扩充定义

•sfr:特殊功能寄存器声明

•sfr16:sfr的16位数据声明

•sbit:特殊功能位声明

•bit:位变量声明

例如:sbit led = P0^0;

led特殊功能位变量将与P0口的第0脚关联上了,操作led就可以操作P0.0引脚的状态

#include   //引用单片机头文件
sbit led = P0^0;     // led的取值范围为0,1两个值
void main(void)    //主函数,程序的入口
{	
	led = 1;   // 1,将P0.0引脚输出高电平
		     // 相当于 P0 = P0 | 1;
	while(1)   //无限循环
	{		
	}
}

•在51单片机中,1个机器周期等于12个振荡周期,则在计算定时时间t时

   计数值N乘以机器周期Tcy就是定时时间t

使用机器周期实现硬延时

void delayMills(unsigned int ms)
{
	unsigned char i,j;
	for(j=ms; j>0; j--)	{
		for(i=100;i>0;i--);    //空操作等待实现延时
	}
}
  • 程序结构:

•前后台程序架构的优缺点

优点----简洁,明了,新手的上手速度很快,特别是专注用来做一件事情的时候,一个while循环基本是无敌的,

只要维护好后台与前台之间的关联就可以。

缺点--软件规模大了,很难管理。处理的模块一多的话,实时性也根本难以保障

所以,硬延时对系统的响应影响非常大,建议在前台线程中少用硬延时,改用定时器软延时,上例中的闪烁灯

使用了硬延时,如果还有其它功能模块,这将严重会影响其它模块得到的执行时间,之后会用定时器解决此问题。

如果对于延时精度不高的情况下,计数的形式实现,每执行一次函数调用进行一次计数,一直计数到0进行LED灯翻转,计数值恢复到设定的值,周而复始,LED就会闪烁
void LED_delay(unsigned int i) {
	static unsigned int ms = 0;
	if(ms-- == 0) 	{
		ms = i;
		P3 ^= 0X1;
	}
}
  • P1,P2,P3口IO结构介绍

关注
打赏
1688896170
查看更多评论

暂无认证

  • 6浏览

    0关注

    105695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0503s