单片机==数码管+蜂鸣器+炸弹(15)
来源:互联网 发布:骑士夺冠 知乎 编辑:程序博客网 时间:2024/06/14 07:39
#include <reg52.h>#include <intrins.h>#include "delay.h"#define SEGPORT P0sbit bit_select = P2^0;sbit seg_select = P2^1;sbit beep = P1^7;unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char tempdata[8];unsigned char sec = 1;unsigned char min = 10;unsigned char hour = 0;unsigned char High;unsigned char Low;unsigned char code freq[][2]={ 0xD8,0xF7,//00440HZ 1 0xBD,0xF8,//00494HZ 2 0x87,0xF9,//00554HZ 3 0xE4,0xF9,//00587HZ 4 0x90,0xFA,//00659HZ 5 0x29,0xFB,//00740HZ 6 0xB1,0xFB,//00831HZ 7 0xEF,0xFB,//00880HZ `1};unsigned char code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0};unsigned char code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0};void DelayMS(unsigned int x){ unsigned char t; while(x--)for(t=0;t<120;t++);}void PlayMusic(){ unsigned int i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { for(j=0;j<SONG_LONG[i]*20;j++) { beep = ~ beep; for(k=0;k<SONG_TONE[i]/3;k++); } DelayMS(10); i++; }}void timer0_init(void){ EA = 1; TMOD |= 0x01; TH0 = (65536 - 500) / 256; TL0 = (65536 - 500) % 256; ET0 = 1; TR0 = 1;}void timer1_init(void){ EA = 1; TMOD |= 0x10; TH1 = (65536 - 1000) / 256; TL1 = (65536 - 1000) % 256; ET1 = 1; TR1 = 1;}void timer0_isr() interrupt 1{ static unsigned char j = 0; TH0 = (65536 - 500) / 256; TL0 = (65536 - 500) % 256; j++; if(20 == j) { j = 0; sec--; if(sec == 0) { min--; sec = 60; } if(min == 0) { min = 0; sec = 0; TR0 = 0; } } tempdata[6] = segdata[sec / 10]; tempdata[7] = segdata[sec % 10]; tempdata[5] = 0x40; tempdata[3] = segdata[min / 10]; tempdata[4] = segdata[min % 10]; tempdata[2] = 0x40; tempdata[0] = segdata[hour / 10]; tempdata[1] = segdata[hour % 10];}void display(){ static unsigned char i = 0; SEGPORT = 0x0; seg_select = 1; seg_select = 0; SEGPORT = 0xff; bit_select = 1; bit_select = 0; SEGPORT = tempdata[i]; seg_select = 1; seg_select = 0; SEGPORT = bitdata[i]; bit_select = 1; bit_select = 0; i++; if(8 == i) { i = 0; }}void timer1_isr() interrupt 3{ TH1 = (65536 - 1000) / 256; TL1 = (65536 - 1000) % 256; display();}void main(){ unsigned char i; unsigned char cont; timer0_init(); timer1_init(); while(1) { for(cont = 9; cont > 0; cont--) { if(cont == min && 59 == sec) { for(i = 0; i < 200; i++) { beep = ~beep; delay_us(100); } } } if(0 == min) { for(i = 0; i < 200; i++) { PlayMusic(); delay_us(200); } } }}
0 0
- 单片机==数码管+蜂鸣器+炸弹(15)
- 单片机中数码管蜂鸣器炸弹
- 单片机==单数码管(2)
- 单片机==独立按键+蜂鸣器(10)
- 单片机控制流水灯 数码管显示时间 蜂鸣器报警
- 单片机==共阴数码管(3)
- 单片机==共阴数码管(4)
- 单片机==串口修改_数码管时间(18)
- 单片机(二)__seg数码管
- 单片机==独立按键+数码管计数+扫描法(8)
- 单片机==独立按键+数码管计数+中断法(9)
- 单片机==lcd_串口修改数码管时间_闹钟(19)
- 【蓝桥杯单片机组】(2)锁存器、数码管、蜂鸣器、继电器
- 数码管流动显示(自己的单片机)
- 80C51 单片机 蜂鸣器
- 51单片机STC89C52 蜂鸣器
- 单片机点灯和蜂鸣器
- 单片机控制蜂鸣器
- 【NOIP2016提高A组五校联考1】排队
- java中的设计模式的学习?单例模式
- 事务的隔离级别
- 试题:基本算法题之【求1!+2!+3!+...+n!】
- SSH 常见权限设计一
- 单片机==数码管+蜂鸣器+炸弹(15)
- iOS-Main-(RAC演练)-循环引用
- 【C++研发面试笔记】23. 面向对象设计模式
- 最长下降子序列优化
- 如何关闭Eclipse按空格和等号键自动补全内容
- hdu 1286找新朋友
- 浅谈JavaScript中浏览器兼容的问题
- Javascript-类(一)
- C++各种容器特点总结