TLC1543 的源程序

发布者:平和的心态最新更新时间:2016-11-09 来源: eefocus关键字:TLC1543  源程序 手机看文章 扫描二维码
随时随地手机看文章

******************************************************************/


#define    Wait1us        _nop_();
#define    Wait2us        {_nop_();_nop_();}
#define    Wait4us        {Wait2us;Wait2us;}
#define    Wait8us        {Wait4us;Wait4us;}
#define    Wait10us  {Wait8us;Wait2us;}

#i nclude "INTRINS.H"

/************定义接口总线**************/
sbit Clock = P3 ^ 4; //时钟口线
sbit DataIn = P3 ^ 2; //数据输入口线
sbit DataOut = P3 ^ 5; //数据输出口线
sbit ChipSelect = P3 ^ 3; //片选口线
sbit EOC = P2 ^ 7; //转换完成口线
/************接口总线定义结束**********/

/*********函数名称:ADCSelChannel********
*
*功能:转换指定通道的模拟量为数字量
*
*说明:
*
*位置:1
*
****************************************/
unsigned int ADCSelChannel(unsigned char Channel)
{
 unsigned int ConvertValue;
 unsigned char i, Chan;
 unsigned char ConvertValueL, ConvertValueH;
 unsigned char delay;
 
 ConvertValueL = ConvertValueH = 0; //初始化转换结果
 delay = 0;
 if (EOC)
 {
  Clock = 0;
  ChipSelect = 1;
  Wait2us;
  ChipSelect = 0;
  Wait2us;
  Channel = Channel << 4;
  for (i = 0; i < 4; i ++) //输入需要转换的通道的编码
  {
   Chan = Channel;
   Chan = Chan >> 7;
   DataIn = (bit)Chan;
   Wait2us;
   Clock = 1;
   Clock = 0;
   Channel = Channel << 1;
  }
  for (i = 0; i < 6;i ++) //输入转换时钟
  {
   Clock = 1;
   Clock = 0;
  }
  ChipSelect = 1;
  //开始检测转换结束标志,或者转换超时出错
  while ((!EOC) && (delay < 10))
  {
   Wait10us;
   delay ++;
  }
  if (delay == 10)
  {
   return (0xFFFF); //转换超时,返回错误代码
  }
  else
  {
   Wait10us;
   Clock = 0;
   ChipSelect = 1;
   Wait1us;
   ChipSelect = 0;
   Wait1us;
   for (i = 0; i < 2; i ++) //读取高二位bit值
   {
    Clock = 1;
    DataOut = 1;
    ConvertValueH <<= 1;
    if (DataOut)
      ConvertValueH |= 0x1;
    Clock = 0;
    Wait1us;
   } 
   for (i = 0; i < 8; i ++) //读取低八位bit值
   {
    Clock = 1;
    DataOut = 1;
    ConvertValueL <<= 1;
    if (DataOut)
      ConvertValueL |= 0x1;
    Clock = 0;
    Wait1us;
   } 
   ChipSelect=1;
   ConvertValue = ConvertValueH;
   ConvertValue <<= 8;
   ConvertValue |= ConvertValueL;
   return (ConvertValue); //返回转换结果
  }
 }
}
/************ADCSelChannel函数结束**********/

关键字:TLC1543  源程序 引用地址:TLC1543 的源程序

上一篇:max7219 控制字
下一篇:MAX7219的c程序

推荐阅读最新更新时间:2024-03-16 15:20

