c语言8255
inline int IsSpace(int c)
{
if(c == 0x20 || c == 0x09 || c== 0x0D)
{
return 1;
}
return 0;
}
template<class T>
T RemovePreAndLastSpace(const T& str)
{
int length = str.size();
int i = 0,j = length -1;
while(i < length && IsSpace(str[i])){i++;}
while(j >= 0 && IsSpace(str[j])){j--;}
cout << i << " :" << j<< endl;
if(j<i) return T();
return str.substr(i,j-i+1);
}
⑵ 单片机与8255A的连接以及C语言编程
呵呵,同是8255A,各种作业花样不同。刚好有一个,好像一样的。
http://hi..com/47okey/blog/item/005502fd374e9eeafc037f85.html?timeStamp=1323051570109
⑶ 怎样编写8255A的初始化 (用C语言)请指教!
#include "reg51.h"
#include "absacc.h"
#define COM XBYTE[0x7FFF] //8255A 控制口地址
#define PA XBYTE[0x7CFF] //8255A A口地址
#define PB XBYTE[0x7DFF] //8255A B口地址
上面就是初始化 后面比如 你要在pa口 输出0x80那就
PA=0x80;
那个地址的算法
假设P0口连接D7~D0,P2.1、P2.0连接A1A0,P2.7连接
,那地址就应该是:
A口:0111110011111111 即7CFF
B口:0111110111111111 即7DFF
C口:0111111011111111 即7EFF
控制寄存器:0111111111111111 即7FFF
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
这是对应的地址
⑷ 如何用C语言写8255a
#include <at89x51.h>
上面是头文件自己研究一下里面的数据类型和函数吧
自己是C51,不太了这个
⑸ 8255的C语言编程
RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;
当A0=1.A1=1时,控制寄存器被选择.
⑹ c语言段8255数码管用法
PA口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PA口读入8位开关量送PB口显示。拨动K1~ K8
⑺ 关于8255A的C语言编程的问题
当然不行了,控制寄存器是同一个嘛
你只能在工作模式切换前进行置位和复位操作
⑻ 8255芯片如何用(C语言)
一个IO扩展的芯片,其实你没必要用82C55,直接用单片机代替进行扩展也是一样的,而且成本绝对比8255低!
⑼ 求8255的C语言编程举例(希望有图有程序)
/*本实验通过P0口的分时复用,用8255扩展IO口,用74hc53锁存低8位地址
8255的wr和rd直接与单片机的wr、rd连接,当做外部存储器来使用,8255
的PA口上接LCD1602的数据端口,本程序的功能是在LCD上显示字符串和自
定义的图形,已成功实现(板子是自己焊的) */
/*********************包含头文件*********************************/
#include <REGX51.H>
#include<absacc.h>
#define CLEARSCREEN LCD_write_command(0x01)
#define uint unsigned int
#define uchar unsigned char
/**************定义接口************************/
#define LCDIO P0
#define PA XBYTE[0xFF00]
#define PB XBYTE[0xFF01]
#define PC XBYTE[0xFF02]
#define COM XBYTE[0xFF03]
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_EN=P1^2;
unsigned char table1[]={ 0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00}; //心图案
/**************定义函数************************/
void LCD_write_command(unsigned char command); //写入指令函数
void LCD_write_dat(unsigned char dat); //写入数据函数
void LCD_set_xy( unsigned char x, unsigned char y ); //设置显示位置函数
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat); //显示一个字符函数
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s); //显示字符串函数
void LCD_init(void); //初始化函数
void delay_nms(unsigned int n); //延时函数
void delay();
void init_8255();
void write_8255PA(uchar ch);
/**************8255初始化******************************/
void init_8255()
{
COM=0x80;
}
/*************往PA口写数据*******************************/
void write_8255PA(uchar ch)
{
PA=ch;
}
/************初始化函数****************/
void LCD_init(void)
{
CLEARSCREEN; //clear screen
LCD_write_command(0x38); //set 8 bit data transmission mode
LCD_write_command(0x0d); //open display (enable lcd display)
LCD_write_command(0x80); //set lcd first display address
CLEARSCREEN; //clear screen
}
/**************写指令函数********************************/
void LCD_write_command(unsigned char command)
{
write_8255PA(command);
delay_nms(100);
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=1;
delay_nms(10);
}
/***************************************************/
/****************写数据函数************************/
void LCD_write_dat(unsigned char dat)
{
write_8255PA(dat);
delay_nms(100);
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
delay_nms(1);
LCD1602_EN=1;
}
/****************************************************/
/***************设置显示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1)
address = 0x80 + x;
else
address =0xc0+ x;
LCD_write_command(address);
}
/***************************************************/
/****************显示一个字符**********************/
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_write_dat(dat);
}
/**********************************************/
/***************显示字符串函数***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_dat(*s);
s ++;
}
}
/***********************************************/
/********** 延时**********************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<10;j++);
}
/**************************************/
void delay()
{ int i;
for(i=0;i<50;i++)
delay_nms(100);}
/***********主函数**************/
void main(void)
{
unsigned char i,j,k,tmp;
init_8255();
LCD_init();
delay_nms(100);
tmp=0x40;//设置CGRAM地址的格式字
k=0;
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址
delay_nms(2);
LCD_write_dat(table1[k]); // 向CGRAM写入自定义字符表的数据
k++;
delay_nms(2);
}
tmp=tmp+8;
}
LCD_dsp_string(1,1,"LCD TEST ");//在第一行第一列显示"LCD TEST"
LCD_dsp_string(1,2,"SUCCESSFUL ");//在第二行第一列显示"SUCCESSFUL"
for (i=0;i<4;i++)
{
LCD_dsp_char( 12+i,1,i);//在第一行第12列位置显示心图案的上半部
delay_nms(1);
}
for (i=4;i<8;i++)
{
LCD_dsp_char(12+i-4,2,i);//在第二行第12列位置显示心图案的下半部
delay_nms(1);
}
do
{
LCD_write_command(0x08);
delay();
LCD_write_command(0x0c);
delay();
}while (1);
}
⑽ 8255 c语言
如果是一个IO口复用的话,不用锁存器是不行的。
IO的值会更新为最新的设置的,没办法保留上一次的。