单片机c语言编程100个实例 51单片机C语言编程实例基础知识:51单片机外部结构基础编程:1。DIP40双列直插式;2.四个8位准双向I/O引脚P0...
2023-09-11 158 单片机c语言编程300例 pic单片机c语言编程300例
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的复位条目。{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,就可以写入七段对应十六进制码的码表字节数据。
问题在变量申明,修改为:# include ” reg 52。” h ” typedefunsignedcharu 8;typedefunsignedintu16sbitlsa=p2^2;sbitlsb=p2^3;sbitlsc=p2^4;sfr gpio _ KEY=0x 90 sfr gpio _ DIG=0x 80 u 16 KEY valueu 8 codesmgan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71 };无效延迟(u16i){ while(I-);} void key down(){ u8a=0;GPIO _ KEY=0x0fif(GPIO_KEY!=0x0f){ delay(1000);if(GPIO_KEY!=0x0f){ GPIO _ KEY=0x0f;switch(GPIO _ KEY){ case(0x 07):键值=0;打破;case(0x0b):键值=1;打破;case(0x0d):键值=2;打破;case(0x0e):键值=3;打破;} GPIO _ KEY=0xf 0 switch(GPIO _ KEY){ case(0x 70):KEY值=KEY值;打破;case(0xb 0):键值=键值4;打破;case(0xd 0):键值=键值8;打破;case(0x E0):键值=键值12;打破;}while((a50)(GPIO_KEY!=0x f 0)){ delay(1000);a;} } } } void main(){ LSA=0;LSB=0;LSC=0;while(1){ key down();GPIO _ DIG=smgan[键值];}}
《C语言学习300例》 我倒是有一份,要的话就选我为最佳。 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码:main(){int i,j,k;printf(” \ n “);for(I=1;i5;i ) /*以下为三重循环*/for(j=1;j5;j)for(k=1;K5;k ) { if(我!=ki!=jj!=k) /*确保我、j、k三位互不相同*/printf(“%d,%d,%d\n “,I,j,k);}}==============================================================..以下为略
标签: 51单片机编程入门基础知识 单片机c语言编程300例
相关文章
单片机c语言编程100个实例 51单片机C语言编程实例基础知识:51单片机外部结构基础编程:1。DIP40双列直插式;2.四个8位准双向I/O引脚P0...
2023-09-11 158 单片机c语言编程300例 pic单片机c语言编程300例
发表评论