求给此单片机程序下载电路编程程序和电路

入门经典!11 个单片机程序设计经典项目!25个项目资料免费放送!
项目 1 P0.0 接口驱动 LED 闪烁
闪烁控制是安全灯、高层建筑、高空飞行器、警示灯等设备灯光闪烁控制的原理基础,也是单片机项目学习过程中最简单的项目。这里我们做为一个项目设计,详细叙述项目实现的基本过程。
1.电路设计
电路硬件是单片机项目实现的基础,在项目设计过程中必须先设计项目的电路原理。为了提高程序和电路的联调效果,我们采用 Proteus 软件设计单片机项目的仿真电路,当程序设计完成后,可在仿真系统中直接加载程序验证程序设计的完整性。
(a)低电平驱动 (b)高电平驱动
图 1 P0 接口驱动 LED 电路
LED 闪烁电路参考图 1b 低电平直接驱动方式。项目设计时,应先根据项目的原理图利用 Proteus 软件设计仿真电路图,下面重新说明 Proteus 使用过程。
(1)打开 Protuse 软件的 ISIS 程序并保存文件
一个项目包含程序和电路两部分,因此在使用 Protuse 软件的设计电路时,应首先考虑仿真电路文件的目录。在学习项目设计过程中,建立科学的项目目录结构对于养成良好的项目开发习惯有很多益处,因为真正进行单片机项目开发时,你所做的一切都很重要。项目 1
所在的目录结构见图 2 所示。
图 2 项目 1 目录结构
操作过程中,首先打开 Protuse ISIS 程序,鼠标左键点击 File&S**e Design As,在弹出的窗口中选择合适路径,然后点击&创建新文件夹&并命名为&项目 1-LED 闪烁&;然后进入这个文件夹后,再创建一个新文件夹命名为&电路&。再一次进入&电路&文件夹中,这时才对要保存电路文件命名,比如&LED 闪烁&。
(2)Protuse ISIS 设计电路
使用 Protuse 进行原理图设计主要操作为放置元器件和连线。本项目所使用的单片机型号虽然为 STC89C51,但在 Protuse 中是 51 内核的单片机都可以使用。这里选择
Micropocessor Ics-8051 Family 中的 80C51。Protuse 原理图中的单片机电路符号,含有
完整的单片机最小系统模型,并且电源默认连接完好。仿真电路设计见图 3 所示,为了使
LED 达到显示效果,上拉电阻 R1 取值为 470 欧姆,实际应用要取值大一些。电路设计完成
后,再次保存设计,下面就可以设计程序了。
图 3 项目 1 的仿真电路图
2.程序设计
本项目采用 Keil 软件进行设计,基本操作共 4 个步骤,分别是创建一个项目、新建 C
文件、程序设计、生成 HEX 文件。
创建项目和新建 C 文件比较简单,这里不再详细说明,但要注意,在打开 Keil 软件时,新建的工程必须保存在项目 1 目录下的程序中,新建一个 C 文件,应保存为 main.c,并加载到工程中。
(1)程序设计
由于单片机内部的 P0~P3 寄存器都可以进行位操作,程序设计过程中,可以利用程序对
P0.0 位直接操作即可控制 LED 的闪烁。
C51 定义 P0.0 为 P0^0,因此在利用 C 语言程序设计时,可使 P0.0 输出高、低电平,如
P0.0 输出低电平,程序中编写 P0^0 为 0 即可。为了使程序简单明了,可以利用 sbit LED = P0^0 语句,让 LED 代替 P0^0。
在程序编写过程中,项目程序设计的一般顺序是先写#include&reg51.h&,然后编写主
函数,用到 LED 时,才在程序的预处理区写&sbit LED = P0^0;&,用到延时函数时才在主
函数前面写 void delay(unsigned int x)函数。千万不要按照提供的程序一步一步地照
抄,因为这样等于自己没有一个完整的编程思路。本项目的具体程序为
#include&reg51.h&
//包含头文件
sbit LED = P0^0;
// LED 接 P0.0。在 kell C51 软件中,定义 P0.0 为 P0^0,
void delay(unsigned int x)
//延时函数
while(x--);
void main(void) //主函数
LED =0; //P0.0 输出低电平,LED1 灭
delay(50000); //调用延时函数,延时一段时间,约 0.3 秒,不精确
LED ==1; //P0.0 输出高电平,LED1 亮
delay(50000);
(2)程序说明
1)本项目中,单片机型号为 STC89C51,因此程序包含 reg51.h 文件,reg51.h 文件定义了 51 单片机所有特殊功能寄存器的名称定义和相对应的地址值。
2)单片机程序顺序执行,先执行主函数,在主函数内可以调用子函数,子函数可以调用子函数,但子函数不能调用主函数。单片机程序从主函数入口依次执行每一条指令,执行完毕后返回到主函数入口进行下次循环。
3)延时函数。延时的过程是程序执行了一个延时函数 delay()。在主函数调用延时的过程中,如果单片机没有中断发生,单片机只能忙于执行这个延时函数。
单片机在执行延时函数相关指令时,每一条指令都会占用一定数量的机器周期,执行完延时函数的所有指令,浪费或占用的时间就是调用延时函数所获得的延时时间,但执行延时函数不能得到精确的延时时间。
4)利用位定义命令让 LED 等价于 P0.0 位,程序执行 LED1=1 后,单片机内部位寄存器
P0.0 位就设置为高电平,同时 P0.0 端口就会输出高电平。单片机的所有 I/O 接口都可以进行位操作,也可以字节操作。
5)利用 C 语言编写单片机程序时,每个人都有自己的风格。虽然 C 语言格式自由,但作为单片机的程序语言,具有严格的书写格式。为了提高单片机 C 语言程序的可读性,增加程序页的层次感,一般情况下,函数的字符左边距为 0,函数体每条语句前留一个&tab&
键空;算数逻辑符号的左右各留一个空格,关键语句要有中文或英文注释,关键函数有时需要用&/**...**/&说明,并把主函数所在的程序命名为 main.c。
6)实际应用中,把 LED 换成继电器或其它驱动电路,就可以让单片机间接驱动一个大功率的负载,如额定电压为交流 220V、200W 的红色的灯泡闪烁。图 4 电路为安全灯闪烁驱动电路,双向光电晶闸管型号为 MOC3061,再加上一级晶闸管 VTH,可以实现更大功率的负载驱动。
图 4 单片机大功率交流负载驱动
3.程序编译并创建 HEX 文件
程序编译是检验程序设计格式或代码错误的过程。如果程序在编译过程中出错,会在
Keil 的编译结果栏中进行提示。程序的调试修改过程一般先用鼠标左键双击最上面的错误提示进行修改,然后再编译,一直到无错误、无警告为止。
HEX 文件是单片机可以执行的二进制文件,程序编译无误后可以通过 Keil 软件创建一个 HEX 文件。在工具栏中 Project&Options For Target &target 1&&Output&窗口中选中&Create HEX Fi&,再编译时,Keil 即可创建一个 HEX 文件,这个文件自动保存在项目程序的目录下。 可将 Keil 软件创建的 HEX 文件直接下载到实验开发板上的单片机中运行,也可以加载到仿真电路中的单片机内运行。
4.软件仿真
软件仿真是一种单片机系统测试,在没有硬件的条件下,利用 Protuse 进行软件仿真可以快速检验单片机程序设计的正确性。本项目在仿真时,需要利用 Protuse 先画出项目的参考电路,然后把本项目程序创建的 HEX 文件加载到单片机中,最后单击运行即可可以看到本项目 LED 闪烁的效果。
Protuse 是单片机程序设计的重要仿真工具,但软件仿真不能测试软件的安全性和可靠性,也不能测试电路电气特性的完整性。单片机的程序设计或相关产品开发必须有相关的软件和硬件实验支撑。本项目中,为了进一步验证程序的可靠性,可以把程序下载到实验开发板或实验箱中的单片机内进行实际运行。
因为本项目比较简单,初学者在了解项目的设计过程后可亲自动手设计电路并编写程序,实现项目的功能和要求。如果能看到成功的仿真结果,一定会有成就感,这就是项目设计的兴趣所在。
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号15被浏览3,116分享邀请回答2添加评论分享收藏感谢收起3添加评论分享收藏感谢收起写回答后使用快捷导航没有帐号?
来自ValentinRuhry的创意,这哥们用整整500
51单片机驱动WS8212系列集成LED程序及电路图(任意色彩搭配流水灯设计方案)
本帖最后由 E-Man 于
01:37 编辑
据我所知对于广大单片机初学者来说,这个芯片是冷门的!So,最近闲着无聊,又不想更新之前写的帖子,闲来无事看到下面这个家伙,写个程序玩玩,ok,废话不多说,直接上内容,此帖程序内容属于原创,禁止淘宝商家盗用!否则必究!据我所知,网络上还没有这个芯片的51程序。当然,谁会闲着蛋疼51写这个程序。仅以此贴献给刚刚学会流水灯的孩子,学会这个就可以搞任意颜色搭配的流水灯了,而且根本不用考虑引脚个数(碎碎念:只用一个引脚就可以控制几百个以上的灯珠,每个灯珠颜色是255*255*255种)!!!视频还没有审批通过,刚上传!等通过后在后面补上连接。
另外:秉持一贯开源的精神&&...求评分!!!!
貌似从DOC文档中无法带进来图片,我也懒得上图片了,这个东东的资料可以去百度去搜。
/*******************************************************************************************/
/***************************************专用分割线*******************************************/
WS2812B51单片机驱动程序+电路图+视频展示
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。
LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。
机械尺寸(单位mm)
数据传输方法:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png
代码如下:
/********************************************************/
/*作 者:Dyingstraw
/*修改日期:
/*版& & 本:V1.0
/*程序功能:用51单片机控制ws2812 RGB输出,显示全色彩
/*备& && &&&注:51单片机晶振24M
/********************************************************/
#include&reg52.h&
#include&intrins.h&
#define uchar unsigned char
sbit Send_Dat=P1^0;& && && && && &//数据输出,接IN脚
sbit Key=P1^1;& && && && && && && & //按键等待
sbit Send_Dat1=P1^2;& &//中断状态灯
uchar RGB_BUF[24];
void delay();
void delays();
void init();
uchar Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};& && &&&
//存储一个转化后的RGB2进制数&&共24bits
struct My_24bits& && && && && && &&&//结构体
{
& && & uchar G_VAL;& && && && && &&&//绿色&&0-255
& && & uchar R_VAL;& && && && && && &//红色 0-255
& && & uchar B_VAL;& && && && && && &//蓝色0-255
};
/*写入数据时序*/
void Send_A_bit(uchar VAL)
{
//& &&&Send_Dat=0;
& && & if (VAL==1)
& && & {
& && & //& &&&Send_Dat=0;
& && && && &&&Send_Dat=1;
& && && && &&&_nop_();
& && && && &&&//_nop_();
& && && && &&&Send_Dat=0;& && && && &//2.17us
& && && && &&&//_nop_();
& && & //& &&&Send_Dat=1;& && && && && &&&//2.17us
& && & }
& && & else
& && & {
& && & //& &&&Send_Dat=0;
& && && && &&&Send_Dat=1;
& && && && &&&//_nop_();
& && && && &&&//_nop_();
& && && && &&&Send_Dat=0;& && && &&&
& && && && &&&_nop_();
& && & //& &&&Send_Dat=1;
& && & }& && && &&&
& && &
}
/*发送24位字符(包含RGB信息各8位)*/
void Send_24bits(struct My_24bits RGB_VAL )& && && && && && && &
{
& && &
& && & for& &(i=0;i&8;i++)
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.R_VAL&&i&0x01;& && && && && && && && &&&//转化R_VAL
& && & }
& && && && &&&for& &(i=8;i&16;i++)
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.G_VAL&&(i-8)&0x01;& && && && && &//转化G_VAL
& && & }
& && && && &&&for& &(i=16;i&24;i++)& && && && && && && && && && && && && && && && && && & //转化B_VAL
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.B_VAL&&(i-16)&0x01;& &&&
& && & }
& && & for (i=0;i&24;i++)
& && & {
& && && && &&&Send_A_bit(RGB_BUF[i]);
& && & }
& && &
}
/*主函数*/
void main()
{
& && & struct My_24bits a,b,c,d,e,f,g;
& && & a.R_VAL=0
& && & a.G_VAL=0x00;& && && && && && && & //1& && && && && && & 颜色顺序,下同
& && & a.B_VAL=0x00;
& & b.R_VAL=0x00;
& && & b.G_VAL=0& && && && && && && &&&//2
& && & b.B_VAL=0x00;
& && & c.R_VAL=0x00;
& && & c.G_VAL=0x00;& && && && && && && && &&&//3
& && & c.B_VAL=0
& && & d.R_VAL=0& && && && && && && && && &//4
& && & d.G_VAL=0
& && & d.B_VAL=0x00;
& && & e.R_VAL=0
& && & e.G_VAL=0x00;& && && && && && && && && &&&//5
& && & e.B_VAL=0
& && & f.R_VAL=0x00;
& && & f.G_VAL=0& && && && && && && && && && && & //6
& && & f.B_VAL=0
& && & g.R_VAL=0& && && && && && && && && && && & //7
& && & g.G_VAL=0
& && & g.B_VAL=0
& && & init();
& && & while(1)
& && & {
& && & Send_Dat=0;
& && & Send_24bits(a);
& && & Send_Dat=0;& &P0=0xF9;
& && & delays();
& && & while(Key==1);& && && && && && && && && && && && && & //按键等待,当Key=1时停止,等于0时七种颜色流水灯循环,下同(主要方便观察颜色)
& && & Send_24bits(b);
& && & Send_Dat=0;& && && & P0=0xa4;& && && && && &//共阴极数码管显示颜色顺序,下同
& && & delays();
& && & while(Key==1);
& && & Send_24bits(c);
& && & Send_Dat=0;& &P0=0xb0;
& && & delays();
& && & while(Key==1);
& && & Send_24bits(d);
& && & Send_Dat=0;& &P0=Led_Tab[4];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(e);
& && & Send_Dat=0;& &P0=Led_Tab[5];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(f);
& && & Send_Dat=0;& &P0=Led_Tab[6];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(g);
& && & Send_Dat=0;& &P0=Led_Tab[7];
& && & delays();
& && & while(Key==1);
//& &&&PCON|=0x01;& && && && && && && & //空闲模式
& && && && &
& && & }
}
/*中断唤醒测试函数*/
void INT1_ISR(void) interrupt 2
{
& && & P2=1;
}
/*小延时函数*/
/*大概1S吧,随便写的*/
void delay()
{
uchar i,j;
& && & for (i=0;i&250;i++)
& && & {
& && && && &&&for (j=0;j&250;j++);
& && & }
}
/*大延时函数*/
/*十几秒*/
void delays()
{
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();&&
& && & delay();
& && & delay();
& && & delay();
}
/*系统初始化*/
void init()
{
&&P0=0x00;
&&P1=0x00;
&&P2=0x00;
&&P3=0x00;
&&TCON=0x05;
&&TMOD=0x00;
&&TH0=0x00;
&&TL0=0x00;
&&TH1=0x00;
&&TL1=0x00;
&&T2CON=0x00;
&&RCAP2H=0x00;
&&RCAP2L=0x00;
&&IP=0x00;
&&IE=0x85;
&&PCON=0x00;
&&SCON=0x00;
}复制代码东西狠小,一支笔对比!引脚标注是错的,请忽略!
下图序号小时不正确!
集中颜色的图片,意思一下。最后一张是实物图,单片机应该看不到吧(这个图片不是这个程序的,另外的序号不一样)
IMG_651.jpg (28.31 KB, 下载次数: 10)
01:30 上传
IMG_705.jpg (20.2 KB, 下载次数: 4)
01:30 上传
IMG_718.jpg (36.61 KB, 下载次数: 6)
01:30 上传
IMG_805.jpg (31.55 KB, 下载次数: 6)
01:30 上传
IMG_921.jpg (40.69 KB, 下载次数: 5)
01:30 上传
马克笔画出来的,引脚标注是错误的!!!请自觉忽略!!
视频地址:&embed src=&http://player.youku.com/player.php/sid/XOTQ2MTg0NjA0/v.swf& allowFullScreen=&true& quality=&high& width=&480& height=&400& align=&middle& allowScriptAccess=&always& type=&application/x-shockwave-flash&&&/embed&
自己嗨,好无聊,感谢hai.yang20189评分!
本帖最后由 ianon 于
21:18 编辑
这个LED要求速率很高,用STC来做有点紧张,楼主还用了点技巧,赞
花了不少时间调时序吧,我刚好可以借鉴了
ianon 发表于
这个LED要求速率很高,用STC来做有点紧张,楼主还用了点技巧,赞
花了不少时间调时序吧,我刚好可以借鉴了
其实还行吧,51速率刚好够。现在用stm32写了一个控制器玩,有时间交流
楼主多才多艺,还能玩stm
调时序用了示波器吗?我是两眼一摸黑
ws2812.png (148.35 KB, 下载次数: 11)
WS2812时序图
09:17 上传
其实我们都被误导了,WS8212适应性很强,并不是一定要800K的速率,低速率也可以,只要调好占空比,我试过400K都能用
折腾了2天,输出波形还是不稳定,真应该用PWM输出来做
可恨的是我选的这个STC15L204竟然不带串口不带PWM,晕死了
ianon 发表于
折腾了2天,输出波形还是不稳定,真应该用PWM输出来做
可恨的是我选的这个STC15L204竟然不带串口不带PWM, ...
没有串口毕竟还是少见
Copyright &
Powered by基于51单片机的信号发生器-完整电路、程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机的信号发生器-完整电路、程序
&&本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 单片机电路图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信