日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/7/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 电子琴仿真c语言程序,矩阵键盘模拟电子琴C语言程序设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:矩陣鍵盤模擬電子琴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语言程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。