历史上的今天
今天是:2025年04月07日(星期一)
2020年04月07日 | 89c51单片机的简单运用1--数码管、流水灯
2020-04-07 来源:eefocus
一.简单的点灯程序需要记住的
1.单片机控制开发板的二极管亮灭:
由单片机的P1口控制,注意开发板的原理图,分清楚到底是给低电平亮还是高电平亮,一般都给低电平亮。
控制灯分为总线法和位选法,总线法是用十六进制数控制P1口的高低电平,1为高,0为低,位选是选出P1口的任意一位操作。
流水灯是通过延时函数或定时器延时,依次控制不同的灯亮来完成流水灯
2.数码管的静态显示和动态扫描:
Lab-MCS51开发板通过单片机的P^0~P^3口分别控制四个数码管的亮灭,每个数码管显示的内容由P0口控制,

控制线路图如上,通过P0使a,b,c,d,e,f,g,dp亮,显示不同的数字或符号。
动态扫描是减少数码管间亮的间隙,使人的视觉感觉不出,造成数码管同时亮的假象。
#include void main() //主函数 { unsigned int i; //定义一个int型变量 while(1) { i=50000; //变量赋初值为50000 P1=0xfe; //点亮第一个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xfd; //点亮第二个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xfb; //点亮第三个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xf7; //点亮第四个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xef; //点亮第五个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xdf; //点亮第六个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xbf; //点亮第七个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0x7f; //点亮第八个灯 while(i--); //延时 } } 流水灯; #include #include void main () { int i, j ,k ; // for(i=0;i<8;i++) P1=0xfe; for(j=0;j<50000000;j++) P1= _crol_(P1,1); // for(k=0;k<50000000;k++) ; } 数码管显示 #include #define uchar unsigned char #define uint unsigned int //sbit wela=P2^7; // sbit dula=P2^6; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; uchar num; void delay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); } void main() { // wela=1; P2=0xf0; // wela=0; while(1) { for(num=0;num<10;num++) { // dula=1; P0=table[num]; // dula=0; delay(500 ); } } }
史海拾趣
|
本帖最后由 dontium 于 2015-1-23 13:21 编辑 在这里抛个问题,考考大家: 一般对ADC的出口管制相当严格,而DAC往往显得并不是那么计较 大家猜猜看是什么原因? … 查看全部问答> |
|
Oops SIGSEGV: 0000 [#1] Modules linked in: embxmailbox(P) stgfb_core(P) led st7105_ks nandbm embxloopback(P) embxshell(P) mme_host(P) embxshm(P) stapi_ioctl(P) stapi_core(P) Pid : 5705, Comm: &nbs ...… 查看全部问答> |
|
请问有没哪位使用Keil uVision4或者tkstudio用汇编写过lpc1114的程序? 如题,有的话可以发一份简单的例程给我吗?或者把大概思路说一下,谢谢! 我的邮箱是:psmeng@gmail.com… 查看全部问答> |
|
用到了5个时钟,19.2k、40k、80k、480k、960k、dc综合之后(用的umc库)做了一下后仿40k跟80k时钟总是没有,一直保持为0;我单独把40k和80k拿出来后仿时钟都能出来,可一到总模块就不行了,这是为什么啊??我试着用smic库做了以下综合和后仿没有任 ...… 查看全部问答> |
|
想把一个输入Vpp=500mV,频率等于200K的方波放大9倍,两级放大,但是出现了过冲(应该算是振铃吧),不知道该如何解决,求大神们讲解下过冲的由来及解决方案,不胜感激… 查看全部问答> |
|
论坛的C2000™ Piccolo LaunchPad但是考试满分通过,排在109楼,现在审核名单下来了,8个人审核不通过,所以第108楼还有板子,到我那就没了。。。… 查看全部问答> |




