随笔分类 -  单片机

单片机在各个实验源码
摘要:#include <reg51.h>typedef unsigned char uchar;typedef unsigned int uint;void delay(unsigned int i); //函数声名char DelayCNT;//定义变量sbit P10=P1^0;uint Count=0;uchar n=0;uchar Key_Value;//获取键盘码uint i=0;uint flag=0;//此表为 LED 的字模, 共阴数码管 0-funsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d, 阅读全文
posted @ 2013-06-20 15:49 蓬莱仙羽 阅读(393) 评论(0) 推荐(0)
摘要:/*********************************************************************************** 标题: 试验数码管上显示数字( 单片机直接实现位选 共阴极) ** ** 连接方法:P0与J12 用8PIN排线连接 P1与JP16 用排线连接 ****... 阅读全文
posted @ 2013-06-19 23:13 蓬莱仙羽 阅读(661) 评论(0) 推荐(0)
摘要:实现的功能:密码锁,红外控制,温度计功能等连线:键盘接P0,P2接数码管,接上LCD,P1.0接蜂鸣器,P1.2-P1.7接步进电机C程序: #include <reg52.h> #include <intrins.h>typedef unsigned int uint;typedef unsigned char uchar;bit FlagC=1; //接受和发送的标志位sbit P10=P1^0; //控制蜂鸣器响sbit IRIN = P3^2; //红外接收器数据线uchar IRCOM[7];uint nn=11;//用来判断红外发送的信号是数字几///... 阅读全文
posted @ 2013-06-13 10:17 蓬莱仙羽 阅读(531) 评论(0) 推荐(0)
摘要:红外遥控发射芯片采用PPM编码方式,当发射器按键按下后,将发射一组108ms的编码脉冲。遥控编码脉冲由前导码、8位用户码、8位用户码的反码、8位操作码以及8位操作码的反码组成。通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个9ms的低电平(起始码)和一个4. 5ms的高电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为0. 56ms、周期为1. 12ms的组合表示二进制的“0”;以脉宽为1. 68ms、周期为2. 24ms的组合表示二 阅读全文
posted @ 2013-06-11 16:16 蓬莱仙羽 阅读(1287) 评论(0) 推荐(0)
摘要:要求:用单片机实现一个电子密码锁的功能,一开始设置密码,设置从0-f,任意多少位密码(只要不超过十位),设置成功,蜂鸣器响一下;接着是验证密码,如果输入错误三次,则暂停一段时间,不允许使用,如果输入成功(F键确认),则密码解锁,步进电机转动,如果按下E键,则停止转动。连线:P0键盘,P2倒着接数码管,P3.0接蜂鸣器,P1接步进电机/*****************************键盘码的顺序**********************************//* 0xee,0xde,0xbe,0x7e 0-3 ... 阅读全文
posted @ 2013-06-07 18:05 蓬莱仙羽 阅读(525) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2013-06-04 15:22 蓬莱仙羽 阅读(1) 评论(0) 推荐(0)
摘要:连线:P1.6接蜂鸣器#include #define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7; //生日快乐歌的音符频率表,不同频率由不同的延时来决定uchar 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}; //生日快乐歌节拍表,节拍决定每个音符的演奏长短uchar code SONG_LONG[]={9,3,12, 阅读全文
posted @ 2013-06-04 15:19 蓬莱仙羽 阅读(567) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2013-06-04 15:18 蓬莱仙羽 阅读(6) 评论(0) 推荐(0)
摘要:要求:数码管从0开始显示,按一次按键(和内部中断,每隔一秒就自然进入中断一次),进入一次中断,数码管上数字加1,直到999,又从0开始。连线:P10连L7 电位器连直流电机 脉冲输出连P32 CS1连数码管CS#include<reg51.h>typedef unsigned char uchar;xdata uchar LED_CS _at_ 0x9000;xdata uchar LED_OUTSEG _at_ 0x9004;xdata uchar LED_OUTBIT _at_ 0x9002;sbit P10=P1^0;uchar n=0;unsigned int Count= 阅读全文
posted @ 2013-05-30 17:24 蓬莱仙羽 阅读(848) 评论(0) 推荐(0)
摘要:要求:利用DA转化产生几种不同的波形,例如三角波,锯齿波等等#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define juchi 0#define fangbo 1#define sanjiao 2#define zhengxian 3uchar xdata DA_CS _at_ 0xA000; uint i;uchar tag;void delay(int ms){ int i,j; for(i = 0;i < 50;i++) for(j = 0;j < 60;j+... 阅读全文
posted @ 2013-05-28 22:59 蓬莱仙羽 阅读(340) 评论(0) 推荐(0)
摘要:功能说明:PWM,通过改变占空比,PWM_T/100,这里100是周期,每个按键都会给PWM_T一个定值,这样就改变了输出波形。#include<reg52.h>sbit P10=P1^0;unsigned char i;void delay(unsigned char n){unsigned char i,j;for(i=0;i<n;i++) for(j=0;j<20;j++);}void ex0() interrupt 0{i+=10;}void main(){ EX0=1; IT0=1; EA=1; i=150; while(1) { P10=0; delay(i 阅读全文
posted @ 2013-05-28 22:56 蓬莱仙羽 阅读(875) 评论(0) 推荐(0)
摘要:要求:实现蜂鸣器响。连线:将P3^4连接到蜂鸣器上原理:在蜂鸣器上加上一个不断0,1变化的信号,就能实现蜂鸣器响的效果#include<reg51.h>sbit beep=P3^4;char count;bit flag;void latetime(int t){ char j; while(t--) { for(j=0;j<20;j++); }}void init(){ TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TR0=1; ET0=1; EA=1... 阅读全文
posted @ 2013-05-28 22:50 蓬莱仙羽 阅读(171) 评论(0) 推荐(0)
摘要:要求:按下键盘,六个数码管流动显示按下的值。连线:将片选CS0接到key_LED_CS上 1 #include <reg52.h> 2 #define LEDLen 6 3 4 xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口 5 xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口 6 xdata unsigned char IN _at_ 0x8001; // 键盘读入口 7 8 unsigned char LEDBuf[LEDLen]; // 显... 阅读全文
posted @ 2013-05-28 22:45 蓬莱仙羽 阅读(232) 评论(0) 推荐(0)
摘要:要求:在原来跑马灯的基础上,增加时间中断和外部中断来实现跑马灯的顺序。 1 #include<reg52.h> 2 #include <intrins.h> 3 sbit P32 = P3^2; 4 unsigned char flag=0; //设置标志位(0/1) 1为左移 5 unsigned char LED; 6 unsigned char count=0; 7 8 void delayms(unsigned char ms) 9 { 10 unsigned char i; 11 while(ms--) 12 { 13 for(i... 阅读全文
posted @ 2013-05-28 20:37 蓬莱仙羽 阅读(224) 评论(0) 推荐(0)
摘要:要求:。。。连线:将P1口的八个端口依次接到八个灯上,提醒P1.7是高位,P1.0是低位 1 #include<reg51.h> 2 void delay(int k){ 3 int i=0,j=0; 4 while(k--) 5 { 6 for(i;i<50;i++) 7 { 8 for(j;j<255;j++) 9 {10 11 }12 }1314 }15 16 }17 void main(){18 int n=0;19 ... 阅读全文
posted @ 2013-05-27 09:19 蓬莱仙羽 阅读(216) 评论(0) 推荐(0)
摘要:要求:能够实现本单片机按下键盘,能够在数码管上显示键盘值。连线:将片选CS0链接到KEY/LED CS。 1 #define LEDLen 6 2 3 xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口 4 xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口 5 xdata unsigned char IN _at_ 0x8001; // 键盘读入口 6 7 unsigned char LEDBuf[LEDLen]; // 显示缓冲 8 code unsigned char L... 阅读全文
posted @ 2013-05-27 08:44 蓬莱仙羽 阅读(332) 评论(0) 推荐(0)
摘要:要求:让两台单片机能相互通信,这台单片机按下在键盘能在另一台单片机上在数码管显示。链接线:将一台单片机在P3.0(RXD)接到另一台单片机在P3.1(TXD),还有这台在P3.1接到另一台在P3.0,还有将两台单片机在GND相连。 1 #include <reg51.h> 2 #define LEDLen 6 3 4 xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口 5 xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口 6 xdata unsigned char IN _a... 阅读全文
posted @ 2013-05-27 08:39 蓬莱仙羽 阅读(472) 评论(0) 推荐(0)
摘要:要求:产生某种特定在波形 1 /*DA转换实验 例如产生锯齿波*/ 2 3 #include <reg52.h> 4 5 unsigned char xdata ad_cs0 _at_ 0xc000; 6 unsigned char xdata ad_cs1 _at_ 0xc001 ; 7 unsigned char xdata key_seg _at_ 0xd004; 8 unsigned char xdata key_bit _at_ 0xd002; 9 10 sbit EOC=P3^2;11 unsigned char disp_ram[6];12 unsig... 阅读全文
posted @ 2013-05-22 08:36 蓬莱仙羽 阅读(792) 评论(0) 推荐(0)
摘要:1 /*电压表 精确到小数点后面三位*/ 2 /*连线:电位器接IN0,AD_CS接CS0,CS1接KEY/LED_CS*/ 3 #include<reg52.h> 4 typedef unsigned char uchar; 5 xdata uchar LED_CS _at_ 0x9000; 6 xdata uchar LED_OUTSEG _at_ 0x9004; 7 xdata uchar LED_OUTBIT _at_ 0x9002; 8 9 xdata uchar AD_CS _at_ 0x8000;10 xdata uchar AD_MODE _at_ 0x8003;1 阅读全文
posted @ 2013-05-22 08:30 蓬莱仙羽 阅读(488) 评论(0) 推荐(0)