APP下载

单片机课堂教学组织探索

2019-08-12赵素玲

科技与创新 2019年14期
关键词:子程序C语言毕业设计

赵素玲

单片机课堂教学组织探索

赵素玲

(苏州健雄职业技术学院 中德工程学院,江苏 苏州 215411)

随着现代制造业的不断发展,单片机技术的使用已经广泛渗入到社会的各行各业中。但是由于单片机采用的是汇编语言或者C语言进行编程,无论采用哪种语言,对于高职学生来说都比较难而且枯燥。那么如何组织课堂教学素材,通过丰富多彩的教学素材来提高课堂教学的趣味性就显得尤其重要。

LED显示屏;AT89C51;C语言程序;硬件设计

2019年笔者利用暑假期间到苏州奥智智能设备股份有限公司进行企业实践。苏州奥智智能设备股份有限公司是集科研、生产、销售为一体的国家高新技术企业,成立于2004-11,是同行业中规模比较大的一家民营企业,一家民营企业在十几年内做到如此大的规模,主要得益于公司的产品符合市场需求和高效的公司管理。每天与公司的员工一起工作、生活,虽然工作比较枯燥,但是公司的管理者却可以通过各种方法尽量使员工的工作生活精彩一些。

得益于他们的启发,笔者在思考如何才能在课堂教学中尽量使枯燥的编程课变的有意思一些呢?可以主要从教学素材选取和课堂组织形式着手来考虑。现在以LED显示屏设计为例来说明,为了提高课堂教学的效果,可以让每个学生设计不同的字,例如他们每个人的姓名。通过使用AT89C51单片机与8×8LED点阵构成一个动态显示屏,使用C语言进行编程,利用Protues仿真软件进行仿真,仿真效果直观可见。

1 控制要求

由于笔者带的班级马上就要毕业了,他们即将进入大学阶段的最后一个任务——毕业设计,所以就以“毕业设计”四个字为例来进行教学,当然也可以显示其他的汉字,如学生自己的姓名。具体要求是:①使用AT89C51芯片为核心,加上外围辅助电路,设计出原理图电路;②根据要求用Keil软件编写出C语言程序;③用四个8×8LED点阵,将“毕业设计”一次性呈现出来;④2个按键作为启动与停止按钮,在程序运行过程中出现错误时,可立即停止程序。

2 系统硬件设计

2.1 电路原理图

AT89C51芯片由电源、晶振和复位电路组成最小系统。X1(晶体)与两个C1、C2(电容)组成了晶振。R7、R8构成电源与复位电路。运用了12 M的晶振,12 MHz机器周期1 μs,加速了程序时间的计算。

2.2 元器件清单

系统元器件列表清单如表1所示。

表1 元器件清单列表

序号代号名称型号与规格数量 1C1、C2、C3电容1UF3 2X1晶体CRY87AL1 3LED1—LED4点阵8×84 4U1主控芯片AT89C511 5U2-U5锁存器74HC5734 6RP1上拉排阻RESPACK-81 7R1-R3电阻10K3 8BT1.BT2按键BUTTON2

3 系统软件设计

3.1 程序流程图

根据系统要求设计系统流程,具体如图1所示。

图1 流程图

3.2 系统C语言程序

#include

#include

#include

#define COMMONPORTS P1

#define sendbyte P0

sbit pianxuan1=P2^0;sbit key1=P2^4;

unsigned int flag=0;

unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

unsigned char code CHARCODE[10][8]=

{{8,8,8,127,8,119,102,68}, //毕

{0,127,20,54,85,20,20,0}, //业

{0,247,66,71,32,37,247,32}, //设

{228,68,68,95,68,228,68,0},//计

void delay(unsigned int time)

{unsigned int i,j;

for(i=0;i

for(j=0;j<61;j++);//121}

void keyscan()

{if(key1==0)

{delay(2);

if(key1==0)

flag=1;}

if(key2==0)

{delay(2);

if(key2==0)

flag=2;}}}

void main()

{unsigned char tab;

unsigned int i,a,x=0;

while(1)

{keyscan();

if(flag==1)

{for(tab=0;tab<8;tab++)

{COMMONPORTS =TAB[tab];

pianxuan1=1;}}

if(flag==2)

{for(tab=0;tab<8;tab++)

{COMMONPORTS =TAB[tab];

pianxuan1=1;

sendbyte=yd[0][tab+x];

delay(2);}}

x++;

if(x>24)

x=0;}

if(flag==4)

{for(i=0;i<4;i++)

{for(tab=0;tab<8;tab++)

{COMMONPORTS =TAB[tab];

pianxuan2=0;

delay(2);}

delay(100);

if(i==4)

i=0;}}}}

由于篇幅有限,在此只给出部分主要程序。在函数设计中,先对每个模块进行初始化设置,保证程序可以有效运行,然后使用flag将数据传入输入口,直接呈现“毕业设计”四个字。用到两个子程序,一个是延时1 ms子程序,一个是按键子程序。

4 Protuse仿真

P2.4与P2.5两个接口分别接了按钮,即开始与停止。由于C51的管脚有限,于是加了4个74HC573(详细功能见附件)与1个上拉排阻,对程序实现了一个锁存的功能,这样才可以将“毕业设计”一次呈现出来。仿真结果如图2所示,但是由于电路复杂、图片太大、篇幅有限,在此只给出部分图。

图2 系统仿真图

[1]楼然苗,李光飞.51系列单片机设计实例[M].北京:北京航空航天大学出版社,2003.

[2]谭浩强.C程序设计[M].4版.北京:清华大学出版社,2010.

[3]王萍.电子技术实验教程[M].北京:机械工业出版社,2009.

G642

A

10.15913/j.cnki.kjycx.2019.14.038

2095-6835(2019)14-0088-02

〔编辑:王霞〕

猜你喜欢

子程序C语言毕业设计
数控加工中数控程序的简化
子程序在数控车编程中的创新应用
“C语言程序设计”课程混合教学探索
计算机中C语言的应用特点探析
高等职业院校汽车检测与维修专业毕业设计探究
基于应用型人才培养模式下的毕业设计改革的思考
——以四川文化艺术学院为例
基于C语言的计算机软件编程技术探究
电子商务专业毕业设计实施与探索
在数控车床上加工软轴零件
计算机原理中C语言的应用价值