永发信息网

求大触帮忙写语C自戏!!!!!!

答案:1  悬赏:30  手机版
解决时间 2021-11-12 00:59
求大触帮忙写语C自戏!!!!!!
最佳答案
//头文件:
#include

//变量定义:
code unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//表:共阳数码管 0-9

unsigned char l_posit=0; //显示位置
unsigned char oldkey=0xff; //保存按键接口状态

//引脚定义:
sbit SMG_q = P1^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)

sbit SPK = P1^5; //定义蜂鸣 器
sbit JDQ = P1^4; //定义蜂鸣 器

sbit key1 = P3^7; //定义按键1
sbit key2 = P3^6; //定义按键2
sbit key3 = P3^5; //定义按键3
sbit key4 = P3^4; //定义按键4
sbit key5 = P3^3; //定义按键5
sbit key6 = P3^2; //定义按键6


//参数范围 0-65536
void delay(unsigned int t)
{
while(t--);
}
//显示函数,参数为显示内容
void display(unsigned int da)
{
P0=0xFF;
da=da%10000;
switch(l_posit){
case 0: //选择千位数码管,关闭其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[da/1000]; //输出显示内容
break;
case 1: //选择百位数码管,关闭其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[da%1000/100];
break;
case 2: //选择十位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[da%100/10];
break;
case 3: //选择个位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[da%10];
break;
}
l_posit++; //每调用一次将轮流显示一位
if(l_posit>3)
l_posit=0;
}
//扫描键盘
unsigned char ReadKey(void)
{
unsigned char lkey=0;
if((P3&0xfc)!=0xfc){ //检测所有按键是否有按键按下

SPK=0; //按键按下则蜂鸣器发声

delay(10); //有按键按下则延时一段时间,以消除按键拌动
if(oldkey!=(P3&0xfc)){//检测按键未松开而且不是之前按下的按健就进入读键值,否则不作处理
oldkey=P3&0xfc; //保存当前状态,为下一次扫描做判断,请看上一行
if(key1==0)
lkey=1; //第一个键按下复值1
else if(key2==0)
lkey=2; //第二个键按下复值2
else if(key3==0)
lkey=3; //第三个键按下复值3
else if(key4==0)
lkey=4; //第四个键按下复值4
else if(key5==0)
lkey=5; //第五个键按下复值5
else if(key6==0)
lkey=6; //第六个键按下复值6
}
}
else{
oldkey=0xfc; //如果都没有按键按下,将复值初始状态

SPK=1; //无按键按下则退出蜂鸣
}
return lkey;
}

