历史上的今天
今天是:2025年01月12日(星期日)
2020年01月12日 | 如何使用PIC单片机扩展8255A并口
2020-01-12 来源:elecfans
#include
__CONFIG(0x3B31);
#defineA0RB0
#defineA1RB1
#defineCSRB2
#defineLERD0
#defineWRRD6
#defineRDRD7

constunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//0-F-全灭-共阳极数码管
unsignedchartmp[]={0,0,0,0,0,0,0,0};
voiddelay1ms(unsignedintx)
{
unsignedchari;
for(;x》0;x--)
for(i=0;i《165;i++);
}
voidinit()
{
TRISB=0x00;
PORTB=0x00;
TRISD=0x00;
PORTD=0x00;
LE=0;WR=1;RD=1;//关373,禁止8255读写
}
voidinit_8255()
{
LE=1;A1=1;A0=1;CS=0;//开373,发送写控制器命令,CS片选允许
LE=0;//锁住373,保持A1.A0,CS
PORTB=0x80;//发送控制命令
WR=0;//打开写入8255信号
NOP();NOP();
}
voidwrite_data(unsignedcharcomm,unsignedchardata)//comm:0=A,1=B,2=C
{
if(comm==0)
{
WR=1;
LE=1;A1=0;A0=0;CS=0;
LE=0;
PORTB=data;
WR=0;
NOP();NOP();
}
if(comm==1)
{
WR=1;
LE=1;A1=0;A0=1;CS=0;
LE=0;
PORTB=data;
WR=0;
NOP();NOP();
}
if(comm==2)
{
WR=1;
LE=1;A1=1;A0=0;CS=0;
LE=0;
PORTB=data;
WR=0;
NOP();NOP();
}
}
voiddisplay()
{
unsignedchari,LED;
LED=0x01;
for(i=0;i《8;i++)
{
write_data(0,tab[tmp[i]]);
write_data(1,LED);
LED《《=1;
delay1ms(2);
write_data(1,0x00);
}
}
voidmain()
{
unsignedchari,j,RR[24];
init();
init_8255();
while(1)
{
for(i=0;i《24;i++)//全部赋值为16,即显示为空,此处可精减,但演示用无所谓了
RR[i]=16;
RR[8]=2;RR[9]=0;RR[10]=0;RR[11]=9;RR[12]=0;RR[13]=7;RR[14]=1;RR[15]=2;
for(j=0;j《16;j++)
{
for(i=0;i《8;i++)//将RR[16]开始内部赋值tmp[]
tmp[i]=RR[16+i];
for(i=0;i《23;i++)
display();
for(i=23;i》0;i--)//此处将RR[]右移一位数组
RR[i+1]=RR[i];
}
}
}
上一篇:基于pic单片机测温程序分享
史海拾趣
|
小弟最近在学习U-boot移植. 由于针对的是lpc2478的CPU,U-boot里面又没有支持lpc系列的.. 所以工作一直没进展.. 请移过U-boot的大侠指点一下... 在此拜师...… 查看全部问答> |
|
用C#做工业控制,控制IO卡,行的通吗? 公司大多都用研华的io卡,可是他们没有C#的接口函数,只有VB和VC的,可不可以用C#调用他们的接口函数呢? 又没有朋友做过这样的例子啊!还望赐教!… 查看全部问答> |
|
最近画了块6层的ARM板,板层结构式T\\\\G\\\\S\\\\S\\\\P\\\\B,板子回来后可以烧录程序,但将程序从NORFLASH拷贝到SDRAM后就出现问题了,程序执行不了。搞了几天了,该排除的都排除了,不知道问题出在哪里。我是第一次画6层板板,没啥经验,请各位 ...… 查看全部问答> |
|
将2700系列的SCPI应用转换为3700系列的系统开关/万用表系统脚本应用 多年来,仪器制造商已经在用“可编程仪器标准指令”或SCPI控制测量仪器系统的可编程测试和测量设备。SCPI为控制测试和测量仪器提供了一种统一、一致的语言。不论制造商还是仪器类型,都能使用相同的指令和响应控制SCPI设备中相应的仪器功能。 &n ...… 查看全部问答> |
|
有一块am335x系列自定义的开发板,HDMI部分的设计参考的是beaglebone的TDA19988、现在要用到HDMI显示,我的内核版本是SDK里的linux-3.2.0,现在不知道HDMI这部分的内容在哪里,网上有价值的资料搜到的也不是很多,求教论坛的各位大神… 查看全部问答> |
|
今天弄了一天的GPIO复用功能。。。书上说要配置GPIOPCTL寄存器。我翻了好久发现只要库函数中的void GPIOPinConfigure(uint32_t ui32PinConfig) 这个函数涉及到了这个寄存器。。。。。。可是,可是,可是!!!!!!这个函数的参数该写什么啊?? ...… 查看全部问答> |




