[通用8051核FLASH系列] 【芯圣电子HC89S105A测评报告】+TLC5615

[复制链接]
1066|0
 楼主| 比神乐 发表于 2023-5-25 08:50 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-19 16:42 编辑

今天搞了一下TLC5615,这是个DAC芯片。
DIN接P0.1,SCLK接P0.0,CS接P1.0
代码:
  1. #define ALLOCATE_EXTERN
  2. #include "HC89S105AC8.h"

  3. #define uchar unsigned char  
  4. #define uint unsigned int
  5. /** @addtogroup 425_GPIO_led_toggle GPIO_led_toggle
  6.   * @{
  7.   */
  8. #define _nop_()    i=i

  9. #define DIN_1 P0_1=1
  10. #define DIN_0 P0_1=0
  11. #define sclk_1 P0_0=1
  12. #define sclk_0 P0_0=0
  13. #define cs_1 P1_0=1
  14. #define cs_0 P1_0=0

  15. void write_5615(uint da)
  16. {
  17.    uchar i;
  18.    cs_1;
  19.    sclk_0;
  20.    cs_0;
  21.    //da<<=6;//有效位位10位去掉没用的6位
  22.    da=da&0x03ff;
  23.    for(i=0;i<12;i++)
  24.    {
  25.      if((bit)(da&0x0200)==1)//送时是10位两个0是后来加的在此处加
  26.       DIN_1;
  27.      else
  28.       DIN_0;
  29.      sclk_1;
  30.      da<<=1;
  31.      sclk_0;
  32.      
  33.     }
  34.     sclk_0;
  35.     cs_1;
  36.     _nop_();_nop_();
  37. }
  38. void delay1ms(uint x)  
  39. {
  40.     unsigned char a,b,c;
  41.         while(x--)
  42.         {
  43.     for(c=1;c>0;c--)
  44.         for(b=142;b>0;b--)
  45.             for(a=2;a>0;a--);
  46.         }
  47. }
  48. /***************************************************************************************
  49.   * @实现效果        设置各个IO口的工作状态
  50. ***************************************************************************************/
  51. void main(void)        
  52. {        
  53.         uint i=30;

  54. /********************************系统初始化*******************************************/               
  55.         WDTCCR = 0x00;                           //关闭看门狗
  56.                                                            //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
  57.         CLKCON = 0x02;                           //选择内部高频RC为系统时钟, Fosc=32MHz
  58.         CLKDIV = 0x02;                           //Fosc 2分频得到Fcpu,Fcpu=16MHz
  59.         
  60. /***********************************设置IO口模式***************************************/
  61.         
  62.         P0M0 = 0xCC;                                 //P32设置为带上拉开漏输出
  63.         P1M0 = 0xFC;                             //P34设置为推挽输出
  64.         
  65.             
  66.         while(1)
  67.         {
  68.                           i+=10;
  69.                         if(i==1020)
  70.                         i=0;
  71.         
  72.                     write_5615(i);
  73.                         delay1ms(1);
  74.         }
  75. }

效果图:
11.jpg 13.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部