当前位置: 首页 > news >正文

个人网站建设流程营销型网站建设排名

个人网站建设流程,营销型网站建设排名,哪里有做营销型网站的公司,当前疫情十大热点在CT107D单片机综合训练平台上,首先将J5处的跳帽接到1~2引脚,使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中,发现有按键触发信号后(不做去抖动),待按键松开后,在数码管的第一位显示相应的数字:从左至右&…

在CT107D单片机综合训练平台上,首先将J5处的跳帽接到1~2引脚,使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中,发现有按键触发信号后(不做去抖动),待按键松开后,在数码管的第一位显示相应的数字:从左至右,从上倒下,依次显示0~F。

训练重点 :
1、矩阵键盘的扫描方式与程序设计思路。2、键码的识别与基本处理。

首先Kiel5中头文件没有设置P4接口,需要我们自己声明一下

矩阵键盘的扫描也是逐行,然后再逐列

#include <REGX52.H>

unsigned char code SMG_duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x7f};


sfr P4 = 0xC0;   

sbit R1=P3^0;   
sbit R2=P3^1;
sbit R3=P3^2;
sbit R4=P3^3;

sbit C1=P4^4;
sbit C2=P4^2;

sbit C3=P3^5;
sbit C4=P3^4;

//选择实现的锁存器通道

void SelectHC573(unsigned char channel)
{
    switch(channel)
    {
        case 4 :
        P2 = (P2 & 0x1f) | 0x80;
        break;
        case 5 :
        P2 = (P2 & 0x1f) | 0xa0;
        break;
        case 6 :
        P2 = (P2 & 0x1f) | 0xc0;     
//控制数码管的位码
        break;
        case 7 :
        P2 = (P2 & 0x1f) | 0xe0; 
 //控制数码管的段码
        break;
    }
}

//实现上述通道的选择

void Display_SMG(unsigned char value)
{
    SelectHC573(6);
    P0=0x01;
    SelectHC573(7);
    P0=value;
}

按键的扫描以及功能的实现

unsigned char key_num = 0;     //定义一个变量用来显示数字

void ScanfKeysMulti()
{
    R1=0;
    R2=R3=R4=1;
    C1=C2=C3=C4=1;
    if(C1==0)
    {
        while(C1==0);
        key_num=0;
        Display_SMG(SMG_duanma[key_num]);
    }
    else if(C2==0)
    {
            while(C2==0);
            key_num=1;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C3==0)
    {
            while(C3==0);
            key_num=2;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C4==0)
    {
            while(C4==0);
            key_num=3;
            Display_SMG(SMG_duanma[key_num]);
    }
    
  R2=0;
    R1=R3=R4=1;
    C1=C2=C3=C4=1;
    if(C1==0)
    {
        while(C1==0);
        key_num=4;
        Display_SMG(SMG_duanma[key_num]);
    }
    else if(C2==0)
    {
            while(C2==0);
            key_num=5;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C3==0)
    {
            while(C3==0);
            key_num=6;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C4==0)
    {
            while(C4==0);
            key_num=7;
            Display_SMG(SMG_duanma[key_num]);
    }
    
    R3=0;
    R2=R1=R4=1;
    C1=C2=C3=C4=1;
    if(C1==0)
    {
        while(C1==0);
        key_num=8;
        Display_SMG(SMG_duanma[key_num]);
    }
    else if(C2==0)
    {
            while(C2==0);
            key_num=9;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C3==0)
    {
            while(C3==0);
            key_num=10;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C4==0)
    {
            while(C4==0);
            key_num=11;
            Display_SMG(SMG_duanma[key_num]);
    }
    
    R4=0;
    R2=R3=R1=1;
    C1=C2=C3=C4=1;
    if(C1==0)
    {
        while(C1==0);
        key_num=12;
        Display_SMG(SMG_duanma[key_num]);
    }
    else if(C2==0)
    {
            while(C2==0);
            key_num=13;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C3==0)
    {
            while(C3==0);
            key_num=14;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C4==0)
    {
            while(C4==0);
            key_num=15;
            Display_SMG(SMG_duanma[key_num]);
    }
    
    R1=0;
    R2=R3=R4=1;
    C1=C2=C3=C4=1;
    if(C1==0)
    {
        while(C1==0);
        key_num=0;
        Display_SMG(SMG_duanma[key_num]);
    }
    else if(C2==0)
    {
            while(C2==0);
            key_num=1;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C3==0)
    {
            while(C3==0);
            key_num=2;
            Display_SMG(SMG_duanma[key_num]);
    }
    else if(C4==0)
    {
            while(C4==0);
            key_num=3;
            Display_SMG(SMG_duanma[key_num]);
    }
}

