基于项目设计的单片机开发技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
│49
《智慧工厂》Smart factory
April 2019
基于项目设计的单片机开发技术
Practice of the Teaching based on Project Design for Single Chip Microcomputer
• 武昌职业学院 王建菊 Wang Jianju
• 广州科技职业技术学院 黄争艳 Huang Zhengyan
摘 要:单片机如果只是用C语言编写简单程序,没有进行整个项目的设计,就只限于单片机C语言的学习,不能进一步学习外围电路的使用,无法更好地融入到工程实践中。为了具有企业所需的项目设计能力,文章以交通灯为例研讨基于项目设计为导向的单片机开发技术。关键词:项目设计 单片机
Abstract: Lovers for single Chip Microcomputer only progrom in C language, it has not the experience about design of the whole project,students only is limited to the learning of C language,the peripheral circuit can't be deeply studied, studengts Can't be better integrated into engineering practice. In order to have the ability to design projects of the enterprise for students, This article introduces the practical process of project design with traffic lights as an example,the paper introduces the whole process of project design with traffic lights as an example.Key words: Project design Single chip
【中图分类号】TP368.1 【文献标识码】B 文章编号1606-5123(2019)04-0049-03
1 引言
作为计算机技术在控制领域的应用,单片机已广泛应用于社会各个领域,如汽车电子,智能家电、智能仪器仪表,各类机器人和工业控制等[1]。单片机原理及应用是我国高等院校电类专业的专业核心课程,也是工科学者在控制领域进行项目开发的入门课程[2]。本文以企业中项目的设计与实现为导向,从现有的教学资源出发,设计了交通灯实验,通过该实验让学生对基于单片机的项目开发有个整体的认识。
2 项目系统设计的流程
项目系统设计流程一般包括四个部分,系统总体方案设计、系统硬件电路设计、系统软件设计、系统调试。系统总体方案设计主要分析系统要实现的功能、以及为实现这些功能所采用的一般原理和方法,通过各种方法的比较,结合经济成本、可拓展性等要求,最后提出一种合适
的设计方案[3]。系统硬件设计部分为系统组成框图、各模块硬件原理图及其接口电路设计,如电源电路、复位电路、时钟电路、USB 自动下载电路、AD/DA/光敏/热敏电路等,在此过程中需要进行主控制芯片选择、器件和功能芯片选择,然后用DXP 软件绘制出功能原理图。软件设计部分为项目选用的软件编程环境、编程语言、软件设计流程图及软件程序。最后为系统调试,通过对系统的软硬件调试来验证所设计的硬件电路及程序是否满足系统的控制要求,实现相应的功能等。
3 交通灯项目
总体设计要求:完成宝田路和前进路之间的交通灯设计。
3.1 交通灯硬件电路设计
交通灯硬件电路包括主控制器电路和交通灯模块电路。设计中选用的是STC89C51单片机,其主控制器电路由
50│DISCRETE MANUFACTURING│离散制造
STC89C51单片机、电源电路、复位电路、时钟电路组成。在设计中我们采用了普中科技公司的51单片机开发版,开发版上已有单片机学习的很多模块电路,所以学生在硬件电路的设计中主要为识读开发板上的相应模块和接口电路、相关芯片的引脚功能,通过项目设计中用到什么知识就教什么知识,使学生分项目掌握各硬件电路的功能。交通灯设计的主要模块电路如图1所示。
图1 单片机芯片
基于课堂教学时间的有限性,学生不可能在学习单片机的全过程中对每个项目都进行电路的设计并采用绘图软件绘制出电路原理图。在单片机的教学中更重要的是培养学生的识图能力和编程能力,让学生能读懂开发板上的各模块电路图和项目开发中常见的芯片,并能根据项目控制要求及其接口电路编写程序。
本设计中的交通灯模块图较简单,通过单片机来控制交通灯的D1~D10,其中D1~D5为宝田路上交通灯,D6~D10为前进路上交通灯,交通灯开发板上的原理图模块电路如图2所示。
图2 交通灯模块电路
3.2 交通灯软件设计
交通灯软件设计采用KEIL集成开发环境,C51语言编写程序,编译无误生成.hex十六进制文件[4]。在程序编写中采用模块化编程原理,交通灯程序主要分为三个模块,LED驱动程序、数码管动态显示程序void DigDisplay()、定时器中断程序void Timer0()interrupt 1,然后在主程序里面调用子程序。程序如下所示。
(1)数码管动态显示程序:
void DigDisplay()
{u8 i;for(i=0;i<8;i++)
{switch(i) //位选,选择点亮的数码管,
{case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):LSA=1;LSB=0;LSC=0; break;//显示第1位
......
case(6):LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):LSA=1;LSB=1;LSC=1; break;//显示第7位}
GPIO_DIG=DisplayData[i];//发送段码
delay(100); //间隔一段时间扫描
GPIO_DIG=0x00;//消隐}}
(2)定时器中断程序:
void Timer0() interrupt 1
{static u16 i;
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
i++;if(i==1000)
{i=0;Second ++;}}
(3)主程序:
void main()
{Second = 1;
Timer0Init();
while(1)
{if(Second == 70)
{Second = 1;}
//--宝田路通行,30秒--//
if(Second < 31)
{DisplayData[0] = 0x00;
DisplayData[1] = 0x00;
DisplayData[2] = smgduan[(30 - Second) % 100 / 10];
DisplayData[3] = smgduan[(30 - Second) %10];
DisplayData[4] = 0x00;
DisplayData[5] = 0x00;
DisplayData[6] = DisplayData[2];
DisplayData[7] = DisplayData[3];
DigDisplay();
...}
(下转72页)