单片机c语言编程100个实例 51单片机C语言编程实例基础知识:51单片机外部结构基础编程:1。DIP40双列直插式;2.四个8位准双向I/O引脚P0...
2023-09-11 249 单片机c语言编程300例 51单片机编程入门基础知识
51单片机C语言编程实例基础知识:51单片机外部结构基础编程:1。DIP40双列直插式;2.四个8位准双向I/O引脚P0、P1、P2和P3;(作为I/O输入,首先输出高电平)3 .电源VCC(针脚40)和接地GND(针脚20);4.高电平复位reset(引脚9);(10uF电容接VCC复位,可以实现上电复位)5 .内置振荡电路,外部晶振连接到X1(PIN18)和X0(pin 19);(频率是主频的12倍)6。程序配置EA(PIN31)连接到高级VCC;(运行单片机内部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)。中断控制器;(即IP)对于AT89C52单片机,SFR特殊功能寄存器所有端口的定义在头文件AT89x52.h C语言编程基础中给出:1 .十六进制字节0x5a:二进制字节01011010B;0x6E是01101110。2.如果一个16位二进制数被赋给一个8位字节变量,它将被自动截断到低8位,高8位将被丢弃。3.var的意思是先把变量var加1;Var表示变量减一。4.x |=0x0f表示为x=x |0x0f5.TMOD=(TMOD0xf 0)|0x 05;将0x5分配给变量TMOD的低四位,而不改变TMOD的高四位。6.while(1);它意味着语句的无限执行,即无限循环。语句后的分号表示空循环体,即{;}在一个引脚输出高电平的编程方法:(例如引脚P1.3(PIN4)) code 1。#include //这个头文件包含了单片机内部资源的符号定义,包括P1.3 2。void main( void) //void表示没有输入参数,没有函数返回值,进入单片机操作的复位入口3。{ 4 . p1 _ 3//给P1 _ 3赋值1,引脚P1.3可以输出高电平VCC 5。while(1);//无限循环,等价于LOOP: goto循环;6.}注意:当P0的每个引脚输出高电平时,必须在VCC电源上连接一个上拉电阻(如4K7)。在一个管脚输出低电平的编程方法:(比如P2.7管脚)code 1。#include //这个头文件包含了MCU内部资源的符号定义,包括P2.7 2。void main( void) //void表示没有输入参数,没有函数返回值,进入MCU操作3的复位入口。{4.P2 _ 7=0;//给P2_7赋值0,P2.7脚可以输出低电平GND 5。while(1);//无限循环,等价于LOOP: goto循环;6.}在一个管脚输出方波的编程方法:(比如P3.1管脚)Code 1。#include //这个头文件包含了MCU内部资源的符号定义,包括P3.1 2。void main( void) //void表示没有输入参数,也没有函数返回值。这将进入复位条目3。{4.while(1)/MCU的操作。//给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。#include //这个头文件包含了单片机内部资源的符号定义,包括P0.4和P1.1 2。void main( void) //void表示没有输入参数,也没有函数返回值,进入重置条目3。{4.p1单片机的操作。//初始化。
P1.1作为输入,必须输出高电平。5.而(1) //非零表示真。如果为真,则执行以下循环体语句。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。例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。} //因为始终为真,所以根据P1.1的输入情况不断改变P0.4的输出电平}输入某个端口8脚的电平,将低四位反相。另一个端口8针输出:(例如,P2=非(P3))代码1。#include //该头文件包含MCU内部资源的符号定义,包括P2和P3 2。void main( void) //void表示没有输入参数,没有函数返回值,进入MCU操作3的reset入口。{4.P3=0x ff;//初始化。P3必须输出高电平作为输入,同时输出高电平5。While( 1) //到P3端口的八个引脚。如果为真,则在下面的循环中执行语句6。{//求逆的方法是XOR 1,不求逆的方法是XOR 0 7。P2=P30x0F//读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类似的,输入一个端口P2就是将P2.7、P2.6到P2.0读入一个字节的8位D7、D6到D0。第一节:单数码管键显示微控制器的硬件原理最小系统接线图:1。电源:VCC(PIN40),GND(PIN20)。添加和去耦电容0.1uf2。连接晶振:X1(引脚18)、X2(引脚19)。注意晶体频率(12MHz)和辅助电容30pF 3。连接复位:RES(引脚9)。连接电动复位电路和手动复位电路,分析复位工作原理。4.连接配置:EA(引脚31)。说明原因。LED的控制:单片机的I/O输出将一个LED的正极(阳极)接到P1.1,LED的负极(阴极)接地到GND。只要P1.1输出高电平VCC,LED将正向导通(导通时LED两端的电压降大于1V),电流将流过LED,直到LED点亮。实际上,由于P1.1高电平输出电阻是10K,起到输出限流的作用,所以流过LED的电流小于(5v-1v)/10k=0.4ma,只要P1.1输出低电平GND,实际小于0.3V,LED就不能点亮,导致LED不亮。双按键输入:先输入后输出。一个KEY_ON连接在P1.6和GND之间,另一个KEY_OFF连接在P1.7和GND之间。按下KEY_ON后,LED亮起,按下KEY_OFF后,LED熄灭。同时,当LED半亮时,LED会保持释放按键的状态,即亮即灭。1.代码#包括2。#定义LED P1 1//用符号LED替换P1 _ 1 3。# define KEY _ ON P1 6//用symbol KEY_ON替换P1 _ 6 4。# defineKey _ off P1 7//用符号Key _ off代替P1_7 5。void main( void) //微控制器复位后的执行入口。Void表示空,没有输入参数,没有返回值6。{7.KEY _ ON=1;//作为输入,先输出高,再取KEY_ON,则P1.6接地为0,否则输入为1 8。KEY _ OFF=1;//作为输入,输出先高,后KEY_OFF,P1.7接地到0。否则,输入为1 9。While( 1) //始终为真,所以下面括号中的所有语句都是10。{11.if( KEY_ON==0) LED=1总是循环执行;//是KEY_ON,如图,P1.1输出高,LED亮12。if(KEY _ OFF==0)LED=0;//是KEY_OFF,如图,P1.1输出低,LED熄灭13。} //释放按键后,LED没有赋值,所以LED保持上一次按键状态。
14.//同时按下,发光二极管不断的亮灭,占了一半的时间,交替的频率很快。由于人眼的惯性,看起来半明半暗。15.}数码管的连接和驱动原理。一个七段数码管实际上是由八个led组成的,其中七组组成了数字8的七个笔画,所以叫七段数码管,剩下的一个LED作为小数点。习惯上分别标注8个led: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个led正好与单片机的一个端口Pn的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)。如果把八个发光二极管的负极(阴极)连在一起作为一个数码管的一个管脚,这个数码管叫做共阴极,共管脚叫做共阴极,八个正极是段极。否则,如果正极(阳极)连在一起引出,就叫共阳极数码管,共管脚叫共阳极,八个负极是段极。以单个共阴极数码管为例,如果段极接一个端口Pn,共阴极接GND,就可以写入七段对应十六进制码的码表字节数据。
c语言实现LED灯闪烁控制匹配51单片机开发板。#include //包含MCU寄存器的头文件/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * { unsigned int I;//定义无符号整数,最大取值范围是65535。for(I=0;i20000I) //做20000个空循环。//什么都不做,等待一个机器周期。}/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *函数Function:主函数(C语言* * * * * * * * * * * * * * * * * *) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * void main(void){ { P0=0x Fe; //P1=11111110 b,P0.0输出低电平。delay();//延迟一会儿。P0=0xff//P1=111111b,P0.0输出高电平。delay();//延迟一会儿。}}单片机驱动LED灯源程序:#include //头文件。# define uint unsigned int # define uchar unsigned chars bit led1=p1^7;//位定义。void delay _ ms(uint);//带参数的mS类延迟函数。void main(){ while(1){ le D1=0;delay _ ms(1000);le D1=1;delay _ ms(1000);}}void delay_ms(uint z) //延迟子程序{uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);}扩展信息:单片机应用分类:通用型:这个是根据单片机(微控制器)的应用范围来区分的。比如80C51通用单片机,不是为特定用途设计的;专用MCU是针对一类产品甚至某一产品而设计生产的,比如为了满足电子体温计的要求,在芯片上集成了具有ADC接口等功能的测温控制电路。总线类型:这是根据微控制器是否提供并行总线来区分的。总线MCU一般配有并行的地址总线、数据总线和控制总线。这些引脚用于扩展并行外设,这些外设都可以通过串口与MCU连接。此外,很多单片机已经将所需的外围设备和外围接口集成到一个芯片上,所以很多情况下不需要并行扩展总线,大大降低了封装成本和芯片体积。这种单片机称为非总线型单片机。控制类型:这是根据微控制器的一般应用领域来区分的。一般来说,工控型寻址范围大,计算能力强;家用电器用的单片机多是专用的。通常封装小,价格低,外围设备和外围接口集成度高。显然,上述分类并不唯一和严格。比如80C51单片机,既有通用型的,也有总线型的,还可以用于工业控制。参考来源:百度百科-单片机
# include ” at89x 52 . h ” s bit button=p1^1;思比特led=p1^0;无符号整数寄存器;void main(void){while(1){if(!BUTTON){ reg=5000;while(-reg);如果(!BUTTON){ LED=~ LED;而(!按钮);}}}}
标签: pic单片机c语言编程300例 单片机c语言编程300例
相关文章
单片机c语言编程100个实例 51单片机C语言编程实例基础知识:51单片机外部结构基础编程:1。DIP40双列直插式;2.四个8位准双向I/O引脚P0...
2023-09-11 249 单片机c语言编程300例 51单片机编程入门基础知识
发表评论