找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13635|回复: 0
打印 上一主题 下一主题
收起左侧

单片机实现一位数码管简易0-9计数程序 带加减按键

[复制链接]
跳转到指定楼层
楼主
ID:518782 发表于 2019-6-2 16:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • 项目功能:

在单片机的控制作用下,实现一位数码管简易计数,范围为0-9,设置两个按钮,一个为数值加一,另一个则为减一。

二、实验过程

(一)实验项目的方案分析

1.设计原理

STC12C5A60S2单片机内部包括微处理器、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O口)及其他功能部件如定时/计数器、中断系统等。它们通过地址总线、数据总线和控制总线连接起来。

本实验充分利用了8051芯片的I/O引脚。系统已采用STC12C5A60S2系列单片机为中心器件来设计数码管计数系统。

2.器件配置清单

表1器件配置表

名称

型号

数值

数量

面包板

MB-102

165*55*10(mm)

1

单片机

Stc12c5a60s2

1

数码管

0.1mA

1

公对母连接线

40P彩色杜邦线

21cm

9

公对公连接线

0

电阻

1KΩ

9

按键

2


(二)实验项目的硬件电路设计

通过Proteus仿真电路软件搭建电路,电路图如图所示。

   


图1硬件1设计图

(三)实验项目的程序设计

1、C51程序编写


  1. #include<reg51.h>
  2. #define uchar unsigned char            
  3. #define uint unsigned int
  4. sbit key=P0^0;
  5. sbit key1=P0^1;
  6. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. void delay_lms(uint i){
  8.               uchar t;
  9.               while(i--)
  10.                             for(t=0;t<=150;t++);
  11. }
  12. void main(){
  13.               uchar i=0;
  14.               key=1;
  15.               P1=0xc0;
  16.               while(1){
  17.                             if(key==0){
  18.                                           delay_lms(20);
  19.                                           if(key==0){
  20.                                                         if(i<9){i++;}
  21.                                                         else{i=0;}
  22.                                                       
  23.                                                         P1=tab[i];
  24.                                                         if(i==10)i=0;
  25.                                           }
  26.                                                         while(key==0);
  27.                             }
  28.                             if(key1==0){
  29.                                           delay_lms(20);
  30.                                           if(key1==0){
  31.                                                         if(i>0){i--;}
  32.                                                         else{i=10;}
  33.                                                         P1=tab[i];
  34.                                                         if(i==0)i=10;
  35.                                           }
  36.                                                         while(key1==0);
  37.                             }
  38.               }
  39. }
复制代码


2、keil软件调试截图

   通过Keil软件进行C51控制程序的编写,通过不断调试修改,最终的调试好的Keil

程序截图如图2所示。


图2调试无错的Keil程序


(四)实验项目的实际验证电路及验证结果

    将单片机C51程序编译无误后,生成HEX文件,通过STC-ISP下载到单片机中,搭建的实际电路如图3所示。

图3面包板搭建的实际电路

(五)总结

相较于花样灯,数码管的难度有些提升。首先就需要注意的是数码管的共阴和共阳。其次则是编程上的一些改动,但经过整个寝室的努力,都慢慢的将各个难题给解决了,相信将来也能更好的解决各种问题的。


全部资料51hei原创作者的下载地址:

http://www.51hei.com/bbs/dpj-161135-1.html

我只是搬运大神的



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表