推荐阅读最新更新时间:2024-10-30 11:54
DAC0832数模转换实验
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar tt; uint temp; void delay(uint z) { uint x,y; for(x=110;x 0;x--) for(y=z;y 0;y--); } void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) { for(temp=0x80;temp 0x
[单片机]
c51中断/定时寄存器的典型运用程序
程序如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code table ={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x76,0x79,0x38,0x3f,0}; uchar temp,t0,t1,bai,shi,ge,flag,flag1; uint shu; void
[单片机]
C51:串口程序
一、程序功能 pc向c51发送字符串不大于5个字符,c51将收到的字符前端加 S ,末端加 N ,回传给pc. 二、关键点 1、c51串口初始化步骤: 定时器设置,确定波特率发生器,定时器分配。 根据波特率,c51频率计算时间常数。 串口设置。 中断设置 2、定时器时间常数计算方法: 从晶振频率到波特率流程如下 晶振- 12分频- 定时器输入,8位计数,TH,TL控制定时器溢出时间,或输入分频值,例TH=0xfd,对输入3分频- 2分频(默认SMOD=0,2分频。如SMOD=1不分频)- 16分频- 波特率。 3、中断程序格式 void 函数名() interrupt n {函数体} n=0,外部中断0 n
[单片机]
Keil C51对C语言的关键词扩展之十: pdata
外部ram通过一个地址指针寄存器来间接访问,读写效率要低于内部ram。 外部ram容量最大可位64KB。 Keil C51提供两种外部数据存储方式,pdata和xdata。 1)xdata存储类型,指示变量可存储在外部ram 64KB地址范围内任意位置。large内存模型下,变量即为此种默认存储类型。 2)pdata存储类型,指示变量可存储在外部ram 256字节页范围内任意位置。compact内存模型下,变量即为此种存储类型。 外部ram通过movx指令存取。
[单片机]
对于c51外部中断和程序调用的理解
首先介绍一下C51外部中断的基本概念 中断的优点: 1、实时处理。需要CPU立即做出相应或处理。 2、异常处理。运行过程中,出现断电、程序出错等问题,就需要CPU对故障源进行处理。 3、提高效率。采用中断技术可以大大提高CPU的运行效率。 中断源:C51单片机有5个中断源(2个外部中断、2个定时器中断和一个串口中断)。对中断的配置操作,主要通过控制三个寄存器就可以(中断允许寄存器IE)、定时器控制寄存器(TCON)和中断优先级寄存器(IP)。即通过控制EA EX IT 的直接赋值,即可调用中断服务程序 注:中断服务程序与while(1)中的程序调用是不一样的 中断服务函数:在CPU接收到中断后,会执行相应中断的中断服务函数
[单片机]
C51单片机学习笔记(六)——液晶显示屏的使用
1.LCD1602的认识 液晶显示屏简称液晶、LCD。各种型号的液晶通常是按显示字符的行数或液晶点阵的行、列进行命名的。1602的意思就是每一行显示16个字符,共可以显示2行,常见的液晶还有0801、0802、1601等,这类液晶是字符型液晶,只能显示ASCII码字符。而LCD12864属于图形型液晶,由128*64个像素点构成,可以显示各种图形包括汉字。 LCD1602可显示2行ASCII码字符,每行包括16个5*10点阵(像素),有16个引脚,其实物图如下所示: 2.LCD1602的引脚及其功能 3.LCD模块的内部结构 LCD1602模块的内部结构分为三部分:LCD控制器、LCD驱动器、LCD显示器 LCD控制器
[单片机]
基于C51单片机的I/O并行口直接驱动LED显示电路图
如图 13 所示,利用 AT89S51 单片机的 P0 端口的 P0.0 - P0.7 连接到一个共阴码管的 a - h 的笔段上,数码管的公共端接地。在数码管上循环显示 0 - 9 数字时间间隔 0.2 秒。 把 “ 单片机系统 ” 区域中的 P0.0/AD0 - P0.7/AD7 端口用 8 芯排线连接到 “ 四路静态数码显示模块 ” 区域中的任一个数码管的 a - h 端口上;要求: P0.0/AD0 与a 相连, P0.1/AD1 与 b 相连,P0.2/AD2 与 c 相连, …… , P0.7/AD7 与 h 相连。
[模拟电子]
Keil C51中直接使用二进制数的方法
在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。 方法一: 建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义: binary (右键 “目标另存为” 下载)。 方法二: 做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定
[单片机]