历史上的今天
今天是:2025年01月07日(星期二)
2020年01月07日 | PIC单片机SPI通信的设计
2020-01-07 来源:eefocus
#include
#define uchar unsigned char
#define uint unsigned int
#define cs RC2
#define dout RC4
#define nop() asm(“nop”)
__CONFIG(0x3B31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar data_temp;
void delay(uint x);
void init();
void didi(uchar num);
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6);
void comm(uchar data);
uchar read(uchar add);
void write(uchar add,uchar wdata);
void write_enable();
void main()
{
uchar a1,a2,a3,a4,a5,a6,i;
init();
//write_enable();
//for(i=6;i》0;i--)
//{
//write_enable();
//write(i,i);
//}
a1=read(1);
a2=read(2);
a3=read(3);
a4=read(4);
a5=read(5);
a6=read(6);
while(1)
{
disp(a1,a2,a3,a4,a5,a6);
}
}
void delay(uint x)
{
uint a,b;
for(a=x;a》0;a--)
for(b=110;b》0;b--);
}
void init()
{
TRISD=0;
TRISA=0;
TRISC=0x10;//00010000
TRISE0=0;
SSPSTAT=0x80;
SSPCON=0x32;
cs=0;
}
void write_enable()
{
cs=1;
nop();
comm(0x02);
comm(0x60);
cs=0;nop();nop();
}
void write(uchar add,uchar wdata)
{
cs=1;
nop();
comm(0x02);
comm(add|0x80);
comm(wdata);
cs=0;
nop();nop();
cs=1;nop();nop();
while(!dout);
cs=0;nop();nop();
}
uchar read(uchar add)
{
uchar rtemp;
cs=1;
nop();
comm(0x03);
comm(add);
comm(0);
cs=0;
rtemp=data_temp;
return (rtemp);
}
void comm(uchar data)
{
SSPBUF=data;
while(!SSPIF);
SSPIF=0;
data_temp=SSPBUF;
}
void didi(uchar num)
{
uchar di_num;
for(di_num=num;di_num》0;di_num--)
{
RE0=1;
delay(50);
RE0=0;
delay(20);
}
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6)
{
PORTD=table[num1];//显示第一个数码管
PORTA=0x20;//0010 0000
delay(2);
PORTD=table[num2];//显示第二个数码管
PORTA=0x10;//0001 0000
delay(2);
PORTD=table[num3];//显示第三个数码管
PORTA=0x08;//0000 1000
delay(2);
PORTD=table[num4];//显示第四个数码管
PORTA=0x04;//0000 0100
delay(2);
PORTD=table[num5];//显示第五个数码管
PORTA=0x02;//0000 0010
delay(2);
PORTD=table[num6];//显示第六个数码管
PORTA=0x01;//0000 0001
delay(2);
}
史海拾趣
|
用VS生成的一个应用程序,界面上显示一些字符和变量值等,用的语句是DrawText() 有一点不明白的是同样一个应用程序,在个别的NK设置里边显示会出错,界面中的字符全都显示不出来,菜单栏上的“文件”“帮助”都看得到。 希望了解的人能够给予解 ...… 查看全部问答> |
|
有好几个问题想请教一下: 1.系统采用Wince6 R2的,之前系统分辨率是240*320的,客户感觉这个屏幕有颗粒感就换成了320*480,但是微软的输入法小键盘现在还是显示240*320的大小,怎么样能让他适应320*480的屏幕呢? 2.有没有wince6上面 ...… 查看全部问答> |
|
用开发板的一个串口驱动GPRS模块 调试时用普通的三线通信(收发地)时没有问题,发送和接收都正确。 可是用硬件流控时,发送的数据就不能到达modem。请问可能是什么原因? 板子是arm9的开发板,linux内核。… 查看全部问答> |
|
1.基本要求 (1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于10mV; (2)输出电流:500mA; (3)输出电压值由数码管显示; (4)由“+”、“-”两键分别控制输出电压步进增减; (5)为实现上述几部件工作,自制一稳压 ...… 查看全部问答> |
|
常用的几种照明方式,根据灯具光通量的空间分布状况及灯具的安装方式,室内照明方式可分为五种: 1、直接照明 光线通过灯具射出,其中90%-100%的光通量到达假定的工作面上,这种照明方式为直接照明。这种照明方式具有强烈的明暗对比 ...… 查看全部问答> |
|
德州仪器 (TI) WEBENCH 团队经理Jeff Perry为您介绍 WEBENCH BOM 管理以及如何更改 WEBENCH 设计中的组件。WEBENCH是一种端对端设计解决方案,提供在线选择、仿真和原型设计功能。它包括动态设计优化,允许您针对小尺寸、低成本或高效率来优化设计 ...… 查看全部问答> |
|
学模拟+工业远距离通信使用的RS-232至RS-485转换器 本帖最后由 dontium 于 2015-1-23 11:43 编辑 工业远距离通信使用的RS-232至RS-485转换器作者:ThomasKugelstadt,德州仪器 TI链接:deyisupport./blog/b/analogwire/archive/2013/11/22/rs-232-rs-485.aspx 这篇文章很好的解释了RS-232与RS-485 ...… 查看全部问答> |





