跪求一个单片机程序

跪求一个单片机程序用一个按钮,控制第一位数码管显示9!
跪求程序!

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SH_CP=P1^2; //移位时钟脉冲
sbit DS=P1^3; //串行数据输入
sbit ST_CP=P1^4; //输出锁存器控制脉冲
sbit key=P1^0;
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMS(uint ms) 
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//串行输入子程序
void In_595(uchar temp)
{
uchar i;
for(i=0;i<8;i++)
{
temp<<=1;DS=CY;
SH_CP=1; //移位时钟脉冲上升沿移位
_nop_();_nop_();
SH_CP=0;
}
}
//并行输出子程序
void Out_595()
{
ST_CP=0;_nop_();
ST_CP=1; //上升沿将数据送到输出锁存器
_nop_();
ST_CP=0; //锁存显示数据
}
//主程序
void main()
{
uchar i;
uchar dat[3]={0,1,2};
while(1)
{
if(key==0)In_595(dat[0]);
else In_595(9);
In_595(dat[1]);
In_595(dat[2]);
Out_595();
}
}追问

就是开始全部不用亮 那如果我要串口通讯,和plc连接, plc发出来的数据是十进制的33, 有信号过来怎么让第一位为9

那如果是用plc通讯 比如plc发一个信号给单片机 是十进制33,然后单片机接受到33后怎么选择第几位的595 显示什么

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答