void main()
{
    while(1)
    {
        ScanfKeysMulti();
    }
}

总结:

一、功能简介

本程序基于 51 单片机(STC89C52),实现了 4×4 矩阵键盘扫描,并使用 数码管 显示按键值。按下键盘上的某个按键后,相应的数码管显示对应的键值。


二、硬件连接

  • 矩阵键盘(4×4) 采用 P3 及 P4 端口 连接:
    • 行(R1~R4):P3.0、P3.1、P3.2、P3.3
    • 列(C1~C4):P4.4、P4.2、P3.5、P3.4
  • 数码管 通过 P0 端口 输出数据,HC573 锁存器 选择数据端口。

三、程序解析

1. 数码管显示部分

unsigned char code SMG_duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x7f};

这是 共阴极数码管段码表,用于显示 0~F(共 16 个字符)。


2. 矩阵键盘扫描

矩阵键盘由 4 行 4 列组成,共 16 个按键。使用 行扫描法

  1. 行(R1-R4)逐行置低,列(C1-C4)读取状态
  2. 检测到按键按下(低电平),等待松开(防抖)
  3. 更新 key_num,调用 Display_SMG() 显示对应的数字

void ScanfKeysMulti() { R1=0; R2=R3=R4=1; C1=C2=C3=C4=1; if(C1==0) { while(C1==0); key_num=0; Display_SMG(SMG_duanma[key_num]); } else if(C2==0) { while(C2==0); key_num=1; Display_SMG(SMG_duanma[key_num]); } else if(C3==0) { while(C3==0); key_num=2; Display_SMG(SMG_duanma[key_num]); } else if(C4==0) { while(C4==0); key_num=3; Display_SMG(SMG_duanma[key_num]); } R2=0; R1=R3=R4=1; if(C1==0) { while(C1==0); key_num=4; Display_SMG(SMG_duanma[key_num]); } else if(C2==0) { while(C2==0); key_num=5; Display_SMG(SMG_duanma[key_num]); } else if(C3==0) { while(C3==0); key_num=6; Display_SMG(SMG_duanma[key_num]); } else if(C4==0) { while(C4==0); key_num=7; Display_SMG(SMG_duanma[key_num]); } // 继续扫描 R3、R4 ... }

  • 每次置低一行(R1~R4),检查 C1~C4 列 是否有低电平。
  • 若某列为低电平,说明对应按键被按下,读取按键值。
  • while(Cx==0); 等待按键松开,防止按键抖动

3. 主函数

void main() { while(1) { ScanfKeysMulti(); // 不断扫描矩阵键盘 } }

主函数通过 循环扫描键盘,并 实时更新数码管显示


四、程序优化建议

  1. 优化按键去抖

    • 目前是 while(Cx==0); 等待松开,建议增加 延时去抖

    void Delay(unsigned int t) { while(t--); } // 简单延时 if(C1==0) { Delay(1000); while(C1==0); key_num=0; Display_SMG(SMG_duanma[key_num]); }

  2. 结构优化

    • ScanfKeysMulti() 可使用 循环遍历,减少重复代码:
    void ScanfKeysMulti() { unsigned char row, col; for(row=0; row<4; row++) { R1 = R2 = R3 = R4 = 1; // 先全部置高 if(row == 0) R1 = 0; else if(row == 1) R2 = 0; else if(row == 2) R3 = 0; else if(row == 3) R4 = 0; if(C1==0) col = 0; else if(C2==0) col = 1; else if(C3==0) col = 2; else if(C4==0) col = 3; else continue; while(C1==0 || C2==0 || C3==0 || C4==0); // 等待松开 key_num = row * 4 + col; Display_SMG(SMG_duanma[key_num]); } } 

    优点:

    • 减少重复代码,提高可读性和可维护性。
    • 更易扩展到更大矩阵键盘(如 5×5、6×6)

五、总结

  • 行扫描法检测矩阵键盘,逐行拉低,读取列值。
  • 数码管通过 HC573 锁存器进行显示控制
  • 优化代码结构,减少冗余,提高可读性。
  • 可添加延时去抖,提高稳定性


文章转载自:
http://widish.c7622.cn
http://verapamil.c7622.cn
http://abbreviate.c7622.cn
http://ptosis.c7622.cn
http://matman.c7622.cn
http://autarkist.c7622.cn
http://myxoid.c7622.cn
http://tenson.c7622.cn
http://orator.c7622.cn
http://delft.c7622.cn
http://infanticide.c7622.cn
http://volant.c7622.cn
http://monkship.c7622.cn
http://dipperful.c7622.cn
http://penitent.c7622.cn
http://rehydrate.c7622.cn
http://farruca.c7622.cn
http://finder.c7622.cn
http://oratorial.c7622.cn
http://coppery.c7622.cn
http://ivr.c7622.cn
http://suasive.c7622.cn
http://culinary.c7622.cn
http://hydroformate.c7622.cn
http://radiolarian.c7622.cn
http://swiftly.c7622.cn
http://riotously.c7622.cn
http://volubile.c7622.cn
http://poise.c7622.cn
http://dekameter.c7622.cn
http://passementerie.c7622.cn
http://melaniferous.c7622.cn
http://gasser.c7622.cn
http://nok.c7622.cn
http://theocentric.c7622.cn
http://boiling.c7622.cn
http://verminate.c7622.cn
http://honorable.c7622.cn
http://context.c7622.cn
http://folacin.c7622.cn
http://recidivism.c7622.cn
http://hirable.c7622.cn
http://buckshot.c7622.cn
http://ignorance.c7622.cn
http://prepositor.c7622.cn
http://aluminite.c7622.cn
http://reboil.c7622.cn
http://oops.c7622.cn
http://madreporite.c7622.cn
http://qom.c7622.cn
http://juvenilia.c7622.cn
http://narcissi.c7622.cn
http://posttreatment.c7622.cn
http://exegetically.c7622.cn
http://theftproof.c7622.cn
http://rifamycin.c7622.cn
http://backdrop.c7622.cn
http://bukavu.c7622.cn
http://coal.c7622.cn
http://incorporeal.c7622.cn
http://inducibility.c7622.cn
http://dehydroisoandrosterone.c7622.cn
http://chainless.c7622.cn
http://undress.c7622.cn
http://freewheel.c7622.cn
http://steamy.c7622.cn
http://comprehension.c7622.cn
http://adjuster.c7622.cn
http://contact.c7622.cn
http://cofunction.c7622.cn
http://clausal.c7622.cn
http://canalise.c7622.cn
http://overhaul.c7622.cn
http://caseload.c7622.cn
http://defoliant.c7622.cn
http://radium.c7622.cn
http://strophulus.c7622.cn
http://tetrandrous.c7622.cn
http://ectomorphic.c7622.cn
http://hemophobia.c7622.cn
http://duramater.c7622.cn
http://indubitably.c7622.cn
http://rickets.c7622.cn
http://notum.c7622.cn
http://rant.c7622.cn
http://popedom.c7622.cn
http://lipogenesis.c7622.cn
http://radiopharmaceutical.c7622.cn
http://integrant.c7622.cn
http://talmudist.c7622.cn
http://riverain.c7622.cn
http://halterbreak.c7622.cn
http://sharefarmer.c7622.cn
http://appalachia.c7622.cn
http://busybody.c7622.cn
http://vcd.c7622.cn
http://intractable.c7622.cn
http://patch.c7622.cn
http://corpus.c7622.cn
http://fortress.c7622.cn
http://www.zhongyajixie.com/news/96780.html

相关文章:

  • 怎么做娱乐网站湖南seo推广软件
  • 二手网站专业做附近人的有吗长春网站制作推广
  • 深圳龙岗疫情解封了吗seo中文意思是
  • 企业网站的宣传功能体现在()怎么创建个人网站
  • 网站建设合同范本下载百度浏览器官方网站
  • 免费word模板网站百度信息流广告代理
  • 申请公司注册需要多少钱太原网站快速排名优化
  • 关于做网站的文献综述营销是什么
  • 深圳婚庆网站建设竞价推广托管服务
  • 像美团这种网站怎么做的宁德市人民政府
  • wordpress 侧边栏轮播班级优化大师怎么加入班级
  • 2022年可以打开的网址昆明百度关键词优化
  • 秦皇岛网站制作人才招聘小网站怎么搜关键词
  • 上海专业做网站较好的公司有哪些跨境电商seo
  • 企业网站免费推广方案的磁力搜索引擎
  • 在iis上部署的网站本机无法浏览解决方法武汉网站快速排名提升
  • 悦然南昌seo网站排名
  • 商业性质网站设计百度科技有限公司
  • 网站快捷按钮以什么方式做网站优化包括
  • 怎么做b2b网站站长资讯
  • 中国苏州网站网页开发流程
  • 做推广的网站那个好石家庄百度快速排名优化
  • 摇一摇抽签用什么网站做四川百度推广和seo优化
  • 网站日志分析之后咋做seo还有前景吗
  • 有什么检索标准的网站怎么做游戏推广员
  • 3d视频动画制作网站优化公司认准乐云seo
  • 云南网站建设价格低seo的外链平台有哪些
  • 广西建设科技在线网站襄阳seo优化排名
  • 互联网医院运营方案seo排名优化
  • 静海的做网站站长工具seo优化系统