求89c51单片机led设计程序.C语言编写 要带电路图
有图形最好 程序中要综合延时定时 循环什么的
反正就是 看着要有点内容 但是也不能太深入
P0P1P2口同时实现流水灯 用for语句
一共20个发光二极管 展开
/* 74HC595 驱动程序
模块不用 9脚Qs---串行数据输出端
模块不用 10脚CR-清除端 L电平仅对寄存器复位 【9脚为 L;9脚进位】;锁存器没有影响。
11脚sclk-- 由低到高电平时 14脚Ds数据移入寄存器
12脚CP/la-- 由低到高电平时 数据从寄存器移入锁存器
模块不用 13脚NE--H电平【只对并行数据 Q0--Q7高阻态】
14脚SER--串行数据输入端
*/
#define uchar unsigned char
#define uint unsigned int
sbit ser=P3^0;// 14脚SER--串行数据输入端
sbit sclk=P3^3;//11脚srclk-- 由低到高电平时 14脚Ds数据移入寄存器
sbit rck=P3^2; // 12脚CP/la-- 由低到高电平时 数据从寄存器移入锁存器
sbit mr=P3^4;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=50;y>0;y--);
}
void WriteSIOByte(unsigned char val)
{
unsigned char i;
mr=0;
mr=1;
for (i=8; i>0; i--) //因为数码为8段 要运行8次 【1段送一次码】并移动一位
{
sclk= 0;//拉低74HC595 时钟 【11脚CP/sr--】
ser=val&0x01;// 发送74HC595 一位串行数据 【14脚DS--串行数据输入端】
delay(1);//延时
sclk = 1;//拉高74HC595 时钟 【11脚CP/sr--】
val>>=1;//
}
rck=0;
delay(1);//延时
rck=1; //12脚CP/la-- 由低到高电平时 数据从寄存器移入锁存器
}
///// 目前没有用 移位程序
uchar yiwei(uchar a) //移位子程序把如【P0-1变为P0^7】
{
uchar temp;
temp=(a&0x01)<<7;
temp=((a&0x02)<<5)|temp;
temp=((a&0x04)<<3)|temp;
temp=((a&0x08)<<1)|temp;
temp=((a&0x10)>>1)|temp;
temp=((a&0x20)>>3)|temp;
temp=((a&0x40)>>5)|temp;
temp=((a&0x80)>>7)|temp;
return (temp);
}
//////////////、、、、、、、、、、、、、、、、
/*************************************************************************************
第一行是一个"文件包含"处理。
所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来
这里的程序虽然只有4行,但C编译器在处理的时候却要处理几十或几百行
*****************************************************************************/
sbit P1_0=P1^0; //定义IO口
void delay02s(void) //延时0.2秒子程序
{
unsigned char i,j,k; //定义3个无符号字符型数据。
for(i=20;i>0;i--) //作循环延时
for(j=20;j>0;j--)
for(k=24800;k>0;k--);
}
void main(void) //每一个C语言程序有且只有一个主函数,
{
while(1) //循环条件永远为真,以下程序一直执行下去。
{
P1_0=0; // I/O口P1.0输出低电平,小灯被点亮。
delay02s(); //延时经过0.2秒。
P1_0=1;// I/O口P1.0输出高电平,小灯熄灭。
delay02s(); //延时经过0.2秒。
}
}
P1.0这个引脚接1k电阻然后5v高电平。
其他的就是单片机最小系统了,网上自己搜吧,很多的