历史上的今天
今天是: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
}
}
史海拾趣
|
我要测试6.8欧姆的电感,应该用什么样的电路转换,才送到单片机里? 6.8欧姆的电感就是线圈(电感)用万用表的欧姆档量的值 [ 本帖最后由 cscl 于 2009-11-17 16:10 编辑 ]… 查看全部问答> |
|
叠拓(原迪易通)信息技术有限公司 (Tieto),成立于1968年,是一家北欧的从事软件解决方案的全外资集团公司,分别在赫尔辛基和斯德哥尔摩证券交易所挂牌。是综合实力北欧地区第一,欧洲前三的IT业务供应商。 请将简历发送到 xiaoli.yang@tieto.co ...… 查看全部问答> |
|
汽车收音机应用环境的特殊性对电路性能具有更高的要求,而射频电路的设计是实现高性能的关键。本文介绍了TDA753的射频电路设计方法,作者根据实际设计经验提出了提高射频电路EMC特性和噪声特性的设计方法和措施,并指出了射频电路性能测试的注意要 ...… 查看全部问答> |
|
书上说世界上信号都是模拟信号,我很奇怪,要连续的信号才是模拟信号啊,我总感觉时间不是连续的,我在想是不是任何一个信号都是由很多个正弦波组成的, 如果我对一个人发出的声音进行处理,比如说把声音放大了,那么到底放大的是什么? 网上说声 ...… 查看全部问答> |
|
我用的evc里带的那个wince模拟器,我想得到wince模拟器的ip。用了下面的程序,只显示了name但不能显示ip怎么回事啊。 void CCxView::OnDraw(CDC* pDC) { CCxDoc* pDoc = GetDocument(); &nbs ...… 查看全部问答> |
|
现做两单片机之间的串行通信仿真实验,当我用共阴极LED时,其显示发生错误,但是当我换成共阳极LED时,其显示正确。用共阴极或共阳极时,其显示段码也换成相应的显示段码。段码应该没有错,因为我用它做LED静态或动态显示时是正确的。 代码如下: ...… 查看全部问答> |
|
在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 ...… 查看全部问答> |




