历史上的今天
返回首页

历史上的今天

今天是:2024年10月30日(星期三)

正在发生

2019年10月30日 | PIC单片机的一个简单的SPI小程序

2019-10-30 来源:51hei

这里介绍一个简单的PIC单片机SPI测试小程序,希望大家能够喜欢。

// DAC module connections

sbit Chip_Select at RC0_bit;

sbit Chip_Select_Direction at TRISC0_bit;

// End DAC module connections


unsigned int value;                     


void InitMain() {

  TRISA0_bit = 1;                        // Set RA0 pin as input

  TRISA1_bit = 1;                        // Set RA1 pin as input

  Chip_Select = 1;                       // Deselect DAC

  Chip_Select_Direction = 0;             // Set CS# pin as Output

  SPI1_Init();                           // Initialize SPI module

}


// DAC increments (0..4095) --> output voltage (0..Vref)

void DAC_Output(unsigned int valueDAC) {

  char temp;


  Chip_Select = 0;                       // Select DAC chip

  

  // Send High Byte                                         

  temp = (valueDAC >> 8) & 0x0F;         // Store valueDAC[11..8] to temp[3..0]

  temp |= 0x30;                          // Define DAC setting, see MCP4921 datasheet

  SPI1_Write(temp);                      // Send high byte via SPI

  

  // Send Low Byte

  temp = valueDAC;                       // Store valueDAC[7..0] to temp[7..0]

  SPI1_Write(temp);                      // Send low byte via SPI

  

  Chip_Select = 1;                       // Deselect DAC chip

}


void main() {

  ANSEL = 0;

  ANSELH = 0;

  InitMain();                            // Perform main initialization


  value = 2048;                          // When program starts, DAC gives

                                         //   the output in the mid-range

                                          

while (1) {                             // Endless loop


    if ((RA0_bit) && (value < 4095)) {   // If RA0 button is pressed

      value++;                           //   increment value

      }

    else {

      if ((RA1_bit) && (value > 0)) {    // If RA1 button is pressed

        value--;                         //   decrement value

        }

      }

    DAC_Output(value);                   // Send value to DAC chip

    Delay_ms(1);                         // Slow down key repeat pace

  }

}


 

推荐阅读

史海拾趣

EPC公司的发展小趣事

最后一家EPC公司深知创新是企业发展的核心动力。公司注重研发投入和人才培养,建立了专业的研发团队和完善的研发体系。公司不断跟踪行业发展趋势和技术动态,积极引进新技术、新工艺和新材料,推动产品升级和产业升级。同时,公司注重创新成果的转化和应用,将新技术、新工艺和新材料应用于实际项目中,提高了项目的竞争力和附加值。通过持续的创新和积累,公司逐渐在电子行业中形成了独特的技术优势和核心竞争力。

请注意,以上故事仅为框架性描述,并未包含具体的公司名称、项目细节和具体数字。您可以根据这些框架性描述进一步深入了解相关公司的发展情况,并结合实际案例进行具体分析和撰写。

Force Technologies Ltd公司的发展小趣事

背景:在电子行业竞争日益激烈的背景下,Force Technologies Ltd意识到通过并购整合可以迅速扩大规模、提升竞争力。

发展:公司精心挑选了几家在特定领域具有优势的企业作为并购目标,并成功完成了多起并购案。这些并购不仅为公司带来了先进的技术和人才资源,还极大地丰富了产品线和市场布局。通过并购整合,Force Technologies Ltd在多个细分领域均占据了领先地位。

Alpha (Taiwan)公司的发展小趣事

在电子产品市场竞争激烈的背景下,Alpha (Taiwan)公司始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到生产流程,再到产品出厂,每一个环节都进行严格把控。同时,公司还定期对员工进行品质意识培训,确保每一位员工都能充分认识到品质对于公司发展的重要性。正是凭借这种对品质的执着追求,Alpha (Taiwan)公司的电子产品在市场上赢得了良好的口碑,赢得了众多客户的信赖。

ATC [American Technical Ceramics]公司的发展小趣事

随着全球经济的日益一体化,国际合作成为许多公司拓展市场的重要途径。假设ATC在某次国际技术交流会上与一家欧洲知名电子企业达成了合作协议,双方共同开发了一款新型陶瓷电容器。这款电容器不仅性能卓越,而且成本相对较低,因此在全球市场上受到了广泛的欢迎。通过这次合作,ATC不仅提升了自身的技术实力,也进一步拓展了海外市场。

