准备用C51做个学生管理系统(2)

能够控制矩阵键盘以后,我就直接改代码控制8X8的键盘,用P1和P3口

  1 void keyscan()
  2 {
  3     uchar tmp;
  4     P1 = 0xff;
  5     P3 = 0x00;
  6     delay(5);
  7     tmp = P1^0xff;
  8
  9     //blink();
 10     //delay(500);
 11
 12     switch(tmp){
 13         case 1:
 14             now_num = 0;
 15             break;
 16         case 2:
 17             now_num = 1;
 18             break;
 19         case 4:
 20             now_num = 2;
 21             break;
 22         case 8:
 23             now_num = 3;
 24             break;
 25         case 16:
 26             now_num = 4;
 27             break;
 28         case 32:
 29             now_num = 5;
 30             break;
 31         case 64:
 32             now_num = 6;
 33             break;
 34         case 128:
 35             now_num = 7;
 36             break;
 37         default:
 38             now_num = 44;
 39     }
 40
 41     P1 = 0x00;
 42     P3 = 0xff;
 43     delay(5);
 44     tmp = P3^0xff;
 45     switch(tmp){
 46         case 1:
 47             now_num += 56;
 48             break;
 49         case 2:
 50             now_num += 48;
 51             break;
 52         case 4:
 53             now_num += 40;
 54             break;
 55         case 8:
 56             now_num += 32;
 57             break;
 58         case 16:
 59             now_num += 24;
 60             break;
 61         case 32:
 62             now_num += 16;
 63             break;
 64         case 64:
 65             now_num += 8;
 66             break;
 67         case 128:
 68             now_num += 0;
 69             break;
 70     }
 71 }
 72
 73 void show()
 74 {
 75     if(pre_num != now_num)
 76     {
 77         display_seg(now_num);
 78         pre_num = now_num;
 79     }
 80     display_seg(now_num);
 81     //delay(100);
 82 }
 83
 84 //主函数
 85 void main()
 86 {
 87     int i = 0;
 88     int j = 0;
 89
 90     P0 = 0xff;
 91     P2 = 0;
 92     init();
 93     TR1 = 1;
 94
 95     cnt = 00;
 96     while(1)
 97     {
 98         P1 = 0x00;
 99         P3 = 0xff;
100
101         if(P3 != 0xff)keyscan();
102         show();
103     }
104 }

差不多就开始做LCD1062显示字符串的功能了。首先画protues电路图

然后在工程里面添加一个LCD1062.c的文件,代码如下:

 1 /***************   LCD1062.c   ******************/
 2 #include "common.h"
 3
 4 sbit RS = P2^0;
 5 sbit RW = P2^1;
 6 sbit EN = P2^2;
 7
 8 void Delayms(uint ms)
 9 {
10      uchar i;
11     while(ms--)
12     {
13          for(i=0;i<120;i++);
14     }
15 }
16
17 uchar Busy_Check()
18 {
19      uchar LCD_Status;
20     RS = 0;
21     RW = 1;
22     EN = 1;
23     Delayms(1);
24        LCD_Status = P0;
25     EN = 0;
26     return LCD_Status;
27 }
28
29 void Write_LCD_Command(uchar cmd)
30 {
31      while((Busy_Check()&0x80)==0x80);
32     RS = 0;
33     RW = 0;
34     EN = 0;
35     P0 = cmd;
36     EN = 1;
37     Delayms(1);
38     EN = 0;
39 }
40
41 void Write_LCD_Data(uchar dat)
42 {
43      while((Busy_Check()&0x80)==0x80);
44     RS = 1;
45     RW = 0;
46     EN = 0;
47     P0 = dat;
48     EN = 1;
49     Delayms(1);
50     EN = 0;
51 }
52
53 void Initialize_LCD()
54 {
55      Write_LCD_Command(0x38);
56     Delayms(1);
57     Write_LCD_Command(0x01);
58     Delayms(1);
59     Write_LCD_Command(0x06);
60     Delayms(1);
61     Write_LCD_Command(0x0c);
62     Delayms(1);
63 }
64
65 void ShowString(uchar x,uchar y,uchar *str)
66 {
67      uchar i = 0;
68     if(y == 0)
69         Write_LCD_Command(0x80 | x);
70     if(y == 1)
71         Write_LCD_Command(0xc0 | x);
72     for(i=0;i<16;i++)
73     {
74          Write_LCD_Data(str[i]);
75     }
76 }

