第一讲
如何开关控制发光管闪烁(无开关)
如何开关控制发光管闪烁(有开关)
第二讲
模拟交通灯
驱动数码管
按键控制 LED移位
说明: 按下 K1 时,P0口 LED左移一位。
? ?按下 K2 时,P0 口 LED右移一位。
? ?按下 K3 时,P2 口 LED右移一位。
? ?? 按下 K4 时,P2 口 LED左移一位。
数码管滚动显示单个数字
说明:数码管从左到右依次滚动显示1--6
播放生日快乐歌
说明:程序运行时播放生日快乐歌,未使用定时器中断,所有频率完全用延时实现。
第三讲
片内RAM:00H—0FFH
2、80H—0FFH:128bytes
直接寻址:SFR,共22个寄存器,其中21个可字节寻址,PC不可寻址,11个可位寻址。
简介寻址:User RAM
总结:在51C语言中,DATA:直接寻址的00H—0FFH。IDATA:间接寻址的00H—0FFH。
?DATA的00H-7FH区间与IDATA 的00H-7FH区间是重叠的,即该区域既可直接寻址,也可间接寻址。
?80H以上的存储器实际是两个各自独立的存储区,要用不同的寻址方式进行访问。
?80H以上的存储区是否可用取决于芯片的选择。
4、片外数据存储器
?通过总线端口和其他I/O口扩展外部数据RAM,其最大容量可达64K字节。
?在片外数据存储器中,数据区和扩展的I/O口是统一编址的。
在51的C语言中,XDATA :指外部数据存储空间(0000H-0FFFFH)。
在51的C语言中,CODE :指程序地址空间0000H-0FFFFH。
第五讲(考)
1、定时器方式0、定时模式的使用
说明:单片机的晶振频率为12MHz,利用T0方式0产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。
定时初值: TC=M-T/ T计数
T = 1*10-3 ,T计数 = 12/(12x106) = 1*10-6
TC = 213 – 1*10-3/1*10-6 = 213 –1000
= 7192 = 1C18H
TH0 = 1CH , TL0 =18H
用c语言直接计算:
#define fosc 12 //晶振频率
#define time0 1000 //定时1ms,这里的最小单位是us(微秒)
unsigned int idata time0_times;//使用间接寻址的片内RAM
unsigned char data time0_h,time0_l; //使用直接寻址的片内RAM
main()
{time0_times = 8192 –time0 * fosc / 12;//213=8192
time0_h = time0_times / 256;
time0_l = time0_times % 256;}
//运行结果:在示波器上产生方波
2、定时器方式2、计数模式的使用
说明:单片机的晶振频率为12MHz,利用T0方式2进行计数,T0引脚(P3.4)的3个下降沿使得P1.0引脚上电平翻转一次。
方式字:TMOD=06H
计数初值: TC=M-C C是三个下降沿
TC = 28 – 3 = 253 = 0FDH
TH0 = TL0 =0FDH
用程序观察中断号与地址的对应关系
//中断程序入口认识
#include
char i;
void main(void) //主程序
{
i=0;
while(1);
}
void int0(void) interrupt 0 //INT0中断服务程序
{
i = 1;
}
void time0_int(void) interrupt 1 //T0中断服务程序
{
i = 2;
}
void int1(void) interrupt 2 //INT1中断服务程序
{
i = 3;
}
void time1_int(void) interrupt 3 //T1中断服务程序
{
i = 4;
}
void serial_int(void) interrupt 4 //串口中断服务程序
{
i = 5;
}
第八讲
51串口的三种功能:
串并转换;
插入或滤除格式信息(起始位、校验位和停止位);
波特率的控制。
串口使用的两个要点:
1、确定工作方式;
2、确定传输速率(波特率)
51串口的四种工作方式
方式0:串行移位输入/输出方式
RXD--数据输入输出,TXD--移位时钟脉冲,传输波特率为fosc/12。