康龙(CONCRAFT)公司的发展小趣事

进入XXXX年代,康龙公司意识到技术创新是企业持续发展的关键。于是,公司投入大量资金引进先进的生产设备和技术人才,加强研发力量。经过几年的努力,康龙在精密模具设计和开发方面取得了重大突破,大大提高了生产效率和产品精度。同时,公司还注重产品质量的提升,通过严格的质量控制和检验流程,确保每一件产品都符合客户的高标准要求。

台湾第一电阻(Firstohm)公司的发展小趣事
电冰箱不制冷可能由多种原因引起,包括电源问题、温度设置不当、制冷系统故障等。首先,检查电源插头是否牢固插入插座,并确保插座有电。其次,检查温度设置是否正确,冷藏室温度一般应设置在2-4摄氏度,冷冻室温度应设置在-18摄氏度左右。如果以上均正常,可能是制冷系统出现故障,如压缩机故障、制冷剂泄漏等,需要请专业人员进行检查和维修。

问答坊 | AI 解惑

测试电感,电路转换问题

我要测试6.8欧姆的电感,应该用什么样的电路转换,才送到单片机里? 6.8欧姆的电感就是线圈(电感)用万用表的欧姆档量的值 [ 本帖最后由 cscl 于 2009-11-17 16:10 编辑 ]…

查看全部问答>

Tietto招聘:Senior RF Engineer

叠拓(原迪易通)信息技术有限公司 (Tieto),成立于1968年,是一家北欧的从事软件解决方案的全外资集团公司,分别在赫尔辛基和斯德哥尔摩证券交易所挂牌。是综合实力北欧地区第一,欧洲前三的IT业务供应商。 请将简历发送到 xiaoli.yang@tieto.co ...…

查看全部问答>

汽车收音机TDA7513射频电路应用指南

汽车收音机应用环境的特殊性对电路性能具有更高的要求,而射频电路的设计是实现高性能的关键。本文介绍了TDA753的射频电路设计方法,作者根据实际设计经验提出了提高射频电路EMC特性和噪声特性的设计方法和措施,并指出了射频电路性能测试的注意要 ...…

查看全部问答>

到底什么是模拟的世界?

书上说世界上信号都是模拟信号,我很奇怪,要连续的信号才是模拟信号啊,我总感觉时间不是连续的,我在想是不是任何一个信号都是由很多个正弦波组成的, 如果我对一个人发出的声音进行处理,比如说把声音放大了,那么到底放大的是什么? 网上说声 ...…

查看全部问答>

关于wince的ip

我用的evc里带的那个wince模拟器,我想得到wince模拟器的ip。用了下面的程序,只显示了name但不能显示ip怎么回事啊。 void CCxView::OnDraw(CDC* pDC) {         CCxDoc* pDoc = GetDocument();       &nbs ...…

查看全部问答>

单片机串行通信用共阴极LED怎么就不行?

现做两单片机之间的串行通信仿真实验,当我用共阴极LED时,其显示发生错误,但是当我换成共阳极LED时,其显示正确。用共阴极或共阳极时,其显示段码也换成相应的显示段码。段码应该没有错,因为我用它做LED静态或动态显示时是正确的。 代码如下: ...…

查看全部问答>

Platform Builder的问题

开发WinCE流接口驱动 源文件开头 #include #include 编译出现错误 找不到头文件 请问是怎么回事 …

查看全部问答>

求助

PCLD-780的引脚 A1~A20、B1~B20的含义是什么?连接仪器应怎样连。…

查看全部问答>

关于非总线复用的问题

在STM32的FSMC相关技术资料文档中,都提及到了非总线复用的问题,The IS61WV51216BLL memory is a nonmultiplexed, asynchronous, 16-bit memory.我现在选用的IS61WV20488BLL的SRAM,按照技术文档应该设置为非总线复用,但是设置为非总线复用 ...…

查看全部问答>

求助:湿度精确到小数点后一位,始终弄不出来,不知道是什么原因!

SHT21的驱动我用的是胡磊前辈的驱动。   计算温湿度程序,我基本上没做到什么改动: 如下:   // 命令--0xF3测量温度//命令---0xF5测量湿度 long ReadSht21(char test_temp_or_humi){ unsigned long temp; unsigned long ...…

查看全部问答>