//主函数
void main(void)
{
unsigned int ldata=0; //作为显示的数据
unsigned char i;
for(i=0;i<8;i++)
{
P2<<=1; //用移位法将1向高位移入一位
delay(25000);
}
P2=0xff; //LED灯测试完毕

for(i=8;i>1;i--)
{
P2>>=1; //用移位法将1向高位移入一位
delay(25000);
}

for(i=1;i<2;i++)
{
P2=0xfe;
delay(20000);
P2=0xfd;
delay(20000);
P2=0xfb;
delay(20000);
P2=0xf7;
delay(20000);
P2=0xef;
delay(20000);
P2=0xdf;
delay(20000);
P2=0xbf;
delay(20000);
P2=0x7f;
delay(20000);
P2=0xbf;
delay(20000);
P2=0xdf;
delay(20000);
P2=0xef;
delay(20000);
P2=0xf7;
delay(20000);
P2=0xfb;
delay(20000);
P2=0xfd;
delay(20000);
P2=0xfe;
delay(20000);
P2=0xff;
}

P0=0; //数码管输出,准备测试每一位
SMG_g=0; //测试个位数码管
delay(38000);
SMG_g=1; //关闭数码管,测试个位完毕

SMG_s=0; //十位
delay(38000);
SMG_s=1; //

SMG_b=0; //百位
delay(38000);
SMG_b=1; //

SMG_q=0; //千位数码管
delay(38000);
SMG_q=1; //关闭数码管,测试个位完毕

SMG_b=0; //百位
delay(38000);
SMG_b=1; //

SMG_s=0; //十位
delay(38000);
SMG_s=1; //

P0=0; //数码管输出,准备测试每一位
SMG_g=0; //测试个位数码管
delay(38000);

SMG_s=0; //十位
delay(38000);

SMG_b=0; //百位
delay(38000);

SMG_q=0; //千位数码管
delay(38000);
SMG_g=1;
SMG_s=1;
SMG_b=1;
SMG_q=1;

SMG_q=0; //千位数码管
delay(38000);

SMG_b=0; //百位
delay(38000);

SMG_s=0; //十位
delay(38000);

P0=0; //数码管输出,准备测试每一位
SMG_g=0; //测试个位数码管
delay(38000);
SMG_g=1;
SMG_s=1;
SMG_b=1;
SMG_q=1;

SPK=0; //测试蜂鸣器
delay(3500);
SPK=1; //关闭蜂鸣器
delay(30000);
SPK=0; //测试蜂鸣器
delay(3500);
SPK=1; //关闭蜂鸣器
delay(30000);
SPK=0; //测试蜂鸣器
delay(50000);
SPK=1; //关闭蜂鸣器
delay(30000);
SPK=0; //测试蜂鸣器
delay(50000);
SPK=1; //关闭蜂鸣器
delay(30000);
SPK=0; //测试蜂鸣器
delay(50000);
delay(50000);
delay(50000);
SPK=1; //关闭蜂鸣器
delay(30000);

JDQ=0; //测试继电器
delay(50000);
JDQ=1; //关闭继电器
delay(50000);
JDQ=0; //测试继电器
delay(50000);
delay(50000);
delay(50000);
JDQ=1; //关闭继电器

for(i=0;i<8;i++)
{
P2<<=1; //用移位法将1向高位移入一位
delay(50);
}

while(1){ //循环扫描按键及显示
switch(ReadKey()){ //读取键值做以下相应处理
case 1:ldata++; //1键显示内容加1
P2=0xfe;
break;
case 2:ldata--; //2键显示内容减1
P2=0xfc;
break;
case 3:ldata+=10; //3键显示内容加10
P2=0xf8;
break;
case 4:ldata-=10; //4键显示内容减10
P2=0xf0;
break;
case 5:ldata+=100; //5键显示内容加100
P2=0xe0;
break;
case 6:ldata-=100; //6键显示内容减100
P2<<=1;
break;
}
display(ldata); //显示相应的数值,这里用函数的形式调用显示
delay(100);
}
}追问额、、、、追答C语言编程,可控制单片机LED灯,数码管,继电器,蜂鸣器等工作,我修改的代码,测试通过的!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
42号和44号的麻将牌可以放到同一部机子里面吗
大连影视制作哪家好
流量式灌装机和称重式灌装机区别在哪
美国慕得利特在国内有服务中心吗
各位师傅你们好,我修到一款半球电磁炉E0故障
斜齿轮都有哪些优缺点?
请问<a href="?out=login">退出</a>中间
梵蒂雅红葡萄酒12度750ml原装进口值多少?
颜体字和宋体字有什么共同点?
NBA5号球衣是谁?
牛仔裤的裤脚怎么裸脚翻边 怎么搞才能像 图1
成都浦克远航企业管理有限公司是真的还是假的
桑叶粉与荷叶粉相比,哪个的减肥效果更好
在空调通用控制板中,提及霍尔反馈这概念,它
六口加八口,一口开了口打一字
推荐资讯
请教因为严重崴脚不能参加学校长跑的英文请假
win7怎么设置显示文件后缀名
量化交易落地终端与线上平台有什么区别?
月季这花骨朵咋了,怎么全都下垂了
闽兴台球·电玩城地址有知道的么?有点事
如果电脑屏幕的显示突然倒过来了怎么办?(逆
50×38等于多少,这怎么列竖式
c语言 gpu
泰坦400的电源是真400w吗?峰值功率是多少?
冶金行业的利润都被铁矿石赚了,这句话对吗
被骗了400多块钱 报警的话警察会立案么
解析看不懂
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?