“祝你平安”源程序
ORG 0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0
[单片机]
单片机定时器的应用 具有清零,暂停,启动功能秒表源程序
/*利用定时器0、灯光、数码管模块和两个独立摁键,设计一个秒变,具有清零,暂停,启动功能。 1.显示格式为: 分-秒-0.05毫秒(既50ms) 08-26-18表示:8分26秒900毫秒 2.独立摁键s4为:启动/暂停 独立摁键s5为:清零 摁键均为摁下有效。 3.暂停时只有L1亮,启动时只有L2亮*/ #include reg51.h #define led P2/*定义P2端口*/ typedef unsigned int u16; typedef unsigned char u8; sbit k2=P3^2 ; sbit k1=P3^3 ; sbit LSA=P2^2; sbit LSB=P2^3
[单片机]
AVR单片机 ds18b20 gcc 源程序
//mega8 7.3728M Hz g CC 编译通过,_delay_us(us) _delay_ms(ms)调用库函数 //初始化把dq设置为输出 #define ds18b20_dq PC5 #define set_ds18b20_dq_ddr() DDRC|=1 ds18b20_dq #define set_ds18b20_dq() PORTC|=1 ds18b20_dq #define clr_ds18b20_dq() PORTC&=~(1 ds18b20_dq) #define clr_ds18b20_dq_ddr() DDRC&=~(1 ds18b20_dq) #define in_ds18b20_dq() PIN
[单片机]
基于单片机控制的密码锁设计(含电路图及源程序)
单片机控制的密码锁设计。AT89S52单片机P1引脚外接独立式按键S1-S8,分别代表数字键0-5、确定键、取消键。单片机从P3.0-P3.3输出4个信号,分别为1个电磁开锁驱动信号和密码错误指示、报警输出、已开锁指示信号,分别用发光二极管L1-L4指示。P3.4接一有源蜂鸣器,用于实现提示音。 基本要求: (1)初始密码为123450,输完后按确定键开锁,取消键清除所有输入,每次按键有短“滴”声按键提示音。 (2)密码输入正确后,输出一个电磁锁开锁信号与已开锁信号,并发出两声短“滴”声提示。4秒后开锁信号与已开锁指示清零。 (3)密码输入错误时,发出一声长“滴”声错误指示提示音,并密码错误指示灯亮,三次密码错误时,发出长鸣声报警
[单片机]
基于单片机控制的密码锁设计(含电路图及<font color='red'>源程序</font>)
51单片机之串口操作入门经验总结与C源程序
用计算机来控制单片机,进而控制继电器等其他外设,感觉不错啊,怎么实现呢?一步步来吧。 单片机串行口通信,也就是单片机与计算机之间的通信,要实现,要明白一些基本的概念。 (1)实现之前,请确定串口正常,我之前做过串口操作,烧了不能控制,后来才发现,设备管理器里串口有叹号,驱动有问题,可能是开发实验板没有插好或是换了个USB口造成的(我用的是串口转USB的,笔记本用) (2)串口初始化,这方面,最好有相关的书来的,明白消化定时器与中断, 这样操作起来就容易了。 一。设定串口的工作方式:设定SCON寄存器。 什么是SCON呢? SCON寄存器是51单片机一个可寻址的专用寄存器,用于串行数据通信的控制,其字节地址为:98H,位地址为:98
[单片机]
一种0-24小时的时钟源程序
  该程序可用四位LED显示器进行实时显示。这是一种基本的时钟程序,利用它可以略加修改,即可制成0-12小时或可预置起始时刻的时钟程序。该时钟源程序命名为th090.c,即用C语言编写的。      只需按照上述规范,可在MPIAB IDE集成开发环境下编辑其源程序,其清单如下:   源程序建立后,即可通过PI CC 编译器进行编译而生成th090.e相对应的目标码th090.hex。      说明:(1)读者也可用汇编语言,在MPLAB IDE集成开发环境下,建立汇编语言的源程序,再用汇编软件MPASM进行汇编,同样可生成相对应的目标码.hex。如果读者是用汇编语言建立0-24小时的时钟程序,将会看到汇编语言的
[单片机]
一种0-24小时的时钟<font color='red'>源程序</font>
LED游泳池灯源程序
indr == 0x00 tcc == 0x01 pc == 0x02 status == 0x03 r3 == 0x03 c == 0 dc == 1 z == 2 p == 3 t == 4 ps0 == 5 ps1 == 6 rst == 7 ;; rsr == 0x04 port5 == 0x05 b1_pin == 0 b_pin == 1 g_pin == 2 r_pin == 3 ; port6 == 0x06 g1_pin == 7 sda == 2 sck == 1 ;; ;;INTERRUPT STATUS REGISTER rf == 0x0f;;INTERRUPT STATUS REGISTER tcif
[单片机]
UG-2864HSWEG0或ssd1306与stm32源程序+Proteus仿真
我在做这个仿真的时候也遇到了一定问题,现附上proteus仿真模拟图和源代码供大家参考。大家在用这块屏幕取字模的时候一定要注意是行列式还是列行试。注意在打印数组的时候要注意他的页与行的变换。加油 仿真原理图如下 单片机源程序如下: #include sys.h #include usart.h #include delay.h //unsigned char a = mengxinyu ; unsigned char a ={//孟 /* 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m
[单片机]
UG-2864HSWEG0或ssd1306与stm32<font color='red'>源程序</font>+Proteus仿真
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved