首页
📁归档
⏳时光机
📫留言
🚩友链
💰资助名单
推荐
🎧音乐
🏜️ 壁纸
❤ 捐助
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
19,174 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
10,136 阅读
3
【高数】形心计算公式讲解大全
8,750 阅读
4
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
7,447 阅读
5
Vivado-FPGA Verilog烧写固化教程
6,813 阅读
🪶微语&随笔
励志美文
我的随笔
写作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
55(共79篇)
找到
79
篇与
55
相关的结果
- 第 7 页
2021-03-19
数学情诗
一 拉格朗日, 傅立叶旁, 我凝视你凹函数般的脸庞。 微分了忧伤, 积分了希望, 我要和你追逐黎曼最初的梦想。 感情已发散, 收敛难挡, 没有你的极限, 柯西抓狂。 我的心已成自变量, 函数因你波起波荡。 低阶的有限阶的, 一致的不一致的, 是我想你的皮亚诺余项。 狄利克雷, 勒贝格杨, 一同仰望莱布尼茨的肖像, 拉贝、 泰勒, 无穷小量, 是长廊里麦克劳林的吟唱。 打破了确界, 你来我身旁, 温柔抹去我, 阿贝尔的伤。 我的心已成自变量, 函数因你波起波荡。 低阶的有限阶的, 一致的不一致的, 是我想你的皮亚诺余项 默认图片 二 我们的心就是一个圆形, 因为它的离心率永远是零。 我对你的思念就是一个循环小数, 一遍一遍, 执迷不悟。 我们就是抛物线, 你是焦点, 我是准线, 你想我有多深, 我念你便有多真。 零向量可以有很多方向, 却只有一个长度, 就像我, 可以有很多朋友, 却只有一个你, 值得我来守护。 生活, 可以是甜的, 也可以是苦的, 但却不能没有你, 枯燥平平, 就像分母, 可以是正的, 也可以是负的, 却不能没有意义, 取值为零。 有了你, 我的世界才有无穷大, 因为任何实数, 都无法表达, 我对你深深的love。 我对你的感情, 就像以自然对数e为底的指数函数, 不论经过多少求导的风雨, 依然不改本色, 真情永驻。 不论我们前面是怎样的随机变量, 不论未来有多大的方差, 相信波谷过了, 波峰还会远吗? 你的生活就是我的定义域, 你的思想就是我的对应法则, 你的微笑肯定, 就是我存在于此的充要条件。 如果你的心是x轴, 那我就是个正弦函数, 围你转动, 有收有放。 如果我的心是x轴, 那你就是开口向上、 Δ为负的抛物线, 永远都在我的心上。 我每天带给你的惊喜和希望, 就像一个无穷集合里的每个元素, 虽然取之不尽, 却又各不一样。 如果我们有一天身处地球的两侧, 咫尺天涯, 那我一定顺着通过地心的大圆来到你的身边, 哪怕是用爬。 如果有一天我们分居异面直线的两头, 那我一定穿越时空的阻隔, 划条公垂线向你冲来, 一刻也不愿逗留。 但如果有一天, 我们不幸被上帝扔到数轴的两端, 正负无穷, 生死相断, 没有关系, 只要求个倒数, 我们就能心心相依, 永远相伴。 情人是多么的神秘, 却又如此的美妙, 就像数学, 可以这么通俗, 却又那般深奥。 只有把握真题的规律, 考试的纲要, 才能叩启研究生象牙的神塔, 迎接情人的怀抱。 三 傅立叶研究物理提出了三角级数串 两百年前粗略的论断 催生傅立叶变换不朽的缠绵 我在z平面前 凝视系统函数的极点 祈祷你的收敛域回到我的单位圆 卷积 采样 滤波 重建 哪怕坐标已变换 在抽取插值间守护你不失真的容颜 拜读奥本海姆鸿篇 以线性系统之名许愿: 相爱 像二阶无阻尼振荡到永远 当信号只剩下离散的语言 DTFT就成了无尽的思念 我给你的爱藏在频谱间 在奈奎斯特率之下混叠难现 周期的重复被低通滤波还原 最初的响应依然隐约可见 把快速傅立叶变换烧进芯片 蝶形流图美妙的弧线 引向谁心间 我感到很疲倦 离稳态并不远 害怕衰减的冲激串不能再重现
我的随笔
刘航宇
5年前
3
1,110
3
2021-03-18
马尔科夫链讲解(Markov)
说到马尔可夫链,在机器学习界真是无人不知,无人不晓。谷歌用于确定搜索结果顺序的算法,称为PageRank,就是一种马尔可夫链。在卷积网络出现之前,HMM马尔可夫模型也是语音处理的常用方法。到底什么才是马尔可夫链,之前看了几个介绍特别生动,这里总结一下: 马尔可夫链 马尔科夫链是指数学中具有马尔科夫性质的离散事件随机过程。在其每一步中,系统根据概率分布可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。 下图中有两种状态:A和B。如果我们在A,接下来可以过渡到B或留在A。如果我们在B,可以过渡到A或者留在B。在这张图中,从任意状态到任意状态的转移概率是0.5。 默认图片 真正的建模工作者不会总是就画一张马尔科夫链图。 相反,他们会使用“转移矩阵”来计算转移概率。状态空间中的每个状态都会出现在表格中的一列或者一行中。矩阵中的每个单元格都告诉你从行状态转换到列状态的概率。因此,在矩阵中,单元格做的工作和图中的箭头所示是一样。在状态转移矩阵中,行和列都是可能的所有状态,对应位置就是已知行状态,转移到列状态的概率。 默认图片 如果状态空间添加了一个状态,我们将添加一行和一列,向每个现有的列和行添加一个单元格。 这意味着当我们向马尔可夫链添加状态时,单元格的数量会呈二次方增长。因此,转换矩阵就起到了很大的作用(除非你想把法尔科夫链图画的跟丛林一样)。 状态转移矩阵 从上面可以看出,整个马尔可夫链中的核心就是状态转移矩阵。以股市模型为例,假设初始状态为,然后算之后的状态。 def markov(): init_array = np.array([0.1, 0.2, 0.7]) transfer_matrix = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) restmp = init_array for i in range(25): res = np.dot(restmp, transfer_matrix) print i, "\t", res restmp = res markov() 输出结果: 0 [ 0.295 0.3425 0.3625] 1 [ 0.4075 0.38675 0.20575] 2 [ 0.4762 0.3914 0.1324] 3 [ 0.52039 0.381935 0.097675] 4 [ 0.55006 0.368996 0.080944] 5 [ 0.5706394 0.3566873 0.0726733] 6 [ 0.58524688 0.34631612 0.068437 ] 7 [ 0.59577886 0.33805566 0.06616548] 8 [ 0.60345069 0.33166931 0.06487999] 9 [ 0.60907602 0.32681425 0.06410973] 10 [ 0.61321799 0.32315953 0.06362248] 11 [ 0.61627574 0.3204246 0.06329967] 12 [ 0.61853677 0.31838527 0.06307796] 13 [ 0.62021037 0.31686797 0.06292166] 14 [ 0.62144995 0.31574057 0.06280949] 15 [ 0.62236841 0.31490357 0.06272802] 16 [ 0.62304911 0.31428249 0.0626684 ] 17 [ 0.62355367 0.31382178 0.06262455] 18 [ 0.62392771 0.31348008 0.06259221] 19 [ 0.624205 0.3132267 0.0625683] 20 [ 0.62441058 0.31303881 0.06255061] 21 [ 0.624563 0.31289949 0.06253751] 22 [ 0.624676 0.3127962 0.0625278] 23 [ 0.62475978 0.31271961 0.06252061] 24 [ 0.6248219 0.31266282 0.06251528]从第18次开始,状态就开始收敛至。 如果我们换一个初始状态,比如,继续运行上面的代码,只是将init_array变一下,最后结果为: 0 [ 0.35 0.38 0.27] 1 [ 0.4395 0.39775 0.16275] 2 [ 0.4959 0.39185 0.11225] 3 [ 0.53315 0.378735 0.088115] 4 [ 0.558674 0.365003 0.076323] 5 [ 0.5766378 0.3529837 0.0703785] 6 [ 0.5895162 0.34322942 0.06725438] 7 [ 0.59886259 0.33561085 0.06552657] 8 [ 0.6056996 0.32978501 0.06451539] 9 [ 0.61072624 0.32538433 0.06388944] 10 [ 0.61443362 0.32208429 0.06348209] 11 [ 0.61717343 0.31962047 0.0632061 ] 12 [ 0.61920068 0.31778591 0.06301341] 13 [ 0.62070185 0.31642213 0.06287602] 14 [ 0.62181399 0.31540935 0.06277666] 15 [ 0.62263816 0.31465769 0.06270415] 16 [ 0.62324903 0.31410005 0.06265091] 17 [ 0.62370187 0.31368645 0.06261168] 18 [ 0.62403757 0.31337972 0.06258271] 19 [ 0.62428645 0.31315227 0.06256128] 20 [ 0.62447096 0.31298362 0.06254542] 21 [ 0.62460776 0.31285857 0.06253366] 22 [ 0.62470919 0.31276586 0.06252495] 23 [ 0.62478439 0.31269711 0.0625185 ] 24 [ 0.62484014 0.31264614 0.06251372]到第18次的时候,又收敛到了!这个转移矩阵就厉害了。不管我们的初始状态是什么样子的,只要状态转移矩阵不发生变化,当时,最终状态始终会收敛到一个固定值。 马尔可夫链细致平稳条件 首先,马尔科夫链要能收敛,需要满足以下条件: 可能的状态数是有限的。 状态间的转移概率需要固定不变。 从任意状态能够转变到任意状态。 不能是简单的循环,例如全是从x到y再从y到x。 由前面的例子我们不难看出,当与的n次幂相乘以后,发现得到的向量都会收敛到一个稳定值,而且此稳定值与初始向量 无关!那么所有的转移矩阵都有这种现象嘛?或者说满足什么样的条件的转移矩阵会有这种现象? 细致平衡条件(Detailed Balance Condition):给定一个马尔科夫链,分布 和概率转移矩阵,如果下面等式成立: 默认图片 则此马尔科夫链具有一个平稳分布(Stationary Distribution)。
通信&信息处理
刘航宇
5年前
0
842
1
2021-03-14
liunx系统创建并运行实战一个c程序及常用指令指导
{mtitle}liunx系统运行实战一个c程序{/mtitle} 学习liunx系统有利于嵌入式、云服务器等学习。 下面我们实战创建并运行一个三角图形c程序 首先 su rooot 进入超级管理员模式 如果你没有超级管理员账号,想搞一个可以看本站嵌入式其他帖子创建永久超级管理员账号办法,或者按课本上代码临时进入root模式 然后输入 ls 指令查看目录 然后输入 cd 你选的目录名 创建c程序 vim test.c 键盘“a”键可以直接进入编辑模式 输入代码例如: #include <stdio.h> int main() { int i,j,n; printf("input ranks n\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } return 0; }或者更换 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n;j++) printf("*"); printf("\n"); }输入完C代码后,记得“ESC”键切换,输入“:wq”保存退出 然后gcc test.c 打完gcc test.c编译完C源文件。然后就可以看见a.out的文件。一般linux系统就默认为a.out为编译完的文件。现在运行a.out文件。在a.out文件的目录下打开终端并输入 ./a.out 就是运行文件了。 示例图解: 图片 对于回文数可以参考下面代码,我们不妨先取倒序,将本数先输出,再输出倒序数则生成回文数。要让计算的结果倒序输出.现总结一下思路: 1.如果要把一个数倒序输出,即对10求模,可以得到尾数; 2.然后将这个数除以10;这样个位就被舍去;然后如此循环即可 3.直到求模结果为0;证明这个数已经求到个位; #include <stdio.h> int main() { int h; printf("Enter the number\n"); scanf("%d",&h); if(h==0) { printf("%d",h); } printf("%d",h); while(h>0) { printf("%d",h%10); h=h/10; } return 0; } 参考图例: 回文数图片 {mtitle}Linux基本命令{/mtitle} uname -a 查看内核版本 ls -al 显示所有文件的属性 pwd 显示当前路径 cd - 返回上一次目录 cd ~ 返回主目录 date s 设置时间、日期 cal 显示日历 cal 2006 bc 计算器具 man & info 帮助手册 locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件 LANG=en 使用英文字体 sync 将数据同步写入硬盘 shutdonw -h now & half & poweroff 关机 reboot 重启 startx & init 5 进入图形介面 /work & ?work 向上、下查找文档内容 chgrp 改变档案群组 chgrp testing install.log chown 改变所属人 chown root:root install.log chmod 改变属性 chmod 777 install.log read=4 write=2 execute=1 cp 复制 cp filename rm 删除文件 rm -rf filename 强制删除文件 rmdir 删除文件夹 mv 移动 mv 123.txt 222.txt 重命名 mkdir 创建文件夹 touch 创建文件 更新当前时间 cat 由第一行开始显示 cat |more 分页 nl 在内容前加行号 more & less 一面一面翻动 head -n filename 显示第N行内容 tail -n filename 显示后N行内容 od 显示非纯文档 df -h 显示分区空间 du 显示目录或文件的大小 fdisk 分区设置 fdisk -l /dev/hda 显示硬盘分区状态 mkfs 建立各种文件系统 mkfs -t ext3 /dev/ram15 fsck 检查和修复LINUX档案 ln 硬链接 ln -s 软件链接 whereis 查找命令 locate 查找 find 查找 find / -name "." which 查看工具 whoami 显示当前用户 gcc -v 查看GCC版本 chattr +i filename 禁止删除 chattr -i filename 取消禁止 lsattr 显示隐藏档属性 updatedb 更新资料库 mke2fs 格式化 mkfs -t ext3 dd if=/etc/passwd of=/tmp/passwd.bak 备份 mount 列出系统所有的分区 mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘 mount -t vfat /dev/fd0 /mnt/floppy 挂载软盘 mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区 mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 挂载ntfs分区 umount /mnt/hda3 缷载 ifconfig 显示或设置网络设备 service network restart 重启网卡 ifdown eth0 关闭网卡 ifup eth0 开启网卡 clear 清屏 history 历史记录 !55 执行第55个指令 stty 设置终端 stty -a fdisk /mbr 删除GRUB at 僅進行一次的工作排程 crontab 循環執行的例行性命令 [e]编辑,[l]显示,[r]删除任务 & 后台运行程序 tar -zxvf 123.tar.gz & --------->后台运行 jobs 观看后台暂停的程序 jobs -l fg 将后台程序调到前台 fg n ------>n是数字,可以指定进行那个程序 bg 让工作在后台运行 kill 结束进程 kill -9 PID [9]强制结束,[15]正常结束,[l]列出可用的kill信号 ps aux 查看后台程序 top 查看后台程序 top -d 2 每两秒更新一次 top -d 2 -p10604 观看某个PID top -b -n 2 > /tmp/top.txt ----->將 top 的資訊進行 2 次,然後將結果輸出到 /tmp/top.txt pstree 以树状图显示程序 [A]以 ASCII 來連接, [u]列出PID, [p]列出帐号 killall 要刪除某個服務 killall -9 httpd free 显示内存状态 free -m -------->以M为单位显示 uptime 显示目前系统开机时间 netstat 显示网络状态 netstat -tulnp------>找出目前系統上已在監聽的網路連線及其 PID dmesg 显示开机信息 demsg | more nice 设置优先权 nice -n -5 vi & ----->用 root 給一個 nice 植為 -5 ,用於執行 vi renice 调整已存在优先权 runlevel 显示目前的runlevel depmod 分析可载入模块的相依性 lsmod 显示已载入系统的模块 modinfo 显示kernel模块的信息 insmod 载入模块 modprobe 自动处理可载入模块 rmmod 删除模块 chkconfig 检查,设置系统的各种服务 chkconfig --list ----->列出各项服务状态 ntsysv 设置系统的各种服务 cpio 备份文件 压缩命令: *.Z compress 程式壓縮的檔案; *.bz2 bzip2 程式壓縮的檔案; *.gz gzip 程式壓縮的檔案; *.tar tar 程式打包的資料,並沒有壓縮過; *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮 compress filename 压缩文件 加[-d]解压 uncompress gzip filename 压缩 加[-d]解压 zcat 123.gz 查看压缩文件内容 bzip2 -z filename 压缩 加[-d]解压 bzcat filename.bz2 查看压缩文件内容 tar -cvf /home/123.tar /etc 打包,不压缩 tar -xvf 123.tar 解开包 tar -zxvf /home/123.tar.gz 以gzip解压 tar -jxvf /home/123.tar.bz2 以bzip2解压 tar -ztvf /tmp/etc.tar.gz 查看tar内容 cpio -covB > [file|device] 份份 cpio -icduv < [file|device] 还原 深圳-广州-郑州-长沙嵌入式系统实训,凡通过本帖添加咨询报名学习可免费赠送学习现金卷及学习资料一份。详情联系郭老师QQ754634522 vi一般用法 一般模式 编辑模式 指令模式 h 左 a,i,r,o,A,I,R,O :w 保存 j 下 进入编辑模式 :w! 强制保存 k 上 dd 删除光标当前行 :q! 不保存离开 l 右 ndd 删除n行 :wq! 保存后离开 0 移动到行首 yy 复制当前行 :e! 还原原始档 $ 移动到行尾 nyy 复制n行 :w filename 另存为 H 屏幕最上 p,P 粘贴 :set nu 设置行号 M 屏幕中央 u 撤消 :set nonu 取消行号 L 屏幕最下 [Ctrl]+r 重做上一个动作 ZZ 保存离开 G 档案最后一行 [ctrl]+z 暂停退出 :set nohlsearch 永久地关闭高亮显示 /work 向下搜索 :sp 同时打开两个文档 ?work 向上搜索 [Ctrl]+w 两个文档设换 gg 移动到档案第一行 :nohlsearch 暂时关闭高亮显示 认识SHELL alias 显示当前所有的命令别名 alias lm="ls -al" 命令别名 unalias lm 取消命令别名 type 类似which exprot 设置或显示环境变量 exprot PATH="$PATH":/sbin 添加/sbin入PATH路径 echo $PATH 显示PATH路径 bash 进入子程序 name=yang 设定变量 unset name 取消变量 echo $name 显示变量的内容 myname="$name its me" & myname='$name its me' 单引号时$name失去变量内容
嵌入式&系统
# 嵌入式
刘航宇
5年前
2
487
2
2021-03-13
C语言用“*”输出三角形
例如: 图片 #include <stdio.h> int main() { int i,j,n; printf("input ranks n\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } return 0; } 图片 for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("*"); printf("\n"); } printf("\n");图片 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n;j++) printf("*"); printf("\n"); }图片 for(i=0;i<n;i++) { for(j=0;j<n-i;j++) printf("*"); printf("\n"); } printf("\n");图片 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=0;j<n-i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=i;j<n;j++) printf("*"); printf("\n"); }图片 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n+i;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=2*i;j++) //如果是2*i-1,则 j 是从1开始 printf("*"); printf("\n"); }图片 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=0;j<2*n-2*i-1;j++) printf("*"); printf("\n"); } 或 for(i=0;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(j=i;j<2*n-i-1;j++) printf("*"); printf("\n"); }
编程&脚本笔记
刘航宇
5年前
0
954
1
2021-02-15
微型计算机可任意启动/停止的电子秒表
一、电子秒表课程设计要求 6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。 二、关键字 8086 8255 8253 控制字三、摘要 用汇编语言设计数字秒表,用PROTUES仿真软件搭建的硬件电路上正确显示,并且具有开始停止清零功能。用8086作为处理器,8253做定时功能产生0.01S的脉冲,8255具备锁存和并行输出功能,驱动7段数码管正确显示,并且具有足够高的精度。。 四、综合实验目的: 通常,学习知识是由浅入深、由此及彼,一点点的学习和积累的,而应用知识则是综合运用所积累的知识来分析和解决实际问题、从知识的系统性来检验对各层次知识的掌握程度。 综合实验的目的是让学生把理论学习和实验教学阶段所掌握的知识通过一个设计实例,经历一次理论和实践结合、软件和硬件结合的综合训练,也是一次工程实践能力的检验。这次综合实验大家应当把它作为毕业设计的预演。 锻炼通过各种媒体和途径主动获取知识的能力。 五、引言 使用8253的通道0 工作在方式0计数,,并选用二进制技术,控制字36H,计数初值500,对1MHZ的CLK计数产生2000HZ的输出脉冲给1,2通道的CLK,通道一选用二进制计数即计数结束中断方式0,初值20产生非屏蔽中断0.01S非屏蔽中断送给8086的NMI产生中断的脉冲,8086开始计数即毫秒位计数并显示,并与10比较,等于给分秒位加一, 毫秒位置清零,分秒位与6比较若相等清零秒各位加一,秒个位与10比较若等于清零秒十位加一,秒十位与6比较若等于清零分个位加1,分个位与10比较若等于清零分十位加一,分十位与6比较若等于全部清零。 1、使用各芯片的作用及工作原理 1)定时器/计数器8253 用系统8253定时器提供的1MHZ定时单位,设计秒表定时程序。 有关系统定时方法:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号, 频率:f=1MHz。 定时器0输出方波的频率:2000 Hz。 定时器1输出方波100HZ,输出方波周期Tout=1/100=1ms。8253A每隔1ms引起一次中断,作为定时信号。可用1ms作基本计时单位。 1图片 当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连。计数器(0 ~ 2)即三个计数器/定时器通道。每个通道包括:8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。作定时器用:其CLK端上的输入脉冲应是标准的、精确的;作计数器用:对其CLK端上的脉冲计数,脉冲宽度可以不等。采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间 = 时钟脉冲周期X预置的计数初值。 控制功能表 CS RD WR A1A0 功 能 0 1 0 0 0 写计数器0 0 1 0 0 1 写计数器1 0 1 0 1 0 写计数器2 0 1 0 1 1 写控制字寄存器 0 0 1 0 0 读计数器0 0 0 1 0 1 读计数器1 0 0 1 1 0 读计数器2 0 0 1 1 1 无操作 1 X X X X 禁止使用 0 1 1 X X 无操作 每个通道: CLK 计数脉冲或标准脉冲输入端 GATE 允许端,当GATE=1时允许计数 UT 计数值为0时输出一个脉冲 由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。每个通道都可以编程设定3种工作方式之一种;8253由以下几个部分组成: (1) 数据总线缓冲器(8位、三态、双向); (2) 读/写控制逻辑;CS:片选信号,低电平有效; RD:读信号,低电平有效; WR:写信号,低电平有效 A1A0:端口选择信号 (3) 三个通道( 0 ~ 2),由A0,A1控制选择; (4) 一个控制寄存器;2)用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出 8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。 本课程设计8255控制字1000010001,即是方式选择0控制A口输出控制C口高四位输入B组方式0输出C口低四位输入。即B口数码管段输出控制,A口数码管的位控制。C口低四位用于启动停止输入接口。 2图片 3). 锁存器273 74LS273是8位数据/地址锁存器,他是一种带清除功能的8D触发器,下面介绍一下他的管脚图功能表等资料。(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位; (2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上. 74ls273管脚功能: 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。 4)、译码器74ls154 74ls154为4—16线制译码器其引脚图如下图所示 3图片 5). 7段数码管 数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。4图片 六、程序代码 DATAS SEGMENT DW 100 DUP(?) ZXM DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH HOU1 DB 0 HOU2 DB 0 MIN1 DB 0 MIN2 DB 0 SEC1 DB 0 SEC2 DB 0 ; buf BYTE 0,1,2,3,4,5,6,7,8,9;显示缓冲区 ; FLAG BYTE 0 ; STATE BYTE 0 ; KEYMARK BYTE 0;此处输入数据段代码 DATAS ENDS STACKS SEGMENT DW 100 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: ;;;;;;;;;;;;;;;;;;中断初始化 PUSH DS PUSH BX MOV AX,0000H MOV DS,AX MOV BX,0008H MOV DX,OFFSET TIAOSHI MOV [BX],DX MOV BX,000AH MOV DX,SEG TIAOSHI MOV [BX],DX POP BX POP DS MOV AX,DATAS MOV DS,AX MOV AX,DATAS MOV SS,AX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV AL,89H ;8255 A口和B口输出,C口输入 MOV DX,206H OUT DX,AL MOV AL,3FH MOV DX,202H OUT DX,AL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV AL,00110110B ;初始化8253,CNT0; MOV DX,0406H OUT DX,AL MOV AX,500 MOV DX,0400H OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,01010000B ; CNT1 ; MOV DX,0406H OUT DX,AL MOV DX,0402H MOV AL,20 OUT DX,AL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SHUCHU: LEA SI,ZXM MOV BX,0000H MOV AL,11111110B MOV DX,200H OUT DX,AL MOV BL,SEC2 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S1: LOOP S1 MOV AL,11111101B MOV DX,200H OUT DX,AL MOV BL,SEC1 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S2: LOOP S2 MOV AL,11111011B MOV DX,200H OUT DX,AL MOV BL,MIN2 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S3: LOOP S3 MOV AL,11110111B MOV DX,200H OUT DX,AL MOV BL,MIN1 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S4: LOOP S4 MOV AL,11101111B MOV DX,200H OUT DX,AL MOV BL,HOU2 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S5: LOOP S5 MOV AL,11011111B MOV DX,200H OUT DX,AL MOV BL,HOU1 MOV AL,[SI+BX] MOV DX,202H OUT DX,AL MOV CX,200H S6: LOOP S6 JMP SHUCHU PANDUAN: INC SEC2 CMP SEC2,0AH JNZ SHUCHU MOV SEC2,0 INC SEC1 CMP SEC1,0AH JNZ SHUCHU MOV SEC1,0 INC MIN2 CMP MIN2,0AH JNZ SHUCHU MOV MIN2,0 INC MIN1 CMP MIN1,06H JNZ SHUCHU MOV MIN1,0 INC HOU2 CMP HOU2,0AH JNZ SHUCHU MOV HOU2,0 INC HOU1 CMP HOU1,06H JNZ SHUCHU MOV HOU1,0 JMP SHUCHU TIAOSHI PROC ;;;;;;;;;;;;中断子程序 MOV AL,01010000B ; 初始化CNT1 ; MOV DX,0406H OUT DX,AL MOV DX,0402H MOV AL,20 OUT DX,AL JMP PANDUAN ;;;;;;;;;;;;;;;;;;;;;;; RET TIAOSHI ENDP DELAY PROC PUSH CX MOV CX,29h W10MS: LOOP W10MS POP CX RET DELAY ENDP CODES ENDS END START5图片
嵌入式&系统
刘航宇
5年前
2
1,967
4
2021-02-14
电容、电感、电阻参数测量系统设计
目录 一、设计任务和要求 二、单元电路设计和参数计算 三、总原理图及元器件清单 四、附录 一、设计任务和要求 1、设计并制作一个元器件参数测量仪。 2、电阻阻值测量,范围:100Ω~1MΩ; 3、电容容值测量,范围:100pF~10000pF; 4、测量精度:±5% ; 5、电感参数的测量; 6、扩大量程; 7、提高测量精度; 系统设计图图片 二、单元电路设计和参数计算 1、电阻的检测单元电路设计 电阻检测图片 从而,可以计算得出电阻值的大小。 2、电容的检测单元电路设计 电容检测图片 从而,可以计算得出电容值的大小。 3、电感的检测单元电路设计 电感检测图片 从而,可以计算得出电感值的大小。 三、总原理图及元器件清单 总电路图片 实物图图片 (2)元器件清单 表1 原理图中所使用的元器件清单 元件序号 型号 数量 备注 U1 STC89C52RC 1 单片机 R3 A103J 1 排阻 R2,R3,R17,R18 10KΩ 4 电位器 X1 11.0592M 1 晶振 C3 25V,10uF 1 电解电容 C1,C2,C11 103(0.01uF) 3 瓷片电容 R1,R13,R18 10KΩ 3 电阻 J1,J2,J3,J4 4 按键 U2 1602 1 液晶 A1,A2 NE555 2 555定时器 R4 300Ω 1 电阻 R5,R6 510KΩ 2 电阻 C4,C5,C6,C7,C8,C9 104(0.1uF) 6 瓷片电容 R7,R9 100KΩ 2 电阻 C10 50V,22uF 1 电解电容 Q1,Q2,Q3 S9108(NPN型) 3 三极管 R10 2KΩ 1 电阻 R8,R11,R14 1KΩ 3 电阻 C12,C13 50V,47uF 2 电解电容 R12,R19 39KΩ 2 电阻 R15,R16 51Ω 2 电阻 C14 25V,470uF 1 电解电容 U3 NE55532 1 运放 四、附录 软件程序 //RCL测量仪程序 //初始化 #include <reg52.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define PI 3.1415926 uchar code table1[8]="Welcome! RCL detector"; uchar table2[16]="f(Hz)="; uchar table3[16]="R(Ohm)="; uchar table4[16]="C(pF)="; uchar table5[16]="L(uH)="; uchar num,a=0,th0,tl0; uint C,L; ulong f,R; sbit lcden=P2^4; //液晶使能端 sbit lcdrs=P2^5; //液晶数据命令选择端 sbit key_R=P1^5; //测量电阻按键 sbit key_C=P1^6; //测量电容按键 sbit key_L=P1^7; //测量电感按键 sbit R_out=P1^2; //测量电阻信号输入 sbit C_out=P1^3; //测量电容信号输入 sbit L_out=P1^4; //测量电感信号输入 //声明子函数 void delayms(uint xms); //延时函数 void write_com(uchar com); //液晶写命令函数 void write_data(uchar date); //液晶写数据函数 void led_init(); //液晶初始化函数 void t_init(); //定时器0初始化函数 void keyscan(); //键盘检测函数(确定被测元件为电阻、电容或电感) void display_f(ulong f); //频率显示函数 void display_R(ulong R); //电阻显示函数 void display_C(uint C); //电容显示函数 void display_L(uint L); //电感显示函数 //主函数 void main() { led_init(); t_init(); keyscan(); write_com(0x01); while(1) { display_f(f); switch(a) { case 1:R=(ulong)(5000000.0/0.6931472/f-150+0.5);display_R(R);break; case 2:C=(int)(100000000.0/153/0.6931472/f+0.5);display_C(C);break; case 3:L=(int)(1000000000000.0/0.1/PI/PI/f/f+0.5);display_L(L);break; } } } //中断函数 void T0_count() interrupt 1 { switch(a) { case 1:while(R_out); while(!R_out); TH0=0; TL0=0; while(R_out); while(!R_out); th0=TH0; tl0=TL0; TR0=0; break; case 2:while(C_out); while(!C_out); TH0=0; TL0=0; while(C_out); while(!C_out); th0=TH0; tl0=TL0; TR0=0; break; case 3:while(L_out); while(!L_out); TH0=0; TL0=0; while(L_out); while(!L_out); th0=TH0; tl0=TL0; TR0=0; break; } f=1000000.0/1.085069/(th0*256+tl0)+0.5; } //延时函数 void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } //液晶写命令函数 void write_com(uchar com) { lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; } //液晶写数据函数 void write_data(uchar date) { lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0; } //液晶初始化函数 void led_init() { lcden=0; write_com(0x38); //设置16×2显示,5×7点阵,8位数据接口 write_com(0x0c); //设置开显示,不显示光标 write_com(0x06); //写一个字符后地址指针加1 write_com(0x01); //显示清0,数据指针清0 write_com(0x80); //显示欢迎界面 for(num=0;num<8;num++) { write_data(table1[num]); delayms(5); } } //定时器0初始化函数 void t_init() { TMOD=0x01; //设置定时器0工作方式1(M1M0=0x0001) TH0=0; //装初值 TL0=0; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 } //键盘检测函数(确定被测元件为电阻、电容或电感) void keyscan() { if(key_R==0) { delayms(10); if(key_R==0) a=1; } else if(key_C==0) { delayms(10); if(key_C==0) a=2; } else if(key_L==0) { delayms(10); if(key_L==0) a=3; } else while(key_R&&key_C&&key_L); //按键按下时退出死循环 } //频率显示函数 void display_f(ulong f) { uchar count=0; ulong f0; f0=f; while(f) { f=f/10; count++; } for(num=5+count;num>5;num--) { table2[num]=f0%10+48; f0=f0/10; } write_com(0x80); for(num=0;num<6+count;num++) { write_data(table2[num]); delayms(5); } } //电阻显示函数 void display_R(ulong R) { uchar count=0; ulong R0; R0=R; while(R) { R=R/10; count++; } for(num=6+count;num>6;num--) { table3[num]=R0%10+48; R0=R0/10; } write_com(0x80+0x40); for(num=0;num<7+count;num++) { write_data(table3[num]); delayms(5); } } //电容显示函数 void display_C(uint C) { uchar count=0; uint C0; C0=C; while(C) { C=C/10; count++; } for(num=5+count;num>5;num--) { table4[num]=C0%10+48; C0=C0/10; } write_com(0x80+0x40); for(num=0;num<6+count;num++) { write_data(table4[num]); delayms(5); } } //电感显示函数 void display_L(uint L) { uchar count=0; uint L0; L0=L; while(L) { L=L/10; count++; } for(num=5+count;num>5;num--) { table5[num]=L0%10+48; L0=L0/10; } write_com(0x80+0x40); for(num=0;num<6+count;num++) { write_data(table5[num]); delayms(5); } }
嵌入式&系统
# 嵌入式
刘航宇
5年前
5
2,000
3
2021-02-13
信号与系统公式大全-傅里叶、拉普拉斯、z变化、卷积
图片 图片 图片 图片 图片 图片
通信&信息处理
# 信号处理
刘航宇
5年前
0
584
2
上一页
1
...
6
7