- 博客(0)
- 资源 (7)
- 收藏
- 关注
基于AT89S52带温度电子万年历的程序
#include<reg52.h>
#include"ds1302.h"
#include"ds18b20.h"
#include"delay.h"
unsigned char duanx[16]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};//数码管段选编码
unsigned char weix[12]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//数码管位选编码 0~9
unsigned char i,j;//循环控制变量
unsigned char xians[12]={0,0,0,0,0,0,0,0,0,0,0,0};//各数码管闪烁控制变量
unsigned char xians_flg[12]={0,0,0,0,0,0,0,0,0,0,0,0};//各数码管闪烁标志
unsigned char z_flg=0;//时间修改位标志位
unsigned char xiu_flg=0;//时间修改数标志位
unsigned char xiu_time[10]={0,0,0,0,0,0,0,0,0,0};//时间修改缓存
unsigned char nian_s[2]={2,0};//年号前两位
2010-04-25
带温度的电子万年历的设计
随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,能够显示从2000至2099年的年、月、日、星期、时、分、秒。同时还可以对当前环境温度进行实时测量。系统具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景
2010-04-25
单片机硬件应用(如:74LS138译码器应用 74HC595串入并出芯片应用 74LS148扩展中断 05 IIC-24C04与蜂鸣器 IIC-24C04与数码管 6264扩展内存 用8255实现接口扩展……)
74LS138译码器应用 74HC595串入并出芯片应用 74LS148扩展中断 05 IIC-24C04与蜂鸣器 IIC-24C04与数码管 6264扩展内存 用8255实现接口扩展 BCD译码数码管显示数字 MAX7221控制数码管动态显示 1602字符液晶滚动演示程序 ADC0809模数转换与显示 键控看门狗 DS1621温度传感器实验 正反转可控的步进电机 DS1621温度传感器实验 160128LCD图文演示 开关控制12864LCD串行模式显示 1602液晶显示的DS1302实时时钟
2009-08-25
51单片机中用PWM控制LED亮度调节
LED一般是恒流点亮的,如何改变LED的亮度呢?答案就是PWM控制。
在一定的频率的方波中,调整高电平和低电平的占空比,即可实现。
比如我们用低电平点亮一个LED灯,我们假设把一个频率周期分为
10个时间等份,如果方波中的高低电平占空比是9:1,这是就是一
个比较暗的亮度,如果方波中高低电平占空比是10:0,这时,
全部是高电平,灯是灭的。如果占空比是5:5,就是一个中间亮度,
如果高低比是1:9,是一个比较亮的亮度,如果高低是0:10,这时
全部是低电平,就是最亮的。
2009-08-25
用单片机实现记录10次暂停时间的秒表收藏
//单片机实现10路秒表程序流程
1:系统初始化;
2:等待键盘按键,启动秒表;
3:若键盘有按键且不是回车键,记录当前时间
4:如果是回车键或者记录的次数为10时,停止秒表,负责goto 3:
5:显示第一次按键的时间,等待按键;
6:判断按键,
若是数字键,显示相应暂停时的时间
若是UP/DOWN,显示前/后一次暂停时间
若是复位键,复位系统 goto 1:
若是暂停键,goto 1:
若是退出键,退出系统;
2009-08-25
单片机C语言程序学习好资料
基础知识:单片机编程基础
单片机的外部结构:
1、 DIP40双列直插;
2、 P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)
3、 电源VCC(PIN40)和地线GND(PIN20);
4、 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)
5、 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)
6、 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)
7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1
单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)
1、 四个8位通用I/O端口,对应引脚P0、P1、P2和P3;
2、 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)
3、 一个串行通信接口;(SCON,SBUF)
4、 一个中断控制器;(IE,IP)
针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。
C语言编程基础:
1、 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。
2、 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
3、 ++var表示对变量var先增一;var—表示对变量后减一。
4、 x |= 0x0f;表示为 x = x | 0x0f;
5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。
6、 While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}
在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC
While( 1 ); //死循环,相当 LOOP: goto LOOP;
}
注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。
在某引脚输出低电平的编程方法:(比如P2.7引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND
While( 1 ); //死循环,相当 LOOP: goto LOOP;
}
在某引脚输出方波编程方法:(比如P3.1引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
While( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC
P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND
} //由于一直为真,所以不断输出高、低、高、低……,从而形成方波
}
2009-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人