代码的意思我也没细看,是直接从单片机100个例子里面摘抄的,要看明白可能还得了解LCD1062的一些指令,总之调用函数

ShowString(uchar x,uchar y,uchar *str) 大概的意思:第一个参数是***(过些日子再看看)第二个参数是行号,第三个参数是显示的字符串,基本上就能够调用函数让LCD屏显示数据了。

准备用C51做个学生管理系统(2)

时间: 2024-10-05 21:08:39

准备用C51做个学生管理系统(2)的相关文章

准备用C51做个学生管理系统(1)

为了做这个看起来很容易,做起来很麻烦的基于51的学生管理系统,我得准备很多的知识,首先是51单片机的一些IO.定时器差不多就可以了,硬件方面还要有数码管.LCD1602.矩阵键盘等知识,至于代码就需要数据结构双向链表的知识就差不多了,用到的软件无非也就是protues.keil.protel这三剑客了. 1.为什么要用到数码管呢,因为很少做这些硬件的东西,用数码管主要是为了验证我的矩阵键盘功能有没有用罢了,数码管的abcdefg对应那几根“杠杠”的亮否可以直接显示亮的数据,因为矩阵键盘是8X8的

用链表做一个学生管理系统

//Student.cpp #include<iostream>   using namespace std;   struct Stu {     char no[10];     char name[16];     int math;     int chi;     double ave; };   class Student { public:     Stu st;     Student * next; public:     Student(){}     Student(St

精美学生管理系统

半个学期即将完美结束,精美的学生管理系统也终于亮相啦,哈哈! 话不多说,切入正题. 首先,要了解完成学生管理系统的步骤: 总共有几个模块,我就逐一讲解: 一:完成登录页面模块 判断“登录”是否成功的代码: 1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 string str = DBHelper.str; 4 SqlConnection con = new SqlConnection(str); 5 string s

【IOS开发笔记02】学生管理系统

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一大坨出去了,这个时候立刻想到了切入IOS开发!!! 事实上,前端开发做到一定时间,要进步很难了,最近几个月扑到业务上便感觉突破不了目前的瓶颈,自身的前端瓶颈主要在两方面:技术深度.技术广度 其实不论深度或者广度来说都不是简单前端能说清楚的事情,不能说了解了angularJS.react等框架技术深度

【乱写代码坑人系列】ZJUT数据库大型实验 - 学生管理系统(二):项目规划

学生管理系统(二)项目规划 学生管理系统(一)建立项目 好吧这部分应该放在第一的,但是我忘了(逃.其实也差不多啦,反正上一篇也没说什么啊哈哈. 先说项目要求.项目要求的是建立一个管理系统,用来对本地的数据库进行增删查改,把.mdf 文件直接拿来改会被老师打的,所以还是要有一个图形界面. 图形界面要有几个页面:登录,主窗口,学院.老师.学生.课程.成绩的管理,要能看到详细信息,能够批量删除什么的.为了装逼可以考虑加入与Office的连接,不过这个是后话,做好基础功能再玩. 数据库要这么几个表:学院

Java写一个简单学生管理系统

其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 今天我就先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象就写出来: package bean; public class Student { String name; String studentId;

05_学生管理系统,xml读写,布局的综合应用

?? 最终要做的项目目标: 2.编写Android清单文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima27.sutdentmanager" android:ve

结对实验——学生管理系统

一.题目简介 1 程序设计说明 1.1 程序实现的大体思路: 将学生信息存放在一个记事本中,让该记事本模拟数据库.通过用户输入的命令,对该记事本内的信息进行操作. 1.2 程序主界面 主页面分为4个,从控制台进行操作(主界面) 用户登陆 用户注册 信息查询 退出系统 1.2.1 主界面功能介绍 提示用户输入功能对应的序号,来执行相应的功能. 根据用户输入的数字,进行相应的操作,如:用户输入1后,进入用户登陆界面.当用户输入不符合要求时,提示用户重新输入. 1.3 用户登陆 1.3.1 用户登陆功

学生管理系统(list)

学生管理系统:学习了一点文件指针的操作和链表操作,以前总想搞下子,刚好碰到同学要做这个,自己瞎搞了一通. 实现功能:数据添加,查找,删除,插入,修改只是在查找加几句就没写. #include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> #include <ctime> #include <cmath> #include <string&