在单片机的控制作用下,实现一位数码管简易计数,范围为0-9,设置两个按钮,一个为数值加一,另一个则为减一。 二、实验过程 (一)实验项目的方案分析 1.设计原理 STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。 本实验充分利用了8051芯片的I/O引脚。系统已采用STC12C5A60S2系列单片机为中心器件来设计数码管计数系统。 2.器件配置清单 表1器件配置表
(二)实验项目的硬件电路设计 通过Proteus仿真电路软件搭建电路,电路图如图所示。
图1硬件1设计图 (三)实验项目的程序设计 1、C51程序编写
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key=P0^0;
- sbit key1=P0^1;
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void delay_lms(uint i){
- uchar t;
- while(i--)
- for(t=0;t<=150;t++);
- }
- void main(){
- uchar i=0;
- key=1;
- P1=0xc0;
- while(1){
- if(key==0){
- delay_lms(20);
- if(key==0){
- if(i<9){i++;}
- else{i=0;}
-
- P1=tab[i];
- if(i==10)i=0;
- }
- while(key==0);
- }
- if(key1==0){
- delay_lms(20);
- if(key1==0){
- if(i>0){i--;}
- else{i=10;}
- P1=tab[i];
- if(i==0)i=10;
- }
- while(key1==0);
- }
- }
- }
复制代码
2、keil软件调试截图 通过Keil软件进行C51控制程序的编写,通过不断调试修改,最终的调试好的Keil 程序截图如图2所示。
图2调试无错的Keil程序
(四)实验项目的实际验证电路及验证结果 将单片机C51程序编译无误后,生成HEX文件,通过STC-ISP下载到单片机中,搭建的实际电路如图3所示。 图3面包板搭建的实际电路 (五)总结 相较于花样灯,数码管的难度有些提升。首先就需要注意的是数码管的共阴和共阳。其次则是编程上的一些改动,但经过整个寝室的努力,都慢慢的将各个难题给解决了,相信将来也能更好的解决各种问题的。
全部资料51hei原创作者的下载地址: http://www.51hei.com/bbs/dpj-161135-1.html 我只是搬运大神的
|