历史上的今天
返回首页

历史上的今天

今天是:2024年10月13日(星期日)

正在发生

2020年10月13日 | 单片机按键模块与CH9328的使用源程序

2020-10-13 来源:51hei

我用的是stc系列的单片机(stc89c52rc),现在12和15抗干扰能力更强(推荐使用)。键盘模块用的是ch9328模块(如下图)


把单片机最小系统板的RXD与ch9328模块的TXD相连,TXD与模块的RXD相连。
按钮可以接到p0.0到p0.7等等,另一端接的是地,输出在电脑上的是数字的123......等等。

单片机源程序如下:

#include "reg52.h"

sbit k1=P1^0;//编码器开关接口               

sbit k2=P1^1;//编码器开关接口                  

sbit k3=P1^2;//编码器开关接口

sbit k4=P1^3;//编码器开关接口               

sbit k5=P1^4;//编码器开关接口                  

sbit k6=P1^5;//编码器开关接口        

sbit k7=P1^6;//编码器开关接口

sbit k8=P1^7;//编码器开关接口

sbit k9=P2^0;//编码器开关接口

sbit k10=P2^1;//编码器开关接口

sbit k11=P2^2;//编码器开关接口

sbit k12=P2^3;//编码器开关接口

//编码器C接口直接接地

unsigned char key[8],i;

void sendbyte(unsigned char b)//串口发送字符                  

{

        SBUF=b;

        while(!TI);

        TI=0;

}                                                                  

void init()//初始化函数

{

        //SCON=0X50;                        //设置为工作方式1

        SCON=0X40;                        //设置为工作方式1                                1123

        TMOD=0X20;                        //设置计数器工作方式2

        PCON=0X80;                        //波特率加倍

        TH1=0Xfa;                        //计数器初始值设置,波特率9600,0xf4:22.1184M;0xfa:11.0592M

//        PCON=0X00;                        //波特率加倍

//        TH1=0Xfd;                        //计数器初始值设置,波特率9600,0xf4:22.1184M;0xfa:11.0592M

        TL1=TH1;        

        TR1=1;        //打开计数器        

}

                                                

void delay(int x)//延时1Ms函数                  

{

    unsigned char a,b;

        for(x;x>0;x--)

                for(b=80;b>0;b--)

                        for(a=10;a>0;a--);

}

void keys()

