(五)数码管仿真 02

电路图:注意 为了省事 把 数码管串联的电阻省去了

参考代码:  这里 检测按键并不好,抄的另外一篇日志,具体还要看书

#include<reg52.h>
#include<intrins.h>
#define uchar8 unsigned char
#define uint16 unsigned int
sbit  key1=P2^0;
sbit  key2=P2^1;
sbit  key3=P2^2;
sbit  key4=P2^3;
uchar8 code seg[]={   0x3F,0x06,0x5B,0x4F,0x66 };     // 共阴数码管

/*****************************/
// 函数名称: DelayMS( )
// 函数功能: 延时
// 入口函数: 延时毫秒
// 出口函数: 无
/*************************                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            *******************/
void DelayMs(uint16 val)
{
       uint16  i,j;
       for( i=0;i<val;i++)
           for(j=0;j<113;j++);

}

/****************************/
// 函数名称:  keyscan( )
// 函数功能:  检测按键
// 入口函数:  无
// 出口函数:  keyscan_num
/*****************************/
uchar8 keyscan()
{
      uchar8 keyscan_num=0 ,temp;
      P2=0xff;    // 置电平
      temp=P2;  //  读P2口电平,送入 temp 中(因为这时候可能改变按键了)

      // if(~(temp&0xff))  不会用,先不看,用下面的
      if(temp!=0xff)    // 说明有键按下
      {

            if(key1==0)
            {
             keyscan_num=1;
            }
              else if(key2==0)
            {
              keyscan_num=2;
            }
            else if(key3==0)
            {
              keyscan_num=3;
            }
            else  if(key4==0)
            {

               keyscan_num=4;
            }
            else 

             keyscan_num=0;         // 依旧为0
       }

       return keyscan_num;

}

void main()
{
  uchar8   ledshow;
  while(1)
  {
        ledshow=keyscan();  // 切记 不是写 keyscan_num 要多看C语言

     P1=seg[ledshow];
     DelayMs(1000);

  }

}

疑问: 虽然达到了按键控制 选择来显示 1234 的目的,但是不太好

时间: 2024-12-13 15:43:04

(五)数码管仿真 02的相关文章

八数码问题强化版:十五数码问题idA*版本

---恢复内容开始--- 上一次介绍过dbfs版本,这次来介绍idA*版本. 首先要理解idA*算法的思想,是将迭代加深与A*的结合,将估价函数h(n)作为迭代的限制值,进行dfs. (A*和迭代加深的介绍等有时间再写出来吧) 对所有点(除0以外的)进行曼哈顿距离计算(目标状态到初始状态),h(n)为当前节点的各点的曼哈顿距离和. 在代码中看: #include<cstdio> #include<algorithm> #include<cstring> #define

冲刺Noip2017模拟赛6 解题报告——五十岚芒果酱

1.ksum(ksum) [问题描述] Peter喜欢玩数组.NOIP这天,他从Jason手里得到了大小为n的一个正整数 数组. Peter求出了这个数组的所有子段和,并将这n(n+1)/2个数降序排序,他想 知道前k个数是什么. [输入格式] 输入文件名为 ksum.in. 输入数据的第一行包含两个整数 n 和 k. 接下来一行包含 n 个正整数,代表数组. [输出格式] 输出文件名为 ksum.out. 输出 k 个数,代表降序之后的前 k 个数,用空格隔开. [输入输出样例] ksum.i

雷达截面积(Radar Cross Section,RCS)(MATLAB部分仿真+Code)

一 .RCS定义 任何具有确定极化的电磁波照射到目标上时,都会产生各个方向上的折射或散射. 其中散射波分为两部分:一是由与接收天线具有相同极化的散射波组成:二是散射波具有不同的变化,接收天线没有响应.这两种极化正交,分别称为主极化(Principle Polarization,PP)和垂直极化(Orthogonal Polarization,OP).与雷达照射天线具有相同极化波的后向散射能量的强度用来定义目标RCS. 用通俗的话讲:PCS是度量目标在雷达波照射下所产生回波强度的一种物理量.它

等占空比分频器的几种写法

转自http://www.cnblogs.com/yuphone/archive/2010/02/08/1666130.html 1 偶数分频 (1)2的幂分频 案例I 二分频 i: div_2.v module div_2( input i_clk, input i_rst_n, output o_clk ); reg [0:0] cnt; always @ (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt <= 0; else cnt <

17.8.12第六次测试

1.ksum [问题描述] Peter喜欢玩数组.NOIP这天,他从Jason手里得到了大小为n的一个正整数 数组. Peter求出了这个数组的所有子段和,并将这n(n+1)/2个数降序排序,他想 知道前k个数是什么. [输入格式] 输入文件名为 ksum.in. 输入数据的第一行包含两个整数 n 和 k. 接下来一行包含 n 个正整数,代表数组. [输出格式] 输出文件名为 ksum.out. 输出 k 个数,代表降序之后的前 k 个数,用空格隔开. [输入输出样例] ksum.in 3 4

Noip模拟考试6:解题报告

Peter喜欢玩数组.NOIP这天,他从Jason手里得到了大小为n的一个正整数数组.Peter求出了这个数组的所有子段和,并将这n(n+1)/2个数降序排序,他想知道前k个数是什么. 不难想到,从最大字段和向下更新. 用set实现 介绍一下set:用法与priority_queue基本相同,区别是,set有自动去重,而priority_queue将所有元素放入. 然后通过三元组,分别记录权值,左端与右端. #include<cstdio> #include<algorithm>

这个是置顶的标题(`?ω?&#180;)

寒假几天的集训来看,自己不会的算法还是很多_(:зゝ∠)_,还有一些暑假学的忘记了,想想整个大二上学期,也就学了一个网络流,一个AC自动机,一个后缀数组.寒假时间还是很充裕的,适合研究几个算法. 就目前来看,自己唯一有优势的地方是代码能力稍微好一些,其他很多地方还是不如别人... [下面的完整知识目录来自这里@whatbeg] 1: 高级数据结构(17) 并查集,线段树,树状数组,KMP,字典树(Trie),左偏树(可合并堆),单调队列,优先队列,AC自动机,后缀树/数组,二叉堆,伸展树,Tre

百度地图开发-将多个地点标记在地图上,点击节点弹出PopupWindow

最近在写一个安卓程序,用到了百度地图API的一些内容,就随便玩耍了一下. 这个DEMO是用来将多个地点标记在地图上,然后点击节点弹出PopupWindow 下面是一些截图: main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout

struts2马士兵笔记

Struts2 学习笔记 目录 01 Struts2-Action 一.         Struts作用: 二.         搭建Struts2的运行环境: 三.         Namespace 四.         <package>标签 五.         Action 六.         路径问题的说明 七.         Action的动态调用方法 八.         Action通配符(wildcard)的配置 九.         Action的属性接收参数 1.