单片机例程(2)

2019-06-11 00:38

单片机例程

} for (i = 0 ;i < 8 ; i++) { P2 = LED; delay(500); LED = LED >> 1; // 右移 LED = LED | 0x80; // 移位后,后面的位为高电平 } } }

/*******延时函数*************/ void delay(unsigned int i) {

unsigned char j; for(i; i > 0; i--)

for(j = 255; j > 0; j--); }

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

* 六

按键控制程序

*

* 连接方法:JP10(P2) 与 JP1 (LED灯)连接, *

* JP11(P0) 与 JP5(按键接口)连接 * * 开始点亮P1LED * * 按P01 LED向右移一位 *

* 按P00 LED向左移一位 *

* 连续按动按钮LED会不停的左移或右移 *

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

#include

I Believe I Can Do !

6

单片机例程

#include

unsigned char scan_key();

void proc_key(unsigned char key_v); void delayms(unsigned char ms); sbit K1 = P0^0; //对应按钮K1 sbit K2 = P0^1; //对应按钮K2 main() { unsigned char key_s,key_v; key_v = 0x03; P2 = 0xfe; while(1) { key_s = scan_key(); if(key_s != key_v) { delayms(10); key_s = scan_key(); if(key_s != key_v) { key_v = key_s; proc_key(key_v); } } } }

unsigned char scan_key() { unsigned char key_s; key_s = 0x00; key_s |= K2; key_s <<= 1; key_s |= K1; return key_s; }

void proc_key(unsigned char key_v) { if((key_v & 0x01) == 0) { P2 = _cror_(P2,1); } else if((key_v & 0x02) == 0) { P2 = _crol_(P2, 1);

I Believe I Can Do 7

! 单片机例程

} }

void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } }

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

/* 七 按键状态显示试验

/* * /* 连接方法:连接JP10(P0)与JP5(按钮接口) * /* JP11 (P2)与JP1(LED接口) * * /*按键则点亮LED灯,8路指示灯接p0口 /******************************************************************/ #include #include

sbit BEEP = P1^5; //将蜂鸣器定义在 P1.5 端口上 sbit RELAY = P1^4; //将继电器定义在 P1.4 端口上

sbit K1 = P0^0; sbit K2 = 0x80^1; //P0和0X80表示的是同一个地址 sbit K3 = P0^2; sbit K4 = 0x80^3; sbit K5 = P0^4; sbit K6 = 0x80^5;

void beep();

/*********************************************************/ main() {

while(1) {

P2 = 0xff; if(K1 == 0) P2 = 0xfe;

if(K2 != 1) P2 = 0xfd;

I Believe I Can Do !

*

* 8

单片机例程

if(!K3) P2 = 0xfb;

if(~K4) P2 = 0xf7; if(!K1&&!K2) P2 = 0x00;//2个按钮同时按下 P2口8个灯全部点亮 if(!K5 ) beep();//喇叭发声 if (!K6 ) RELAY = 0; //通过了反相器(HC6800试用) else RELAY = 1; } }

/**********************************************************/ void beep() {

unsigned char i , j; for (i=0;i<100;i++) {

BEEP=!BEEP; //BEEP取反 for (j = 0 ; j<250 ; j++) //需要产生方波 _nop_(); }

BEEP=1; //关闭蜂鸣器 }

/************************************************************************ 八 [文件名] C51音乐程序(八月桂花)

[功能] 通过单片机演奏音乐

/**********************************************************************/ #include #include

I Believe I Can Do !

9

单片机例程

//本例采用89C52, 晶振为11.0592MHZ

//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.

//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍; //所以拿出谱子, 试探编吧!

sbit Beep = P1^5 ;

unsigned char n=0; //n为节拍常数变量 unsigned char code music_tab[] ={

0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数, 0x20, 0x40, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0xFF, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x80, 0x20, 0x30, 0x1C , 0x10, 0x20, 0x10, 0x1C , 0x10, 0x20, 0x20, 0x26 , 0x20, 0x2B, 0x20, 0x30 , 0x20, 0x2B, 0x40, 0x20 , 0x15, 0x1F, 0x05, 0x20 , 0x10, 0x1C, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20,

I Believe I Can Do !

10


单片机例程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈乡镇卫生院资产管理的现状与对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: