单片机听课笔记18课金沙滩更新.docx
- 文档编号:6095394
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:35
- 大小:35.99KB
单片机听课笔记18课金沙滩更新.docx
《单片机听课笔记18课金沙滩更新.docx》由会员分享,可在线阅读,更多相关《单片机听课笔记18课金沙滩更新.docx(35页珍藏版)》请在冰豆网上搜索。
单片机听课笔记18课金沙滩更新
单片机听课笔记1-8课----金沙滩工作室2014年更新
Lesson1:
1、用公司用的单片机/视频用的单片机
2、书是用来查的。
3、单片机方面不怎么需要软件仿真
4、KEIL软件安装(keilc51)30分钟-35分钟
双击→next→√→next→默认路径→next→1,2,3,email格式→next→自动安装→去掉三个选项的√→finish。
桌面上出现KEIL快捷方式。
5、文字大小,文字颜色的设定:
edit→configuration→colour&font→:
editorcfiles→只需要修改text,textselection,number,keyword,string即可。
6、下载软件stc-isp-v480.sewin7系统第一次打开,右键,以管理员身份运行一次。
7、《三傻大闹好莱坞》:
追求卓越,成功就会在不经意间追上你。
Lesson2:
1、51单片机:
兼容intel的MCS-51体系架构的一系列单片机
2、STC89C52RC---学习板上的第一个单片机。
3、单片机最小系统:
电源电路、
晶振电路(20PF起振电容,帮助晶振起振,并维持震荡信号的稳定)、
复位电路(0.1uF,18R,4.7K)。
4、单片机复位一般用三种:
上电复位,手动复位,程序自动复位。
5、单片机原理图引脚位置与封装图可以不一样。
6、贴片发光二极管限流电阻的选用。
7、sfrP0=0X80,告诉我们编程软件P0在0X80的位置上,查手册可得。
8、打开KEIL软件→project→newproject→选择路径→写工程名,不需写扩展名→
旧:
选择单片机型号→NXP→P89V51→copy,,,,,→否→新建文件file→new→保存→给文件起名led.c→
新:
选择单片机型号→intel→随便一个→copy,,,,,→是→新建文件file→new→保存→给文件起名led.c
9、#include
10、单片机编程是根据硬件编程,不同的板子,程序可能不一样。
11、target1右边的targetoptions→target→11.0592M,output→creathex选项框选中,点击ok,编译,连接就可生成hex文件。
12、hex文件大小的看法:
在编译连接之后,buildoutput对话框里看。
Programsize:
data=9.0xdata=0code=29表示:
其中data,xdata指RAM,两项加起来就是内存的值:
0+9=9字节。
code指占程序存储空间的值:
29个字节。
13、点亮小灯的程序
#include
sbitLED=P0^0;
sbitADDR0=P1^0;
sbitADDR1=P1^1;
sbitADDR2=P1^2;
sbitADDR3=P1^3;
sbitENLED=P1^4;
voidmain()
{
ENLED=0;ADDR3=1;
ADDR2=1;ADDR1=1;ADDR0=0;
LED=0;
while
(1);
}
14、安装usb-串口的驱动;
查找COM口。
我的电脑→设备管理器。
选择单片机型号→打开hex文件→选择使用的COM口→波特率默认→下次冷启动选择:
与下载无关→(STC89C52RC冷启动单片机)先点下载后上电。
作业:
3.了解KEIL软件的基本用法和单片机编程流程,能够独立完成编程下载等基本操作。
Lesson3:
硬件基础学习
1、电磁干扰EMI,电磁兼容EMC
2、低频滤波电容:
去除电源低频纹波,稳定电源作用。
铝电解电容、钽电容(有色标的一端为正极,性能好)、陶瓷电容。
3、高频滤波电容:
对高频短路,可滤去高频干扰。
(104=0.1uF)
4、电容选取两个主要参数:
耐压值、容值。
5、三极管的功能:
开关控制(100Ib>Ie,则工作在饱和状态)、信号放大、电平转换。
6、三八译码器:
74HC138地址输入端c/b/a及E3使能端接4.7K电阻上拉。
7、
双向缓冲器:
74HC245DIR为高,A→B;输入端接4.7K上拉电阻。
8、保存过后的c文件,文件名旁边没有※。
作业:
4、能够独立点亮开发板上的每一个小灯,并且可以实现小灯亮和灭以及闪烁。
Lesson4C语言基础以及流水灯实现
1、进制
2、C语言变量类型及范围
Unsignedchar0-255signedchar-128—127
Unsignedint0-65535signedint-32768---32767
Unsignedlong0-4294967275signedlong-2147483648---2147483647
Float-3.4×10-38—3.4×10-38double:
C51里等同于float
能用一个字节的变量能完成的工作,不要用两个字节变量。
3、C语言基本运算符
+-*/%(取余)++--===!
=
4、for语句的用法(作延时,作循环运算)
一、for(表达式1;表达式2;表达式3)
{
(需要执行的语句)
}执行顺序:
1,2,4,3,2,4,3,2,4,3
二、for(i=0;i<30000;i++);是用法一的特殊情况,相当于执行语句为不执行。
三、for(;;)相当于while
(1)
5、while语句的用法
一、while(条件表达式)
{
循环语句;
}
6、函数名的类型,就是return值的类型。
Voidmain()void表示函数名,无返回值,intmain(),返回值为整型。
7、变量在使用之前,先定义。
8、51单片机延时常用方法:
非精确延时:
for(I=0;i<100;i++);
I=100;while(i--);
精确延时:
用定时器定时
利用库函数-nop-();
9、肉眼分辨率:
20ms一下看不到闪烁;50ms间隔能清楚看见亮灭。
10、软件仿真:
先设置targetoptions→target→11.0592M,debug→选中usesimulator→ok
点击startdebugsession图标,进入仿真界面。
设置断点:
双击,若设置不了targetoptions→C51→level,设置优化登记一般选8。
RST复位run全速运行。
然后看时间情况。
(50分钟附近)
11、程序一:
小灯的闪烁(视频位置与笔记顺序不一致)
#include
sbitLED=P0^0;
sbitADDR0=P1^0;
sbitADDR1=P1^1;
sbitADDR2=P1^2;
sbitADDR3=P1^3;
sbitENLED=P1^4;
voidmain()
{
unsignedinti=0;
ENLED=0;ADDR3=1;
ADDR2=1;ADDR1=1;ADDR0=0;
LED=0;
for(;;)//while
(1)
{
LED=0;
for(i=0;i<20000;i++);
LED=1;
for(i=0;i<20000;i++);
}
}
12、程序二:
流水灯程序(法一)
#include
sbitADDR0=P1^0;
sbitADDR1=P1^1;
sbitADDR2=P1^2;
sbitADDR3=P1^3;
sbitENLED=P1^4;
voidmain()
{
unsignedinti=0;
ENLED=0;ADDR3=1;
ADDR2=1;ADDR1=1;ADDR0=0;
while
(1)
{
P0=0XFE;
for(i=0;i<30000;i++);
P0=0XFD;
for(i=0;i<30000;i++);
P0=0XFB;
for(i=0;i<30000;i++);
P0=0XF7;
for(i=0;i<30000;i++);
P0=0XEF;
for(i=0;i<30000;i++);
P0=0XDF;
for(i=0;i<30000;i++);
P0=0XBF;
for(i=0;i<30000;i++);
P0=0X7F;
for(i=0;i<30000;i++);
}
}
13、移位指令(<<>>)、取反指令(~)。
14、程序二:
流水灯程序(法二)
#include
sbitADDR0=P1^0;
sbitADDR1=P1^1;
sbitADDR2=P1^2;
sbitADDR3=P1^3;
sbitENLED=P1^4;
voidmain()
{unsignedcharcnt=0;
unsignedinti=0;
ENLED=0;ADDR3=1;
ADDR2=1;ADDR1=1;ADDR0=0;
while
(1)
{
P0=~(0x01< for(i=0;i<30000;i++); if(cnt>=8) { cnt=0; } } } 作业: 4、独立完成流水灯右移操作。 5、独立完成左移到头,接着右移,右移到头,接着左移的程序。 Lesson5定时器和数码管基础 1、逻辑运算逻辑与: &&逻辑或: ||逻辑非: ! 按位与: &按位或: |按位取反: ~按位异或: ^ 0b11001100|0b11110000等于0b11111100 2、数字电路常用符号 3、机器周期是定时器的计数周期,打开定时器后,每经过一个机器周期,定时器“存储寄存器”的值加1。 8位定时器存储的值的范围: 0-22516位定时器0-65535 4、标准51里有两个定时器: T0和T1。 5、定时器/计数器模式示意图。 5、使用定时器的方法 一、设置TMOD(模式寄存器M1、M0位,常用模式1、模式2自动重装),配置好工作模式例如: TMOD=1; 二、设计数寄存器TH0、TL0的初值。 例如: TH0=0XB8;TL0=0X00;定时20msTH0=0XB8;TL0=0X00;定时1ms 三、设TCON(控制寄存器TF位,TR位),通过TR0置1来让定时器开始计数例如: TR0=1; 四、判断TCON寄存器的TF0位,检测定时器的溢出情况。 计算计数寄存器初值的方法: 12*(65536-X)/11059200=20ms 6、1s闪烁一次的小灯程序 #include sbitLED=P0^0; sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbitENLED=P1^4; voidmain() { unsignedcharcnt=0; ENLED=0;ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; TMOD=0x01; TH0=0XB8; TL0=0X00; TR0=1; while (1) { if(TF0==1) { TF0=0; TH0=0XB8; TL0=0X00;//定时20ms cnt++; if(cnt>=50) { cnt=0; LED=~LED; } } } } 7、数码管分: 位、段(A/B/C/D/E/F/G/DOP)两个概念 8、第一个数码管显示“1”的程序 #include sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbitENLED=P1^4; voidmain() { unsignedcharcnt=0; ENLED=0;ADDR3=1; ADDR2=0;ADDR1=0;ADDR0=0; P0=0XF9; while (1); } 9、1位数码管从1-F(每隔1秒加1) #include sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbitENLED=P1^4; unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; voidmain() { unsignedcharcnt=0; unsignedcharsec=0; ENLED=0;ADDR3=1; ADDR2=0;ADDR1=0;ADDR0=0; TMOD=1; TH0=0XB8; TL0=0X00; TR0=1; while (1) { if(TF0==1) { TF0=0; TH0=0XB8; TL0=0X00; cnt++; if(cnt>=50) { cnt=0; P0=ledchar[sec]; sec++; if(sec>=16) { sec=0; } } } } } 作业: 1、熟练掌握单片机定时器的原理和应用方法 2、通过研究定时器模式1的示意图,自己打开STC89C52RC手册的定时器部分,独立研究模式0,模式1,模式2,和模式3的示意图,锻炼研究示意图的能力。 3、使用定时器实现延时,完成左右移动的流水灯程序。 4、了解数码管的原理,掌握数码管的真值表计算方法。 5、编程实现数码管静态显示秒表的倒计时。 Lesson6中断与数码管动态显示 1、if语句的用法 (1)if(条件表达式) { 语句1; }只判断一次,只执行一次,然后执行下面的程序。 (2)if(条件表达式) { 语句1; } else { 语句2; } (3)if(表达式1){语句1;} elseif(表达式1){语句1;} elseif(表达式1){语句1;} else{语句n}一旦有一个为真,执行完相应语句后,跳出if语句。 2、switch语句的用法 法一: Switch(表达式) { Case常量表达式1: 语句1; Case常量表达式2: 语句2; Case常量表达式n: 语句n; Default: 语句n+1; } 法二: Switch(表达式) { Case常量表达式1: 语句1;break; Case常量表达式2: 语句2;break; Case常量表达式n: 语句n;break; Default: 语句n+1;break; } 3、动态显示利用人肉眼的视觉暂留现象(余晖效应) 10ms以内必须重新刷新同一个数码管。 ENLEDADDR3选中ADDR2ADDR1ADDR0切换 4、6位显示的秒表程序(if语句) #include sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbitENLED=P1^4; unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; unsignedcharledbuff[6]={0xff,0xff,0xff,0xff,0xff,0xff};//初始值0XFF voidmain() { unsignedintcnt=0; unsignedlongsec=0; unsignedchari=0; ENLED=0; ADDR3=1; TMOD=0X01; TH0=0XFC; TL0=0X67; TR0=1; while (1) { if(TF0==1) { TF0=0; TH0=0XFC; TL0=0X67; cnt++; if(cnt>=1000) { cnt=0; sec++; ledbuff[0]=ledchar[sec%10]; ledbuff[1]=ledchar[sec/10%10]; ledbuff[2]=ledchar[sec/100%10]; ledbuff[3]=ledchar[sec/1000%10]; ledbuff[4]=ledchar[sec/10000%10]; ledbuff[5]=ledchar[sec/100000%10];// } if(i==0) { ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=ledbuff[0]; } elseif(i==1) { ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=ledbuff[1]; } elseif(i==2) { ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=ledbuff[2]; } elseif(i==3) { ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=ledbuff[3]; } elseif(i==4) { ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=ledbuff[4]; } elseif(i==5) { ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=ledbuff[5]; } } } } 5、6位显示的秒表程序(switch语句) #include sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbitENLED=P1^4; unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; unsignedcharledbuff[6]={0xff,0xff,0xff,0xff,0xff,0xff};//初始值0XFF voidmain() { unsignedintcnt=0; unsignedlongsec=0; unsignedchari=0; ENLED=0; ADDR3=1; TMOD=0X01; TH0=0XFC; TL0=0X67; TR0=1; while (1) { if(TF0==1) { TF0=0; TH0=0XFC; TL0=0X67; cnt++; if(cnt>=1000) { cnt=0; sec++; ledbuff[0]=ledchar[sec%10]; ledbuff[1]=ledchar[sec/10%10]; ledbuff[2]=ledchar[sec/100%10]; ledbuff[3]=ledchar[sec/1000%10]; ledbuff[4]=ledchar[sec/10000%10]; ledbuff[5]=ledchar[sec/100000%10];// } P0=0XFF;//消除鬼影操作。 switch(i) { case0: ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=ledbuff[0];break; case1: ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=ledbuff[1];break; case2: ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=ledbuff[2];break; case3: ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=ledbuff[3];break; case4: ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=ledbuff[4];break; case5: ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=ledbuff[5];break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 听课 笔记 18 金沙 更新