第四集 建立工程点亮第一颗LED上
摘要:
1. LED点亮原理
2. 新建工程
3. 点亮第一个LED
4. 实现自动下载工程
详细操作步骤:
1. LED点亮原理
1.1. LED二极管的简单实验:手动通过导线将电池正极、负极分别与二极管正极、负极连接,二极管点亮。揭示了二极管工作的本质(正负极绝对电压值的差值达到二极管导通阈值)。在二极管正负极两端,分别接直流电压表,清楚显示2个电压值,由此计算出二极管两端差值,在二极管导通阈值范围内点亮,如果未达到不能导通就不能点亮,超过则有可被击穿而烧毁。
1.2. 单片机系统,二极管的负极连接的单片机GPIO端口,输出低电平,二极管的正极通过三极管连接VCC电源(通常+5v左右),此三极管基极连接单片机端口,输出低电平,二极管灯泡会通电发光。
1.3. 通过二进制0和1直接控制某一个端口,如P3.2=1。也可以用16进制控制某个系列端口,如P3=0X64(P3.2=1,其余P3.0=P3.1=P3.3=P3.4=P3.5=P3.6=P3.7=0)。
2. 新建工程:
2.1. 跟着手册做工程《STC32G12K128实验箱V9.4》:
2.1.1. 新建keil v5项目。
2.1.2. 跟着手册,摘录原案例程序,要求代码编写规范,保存代码文件格式:Demo.c
2.1.3. 打开:project菜单中\new uVersion Project ,
2.1.4. 在目录文件夹中e:\leil_v5\projects\0.Demo.c,文1件名:Demo
2.1.5. 在keil 软件配置中:select Device for ‘Target 1’
2.1.6. Device选填:STCmcu Database,在下面窗中中可以看到:STC 的所有MCU数据库
2.1.7. 选择单片机型号:STC32G12K128 series,点击“ok”
2.1.8. 这里没有提示:Copy‘starlup 251,Asm’to project Folder and Add File to project?,可以不用管。
2.1.9. 汉字编码语言标准按GB2312
2.1.10. 代码缩进4字节设置;:TAB Size
2.1.11. 所有代码书写,都必须是在英文模式下进行的。
2.1.12. 在keil_v5软件中,新建项目文件:New project file
2.1.13. 右击“Source group 1”添加源代码文件“Demo.c”,打开“source group 1”,可以看到目录下已存在添加的文件。
2.2. 按手册要求进行源代码编程:
2.2.1. 注意代码书写:关键词要求小写,写完以后变成红色(如果写完以后变成黑色,说明有问题),后面P0M1=0X00,其中“X”大小写均可以。
2.2.2. 主函数的书写:要求都是小写。
2.2.3. 演示程序代码如下:
Sfr P0 = 0X80;
Sfr P0m1 = 0X93;
Sfr P0M0 = 0X94;
Void main()
{
P0M0 = 0X00;
P0m1 = 0X00;
While(1)
{
P0++;
}
}
2.2.4. 代码编写完成,打开keil v5软件:options for target ‘target’...
2.2.5. Create executable:objects \Demo,勾选“create HEX files”,HEX format:选择:HEX-386
2.2.6. 编译一下,0 error,0 warning。同时输出窗口提示:
2.2.6.1. “creating hex file:.\objects\Demo”
“0 error 0 warning”说明编译成功。
3. 点亮第一个LED:
3.1. 详细步骤:
3.1.1. 思考led为什么不亮? 引脚不对
3.1.2. 怎样控制单独的一个引脚? Sbit P00=P0^0; //选择P0.0
3.1.3. 怎样控制这个引脚输出电平? P00=0; //在主函数中初始化P0.0输出低电平(P00=1 输出高电平; )
3.1.4. 书写规范:一行一句,大括号缩进(需要keil设置),缩进4格,注释完整
3.1.5. 注释:“//”:单行注释; “/* */”:多行注释(字体变绿色)
3.1.6. 搜索:CTRL+F, 在STC32G手册查找搜索非常有用
3.2. 新建工程的下载/编程:led灯并没有像我们期待的那样点亮。
3.2.1. 查找 STC32G12K128手册,检查端口配置是否正确,发现P4(三极管控制引脚)、P6(led控制引脚)需要低电平。
3.2.2. 查找特殊功能寄存器地址。
3.2.3. 所以程序按手册修改如下:
Sfr P0 = 0X80; //改为P4端口
Sfr P0m1 = 0X93;
Sfr P0m0 = 0X94;
Sfr P4 = 0Xc0; //P4端口操作完成
Sfr P4m1 = 0Xb4;
Sfr P4M0 = 0Xb4;
Sfr P6 = 0Xe8; //P4端口操作完成
Sfr P6m1 = 0Xcb;
Sfr P6M0 = 0Xcc;
Sbit P40=P4^0; //三极管控制引脚
Sbit P60=P6^0; //led控制引脚
Void main()
{
P4M0 = 0X00; //配置P4为准双向口(M0\M1成对配置P4模式)
P4m1 = 0X00;
P6M0 = 0X00; //配置P6为准双向口(M0\M1成对配置P6模式)
P6m1 = 0X00;
While(1) //死循环
{
//P0++;
P40 = 0; //三极管引脚输出低电平
P60 = 0; //led4引脚输出低电平
}
}
3.2.4. 对程序进行编译,观察窗口出现一个“.\object\Demo.c\……”,同时提示“编译成功”
3.2.5. 连接USB连线,按下P3.2,电源断电再上电,年至keil软件的扫描窗口,USB-CDC转变为“(频)usb-writer”,松开P3.2按键。
3.2.6. 打开keil程序并下载,看到程序下载成功。
3.2.7. Led灯被点亮。