51单片机
qq_35212671
这个作者很懒,什么都没留下…
展开
-
led流水灯——51单片机程序
原创 2016-09-10 17:18:56 · 1706 阅读 · 0 评论 -
为什么许多器件的片选信号低电平有效,而不是高电平有效?
片选信号低电平有效: 主要是为了降低功率。选中信号输出时,地址译码器输出端为低电平,此时译码器不输出功率;选中信号没有输出(不选中)时,译码器输出端为高阻状态,输出消耗功率也为0。因此芯片的CS信号采用低电平有效可以最大程度减小片选控制的功率消耗。 此外,低电平有效也可以最大程度地减小干扰和保证控制的可靠性。低电平有效时,外部的任何干扰都不能进入被控制的芯片,因而保证芯片的原创 2016-09-28 16:35:30 · 21242 阅读 · 1 评论 -
infrared
#include #include "lcd.h"#define LCD_WRITE_DATA 1#define LCD_WRITE_COM 0unsigned int irtime = 0;unsigned char irdata[33];unsigned char ircode[4];bit startflag = 0;bit irok = 0;un原创 2016-09-27 18:51:55 · 293 阅读 · 0 评论 -
SPI通信总线-51
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。(1)SDI – 主设备数据输入,从设备数据输出;(2)SDO – 主设备数据输出,从设备数据输入;(3)SCLK – 时钟信号,由原创 2016-09-21 21:47:48 · 791 阅读 · 0 评论 -
cir_head_dlink
#include #include struct dnode{ int num; struct dnode* next; struct dnode* prior;};typedef struct dnode Dnode;typedef Dnode* Dlink;void init(Dlink* head){ (*he原创 2016-09-24 18:49:20 · 271 阅读 · 0 评论 -
DS18b20——51
sbit ds = P1 ^ 3;bit ack = 0;void ds_reset(){ ds = 1; ds = 0; delay_us(200); delay_us(200); //480us ~ 960us,800us ds = 1; //free ds delay_us(30); if(0 == ds) { ack = 1;原创 2016-09-19 22:42:57 · 345 阅读 · 0 评论 -
DS1302——51
#define ds1302_sec_add 0x80 //??陏?Y???#define ds1302_min_add 0x82 //?陏?Y???#define ds1302_hr_add 0x84 //瓯陏?Y???#define ds1302_date_add 0x86 //?陏?Y???#define ds1302_month_add 0x88 /原创 2016-09-18 19:43:56 · 251 阅读 · 0 评论 -
AD-DA——51
#define ERR 1#define SUCC 0bit ack = 0; //bit定义的变量仅有0和1void iic_start(){ SDA = 1; SCL = 1; delay_us(1); SDA = 0; delay_us(1); SCL = 0; //钳住总线}void iic_stop(){原创 2016-09-17 22:36:59 · 400 阅读 · 0 评论 -
eeprom
#include "include.h"#define FAIL 1#define SUCC 0bit ack = 0; //bit定义的变量仅有0和1unsigned char shi1;unisgned char fen1;unsigned char miao1;unsigned char send[3] = 0;void iic_start()原创 2016-09-16 17:29:35 · 299 阅读 · 0 评论 -
matrix key——51程序
unsigned char segdata[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char temp原创 2016-09-15 17:44:41 · 636 阅读 · 0 评论 -
lcd——51程序
sbit RS = P2 ^ 4;sbit RW = P2 ^ 5;sbit E = P2 ^ 6;#define LCDPORT P0#define LCD_WRITE_DATA 1#define LCD_WRITE_COM 0void lcd_write(unsigned char byte,unsigned char flag){ if(flag) {原创 2016-09-14 21:45:40 · 741 阅读 · 0 评论 -
uart——51程序
void uart_init(){ SCON = 0x50; /*设置串口uart的工作方式SCON: D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN原创 2016-09-13 18:26:12 · 399 阅读 · 0 评论 -
外部中断0——51程序
51单片机中一共有5个中断方式:①外部中断0②定时器中断0③外部中断1④定时器中断1⑤串口中断5个中断优先级从 高 到 低void int0_init() //外部中断0初始化函数{ EA = 1; //打开总中断 IT0 = 1; /*设置中断触发方式:原创 2016-09-12 23:16:22 · 14567 阅读 · 0 评论 -
seg显示时间——51程序
#include #define SEGPORT P0sbit bit_select = P2 ^ 0; //p2 ^ 0控制位选锁存器,位选锁存器选定 数码管sbit seg_select = P2 ^ 1; //p2 ^ 1控制段选锁存器,段选锁存器选定 数码管的内容(并显示内容)。 unsigned char segdata[16] = {0x3f,0x06,原创 2016-09-11 10:52:28 · 1187 阅读 · 0 评论 -
单片机编程遇到'DATA' SEGMENT TOO LARGE怎么解决?
写单片机程序遇到'DATA' SEGMENT TOO LARGE,说明128字节的data数据空间已经用完。解决办法有二:①在数组前加code。②使用xdata数据空间(但是自己在写点阵屏显示程序时,将Target->Memory Model 中的值改为[Large:variablesin XDATA ],不显示内容了,不知道为什么)。原创 2016-10-19 22:40:01 · 38999 阅读 · 5 评论