- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机的基本外围电路设计以及相关C语言程序(免积分)
主要学习51单片机的外部引脚和内部结构等,叙述一下。本书任务驱动教学,引入案例有浅变深,循序渐进,给读者留下思考和发挥空间。
3.1 利用单片机的I/O口驱动LED
3.1.1利用单片机的P0.0 端口驱动1只LED闪烁
编程的目的是利用C语言控制单片机I/O端口按要求输出矩形波脉冲信号,信号的周期由延时函数决定。
一、电路原理
STC-89C51单片机的P0口采用为OD门输出,不存在拉出电流,因此利用P0驱动负载时有两种接法:一种是加上拉电阻R2,见图3-1-1,既用1K电阻接电源正极,此时P0口输出高电平时LED亮;另一种电路为P0.7低电平驱动有效,在P0.7输出低电平时,STC-89C51端口灌入电流达20mA,可直接驱动小负载。图3-3-1中的R3为限流电阻,限制LED2的工作电流。
图3-1-1 驱动LED电路原理
单片机的最小系统包括晶体振荡电路,加电复位电路,同时要求单片机的31引脚接高电平。时钟频率主要由晶体CY决定,C1、C2为独石电容,用于微小调整单片机时钟的振荡频率;R1和C3组成加电复位电路,C3为电解电容器;整个电路由+5V电压供电。电路使用的元件参数见表3.1.1。
表3.1.1 3-1-1电路元件表
元件名称 序号 标称 规格(封装,功率电压等参数) 作用 单片机 IC STC89C51 DIP40 核心芯片 电容器 C1 30PF 独石 振荡 电容器 C2 30PF 独石 振荡 电容器 C3 10F 点解电容器 复位 晶振 CY 12MHz S型 振荡 电阻 R1 1K 1/4W,金属膜 电容器C3放电电阻 电阻 R2 1K 1/4W,金属膜 端口电位上拉电阻 电阻 R3 1K 1/4W,金属膜 限流电阻 发光二极管 LED1 5 红色高亮 显示 发光二极管 LED2 5 红色高亮 显示 二、程序设计
1.程序设计平台
程序设计采用keil C 软件,为了养成一个良好的文件管理习惯,建议:编程前,在计算机的某个硬盘分区下建立一个目录,目录的名字为你编写程序的主题,然后把keil C产生的所有文件都放在该目录下。程序设计步骤如下:
(1)运行keil C,创建一个项目。利用keil C菜单栏中project-new project创建,项目的名字为你编程的主题,如本案例可以用“LED_1.uv2”或“一个LED闪烁实验.uv2”,存放目录为你的主题目录下;
(2)创建建一个文件,然后以“.c”后缀名,文件存放在你的主题目录下;
(3) 把c文件添加在你的项目中,在project workspace窗口利用add file to group…实现。如果软件界面不显示这个窗口,运行keil C菜单栏中的view-project window。
(4)设置编译器,是编译过程中能生成“.hex”文件。默认文件名与主题名字相同。运行project-option for‘target 1’-output窗口下点击create HEX file。
(5)在编程区域写你的程序,结束后存储文件并编译,要做检查,尽量避免警告出现,直到程序编译无误为止。
(6)程序烧写并试运行。这个过程称为软件和硬件联合调试,如果实验板无误,程序编译通过,但在硬件上运行不成功是常用的事情,需要对程序进行多次调试。在没有实验板的情况下,可以利用proteus软件仿真调试,也可以检验你的程序设计结果。
2.程序设计
(1)利用P0.0口驱动LED闪烁,高电平有效
/*****************************************************************************/
#includereg51.h //包含头文件
sbit LED = P0^0; // LED接P0.0。在kell C51软件中,定义P0.0为P0^0,
void delay(unsigned char x) //延时函数
{
unsigned char i,j;
for(i = 0;i x;i++)
for(j = 0;j 200;j++);
}
void main(void) //主函数
{
While(1) //程序死循环
{
LED = 0; //P0.0输出低电平,LED灭
void delay(100); //调用延时函数,延时一段时间,约0.3秒,不精确
LED = 1; //P0.0输出高电平
文档评论(0)