51单片机学习

51单片机学习之路

每天学习一点单片机,先从51开始,边听郭天祥的视频,边看是自学发现还可以。

昨天,只是熟悉下c51编程的基础,像我学了好几年的c语言就只用看看与标准c差别就行了,其实差别不是很大,会c语言的一些简单的语法完全够了。

由于没有板子,这里则是基于keil μVision5+Proteus模拟调试的

安装1.png
将他们全部复制到C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\MODELS
安装2.png
替换已存在的文件,闪退就可以解决来了。

  • 安装完成

    https://ws1.sinaimg.cn/large/006p97Wqgy1gaf0hhn2dcj308c04fweh.jpg
下面就开始写第一个单片机程序
  • 新建工程

c512.png

c514.png

  • 新建一个文件,并把它添加到工程中

Ctrl+N新建一个文件,并且保存为.c的后缀
https://ws1.sinaimg.cn/large/006p97Wqgy1gaf12wy7n1j30l00fj75z.jpg

选择刚才创建的test.c文件
c516.png

  • 可以写代码了

c517.png




我这里的代码是控制6个数码管的循环点亮

  • 使用Proteus仿真画电路图

c518.png

c519.png




接着一路点击Next到finish
c5110.png

  • 画出你的电路图

c5111.png

  • 将代码编译生成十六进制文件导入原理图中

c5112.png

c5113.png

  • 运行效果

demo_1.gif

上述代码如下:

#include<red52.h>
#define uint unsigned int 
#define uchar unsigned char 

sbit wei = P2^7;    //位选
sbit duan = P2^6;   //段选

uchar code table[]={0x3f, 0x06, 0x5b, 0x4f,
	               /*0*/ /*1*/ /*2*/ /*3*/
					0x66, 0x6d, 0x7d, 0x07,
	               /*4*/ /*5*/ /*6*/ /*7*/
					0x7f, 0x6f, 0x77, 0x7c,
	               /*8*/ /*9*/ /*A*/ /*b*/
					0x39, 0x5e, 0x79, 0x71
                   /*C*/ /*d*/ /*E*/ /*F*/};  //字符0~f table表
uchar num;
uchar i;

void delay(uint z);

int main(void)
{
	uchar count = 0;
	uchar flag = 0x01;  
	while(1)
	{
		wei = 1;
		P0 = ~flag;
		wei = 0; 
		for(num = 0; num < 16; num++)
		{
			duan = 1;
			P0 = table[num];
			duan = 0;
			delay(100);
		}
		flag = flag << 1;
		count++;
		if(count >= 6)
		{
			flag = 0x01;
			count = 0;
		}
	}

}

void delay(uint z)  //延迟
{
	uint x, y;
	for(x=z; x>0; x--)
		for(y=110; y>0; y--);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值