跟着冲哥学习32位8051单片机原理及C语言程序设计
10.25认识单片机
处于项目需要,接触了stc15w408s芯片,现来学习,争取触类旁通,会用stc芯片完成项目
二、了解硬件,跟着冲哥的脚步一点点的向我所需要实现的项目功能靠近 三、开发环境搭建和程序下载
跟着视频创建个项目 10.28
四、基础中的基础,就好像学任何高级编程语言都要首先编写一个“Hello word”程序一样,通过这个程序可以了验证整个编译环境配置是否正确、编译软件的使用、下载软件的使用,了解编写调试程序的基本方法和步骤,初学者必须掌握好该节课的内容。 五、
第五集
一、C语言的printf函数实现
主函数中添加
if(DeviceState !=DEVSTATE_CONFIGURED) //判断USB是否连接成功
continue;
if(bUsbOutReady)
{
usb_OUT_done(); //接收应答(固定格式)
printf("室内温度:%.2f\r\n",11.2);
}
这个功能可以用在程序调试时输出观察的变量数值
二、数的进制
初学着必须掌握2进制以及在芯片中的作用,熟练掌握2进制、16进制、10进制之间的相互转换。
10进制x转n进制的方法为:
x/n取余得b商a,n进制的各位数为b,再将a重复此步骤。
如19进制431转16进制
结果16进制数为1AF
在明白转换算法原理后,可利用计算器的programmer(程序设计员)模式进行转换。并学会求模、求余的计算。
第六集
函数的使用
在模块化编程里,函数使用分为如下三步:
1:函数定义
返回值 函数名称(入口参数)
{
函数要执行的功能;
return 返回值;(无返回值可不写)
}
@返回值:没有返回值就是 void
@函数名称:避开关键词,不重复,非特殊字符随便取
@入口参数:类型 + 名称,多个参数“,“分开,空就写 void
2.函数声明
返回值函数名称(入口参数);
3.函数调用
函数名称(入口参数):
三、新建文件,使用模块化编程
新建 xxx.c 和 xxx.h 文件,代表一个功能块。
xxx.h 格式:
#ifndef __XXX_H
#define __XXX_H
调用头文件
函数声明...
#endif
xxx.c 格式
#include"xxx.h"
函数定义
添加文件定定要记得引用路径和添加到工程里。 第七集
按键点灯
提示:
选中一列代码:Alt+Shift+按下鼠标左键移动选择要复制的列。
一定要记住整个程序是在一个大循环中进行
左移(<<)最低位补1的方法: x=(x<<1)+1;
1、按键的代码实现过程
按下按键就执行
if(KEY == 0)
{
Delay_ms(10);
if(KEY ==0)
{
执行功能
}
}
按键松手后再执行
if(KEY == 0)
{
Delay_ms(10);
if(KEY ==0)
{
while(KEY==0); //松手检测
执行功能
}
}
按键编程消抖是关键,一种方法是用延时软件达到消抖。
2、数组的使用
数组使用分为如下两步:
1.定义
类型名称[长度]={数值};
例如:
usigned char x={23,43,41};
2.使用
赋值:名称[索引]= 数值
调用:名称[索引]
索引从0开始
八、
本集是对键盘、LED、蜂鸣器的综合应用,并阐述了怎样根据需求进行编程设计-先理清思路,再回过头来写代码。独立完整的完成本集示例是对前面几集知识很好的巩固。
第九集
1、电子表格常用不同进制间转换函数
16进制转10进制:HEX2DEC
16进制转2进制:HEX2BIN
10进制转16进制:DEC2HEX
10进制转2进制:DEC2BIN
2进制转16进制:BIN2HEX
2进制转10进制:BIN2DEC
2、文件名用中文名有时编译会出错。
数码管的静态使用
数码管分为共阴极和共阳极,型号尾缀A表示共阳极,K表示共阴极。
1、 共阳极数码管显示数字对应的段码
10进制段码数组 {192,249,164,176,153,146,130,248,128,144}
16进制段码数组 {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}
2、共阴极数码管显示数字对应的段码
10进制段码数组 {63,6,91,79,102,109,125,7,127,111}
16进制段码数组 {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
共阳和共阴数码管断码是相互按位取反的关系
3、点亮一个数码管,单片机需要输出位选和段码数据。 第十集
数码管动态刷新的原理
需要注意每个延时不能太短,我们这边程序就以 1ms 为准,且需要保证总共一个循环结束的时间不能大于 20ms,因为人眼的视觉不容易分辨出50HZ 以上的动态刷新。
需要一个位码数组(或使用_crol_()函数)
十进制位码数组 {127,191,223,239,247,251,253,254}
二进制位码数组 {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}
包含小数点的16进制段码数组 {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}
例如:如果取3的断码数组下标为3,如果取3加小数点的断码下标13。
再建一个显示每位显示内容的数组。
重复的代码段我们可以将其定义为一个函数。