中易网

源程序的输入和扫描

答案:2  悬赏:0  
解决时间 2021-02-02 09:28
编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);并编制一个扫描子程序,该子程序中每次调用能依次从存放源程序的输入缓冲区中读出一个有效字符。

不要太复杂,要自己编的
这个很简单的, QQ传源码,有效给分 314030780
最佳答案
这。。。连奖金都没有!给你一个键盘扫描用液晶显示键值的程序



#include
#include

#define uchar unsigned char
#define uint unsigned int

sbit BEEP = P3^7; //蜂鸣器驱动线
uchar dis_buf; //显示缓存
uchar temp;
uchar key; //键顺序吗
char code SST516[3] _at_ 0x003b;

void beep(); //蜂鸣器
void delay0(uchar x); //x*0.14MS

sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;

uchar code cdis1[ ] = ;
uchar code cdis2[ ] = ;

#define delayNOP(); ;







void delay(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)

}
}








bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}








void lcd_wcmd(uchar cmd)

{
while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}








void lcd_wdat(uchar dat)
{
while(lcd_busy());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}







void lcd_init()
{
delay(15);
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(5);

lcd_wcmd(0x0c); //显示开,关光标
delay(5);
lcd_wcmd(0x06); //移动光标
delay(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(5);
}







void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
}







void keyscan(void)
{
P1=0x0F; //低四位输入
delay(1);
temp=P1; //读P1口
temp=temp&0x0F;
temp=~(temp|0xF0);
if(temp==1)
key=0;
else if(temp==2)
key=1;
else if(temp==4)
key=2;
else if(temp==8)
key=3;
else
key=16;

P1=0xF0; //高四位输入
delay(1);
temp=P1; //读P1口
temp=temp&0xF0;
temp=~((temp>>4)|0xF0);
if(temp==1)
key=key+0;
else if(temp==2)
key=key+4;
else if(temp==4)
key=key+8;
else if(temp==8)
key=key+12;
else
key=16;

dis_buf = key; //键值入显示缓存
dis_buf = dis_buf & 0x0f;

if(dis_buf>9) //转换为ASCII码
dis_buf = dis_buf+0x37;
else
dis_buf = dis_buf+0x30;
}







void keydown(void)
{
P1=0xF0;
if(P1!=0xF0)
{
keyscan();
beep();
}
}







void beep()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay0(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay(250); //延时
}






void delay0(uchar x)
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}





main()
{
uchar m;
P0=0xFF; //置P0口
P2=0xFF; //置P2口
delay(10); //延时
lcd_init(); //初始化LCD

lcd_pos(0); //设置显示位置为第一行的第1个字符
m = 0;
while(cdis1[m] != '\0')
{ //显示字符
lcd_wdat(cdis1[m]);
m++;
}

lcd_pos(0x40); //设置显示位置为第二行第1个字符
m = 0;
while(cdis2[m] != '\0')
{
lcd_wdat(cdis2[m]); //显示字符
m++;
}
dis_buf = 0x2d; //显示字符"-"

while(1)
{
keydown();
lcd_pos(0x4c);
lcd_wdat(dis_buf); //第一位数显示
}
}

全部回答
去多特网下载里面有这个程序!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果说喜欢说脏话的孩子(未成年人)就不是人吗
任鹿家庄村村民委员会地址有知道的么?有点事
电脑按了重启键出现全是英文,一点反应都没有
燕子每年秋天都从什么方飞往什么方过冬?
小霸王游戏机珍藏84合1怎么玩啊,打开后老是自
杭州哪里钓路亚方便,最好是野钓,别跟我说钱
数学建模各种算法MATLAB的编程代码
请问K571从北京站到衡水有几站地
贵州金鸟木业有限公司这个地址在什么地方,我
用屏障造句
浙江大酒店-英式台球室在什么地方啊,我要过
求一部电影 很久以前看到的 好像中文译名是叫
三菱4G64发动机
瓜果村地址在哪,我要去那里办事
抚顺北站到沈阳世博园公交车
推荐资讯
李家十里河村我想知道这个在什么地方
南昌哈文艺术学校到舍里甲高速路口多少路
灵官坳在什么地方啊,我要过去处理事情
Proe cad 3Dmax 区别,对于设计那块工作前景广
听说顶尖级的黑客被抓了是不是被国家用来利用
数据库技术的研究范围主要包括几个领域?分别
3G申请变更4G时所选流量套餐是否会与原有流量
老祖传石磨坊我想知道这个在什么地方
你好,问一下我家灯是LED的突然不亮了一开始
乘地铁从北京动物园到十八里店南站
今年报考新疆财经大学硕士研究生有多少人,实
众乐超市怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?