8279控制键盘与显示实验 - 图文(2)

2020-08-09 18:56

中国地质大学长城学院《单片机原理与应用》课程设计

OUTB0~OUTB3(B组显示信号):输出线。

这两组引线都是显示数据输出线,与多位数字显示的扫描线SL0~SL3同步,两组可以独立使用,也可以合并使用。

BD(显示消隐):输出线。低电平有效。该信号在数字切换显示或使用消隐命令时,将显示消隐。 3.2电路图

4. 流程图及源程序

4.1流程图

4

中国地质大学长城学院《单片机原理与应用》课程设计

N 有按键按下 初始化8279 初始化单片机 开始 Y 读按键 显示数据加1 4.2源程序

#include #include #include

判定键值 显示数据减1 显示012345 显示543210 //--------------8279端口定义-------------- #define com XBYTE[0X0001]//命令字地址 #define dat XBYTE[0X0000]//数据口地址 unsigned long data temp_r ; //频率值预存 sfr AUXR = 0x8e;

bit int_flag=0;/*中断标志位*/ sbit clflag=ACC^7;//ma步进值下标

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管段码 unsigned char i,temp;//temp用于存放临时命令状态字 unsigned char key_value;//按键值

//-----------------------主要函数-------------------------- unsigned char keyin(void);//按键函数 void setup_8279(void);//8279初始化

5

中国地质大学长城学院《单片机原理与应用》课程设计

void display_led(void); //数码管显示 void delay(unsigned long i);//延时

void serial_init(void);//串口初始化函数,用于调试 void mode(void);

unsigned char a,b,k,num; void f1(void); void f2(void); void f3(void); void f4(void); void f5(void); void f6(void); void f7(void); void f8(void);

//-------------------------主函数-------------------------------- void main(void) {

AUXR = 0x02;/*STC单片机关内部RAM和开ALE*/

IE=0;

EA=0;

EX0=1; //开外部中断 IT0=0;

//-----------延时(必须加)------------- {

for(b=0;b<50;b++) {

for(k=0;k<50;k++);}

for(a=0;a<5;a++)

//f1~f8写您所需要的功能函数,通过按键触发

//------------------------------------ serial_init();//9600 8-N-1 setup_8279();

EA=1;//初始化 while(1)

mode(); //delay(1000);

delay(1000); { }

//------数码管显示---------------- void display_led(void) {

for(i=0;i<8;i++)

com=0x80+i; //写显示RAM,p301 dat=dispcode[num];//显示段码 delay(120);

{ }

6

中国地质大学长城学院《单片机原理与应用》课程设计

}

//-----8279初始化----------------- void setup_8279(void) { }

//-------------------步进按键or模式选择--------------- void mode(void) { }

//-----------按键读取------------------------------------------ unsigned char keyin(void) { }

void int_int0() interrupt 0 using 0

//外部中断函数

7

unsigned char value; com=0x40; value=dat;

//取键盘数据低位

return(value);

//发送读取指令

if(int_flag==1) //如果按键触发中断,int_flag=1 { }

EX0=0;

//在执行中断程序时,关中断暂停其他中断 //清除中断标志位

int_flag=0; //delay(2000); switch(key_value) { } EX0=1;

case 0x40:f1();break; case 0x41:f2();break; case 0x42:f3();break; case 0x43:f4();break; case 0x48:f5();break; case 0x49:f6();break; case 0x4a:f7();break; case 0x4b:f8();break; default:break;

//判断键值

com=0x00;//键盘,显示方式,8个位字符显示,左端输入;编码扫描键盘,-key锁存 com=0x21;//2分频

com=0xd1;//1101 0001b 清除所有显示 temp=com;//读状态字,p304 do{ACC=com;}

while(clflag==1);//清除起来比较慢,所以一条指令执行的时间不足以完成所有清除,故需等待

key_value=keyin();

value=value&0x7f;

中国地质大学长城学院《单片机原理与应用》课程设计

{

int_flag=1;

//EX0=0;

//key_value=keyin(); //SBUF=TCON; //while(TI==0);

//置中断标志位

//TI=0;

}void delay(unsigned long i) { }

void serial_init(void) //串口初始化函数bund:8-N-1 { }

void f1(void) {

num=num+1; if(num>9) num=0;

display_led( ); SBUF= key_value; }

void f2(void) {

num=num-1; if(num==255) num=9; display_led(); SBUF= key_value; }

void f3(void) {

for(i=0;i<8;i++) { }

SBUF= key_value;

}void f4(void) for(i=0;i<8;i++) {

com=0x80+i; //写显示RAM,p301 dat=dispcode[(7-i)];//显示段码

8

com=0x80+i; //写显示RAM,p301 dat=dispcode[i];//显示段码 delay(120); TMOD=0x20; TL1=0xfd;

TH1=0xfd; TR1=1; while(--i);


8279控制键盘与显示实验 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《你能证明它们吗》学案3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: