您的位置  > 互联网

51单片机C语言编程实例基础知识:⽤中⽂⾃害⾃⼰

。 学习代码:前提是你有比较系统的学习。 认真完成每门课程的案例。

2、阅读代码:两步:前期可以阅读自己写的代码。 2113 后期可以看懂别人写的代码,大致知道一些底层源码的含义。 去5261阅读更多开发文档(开发文档建议使用4102官方英文版,不要用中文损人不利己)

单片机C语言编程100个实例

51单片机基础知识C语言编程实例:51单片机编程基础单片机外部结构: 1、DIP40双列直插式; 2、4个8位准双向I/O引脚P0、P1、P2、P3; (作为I/O输入,必须先输出高电平) 3、电源VCC(PIN40)和地线GND(PIN20); 4.高电平复位RESET(PIN9); (VCC和RESET连接10uF电容,实现上级电气复位) 5. 内置振荡电路,只需将外部晶振连接到X1(PIN18)并在内部ROM中编程即可) 7. P3支持第二个功能:单片机的RXD、TXD、INT0、INT1、T0、T1内部I/O元件:(学习单片机的目的其实就是对下面的I/O元件进行编程和控制,完成指定的任务) 1、四个8位通用I/O口,对应引脚P0、P1、P2、P3; 2、两个16位定时器计数器; (TMOD、TCON、TL0、TH0、TL1、TH1) 3、串行通讯接口一个; (SCON,SBUF) 4.中断控制器; (IE、IP)对于单片机来说,头文件.h给出了SFR特殊功能寄存器所有端口的定义。

C语言编程基础: 1、字节0x5a的十六进制表示:二进制为; 0x6E 是。 2. 如果将 16 位二进制数赋值给 8 位字节变量,则会自动截断为低 8 位,而高 8 位将被丢弃。 3、++var表示先将变量var加一; var-表示将变量减一,然后再减一。 4. x |= 0x0f; 表示为 x = x | 0x0f; 5. TMOD = (TMOD 0xf0) | 0x05; 表示将值0x5赋给变量TMOD的低四位,而不改变TMOD的高四位。 6. 同时(1); 表示无限期地执行该语句,即无限循环。 语句后面的分号表示空循环体,即{;}在某个引脚上输出高电平的编程方法:(如P1.3(PIN4)引脚)代码1. # .h //在此头中文档中有单片机内部资源的符号定义,其中包括P1.3 2. void main(void) //void 表示没有输入参数,也没有函数返回值。 这就进入复位项3. { 4. P1_3 = 1 ; //给P1_3赋值1,P1.3引脚可以输出高电平VCC 5. While( 1 ); //无限循环,相当于LOOP: goto LOOP; 6. } 注意:P0 各引脚必须输出高电平时,必须外接上拉电阻(如 4K7)至 VCC 电源。

在某个引脚上输出低电平的编程方法:(如P2.7引脚) 代码 1. # .h //该头文件包含单片机内部资源的符号定义,包括P2.7 2. void main (void) //void表示函数没有输入参数,也没有返回值。 这就进入复位项3. { 4. P2_7 = 0; //给P2_7赋值0,P2.7引脚可以输出低功率。 平接地 5. While(1); //无限循环,相当于LOOP: goto LOOP; 6. } 在某个引脚上输出方波的编程方法:(如P3.1引脚) 代码1. # .h //该头文件包含单片机内部资源的符号定义,包括P3.1 2. void main(void) //void表示没有输入参数,也没有函数返回值,进入复位入口 3. { 4. While(1) //非零表示true。 如果为真,则执行下面循环体的语句5。 { 6. P3_1 = 1; //给P3_1赋值1,P3.1引脚可以输出高电平VCC 7 。 P3_1=0; //给P3_1赋值0,P3.1引脚可以输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低...,从而形成方波 9. } 将一个引脚的输入电平反相后,从另一个引脚输出:(例如,P0.4 = NOT(P1.1)) Code 1. # .h //该头文件包含了单片机内部的符号定义资源数量,包括P0.4和P1.1 2. void main(void) //void表示无输入参数,无函数返回值,进入单片机操作的复位入口 3. { 4. P1_1 = 1 ; //初始化。

P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示true。 如果为true,则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1表示将P1.1视为输入。 若P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4可以输出低电平GND 2 51 单片机C语言编程示例9. else //否则,P1.1输入为低电平GND 10. // { P0_4 = 0; } //给P0_4赋值0,P0.4引脚可以输出低电平GND 11 。 { P0_4 = 1; } //给P0_4赋值1,P0.4引脚可以输出高电平VCC 12。 } //由于一直为真,所以P0.4根据P1.1的输入不断变化,输出电平为13。 }将某个端口的 8 个引脚的输入电平反相并将低四位反相后,输出另一个端口的 8 个引脚:(例如 P2 = NOT(P3)) Code 1. # .h //头文件文件中包含了单片机内部资源的符号定义,包括P2和P3 2. void main(void) //void表示没有输入参数,也没有函数返回值,进入单片机操作的复位入口 3. { 4. P3 = 0xff; //初始化。

