如何平均分布点阵

秋风之刀 2010-10-21 11:59:30
一个大小为a*b的阵列,对这个阵列进行赋值,0和1的数量比例由用户设定,
如何能将0和1按比例平均散布到这个阵列中?
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayw215 2010-10-21
  • 打赏
  • 举报
回复
简单的说,就是随机的设定X,Y轴上的值,注意下保持其概率是均等的即可
赵4老师 2010-10-21
  • 打赏
  • 举报
回复
试试
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define a 10
#define b 20
unsigned char m[a][b];
int p;//0..100 在m[a][b]中1所占比例%
int i,j;
int main() {
srand(time(NULL));
while (1) {
printf("Input percentage of 1 in m[%d][%d](0..100):",a,b);
rewind(stdin);
if (1==scanf("%d",&p)) {
if (0<=p && p<=100) break;
}
}
for (i=0;i<a;i++) {
for (j=0;j<b;j++) {
m[i][j]=((rand()%100)<p)?1:0;
printf("%d ",m[i][j]);
}
printf("\n");
}
return 0;
}
单片机应用系统设计 课 题:基于Proteus的LED点阵显示屏的设计与仿真 姓 名: 班 级: 学 号: 指导老师: 日 期: 一 绪论 八十年代以来出现了组合型IED点阵显示器,以发光二极管为像素,它用高亮度发光 二极管芯阵列组合后,环氧树脂和塑模封装而成。具有高亮度、功耗低、引脚少、视角 大、寿命长、耐湿、耐冷热、耐腐蚀等特点。点阵显示器有单色和双色两类,可显示红 ,黄,绿,橙等。LED点阵有4×4、4×8、5×7、5×8、8×8、16×16、24×24、40×40等多种; 根据像素的数目分为等,双基色、三基色等,根据像素颜色的不同所显示的文字、图象 等内容的颜色也不同,单基色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三 基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮 时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显 示,即可实现真彩色显示。图1-- 5示出几种LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试 验获得。 LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号. 如5 x 7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8 x 8点阵用于显示中文文字,也可用于图形显示。用多块点阵显示器组合则可构成大屏幕显 示器,但这类实用装置常通过微机或单片机控制驱动。 LED点阵扫描驱动方案: 由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于LED管芯大 多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制 在20mA内.多数点阵显示器的单体LED的正向压降约在2V左右.但大亮点 10的点阵显示 器单体LED的正向压降约为6V。 大屏幕显示系统一般是将由多个LED点阵组成的小模块以搭积木的方式组合而成的,每一 个小模块都有自己的独立的控制系统,组合在一起后只要引入一个总控制器控制各模块 的命令和数据即可,这种方法既简单而且具有易展、易维修的特点。 LED点阵显示系统中各模块的显示方式有静态和动态显示两种。静态显示原理简单、控制 方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方 式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同 时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图 形或文字信息。 Proteus最重要的特点是它能够把用户编写的应用软件作用在微处理器上并和连接在该处 理器的外围模拟器件及数字器件协同仿真,就像在真正的单片机应用系统的硬件平台上执 行目标代码。支持的微控制器有51系列、 Microchip的PIC系列、Atmel的AV系列、 和ARM7/LPC2000。Proteus软件使用彻底改变了传统单片机学习和开发方式,初学者可以 在没有实验硬件条件下进行仿真实验,开发者也不必经历"原理图设计、PCB线路板制作 、元件焊接、然后进行软件编程、通过仿真器对系统硬件和软件调试"过程,可以直接用 Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开 发成本。汉字点阵显示电路设计制作时,显示部分由8×8单色LED模块拼接而成,元件引 脚较多,硬件制作繁琐,应用Proteus进行仿真设计,极大缩短开发周期。下文用Prote us软件设计16×16三个汉字静态显示屏。 二 系统总体设计方案 (1)硬件框图 汉字点阵的控制电路采用C51系列单片机,硬件电路可分为单片机控制器、LED显示 屏行列驱动电路、LED点阵显示屏三部分,如下图所示。 系统设计硬件框图 (2)基本原理 点阵LED扫描法介绍 点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描 (2)行扫描 (3)列扫描 若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用 第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求 。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足 。 1 汉字的存储 用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数 据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描 的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一 个如图3.3所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里 填上"1",无笔划处填上"0",这样就形成了与这个汉字所对应的二进制数据在该矩形框 上的分,再将此分关系以32×16的数据结构组成64个字节的

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