用单片机控制两个数码管显示同时控制流水灯?
89c51单片机用词语言编写题目要求是显示两种模式第一种当按键没按下时数码管显示01流水灯花样一当按键按下时数码管显示02流水灯花样2#include#defineuin...
89c51单片机 用词语言编写 题目要求是显示两种模式第一种 当按键没按下时数码管显示01 流水灯花样一 当按键按下时数码管显示02 流水灯花样2#include#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;uchar code aaa[]={0xf0,0x0f,0xff};uchar code bbb[]={0xff,0x3c,0x00,0xc3};uchar code table[]={0x3f,0x06,0x5b};sbit BY1=P3^4; //定义按键的输入端S2键uint a,b,c,d;uchar r=1;void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=100;y>0;y--);}key() //按键判断程序{ if(BY1==0) //判断是否按下键盘 { delay(10); //延时,软件去干扰 if(BY1==0) //确认按键按下 { r=2; } }} dis8() //数码管显示程序(第c个数码管显示r){ dula=0; P0=table[r]; //数码管段信号输出 dula=1; dula=0; wela=0; P0=0x3d; //数码管位信号输出 wela=1; wela=0; delay(5); dula=0; P0=table[0]; //数码管段信号输出 dula=1; dula=0; wela=0; P0=0x3e; //数码管位信号输出 wela=1; wela=0; delay(5); }deng(){ if(r==1) {for(;b<3;b++) ///i的个数即为花样的个数 { P1=aaa[b]; delay(100); }b=0; } if(r==2) {for(;c<4;c++) ///i的个数即为花样的个数 { P1=bbb[c]; delay(100); }c=0; }} void main(){ while(1){ EA=1; ET0=1; TMOD=0X01; TH0=-50000/256; TL0=-50000%256; TR0=1;key();dis8();deng();r=1;}}void intserol() interrupt 1{ TH0=-50000/256; TL0=-50000%256;} 上面是我写的 但是数码管显示不咋好,就是那流水灯赚的时间太多导致
展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询