{

          for(i=0;i<8;i++) key[i]=0x00;                                                         

                if(k1==0)

                {

                        delay(10);

                        if(k1==0)

                        {

                                key[2]=0x31;

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                while(!k1);

                        }

                }

                if(k2==0)

                {

                        delay(10);

                        if(k2==0)

                        {

                                key[2]=0x32;

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                key[2]=0x00;//按下后发送的松开

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                while(!k2);

                        }

                }

                if(k3==0)

                {

                        delay(10);

                        if(k3==0)

                        {

                                key[2]=0x33;

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                key[2]=0x00;//按下后发送的松开

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                while(!k3);

                        }

                }

                if(k4==0)

                {

                        delay(10);

                        if(k4==0)

                        {

                                key[2]=0x34;

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                key[2]=0x00;//按下后发送的松开

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                while(!k4);

                        }

                }

                if(k5==0)                 

                {

                        delay(10);

                        if(k5==0)

                        {

                                key[2]=0x35;

                                for(i=0;i<8;i++)

                                        sendbyte(key[i]);

                                key[2]=0x00;//按下后发送的松开                1223445612

                                for(i=0;i<8;i++)

推荐阅读

史海拾趣

Gem Asia Enterprise Co Ltd公司的发展小趣事

随着全球对环保问题的日益关注,Gem Asia积极响应号召,将环保理念融入企业发展中。公司投入大量资源研发绿色电子产品和生产工艺,减少了对环境的影响。同时,Gem Asia还建立了完善的废旧电子产品回收体系,实现了资源的循环利用。这些举措不仅提升了企业的社会形象,还为企业带来了长期的经济效益和社会效益。

Bellnix Co Ltd公司的发展小趣事

在电子行业竞争日益激烈的背景下,Bellnix意识到成本控制的重要性。公司开始着手优化供应链,通过与供应商建立长期合作关系、实行集中采购等方式,降低采购成本。同时,公司还引入先进的生产管理系统,提高生产效率,减少浪费。这些措施有效地降低了产品成本,使Bellnix在市场上更具竞争力。

Flambeau公司的发展小趣事

随着电子行业的快速发展,Flambeau公司不断加大研发投入,致力于技术创新和产品多样化。公司研发团队通过改进生产工艺、优化材料配方、引入先进的设计软件等措施,不断提升产品的性能和质量。同时,Flambeau还积极拓展产品线,从最初的塑料储存产品扩展到更广泛的电子包装解决方案,包括防静电包装、抗震包装等,以满足电子行业日益增长的多样化需求。

Electro-Films Inc Semi-Films Div公司的发展小趣事

近年来,随着全球环保意识的提高,绿色环保和可持续发展成为各行各业关注的焦点。Semi-Films Division 也积极响应这一趋势,将绿色环保理念融入到公司的生产和经营中。公司采用环保的生产工艺和材料,减少了对环境的污染和破坏。同时,公司还积极参与各种环保活动和项目,推动整个行业的绿色发展和可持续发展。这些努力不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

普芯达电子(Chipswinner)公司的发展小趣事

企业文化和团队建设是企业持续发展的基石。普芯达电子注重企业文化建设和团队建设,倡导“诚信、创新、协作、共赢”的价值观,营造了一个积极向上、团结和谐的工作氛围。公司注重员工的培训和发展,为员工提供了广阔的发展空间和良好的福利待遇。同时,普芯达电子还建立了完善的激励机制和绩效考核体系,激发了员工的工作积极性和创造力。这些措施的实施为公司的持续发展提供了有力的保障。

请注意,以上仅为故事框架的概述,你可以根据这些框架进一步扩展和详细化每个故事的内容。

台湾唯圣(GW)公司的发展小趣事
包括保险丝、过流保护器等,用于在电流异常时切断电路,保护设备和人体安全。

问答坊 | AI 解惑

vb教程!

本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 vb教程    …

查看全部问答>

大功率IGBT驱动过流保护电路的研究

针对分离元件保护电路和集成模块保护的优缺点进行比较研究。…

查看全部问答>

wince数据库工具

有没有什么工具可以直接看到wince中的数据库的内容…

查看全部问答>

使用stm32f101的时钟问题

我用的芯片是stm32f101vbt6,只能工作在36MHz,我用的初始化函数都是开发板上移过来的(用的是103系列,即工作在72MHz),我的板子是能“正常”工作,加了引号是我的定时器2定时时间不对,想弱弱的问几个问题: 1.我初始化时钟为72MHz,板子 ...…

查看全部问答>

寻找有USB和12位AD的IC

                                 本来想用STM32系列,可惜就是价格。。。。不知道各位能否推荐几款拥有USB和12位AD的IC,价格比STM32便宜一些的,谢 ...…

查看全部问答>

有没有办法把芯片的发射频率降下来

请问有没有办法把芯片(MICRF104)的发射频率降下来,或者推荐个10到30M发射频率的发射芯片,不胜感激 …

查看全部问答>

Xemga A3U 能干什么

带USB口的Xemga系列能干什么?如果价格降到多少钱大家就不会用STM了?好怀念用AVR代码的时代,现在正被逼着用STM。郁闷中,想辞职。想告诉老板xemga国内有货了,也带USB…

查看全部问答>

提议:DIY智能家居超级闹钟(M3+MP3方案)

最近换了个手机,声音比较小,早上起床闹不醒,已经迟到好几次了,准备自己DIY一个超级闹钟,结构图如下 [ 本帖最后由 fengzhang2002 于 2013-3-15 12:33 编辑 ]…

查看全部问答>

自控

本帖最后由 paulhyde 于 2014-9-15 03:06 编辑 昨天才拿到瑞萨的芯片,要是真用他们的芯片,那玩个球    …

查看全部问答>