51单片机学习之路
每天学习一点单片机,先从51开始,边听郭天祥的视频,边看是自学发现还可以。
昨天,只是熟悉下c51编程的基础,像我学了好几年的c语言就只用看看与标准c差别就行了,其实差别不是很大,会c语言的一些简单的语法完全够了。
由于没有板子,这里则是基于keil μVision5+Proteus模拟调试的- 首先装好这另两个软件,在前面已经提供了链接
keil μVision5an安装教程 Proteus安装教程
这里Proteus在后面画图是总是出现闪退 - 解决方法:
找到下面的文件 将他们全部复制到
将他们全部复制到C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\MODELS下
替换已存在的文件,闪退就可以解决来了。
- 安装完成
下面就开始写第一个单片机程序
-
新建工程
-
新建一个文件,并把它添加到工程中
Ctrl+N新建一个文件,并且保存为.c的后缀
选择刚才创建的test.c文件
-
可以写代码了
我这里的代码是控制6个数码管的循环点亮
-
使用Proteus仿真画电路图
接着一路点击Next到finish
-
画出你的电路图
-
将代码编译生成十六进制文件导入原理图中
-
运行效果
上述代码如下:
#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--);
}