作为输入,P3必须输出高电平,同时向P3口的8个引脚输出高电平。 5. While(1) //非零表示真。 如果为true,则执行下面循环体中的语句 6. { //取反方式为XOR 1,非取反方式为XOR 0 7. P2 = P3^0x0f //读取P3表示认为P3作为输入,低四位异或1,即取反,然后输出8。 } //由于一直为真,所以P3不断取反,输出到P2 9。 } 注:8位D7, D6至D0一字节输出到P3.7、P3.6至P3.0,例如P3=0x0f,则P3.7、P3.6、P3.5、P3.4这四个引脚全部输出低电平,而 P3.3、P3.2、P3.1 和 P3。 0 所有四个引脚均输出高电平。 同样,输入一个端口P2意味着将P2.7、P2.6至P2.0读入8位D7、D6至D0的一个字节中。 第一节:单数码管按键显示单片机最小系统硬件原理接线图: 1、连接电源:VCC(PIN40)、GND(PIN20)。 添加0.1uF 去耦电容 2. 连接晶振:X1(PIN18)、X2(PIN19)。 注意晶振频率(选择12MHz)和辅助电容30pF。 3. 连接复位:RES (PIN9)。 连接上电复位电路和手动复位电路,分析复位工作原理。 4. 连接配置:EA(PIN31)。

解释一下原因。 发光二极管的控制:单片机的I/O输出将发光二极管LED的正极(阳极)连接到P1.1,LED的负极(阴极)接地接地。 只要P1.1输出高电平VCC,LED就会正向导通(点亮时LED上的压降大于1V),电流就会流过LED,LED就会点亮。 实际上,由于P1.1的高电平输出电阻为10K,起到了输出限流的作用,所以流过LED的电流小于(5V-1V)/10K=0.4mA。 只要P1.1输出低电平GND,实际上小于0.3V,LED就无法点亮,LED也不会亮。 双键开关输入:输入输出先高。 一个按钮连接在 P1.6 和 GND 之间,另一个按钮连接在 P1.7 和 GND 之间。 按下后,LED 会亮起,按下后,LED 会关闭。 按住 LED 可同时亮起一半。 LED 保持与松开按键时相同的状态,即 ON 亮起,OFF 熄灭。 代码 1. # .h 2. # LED P1^1 //将 P1_1 替换为符号 LED 3. # P1^6 //将 P1_6 替换为符号 4. # P1^7 //将 P1_7 替换为符号 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. = 1; //作为输入,先输出高电平,然后,P1.6接地为0,否则输入为1 8. = 1; //作为输入,输出先为高,然后P1.7接地为0,否则输入为1 9. while(1) //始终为真,所以后面的括号永远循环执行 所有语句10 以内。 { 11. if( ==0 ) LED=1; //已连接。 如图所示,P1.1 输出高电平,LED 亮。 12. if( ==0 ) LED=0; //已连接。 如下图,P1.1输出低电平,LED熄灭 13. } //松开按键后,没有给LED赋值,所以LED保持上次按键状态。

14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快。 由于人眼的惯性,它看起来是半亮的。 15. } 数码管的连接方法及驱动原理,一个七段数码管实际上是由8个发光二极管组成,其中7个组成了数字8的七段笔画,所以称为数码管七段数码管,其余1个发光二极管作为小数点。 作为习惯,标记八个发光二极管:a、b、c、d、e、f、g、h。 对应8的上图按顺时针方向排列,中图为g,小数点为h。 我们通常将每个二极管对应一个字节的8位,a(D0), b(D1), c(D2), d(D3), e(D4), f(D5), g(D6) , h ( D7),对应的8个发光二极管正好连接到单片机的一个Pn端口的8个引脚上,这样单片机就可以通过该引脚输出高低电平来控制8个发光二极管的亮灭,从而显示各种数字和符号; 对应字节,引脚连接为:a(Pn.0)、b(Pn.1)、c(Pn.2)、d(Pn.3)、e(Pn.4)、f(Pn.5)、 g(Pn.6),h(Pn.7)。 如果8个发光二极管的负极(阴极)连接在一起作为数码管的一个引脚,则这种数码管称为共阴极数码管,公共引脚称为共阴极。 8个正极就是端极。 否则,如果正极(阳极)连接在一起,则称为共阳极数码管,公共引脚称为共阳极,8个负极为段极。以单个共阴极数码管为例,可以将段极接到某个端口Pn,共阴极接到GND,就可以在七段码表中写入该十六进制码对应的字节数了。