目录
实验一:点亮一个Led
Led的介绍
其中Diode是二极管的意思
电阻读数方式
硬件电路:cpu通过配置控制的寄存器来控制我们的硬件电路,硬件电路来完成我们需要的功能
c语言程序需要从二进制转换成十六进制
keil中点亮一个led的程序(需要在主函数前插入头文件,右键即可插入)
在keil中选择创建文件程序,后续stc中需要用到,读入硬件中
再次点击build键,查看Build output信息 发现创建了一个 hex file
在stc-isp里面的操作
1.选择单片机型号
2.选择串口号
3.打开程序文件选择上面生成的keil的project文件 (hex后缀的文件)
完成以上步骤后选择左下角的下载/编程
接入单片机设备,打开power开关,可以看到单片机中LED模块里的D1被点亮了
stc中也会显示操作成功,显示单片机型号
对源程序修改,增加一个while循环(在单片机上的结果是一样的)
while(1)是会一直循环下去,除非遇到0,结束循环。
实验二:Led闪烁
新建一个project,实现led闪烁
这样的程序运行效果达不到我们所想的闪烁效果,频率太快了,需要在stc-isp中修改
按照图中的参数进行修改,最后选择复制代码回到keil中,复制子函数
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
到这一步编译会发现有错误,需要增加一个头文件
头文件如下
nop,汇编指令集里的空操作,可以用于延时功能
解决子函数中的错误后,在主函数中进行调用。
在stc中运行,发现led灯实现闪烁效果。
实验三:LED流水灯闪烁
keil中的程序
实现流水灯的部分改变了while循环的循环内容,其余部分与led闪烁的操作步骤相同。
通过stc运行可以达到流水闪烁的效果
实验四:LED流水灯plus
对延时函数进行修改,达到修改函数参数来修改函数的的延时时间间隔
c51数据类型
1.先在stc上生成一个延时为1ms的延时子函数
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
2. 在子函数中传入参数 (参数类型,参数名)
3.在main函数中调用子函数
通过改变子函数的参数,可以达到不同的延时效果,流水灯的延时可以多样化,且不需要重复改变参数来生成新的延时函数。
---------------------------------------------------------------------------------------------------------------------------------
学习来源:b站江协科技-51单片机入门教程