单片机控制数码管显示0~9的数字显示,当按一下按钮,数码管显示1,再按一下显示2,再按一下显示3,如此循环,显示到9
二、实验过程
(一)实验项目的方案分析
1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。 本实验充分利用了8051芯片的I/O引脚。系统已采用STC12C5A60S2系列单片机为中心器件来设计数码管显示系统,实现数码管循环显示。 2.器件配置清单 表1器件配置表
(二)实验项目的硬件电路设计 通过Proteus仿真电路软件搭建电路,电路图如图所示。 
图1硬件设计图 (三)实验项目的程序设计 1、C51程序编写 2、keil软件调试截图 通过Keil软件进行C51控制程序的编写,通过不断调试修改,最终的调试好的Keil 程序截图如图2所示。 
图2调试无措的Keil程序 (四)实验项目的虚拟仿真 打开Keil C软件将上面程序输入,调试无误后编译输出".hex"文件,打开Proteus软件,将之前编译好的".hex"文件加入到芯片中,开始运行仿真。
(五)实验项目的实际验证电路及验证结果 将单片机C51程序编译无误后,生成HEX文件,通过STC-ISP下载到单片机中,下载的软件界面如图4所示,搭建的实际电路如图5所示。 
图4下载HEX文件到单片机
图5面包板搭建的实际电路
以下为实际效果的截图: 
(六)总结 总的来说数码管实验还是比较简单的,跟前面做流水灯的实验差不多。还比流水灯简单一点。总的来说,数码管实验只是比流水灯多了一个按键,要对按键进行定义。其他的就跟流水灯差不多。
单片机源码:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit button=P2^0;
- uchar i=0;
- uchar code shuzu[]={0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void delay_1ms(uint t)
- {
- uint i;
- while(t--)
- for(i=0;i<600;i++);
- }
- main()
- {
- while(1)
- {
- if(button==0)
- delay_1ms(10);
- if(button==0)
- {
- while(button==0);
- i++;
- if(i==11)
- {i=0;}
- }
- P0=shuzu[i];
- }
- }
复制代码
完整的Word格式文档51黑下载地址:
数码管说明书.doc
(894.5 KB, 下载次数: 12)
|