随笔分类 - 技术
C语言,算法等
摘要:学校的课程设计,总结一下。注意1.高低电平的改变不适合在主函数的while循环中,因为要有数码管动态显示的延时和其它逻辑处理,时间太长会不能及时改变高低电平值。2.中断的执行时间一定是不能超过定时时间的,不然就会中断没处理完又来了下一个中断,造成频率出错。3.假设100us中断一次,中断程序执行时间...
阅读全文
摘要:引脚部分查看中文的12864介绍,下面这些可以在ST7920的英文数据手册里查到。Function Description 部分介绍工作方式、存储器、操作方法。Instructions 部分介绍指令。按照并行或串行的 Timing Diagram 来操作,注意数据何时有效。查看初始化的流程图,按照F...
阅读全文
摘要:原理很简单,就是将支付宝作为中介,先将钱从本地银行卡转入(充值)到支付宝,再将钱从支付宝转出(提现)到要收款的异地银行卡.这种方法适用于多数转账,比如,高校交学费,给孩子汇生活费.前提1.要注册支付宝账号,注册时填写自己的真实信息.2.有一张自己名下的本地银行卡,异地银行卡可以是自己名下的,如果不是请看附2.步骤1.一张自己的本地银行卡,去银行将钱存入该卡.2.去支付宝网站开通此卡的快捷支付,并将卡中的钱转入支付宝,即快捷支付方式的充值.3.将支付宝中的钱转出到一张自己的异地银行卡,即普通方式的提现.附1.开通快捷支付要核实开户手机号,如忘记或已变更要带身份证去银行更改.2.如要收款的卡不是自
阅读全文
摘要:忙了一天多终于透彻了,自己写的不好使,用别人的逐步分析改成自己的,我写得非常简洁易懂。我总结3点需要注意的地方1.关闭非IIC通信器件,比如我的开发板SDA和SCL也连接了DS1302,造成干扰会没有结果。2.IIC通信的应答,发送端在SCL为0时将SDA置1,等待接收端拉低SDA;接收端在拉低SDA持续一个周期后,应将SDA置1释放总线。主机作为发送端等待应答SDA=1;SCL=1;while(SDA);SCL=0;主机作为接收端,进行应答或不应答SDA=0; //不应答则为1 SCL=1;SCL=0;SDA=1;3.24C02在写入周期完成后还有有内部写入时间Twr,所以可以查...
阅读全文
摘要:参考DS1302数据手册,尽管数据手册是英文,但是很有帮助,再结合网上众多的代码写出了下面这个例子,除了涓流充电(trickle charger)功能没使用外,内部的RAM和寄存器功能都使用到了,包括多字节方式(burst mode)。自认为我写的比网上大多数程序清晰,当然已经硬件测试过了。 1 #include 2 3 /*DS1302部分*/ 4 5 //全部为写入地址,读取地址需要+1 6 #define YEAR 0x8c 7 #define MON 0x88 8 #define DATE 0x86 9 #define DAY 0x8a 10 #define H...
阅读全文
摘要:郭天祥键盘部分的代码真是冗长,难道是为了易懂,但也不是越长越好懂啊,看看我写的。扫描法#include #include sbit we=P2^7;sbit du=P2^6;unsigned char code table[] = {0x3f , 0x06 , 0x5b , 0x4f,0x66 , ...
阅读全文
摘要:看郭天祥的单片机书中数码管部分,使用 P0=0xff 的方法可以消除段选数据对位选的干扰,另外使用我下面的方法可以达到同样的效果。但即便这样数码管仍有影子,这种状况是,当前数码管有下一个数码管的影子,或者当前数码管有前一个数码管的影子。分析一下产生原因,当我们点亮一个数码管后,总要先将段选或者位选改为下一个数码管的值,而不能同时改变。当先改变段选时,那么当前数码管就会有短暂的时间显示下一个数码管的数字。当先改变位选时,下一个数码管就会有短暂的时间显示当前数码管的数字。那么解决方法是,先将段选置0送入锁存器,改变位选的值为下一个数码管,最后再改变段选值。同理另一种方法是,先将位选赋值 0xff
阅读全文
摘要:原理及介绍来自维基百科http://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80个人用的小程序/*#lba=(#c*H+#h)*S+#s-1#c=#lba/(S*H)#h=(#lba/S)%H#s=(#lba%S)+1#c、#h、#s分别是磁柱、磁头、扇区的编号(起始值0、0、1)#lba是逻辑区块编号(起始值0)H=heads per cylinder,每个磁柱的磁头数S=sectors per track,每磁道的扇区数*/#include int main(void){ in...
阅读全文
摘要:子程序dtod将dx、ax表示的32位数字转化为si指向的以0结尾的字符串,dtoc、divdw、show_str按照书中要求,前面的实验8用于生成table段的代码改成子程序build。 1 data segment 2 db '1975','1976','1977','1978','1979','1980','1981','1982','1983' 3 4 db '1984','1985','1986'
阅读全文
摘要:如果从每次循环写入一个数据行考虑的话,关键是储存年份、收入、人数3个信息的地址来保证每次读取能找到数据的位置,每完成一行后这3个地址分别增加4、4、2。网上的例子有使用bx、bp、si、di中的3个来存储,另1个存储写入行的地址。也有减少为2个来存储的,因为有2个的增量都是4,使用1个寄存器,另一个用偏移量来定位。我用堆栈来储存这3个地址,使用时移动到si寄存器。没贴出数据部分。 1 stack segment 2 dw 0,84,168 3 stack ends 4 5 code segment 6 assume cs:code,ds:data,ss:stack 7 ...
阅读全文
摘要:C语言写的,switch计算部分采用了一本狂人C书的类似写法,感觉很有创意。 1 #include 2 3 4 typedef struct 5 { 6 int year; 7 int month; 8 int day; 9 }Date;10 11 int date_minus(Date *now,Date *birth);12 int numOfYear(Date *date);13 int isLeapYear(int year);14 15 int main(void)16 {17 Date birth={1993,4,4};18 Date ...
阅读全文
摘要:最近安装了在ubuntu基础上改的elementaryos,很漂亮,学校提供的破linux客户端不能连上,网上常见的也是旧版本。最后在百度Dr.com贴吧和这个帖子http://forum.ubuntu.org.cn/viewtopic.php?f=156&t=372165 终于找到了。我的linux内核版本是3.2.0,ubuntu也可用,但CentOS6.4就不好使了,还在找。学习linux得有先有网啊,我这里是长春理工。这输入法啊,别扭。
阅读全文
摘要:由于安装程序不能识别NTFS分区上的镜像,因此需要变通,网上可参考的文章分为两种方法:1.使用分区工具创建EXT分区,再用Windows下可访问EXT分区的软件,将安装镜像拷入进行安装。2.使用分区工具创建FAT分区或使用FAT格式的U盘,将安装镜像拷入进行安装。步骤1.个人使用8G的FAT格式U盘,将CentOS-6.4-i386-bin-DVD1.iso 镜像拷入根目录,并且将镜像的images 文件夹也解压到U盘根目录。2.将grub4dos-0.4.4-2009-06-20.zip 的grub.exe 和grldr 拷入C盘根目录 (系统盘)。3.将镜像的isolinux 文件夹中的v
阅读全文
摘要:我写了一种常见的实现算法,和另一种新算法,即不是每次循环计算每个细胞的周围细胞数来产生下一时刻,而是每次每个产生状态变化的细胞主动通知周围的邻居,因此每个细胞增加一个用来记录邻居数的字段。由邻居数决定每个细胞的出生和死亡,然后影响周围邻居的邻居数。并且为了不影响后续细胞的判断,需要新旧邻居数两个状态,用旧邻居数决定自己生死,而自己的生死变化影响周围邻居的新邻居数。另外如果某个格子的新旧邻居数不变则状态不变,增加一个changed字段来表示。下面分别是旧、新两种算法。 1 #include 2 #include 3 4 #define ROW 20 5 #define COL 60...
阅读全文
摘要:其实是学习参考了算法书的代码,但仍然是我自己写的,有小差别。贪心类型。 1 #include 2 using namespace std; 3 4 int main() 5 { 6 int i,n; 7 char str[2000+1]; 8 9 scanf("%d",&n);10 for(i=0;i>str[i];12 13 int s=0,e=n-1; //首尾位置14 15 for(i=1;istr[te],和ts+1>=te-1的情况,这时取首尾都可以24 putchar(str[e--]);25 26...
阅读全文
摘要:正式做POJ的第一题,做出来后又看了别人的代码,就又完善了一下,也通过了。参考http://blog.sina.com.cn/s/blog_4abcd9bc0100phzb.html改了之后觉得写得比他好,呵呵。 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_W 20 7 #define MAX_H 20 8 9 int s_x;10 int s_y;11 int w;12 int h;13 char board[MAX_H+2][MAX_W+2]; //留边,省得越界检查14 int res;15...
阅读全文
摘要:自己用C写的,为了以后用 1 #include "list.h" 2 3 4 static void FreeNode(Node *node); 5 6 7 //index为插入的序号,在该序号插入,后续内容后移, 8 //范围从0到list->n 9 //data为用malloc分配的数据指针10 void AddNode(List *list,void *data,int index)11 {12 Node *p,*node;13 14 if(indexlist->n)//防止越界15 return;16 17 n...
阅读全文
摘要:用C语言实现的带括号四则运算计算器,原理简单,即模拟笔算,将每个运算符标记等级,计算时按照等级由高到低进行计算。加减运算为0级,乘除运算为1级,每进入一层括号等级加2。使用两个链表分别储存运算符与数字。主程序调用之前实现的两个模块,一个是链表,另一个是分数计算。链表代码在下一篇文章,只贴出主程序和分数计算部分。主程序,检查算式是否合法的函数未实现 1 #include "list.h" 2 #include "sz.h" 3 4 /*内部类型、常量、函数*/ 5 6 #define LEVEL_NUM 20 //支持的运算级数 7 8 typedef s
阅读全文

浙公网安备 33010602011771号