原标题:矩阵键盘模拟电子琴C语言程序设计

//24c08地址为0xa0

#include

#define uchar unsigned char

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char sec=0; //定义计数值,每过1秒,sec加1

unsigned int count; //定时中断次数

bit write=0; //写24C08的标志;

sbit gewei=P2^7; //个位选通定义

sbit shiwei=P2^6; //十位选通定义

/24C08读写驱动程序

sbit scl=P3^4; // 24c08 SCL

sbit sda=P3^5; // 24c08 SDA

sbit K5=P1^4; //清0按键

/***********************************************/

void delay() //delay 5us

{ ;; }

/**********************************************/

void delay1(uchar x)

{

uchar a,b;

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

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

}

/**********************************************/

void start() //开始信号

{

sda=1;

delay();

scl=1;

delay();

sda=0;

delay();

}

/************************************************/

void stop() //停止信号

{

sda=0;

delay();

scl=1;

delay();

sda=1;

delay();

}

/**************************************************/

void respons() //应答

{

uchar i;

scl=1;

delay();

while((sda==1)&&(i<250))i++;

scl=0;

delay();

}

/**************************************************/

void init_24c08() //初始化24C02

{

sda=1;

delay();

scl=1;

delay();

}

/************************************************/

void write_byte(uchar date)

{

uchar i,temp;

temp=date;

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

{

temp=temp<<1;

scl=0;

delay();

sda=CY;

delay();

scl=1;

delay();

// scl=0;

// delay();

}

scl=0;

delay();

sda=1;

delay();

}

/**********************************************/

uchar read_byte()

{

uchar i,k;

scl=0;

delay();

sda=1;

delay();

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

{

scl=1;

delay();

k=(k<<1)|sda;

scl=0;

delay();

}

return k;

}

/*****************************************************************/

void write_24c08(uchar address,uchar shuju) //给指定地址中写入数据

{

start();

write_byte(0xa0); // 最低位为0写,1读

respons();

write_byte(address);

respons();

write_byte(shuju);

respons();

stop();

}

/*****************************************************************/

uchar read_24c08(uchar address) //从24c08指定地址中读出数据

{

uchar date;

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

/24C02读写驱动程序完/

/***********************************************************/

void show() //LED显示函数

{

P0=table[sec/10];

shiwei=0;

delay1(40);

shiwei=1;

P0=table[sec%10];

gewei=0;

delay1(40);

gewei=1;

}

/***********************************************************/

void main(void)

{

TMOD=0x01; //定时器工作在方式1

ET0=1;

EA=1;

init_24c08(); //初始化24C08

sec=read_24c08(2);//读出保存的数据赋于sec

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //使定时器0.05秒中断一次

TR0=1; //开始计时

while(1)

{

LEDshow();

if(write==1) //判断计时器是否计时一秒

{

write=0; //清零

write_24c08(2,sec); //在24c08的地址2中写入数据sec

}

if(K5==0){

delay1(10);

if(K5==0){

sec=0;

}

}

}

}

/**************************************************************/

void t0(void) 1 using 0 //定时中断服务函数

{

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //重装计数初值

count++; //每过50ms tcnt加一

if(count==20) //计满20次(1秒)时

{

count=0; //重新再计

sec++;

write=1; //1秒写一次24C08

if(sec==100) //定时100秒,在从零开始计时

{sec=0;}

}

}

责任编辑:

电子琴仿真c语言程序,矩阵键盘模拟电子琴C语言程序设计相关推荐

  1. 矩形键盘c语言程序,矩阵键盘C语言程序+电路图(51单片机)

    下面是51单片机驱动矩阵键盘的电路图 采用一位数码管显示 按键的结果 下面是c语言源程序: #include #define uint unsigned int #define uchar unsig ...

  2. 奇数魔方阵c语言程序设计,《C语言程序》课程设计报告书魔方阵程序设计

    <<C语言程序>课程设计报告书魔方阵程序设计>由会员分享,可在线阅读,更多相关<<C语言程序>课程设计报告书魔方阵程序设计(17页珍藏版)>请在人人文库 ...

  3. c语言程序第一章编程,c语言程序的设计第一章 C语言编程入门.ppt

    c语言程序的设计第一章 C语言编程入门 第1章 C语言编程入门 本章是本书的入门篇,专为初学者熟悉编程过程.掌握程序结构而准备的. 本章学习目标 ? 1)? 能够通过模仿与改变来构造带有测试函数的C语 ...

  4. 统计字符 c语言程序,统计字符个数的C语言程序.doc

    统计字符个数的C语言程序.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  5. 矩阵键盘数 码管显示多位数 c语言,4×4矩阵键盘数码管显示按键值程序

    4×4矩阵键盘数码管显示按键值程序本文引用地址:http://www.eepw.com.cn/article/201607/294422.htm //电路说明如下. //单片机:使用51系列兼容的即可 ...

  6. 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序

    4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...

  7. 基于ZYNQ的嵌入式学习笔记四(矩阵键盘实现电子琴)

    本次要实现的是利用ZYNQ-7000板子上自带的16个矩阵键盘来实现每按一次发出一个音符的声音,从而实现电子琴的效果. 一.原理部分: 矩阵键盘:用8位来存储4*4的矩阵键盘的信息,初始化的值为000 ...

  8. 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计 - 全文

    本文为大家带来三个关于LED模拟交通灯单片机C语言程序设计. 关于LED模拟交通灯单片机C语言程序设计一 功能说明 东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南 ...

  9. 编c语言程序 任意输入一个长方体的长,宽,高,计算体积.,C语言程序,由键盘任意输入一个长方体的长.宽.高,计算体积....

    用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...

最新文章

  1. Centos下 安装和测试kafka
  2. DCM、PLL、PMCD、MMCM的区别与联系?
  3. Cisco H3C 端口汇聚互联
  4. SQLServer锁的机制
  5. php cookie 字串,php入门(字符串,cookie,session)
  6. 非线性优化库liblbfgs初探
  7. EfficientDet目标检测谷歌官方终于开源了!
  8. 特征筛选3——卡方检验筛选特征(单变量筛选)
  9. 美团 大规模商品知识图谱的构建与应用
  10. 极客大学架构师训练营 微服务架构 领域驱动设计DDD 中台架构、组件设计原则 第十次作业
  11. 图片验证码是如何刁难用户的?一招教你彻底去除图片验证码!
  12. 【excel】绘制双纵坐标轴的图表
  13. 【力扣·每日一题】507. 完美数 (C++ 模拟 数的因子)
  14. echarts图表x轴文字过多时换行显示以及图表画区域背景颜色
  15. 微信小程序生成海报中二维码-----长按识别不了问题及处理方案
  16. 开发一个Canvas小游戏 实现一个游戏“引擎”
  17. python用stomp扩展连接activemq(千千万万要注意,默认端口是61613,不是62613)
  18. 2022.10.23 英语背诵
  19. VSS2005的下载地址是:
  20. 深入理解ceph-disk的工作机制

热门文章

  1. C++学习——C++中的四个智能指针
  2. JSP中get和post请求方式的区别及乱码解决方法
  3. daz模型导入marvelous_传世工坊自制Daz Studio 4.10 系列入门教程
  4. java swing 多个线程,Swing与多线程
  5. numpy 转置_Numpy基础:数组转置和轴对换
  6. python数据归一化
  7. pytorch利用rnn通过sin预测cos 利用lstm预测手写数字
  8. ShareSDK集成微信、QQ、微博分享
  9. 爆款专栏《Python 黑科技》目录导航丨进度:12/50
  10. C++ Programmer's Cookbook C++基础和C++高级