基于51单片机的零件计数器设计 - 1
时间:2025-02-26
时间:2025-02-26
51单片机课程设计
1 系统设计
1.1 实验箱主要组件
本课程设计使用的实验箱主要由单片机最小系统,LED数码管显示部分,外部中断控制部分,独立式与行列式键盘按键输入部分,串行口通信部分,蜂鸣器与继电器等部分组成。详细电路图见图1。
图1 实验箱“基础型实验”部分电路图
51单片机课程设计
单片机最小系统部分由内含FLASH ROM的STC89C52RC,EA接高电平;各并行口都加了10K的上拉电阻;晶振为11.0592M。设置了上电复位和手动复位。LED数码管显示部分由4位一体的数码管LED1、单个数码管LED2和8个独立的发光二极管L1—L7组成,都是共阴结构并联在一起接在单片机的P0口上。LED1用于完成LED动态显示,用于本课程设计的零件个数显示,各个位选线为P2.4—P2.7,段码由P0口输出。行列式和独立式键盘按键输入部分主要由P2.0-P2.3为行,P2.4-P2.7为列构成的4*4行列式键盘,K20-K27构成的独立式按键构成。蜂鸣器部分采用9012三极管驱动,其基极接到RD端,当RD端为低电平时,三极管导通,蜂鸣器响,否则关断。继电器部分采用9013三极管驱动,其基极接到WR端,当WR端为高电平时,单机管导通,继电器跳转,产生打包动作。串行口通信部分主要由USB转URAT电路构成,本课程设计中由此部分完成PC机与单片机的串行口通信,同时PC机的USB口同时承担给实验板供电的任务。
实验箱“基础型试验”其他电路部分介绍略,“基础型实验”部分实物图见图2。
图2 实验箱“基础型实验”部分实物图
51单片机课程设计
1.2 系统框图及说明
本课程设计中的基于52单片机的零件计数器系统主要由单片机最小系统模块,数码管译码和显示模块,串口通信模块,蜂鸣器模块,继电器模块等组成,系统框图见图3,其中箭头表示数据传送的方向。
图3 单片机定时闹钟系统框图
1.3 系统软件设计
1.3.1 C51编程基础
由于本课程设计硬件模块主要使用单片机实验箱,所以本课程设计的重点放在零件计数器的软件设计上。
本课程设计的系统软件设计采用C语言,C语言是一种通用的程序设计高级语言,其代码利用率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较为广泛的单片机编程语言。使用C语言对单片机进行编程具有以下优点:
(1)C51管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题。
(2)程序由若干函数组成,具有良好的模块化结构。
(3)有丰富的子程序库可以直接使用,从而减少用户编程的工作量。
51单片机课程设计
(4)C语言和汇编语言可以交叉使用,提高开发效率。
本课程设计采用的C语言编译器为Keil C51,该编译器以其代码紧凑和使用方法方便的特点优于其他编译器。Keil C51开发单片机程序的大致步骤为:输入源程序,新建工程,工程详细设置,源程序编译到目标代码文件等。编译完成后通过少些软件和串口,可以将代码烧进单片机内部的FLASH程序存储器内。
1.3.2 系统软件设计框图
零件计数器系统由多个函数构成,其中包括主函数,初始化函数,延时函数,串口发送函数,蜂鸣器函数,继电器函数等,图4为单片机零件计数器软件系统各个函数框图。
2 实验过程与结果
2.1 电路调试
由于本次课程设计是在实验箱上进行的,所以对于硬件电路方面不需要调试,主要是进行软件程序方面的调试。正如图4所示的零件计数器各个函数之间
图4 单片机零件计数器软件系统各个函数框图
51单片机课程设计
的框图,程序的调试也是一个一个模块进行的,这样调试的好处是,可以清晰地发现哪个模块存在问题,从而一个模块一个模块地解决问题,使每个模块都能正确而准确地完成各自的功能,最后再把各个模块整合起来,就能较好地实现零件计数器的功能。这样大大地提高了工作效率。
本次课程设计的调试顺序是:先进行数码管动态显示模块的调试,然后是蜂鸣器和继电器的调试,最后是串口通信的调试。
2.2 调试过程
首先进行的是数码管动态显示的调试,调试过程中遇到的主要问题是数码管显示延迟的问题,延时时间太短,显示的数字闪的比较厉害,延时时间太长,超过人眼的视觉暂留时间,无法实现动态显示,经过多次调试,最终取得了比较好的显示效果。
接着进行的蜂鸣器和继电器由于电路和函数都比较简单,没有遇到什么问题,调试的比较顺利。
最后进行的串口调试遇到的问题也比较多。起初的问题是串口发送的数据PC机无法收到,经过仔细检查,发现在主函数中并没有对串口的初始化函数进行声明;改正函数后,PC机虽然可以收到数据了,但发现收到的数据是乱码,不是发送的数据,接着把发送的数据由十六进制显示改为字符显示,在程序中也有所调整后,发现PC机收到的数据即是当前的计数数据。
2.3 调试结果
经过反复调试,最终解决了遇到的问题,较好地实现了零件计数器的功能:1、每来一个零件,单片机计数一次,LED上显示当前一共生产了多少零件;2、当计满10次时,蜂鸣 …… 此处隐藏:2544字,全部文档内容请下载后查看。喜欢就下载吧 ……