资源简介
C51单片机 通过定时器产生特定方波,然后按下矩阵键盘使蜂鸣器发出不同音调

代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
uchar i;
sbit Beep =P2^3 ; //讯响器控制脚?
//36种音阶
unsigned sound_list[36]=
{
63628//低 1 DO
63731//# 1 DO#
63853//低 2 RE
63928//# 2 RE#
64021//低 3 M
64103//低 4 FA
64185//# 4 FA#
64260//低 5 SO
64331//# 5 SO#
64400//低 6 LA
64463//# 6
64524//低 7 SI
64580//中1 DO
64633//# 1 DO#
64684//中 2 RE
64732//# 2 RE#
64777//中 3 M
64820//中 4 FA
64860//# 4 FA#
64898//中 5 SO
64934//# 5 SO#
64968//中 6 LA
64994//# 6
65030//中 7 SI
65058//高 1 DO
65085//# 1 DO#
65110//高 2 RE
65134//# 2 RE#
65157//高 3 M
65178//高 4 FA
65198//# 4 FA#
65217//高 5 SO
65235//# 5 SO#
65252//高 6 LA
65268//# 6
65282//高 7 SI
} ;
/******************************************************************************/
void Time0_Init();
void delay(uint z);
uchar keyscan();
/****************************************************************/
/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
Time0_Init(); //定时器0中断初始化
while(1)
{
keyscan();//播放
}
}
void Time0_Init()
{
TMOD=0x01;
TH0=sound_list[i]/256;
TL0=sound_list[i]%256;
EA=1;
ET0=1;
}
void Time0_Int() interrupt 1
{
Beep=!Beep;
TH0=sound_list[i]/256;
TL0=sound_list[i]%256;
}
/******************************
矩阵键盘延时函数
**********************************/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**************************************
矩阵扫描
**************************************/
uchar keyscan()
{
uchar temp1=0xed;
uchar temp;
/*************************这一组的矩阵键盘是坏的******************************
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
break;
case 0xde:
break;
case 0xbe:
break;
case 0x7e:
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
/***************************************************/
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
P1=0xaa;
TR0=1;
i=0;
delay(300);//改变声音的时间长短
TR0=0;
break;
case 0xdd:
P1=0x55;
TR0=1;
i=3;
delay(300);
TR0=0;
break;
case 0xbd:
P1=0xa5;
TR0=1;
i=6;
delay(200);
TR0=0;
break;
case 0x7d:
P1=0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4946 2015-06-19 19:03 按键音调\ajyd.c
文件 19853 2015-06-19 19:01 按键音调\ajyd.LST
文件 7644 2015-06-19 19:01 按键音调\ajyd.OBJ
文件 1228 2015-06-19 16:36 按键音调\ajydcs.c
文件 3157 2015-06-19 16:36 按键音调\ajydcs.LST
文件 1939 2015-06-19 16:36 按键音调\ajydcs.OBJ
文件 6829 2015-06-19 19:01 按键音调\按键音调
文件 2056 2015-06-19 19:01 按键音调\按键音调.hex
文件 11251 2015-06-19 19:01 按键音调\按键音调.M51
文件 1013 2015-06-23 20:13 按键音调\按键音调.Opt
文件 163 2015-06-23 20:13 按键音调\按键音调.plg
文件 1983 2015-06-19 19:03 按键音调\按键音调.Uv2
....... 1003 2015-06-23 20:09 按键音调\按键音调_Opt.Bak
....... 0 2015-06-19 13:53 按键音调\按键音调_Uv2.Bak
文件 1937 2015-06-19 16:36 按键音调\按键音调测试
文件 789 2015-06-19 16:36 按键音调\按键音调测试.hex
文件 3241 2015-06-19 16:36 按键音调\按键音调测试.M51
文件 1016 2015-06-19 17:21 按键音调\按键音调测试.Opt
文件 167 2015-06-23 20:09 按键音调\按键音调测试.plg
文件 1991 2015-06-19 17:21 按键音调\按键音调测试.Uv2
....... 0 2015-06-19 16:06 按键音调\按键音调测试_Uv2.Bak
目录 0 2015-06-23 20:13 按键音调
----------- --------- ---------- ----- ----
72206 22
- 上一篇:Torrent文件自动改名工具
- 下一篇:基于QZXing的简单二维码扫描
相关资源
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- STM32F103定时器中断程序
- STM32定时器使用入门。看了这个程序会
- Verilog按键代码
- PIC 单片机定时器初值计算器
- 课程设计蔬菜大棚自动控制系统,包
- 一个mfc前端显示秒表
- FPGA按键消抖
- 基于ARM7 PWM定时器的图像传感器时序信
- 易语言液晶定时器源码
- 易语言API定时器源码
- 易语言关机定时器源码
- 易语言定时器正常显示倒记时源码
- CMD批处理模拟鼠标按键事件
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
- 西门子plc定时器ton与tonr有什么区别
- STM32F2技术培训_通用定时器_TIM.pdf
- 用delphi实现的类似于按键精灵的脚本
- 串口条码枪转模拟按键
- 基于51单片机的智能十字路口交通灯系
- 控制台程序使用串口
- MSP430F5438A Timer_B 操作实验
- MSP430F5438A Timer_A 操作实验
- 畅学系列STM32开发板实验箱8位独立按
- MCS-51单片机定时器/计数器常见习题解
- 单按键开关控制电路
- 用WinIo模拟按键
- 易语言用WinIO模拟按键源码
- 易语言winio模拟键盘源码易语言测试源
评论
共有 条评论