历史上的今天
今天是:2025年12月07日(星期日)
2022年12月07日 | 零基础入门单片机(3)案例就是一种外存
2022-12-07 来源:zhihu
案例一:LED闪烁
电路:

代码:
#include sbit LED=P1^0; void delay(int i) { while(i--); } void main(void) { LED = 1; while(1) { delay(1000); LED = !LED; } } 案例二:按键控制LED的亮灭 电路: 代码: #include sbit K1=P3^0; sbit L1=P1^0; void main(void) { while(1) { if(K1==0) { L1=0; //灯亮 } else { L1=1; //灯灭 } } } 案例三:多按键控制多LED亮灭 电路 代码 #include unsigned char temp; void main(void) { while(1) { temp=P1>>4; temp=temp | 0xf0; P1=temp; } } 案例四:流水灯 电路 代码 #include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { temp=0xfe; P1=temp; delay(); for(i=1;i<8;i++) { a=temp< b=temp>>(8-i); P1=a|b; delay(); } for(i=1;i<8;i++) { a=temp>>i; b=temp<<(8-i); P1=a|b; delay(); } } } 案例五:花样灯 电路 代码 #include unsigned char code table[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01}; unsigned char i; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { if(table[i]!=0x01) { P1=table[i]; i++; delay(); } else { i=0; } } } 案例六:扬声器发声 电路 代码 #include #include bit flag; sbit P1_7=P1^7; sbit P1_0=P1^0; unsigned char count; void dely500(void) { unsigned char i; for(i=250;i>0;i--) { _nop_(); } } void main(void) { while(1) { if(P1_7==0) { for(count=200;count>0;count--) { P1_0=~P1_0; dely500(); } for(count=200;count>0;count--) { P1_0=~P1_0; dely500(); dely500(); } } } } 案例七:静态数码管循环显示0-9 电路 代码 #include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispcount; void delay02s(void) { unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); } void main(void) { while(1) { for(dispcount=0;dispcount<10;dispcount++) { P0=table[dispcount]; delay02s(); } } } 案例八:键控花样灯(按一下改变一个状态) 电路 代码 #include sbit P3_7=P3^7; unsigned char count; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { while(1) { if(P3_7==0) { delay10ms(); if(P3_7==0) { count++; if(count==16) { count=0; } P1=~count; while(P3_7==0); } } } } 案例九:键控花样灯(2) 电路 代码 #include sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P3_7=P3^7; unsigned char ID; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void delay02s(void) { unsigned char i; for(i=20;i>0;i--) {delay10ms(); } } void main(void) { while(1) { if(P3_7==0) {delay10ms(); if(P3_7==0) { ID++; if(ID==4) { ID=0; } while(P3_7==0); } } switch(ID) { case 0: P1_0=~P1_0; delay02s(); break; case 1: P1_1=~P1_1; delay02s(); break; case 2: P1_2=~P1_2; delay02s(); break; case 3: P1_3=~P1_3; delay02s(); break; } } } 案例十:键控花样灯(3) 电路 代码 #include sbit P3_7=P3^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Count; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { Count=0; P0=table[Count/10]; P2=table[Count%10]; while(1) { if(P3_7==0) { delay10ms(); if(P3_7==0) { Count++; if(Count==100) { Count=0; } P0=table[Count/10]; P2=table[Count%10]; while(P3_7==0); } } } } 案例十一:静态数码管计数(0-99) 电路 代码 #include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Second; void delay1s(void) { unsigned char i,j,k; for(k=100;k>0;k--) for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { Second=0; P0=table[Second/10]; P2=table[Second%10]; while(1) { delay1s(); Second++; if(Second==60) { Second=0; } P0=table[Second/10]; P2=table[Second%10]; 









史海拾趣
|
前日偶发一帖,关于点阵液晶的驱动 https://bbs.eeworld.com.cn/thread-59177-1-1.html 响应不大。 今天再发一原创帖,关于液晶的驱动,不用过将先上图,看个效果,关于硬件你们看了程序就知道了连接方法和屏的控制器,源 ...… 查看全部问答> |
|
本人系某世界500强外资企业(>40000人)电子工程师(R&D EE),三年硬件研发工作经验; 担任过许多知名企业如SONY,LG,DELL,LaCie,Seagate的电子硬件设计,并已经量产; 有正规的产品研发流程,严格的质量管控经验; 欢迎联系考察合作, 219er@16 ...… 查看全部问答> |
|
请问为什么我用KEIL C调试的时候,跟踪变量的时候在第一个函数的变量都能在右下角的窗口中显示,但是进入第2个函数后里面的变量就不能在窗口中显示了,窗口是空白的,请问这是为什么啊… 查看全部问答> |
|
我在写一个2440 ADC的驱动程序,程序已经被windows启动起来了,但是只要一执行到以下初始化红色的地方,程序就在串口输出崩溃信息。我的问题是,是不是触摸屏也在使用这个ADC。而2个驱动程序不能互相竞争这个寄存器? 我感觉不应该这样的,我在初 ...… 查看全部问答> |
|
开发环境如下: os:xp sp2 modlesim: modlesim se 6.3f 我写了一个misctf的函数,声明:int clkReactive (int data, int reason), s_tfcell veriusertfs[] = { {usertask, 0, clkInit, 0, clkGen, clkReactive, \"$clkGen\"}, ...… 查看全部问答> |
|
三星2440A,的ARM9芯片,里面有GSTATUS2和GSTATUS4等寄存器。说明里是说GSTATUS4只会在电源复位的时候才会丢失数据。否者一直保存数据。 下面就是我主要要问的问题了: 使用2440内部看门狗复位,会不会导致GSTATUS4的数据丢失呢? 请验证过的朋 ...… 查看全部问答> |
|
2010.8.5 板子发送及焊接调试阶段 ,调试问题详见2楼C8051版原理图及PCB: https://bbs.eeworld.com.cn/thread-154053-1-1.htmlC8051版器件清单:C8051F湿度计元器件说明:https://bbs.eeworld.com.cn/thread-154061-1-1.htmlC ...… 查看全部问答> |
|
LED照明行业是一个新兴的行业,它以其独特的优点深受人们的青睐。如今在光电工程中,提高光效,节约能源和高可靠性已经成为人们共同追求的目的。我们在讨论和使用LED光源时,都会想到LED的寿命长、节约能源、亮度高等特点。也正是因为如此LED光源才 ...… 查看全部问答> |




